OSDN Git Service

stop using trunk directory in rectool
[rec10/rec10-git.git] / rec10 / branches / 0.5 / 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 """
12 task names
13 """
14 global REC_RESERVE
15 global REC_FINAL_RESERVE
16 global REC_END
17 global REC_ENCODE_GRID
18 global REC_ENCODE_LOCAL
19 global REC_ENCODE_QUE
20 global REC_MIXING_SOUND
21 global REC_MISS_ENCODE
22 global REC_KEYWORD
23 global REC_KEYWORD_EVERY_SOME_DAYS
24 global REC_FIN_DECODE
25 global REC_FIN_LOCAL
26 global REC_MISS_DECODE
27 global REC_TS_DECODING
28 global REC_TS_RECORDING
29 REC_RESERVE="res"
30 REC_FINAL_RESERVE="rec"
31 REC_END="end"
32 REC_ENCODE_GRID="grid"
33 REC_ENCODE_LOCAL="local"
34 REC_ENCODE_QUE="ts2avi"
35 REC_MIXING_SOUND="mixsound"
36 REC_MISS_ENCODE="miss"
37 REC_KEYWORD="key"
38 REC_KEYWORD_EVERY_SOME_DAYS="keyevery"
39 REC_FIN_DECODE="tsfin"
40 REC_FIN_LOCAL="fin_local"
41 REC_MISS_DECODE="tsmiss"
42 REC_TS_DECODING="tsdecoding"
43 REC_TS_RECORDING="tsrecording"
44
45 try:
46     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))')
47 except:
48     #print "テーブル作成に失敗しました"
49     db.commit()
50     db.close()
51 def recreserv(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
52     rec_reckey("res",title,chtxt,btime,etime,opt)
53 def keyreserv(keyword,chtxt,btime,etime,deltatime,opt):
54     db=sqlite3.connect(dbpath)
55     recline="\""+recdb.REC_KEYWORD+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\""
56     db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt") values ('+recline+')')
57     db.commit()
58     db.close()
59 def everyreserv(keyword,chtxt,btime,etime,deltatime,opt,deltaday):
60     db=sqlite3.connect(dbpath)
61     recline="\""+recdb.REC_KEYWORD_EVERY_SOME_DAYS+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
62     db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
63     db.commit()
64     db.close()
65 def lastrecreserv(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)##btimeなどは2006-07-17 13:25:23の形
66     """
67     Caution this is old function and you should not use it.
68     Please use rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt) instead of lastrecreserv(title,chtxt,btime,etime,opt)
69     """
70     rec_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime,etime,opt)
71 def misrecwrite(title,chtxt,btime,etime,opt):
72
73     """
74     Caution this is old function and you should not use it.
75     Please use rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt) instead.
76     """
77     rec_reckey(recdb.REC_MISS_ENCODE,title,chtxt,btime,etime,opt)
78 def recend(title,chtxt,btime,etime,opt):#optにはa(アニメ)d(副音声)v(xvid)
79     """
80     Caution this is old function and you should not use it.
81     Please use rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt) instead.
82     """
83     rec_reckey(recdb.REC_END,title,chtxt,btime,etime,opt)
84 def rec_reckey(type,title,chtxt,btime,etime,opt):
85     db=sqlite3.connect(dbpath)
86     recline="\""+type+"\",\""+chtxt+"\",\""+title+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+opt+"\""
87     db.execute('insert into rectime ("type","chtxt","title","btime","etime","opt") values ('+recline+')')
88     db.commit()
89     db.close()
90 def delrec(title,chtxt,btime):
91     """
92     Caution this is old function and you should not use it.
93     Please use del_reckey(recdb.REC_RESERVE,title,chtxt,btime) instead.
94     """
95     del_reckey(recdb.REC_RESERVE,title,chtxt,btime)
96 def delkey(keyword,chtxt,btime,deltatime):
97     """
98     Caution this is old function and you should not use it.
99     Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
100     """
101     del_reckey(recdb.REC_KEYWORD,keyword,chtxt,btime)
102 def dellastrec(title,chtxt,btime):
103     """
104     Caution this is old function and you should not use it.
105     Please use del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime) instead.
106     """
107     del_reckey(recdb.REC_FINAL_RESERVE,title,chtxt,btime)
108 def delevery(keyword,chtxt,btime,deltatime,deltaday):
109     """
110     Caution this is old function and you should not use it.
111     Please use del_reckey(recdb.REC_FINAL_RESERVE,keyword,chtxt,btime) instead.
112     """
113     del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS,keyword,chtxt,btime)
114 def delend(title,chtxt,btime):
115     """
116     Caution this is old function and you should not use it.
117     Please use del_reckey(recdb.REC_END,title,chtxt,btime) instead.
118     """
119     del_reckey(recdb.REC_END,title,chtxt,btime)
120 def deltitle(key):
121     db=sqlite3.connect(dbpath)
122     i=0
123     for title in db.execute("SELECT title FROM rectime WHERE title like \"%"+key+"%\""):
124         i=i+1
125     if i==1:
126         db.execute("delete from rectime where title like \'%"+key+"%\'")
127     db.commit()
128     db.close()
129 def del_reckey(type,title,chtxt,btime):
130     db=sqlite3.connect(dbpath)
131     db.execute("delete from rectime where type = \'"+type+"\' AND title = \'"+title+"\' AND chtxt = \'"+chtxt+"\' AND btime = datetime(\""+btime+"\")")
132     db.commit()
133     db.close()
134 def getnow(dhour):
135     db=sqlite3.connect(dbpath)
136     recdatum=[]
137     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\')"):
138         ret={}
139         ret['type']=typet
140         ret['chtxt']=chtxt
141         ret['title']=title.encode('utf-8')
142         ret['btime']=btime
143         ret['etime']=etime
144         ret['opt']=opt
145         if deltatime==None or deltatime=="":
146             deltatime="3"
147         if deltaday==None or deltaday=="":
148             deltaday="7"
149         if typet=='key':
150             ret['deltatime']=deltatime
151         elif typet=='keyevery':
152             ret['deltatime']=deltatime
153             ret['deltaday']=deltaday
154         recdatum.append(ret)
155     db.commit()
156     db.close()
157     return recdatum
158 def countRecNow(dhour):
159     d=getnow(dhour)
160     ret=0
161     for i in d:
162         t=i['type']
163         if t=="key" or t=="keyevery" or t=="rec" or t=="ret":
164             ret=ret+1
165     return ret
166 def delete_old(dhour):
167     """
168     delete keys except recdb.REC_MISS_ENCODE and recdb.REC_KEYWORD_EVERY_SOME_DAYS before dhour hours from now.
169     """
170     db=sqlite3.connect(dbpath)
171     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\')")
172     db.commit()
173     db.close()
174 def getall():
175     db=sqlite3.connect(dbpath)
176     recdata=[]
177     for typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
178         ret={}
179         ret['type']=typet
180         ret['chtxt']=chtxt
181         ret['title']=title.encode('utf-8')
182         ret['btime']=btime
183         ret['etime']=etime
184         ret['opt']=opt
185         if deltatime==None:
186             deltatime="3"
187         if deltaday==None:
188             deltaday="7"
189         if typet=='key':
190             ret['deltatime']=deltatime
191         elif typet=='keyevery':
192             ret['deltatime']=deltatime
193             ret['deltaday']=deltaday
194         recdata.append(ret)
195     db.close()
196     return recdata