OSDN Git Service

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