OSDN Git Service

d0d676195dcfe6ff2b39cb15d9ec746c102cb500
[rec10/rec10-git.git] / rec10 / branches / 0.4 / src / src / recdb.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
5 import os
6 import sqlite3
7 import recdb
8 dbpath=str(os.path.dirname(os.path.abspath(__file__)))+"/"+"ch.db"
9 db=sqlite3.connect(dbpath)
10
11 global REC_RESERVE
12 REC_RESERVE="res"
13 global REC_FINAL_RESERVE
14 REC_FINAL_RESERVE="rec"
15 global REC_END
16 REC_END="end"
17 global REC_ENCODE_GRID
18 REC_ENCODE_GRID="grid"
19 global REC_ENCODE_LOCAL
20 REC_ENCODE_LOCAL="local"
21 global REC_ENCODE_QUE
22 REC_ENCODE_QUE="ts2avi"
23 global REC_MIXING_SOUND
24 REC_MIXING_SOUND="mixsound"
25 global REC_MISS_ENCODE
26 REC_MISS_ENCODE="miss"
27 global REC_KEYWORD
28 REC_KEYWORD="key"
29 global REC_KEYWORD_EVERY_SOME_DAYS
30 REC_KEYWORD_EVERY_SOME_DAYS="keyevery"
31 global REC_FIN_DECODE
32 REC_FIN_DECODE="tsfin"
33 global REC_MISS_DECODE
34 REC_MISS_DECODE="tsmiss"
35 global REC_TS_DECODING
36 REC_TS_DECODING="tsdecoding"
37 try:
38     db.execute('create table rectime (type TEXT,chtxt TEXT,title TEXT,btime TEXT,etime TEXT,deltatime TEXT,deltaday TEXT,opt TEXT,id INTEGER PRIMARY KEY,UNIQUE(type,chtxt,title,btime,deltaday))')
39 except:
40     #print "テーブル作成に失敗しました"
41     db.commit()
42     db.close()
43 def recreserv(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
44     rec_reckey("res",title,chtxt,btime,etime,opt)
45 def keyreserv(keyword,chtxt,btime,etime,deltatime,opt):
46     db=sqlite3.connect(dbpath)
47     recline="\""+recdb.REC_KEYWORD+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\""
48     db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt") values ('+recline+')')
49     db.commit()
50     db.close()
51 def everyreserv(keyword,chtxt,btime,etime,deltatime,opt,deltaday):
52     db=sqlite3.connect(dbpath)
53     recline="\""+recdb.REC_KEYWORD_EVERY_SOME_DAYS+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
54     db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
55     db.commit()
56     db.close()
57 def lastrecreserv(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)##btimeなどは2006-07-17 13:25:23の形
58     """
59     Caution this is old function and you should not use it.
60     Please use rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt) instead of lastrecreserv(title,chtxt,btime,etime,opt)
61     """
62     rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt)
63 def misrecwrite(title,chtxt,btime,etime,opt):
64
65     """
66     Caution this is old function and you should not use it.
67     Please use rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt) instead.
68     """
69     rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt)
70 def recend(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
71     """
72     Caution this is old function and you should not use it.
73     Please use rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt) instead.
74     """
75     rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt)
76 def rec_reckey(type,title,chtxt,btime,etime,opt):
77     db=sqlite3.connect(dbpath)
78     recline="\""+type+"\",\""+chtxt+"\",\""+title+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+opt+"\""
79     db.execute('insert into rectime ("type","chtxt","title","btime","etime","opt") values ('+recline+')')
80     db.commit()
81     db.close()
82 def delrec(title,chtxt,btime):
83     """
84     Caution this is old function and you should not use it.
85     Please use del_reckey(recdb.REC_RESERVE,title,chtxt,btime) instead.
86     """
87     del_reckey(recdb.REC_RESERVE,title,chtxt,btime)
88 def delkey(keyword,chtxt,btime,deltatime):
89     """
90     Caution this is old function and you should not use it.
91     Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
92     """
93     del_reckey(recdb.REC_KEYWORD,keyword,chtxt,btime)
94 def dellastrec(title,chtxt,btime):
95     """
96     Caution this is old function and you should not use it.
97     Please use del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime) instead.
98     """
99     del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime)
100 def delevery(keyword,chtxt,btime,deltatime,deltaday):
101     """
102     Caution this is old function and you should not use it.
103     Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
104     """
105     del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS,keyword,chtxt,btime)
106 def delend(title,chtxt,btime):
107     """
108     Caution this is old function and you should not use it.
109     Please use del_reckey(recdb.REC_END,title,chtxt,btime) instead.
110     """
111     del_reckey(recdb.REC_END,title,chtxt,btime)
112 def deltitle(key):
113     db=sqlite3.connect(dbpath)
114     i=0
115     for title in db.execute("SELECT title FROM rectime WHERE title like \"%"+key+"%\""):
116         i=i+1
117     if i==1:
118         db.execute("delete from rectime where title like \'%"+key+"%\'")
119     db.commit()
120     db.close()
121 def del_reckey(type,title,chtxt,btime):
122     db=sqlite3.connect(dbpath)
123     db.execute("delete from rectime where type = \'"+type+"\' AND title = \'"+title+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
124     db.commit()
125     db.close()
126 def getnow(dhour):
127     db=sqlite3.connect(dbpath)
128     recdatum=[]
129     for typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT type, chtxt, title, DATETIME(btime), DATETIME(etime), deltatime ,deltaday ,opt FROM rectime WHERE btime < datetime(\'now\',\'localtime\',\'+"+dhour+" hours\') AND btime >datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')"):
130         ret={}
131         ret['type']=typet
132         ret['chtxt']=chtxt
133         ret['title']=title.encode('utf-8')
134         ret['btime']=btime
135         ret['etime']=etime
136         ret['opt']=opt
137         if typet=='key':
138             ret['deltatime']=deltatime
139         elif typet=='keyevery':
140             ret['deltatime']=deltatime
141             ret['deltaday']=deltaday
142         recdatum.append(ret)
143     db.commit()
144     db.close()
145     return recdatum
146 def delete_old(dhour):
147     """
148     delete keys except recdb.REC_MISS_ENCODE and recdb.REC_KEYWORD_EVERY_SOME_DAYS before dhour hours from now.
149     """
150     db=sqlite3.connect(dbpath)
151     db.execute("DELETE FROM rectime WHERE NOT ( type = \""+recdb.REC_MISS_ENCODE+"\" OR type = \""+recdb.REC_KEYWORD_EVERY_SOME_DAYS+"\" ) AND btime < datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')")
152     db.commit()
153     db.close()
154 def getall():
155     db=sqlite3.connect(dbpath)
156     recdata=[]
157     for typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
158         ret={}
159         ret['type']=typet
160         ret['chtxt']=chtxt
161         ret['title']=title.encode('utf-8')
162         ret['btime']=btime
163         ret['etime']=etime
164         ret['opt']=opt
165         if typet=='key':
166             ret['deltatime']=deltatime
167         elif typet=='keyevery':
168             ret['deltatime']=deltatime
169             ret['deltaday']=deltaday
170         recdata.append(ret)
171     db.close()
172     return recdata