3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
10 #db.execute('create table rectime
11 #(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))')
12 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
13 dbpath = path + "ch.db"
16 def __init__(self,dbpath):
18 db = self.connect_db(60)
20 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))')
25 def connect_db(self,tout=10):
32 return sqlite3.connect(self.dbpath, timeout=tout)
33 def close_db(self,db):
36 db = self.connect_db(60)
38 db.execute('drop table chdata')
43 db.execute('create table chdata (bctype TEXT,ontv TEXT,chtxt TEXT,ch TEXT,csch TEXT,station TEXT,station_name TEXT,updatetime TEXT)')
48 def add_chdata(self,bctype, ontv, chtxt, ch, csch, station, station_name,updatetime):
49 db = self.connect_db(60)
50 db.execute('insert into chdata values (?,?,?,?,?,?,?,datetime(?))',(bctype,ontv,chtxt,ch,csch,station,station_name,updatetime))
53 def select_by_ontv_chdata(self,ontv):
54 db = self.connect_db(60)
55 dbexe=db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE ontv = ?",(ontv,))
59 def select_by_chtxt_chdata(self,chtxt):
60 db = self.connect_db(60)
61 dbexe=db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE chtxt = ?",(chtxt,))
65 def select_by_bctype_chdata(self,bctype):
66 db = self.connect_db(60)
67 dbexe=db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE bctype = ?",(bctype,))
71 def select_by_ch_chdata(self,ch):
72 db = self.connect_db(60)
73 dbexe=db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE ch = ?",(ch,))
77 def select_all_chdata(self):
78 db = self.connect_db(60)
79 dbexe=db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata ")
83 def select_get_update_chdata(self,dhour):
84 db = self.connect_db(60)
85 dbexe=db.execute("SELECT bctype,chtxt FROM chdata WHERE updatetime < datetime(\'now\',\'localtime\',\'-"+dhour+" hours\')")
89 def update_by_bctype_chdata(self,bctype):
90 db = self.connect_db(60)
91 db.execute("UPDATE chdata SET updatetime=datetime(\'now\',\'localtime\') WHERE bctype = ?",(bctype,))
94 def update_by_bctype_and_chtxt_chdata(self,bctype,chtxt):
95 db = self.connect_db(60)
96 db.execute("UPDATE chdata SET updatetime=datetime(\'now\',\'localtime\') WHERE bctype = ? AND chtxt = ?",(bctype,chtxt))
99 def add_rectime(self,type="", chtxt="", title="", btime="", etime="", deltatime="", deltaday="", opt=""):
101 db = self.connect_db(60)
105 db.execute('insert into rectime (type,chtxt,title,btime,etime,deltatime,deltaday,opt) values (?,?,?,datetime(?),datetime(?),?,?,?)', (type, chtxt, title, btime, etime, deltatime, deltaday, opt))
107 # except sqlite3.OperationalError:
112 def del_rectime(self,type="", title="", chtxt="", btime=""):
116 db=self.connect_db(60)
120 db.execute("delete from rectime where type = ? AND title = ? AND chtxt = ? AND btime = datetime(?)", (type, title, chtxt, btime))
122 except sqlite3.OperationalError:
127 def select_all_rectime(self):
128 db=self.connect_db(60)
130 for typet, chtxt, title, btime, etime, deltatime, deltaday, opt in db.execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
134 ret['title']=title.encode('utf-8')
138 if deltatime == None:
143 ret['deltatime']=deltatime
144 elif typet == 'keyevery':
145 ret['deltatime']=deltatime
146 ret['deltaday']=deltaday
150 def select_bytime_rectime(self,dhour):
151 db=self.connect_db(60)
153 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\')"):
157 ret['title']=title.encode('utf-8')
161 if deltatime == None or deltatime == "":
163 if deltaday == None or deltaday == "":
166 ret['deltatime']=deltatime
167 elif typet == 'keyevery':
168 ret['deltatime']=deltatime
169 ret['deltaday']=deltaday
173 def delete_old_rectime(self,dhour):
174 db=self.connect_db(60)
175 db.execute("DELETE FROM rectime WHERE NOT ( type = ? OR type = ? ) AND btime < datetime(\'now\',\'localtime\',\'-" + dhour + " hours\')", (recdb.REC_MISS_ENCODE, recdb.REC_KEYWORD_EVERY_SOME_DAYS))
178 def new_tv(self,bctype):
179 db=self.connect_db(60)
181 db.execute("delete from tv where bctype = ?", (bctype,))
185 db.execute('create table tv (bctype TEXT,channel TEXT NOT NULL,start TEXT,stop TEXT,title TEXT,desc TEXT)')
190 def add_tv(self,bctype, channel, start, stop, title, desc):
191 db=self.connect_db(60)
195 db.execute('insert into tv values (?,?,?,?,?,?)', (bctype, channel, start, stop, title, desc))
197 except sqlite3.OperationalError:
202 def select_by_title_tv(self,title):
203 db=self.connect_db(60)
205 for ch, title, start, stop in db.execute("SELECT channel,title,start,stop FROM tv WHERE title LIKE \"%"+titletxt+"%\""):
206 btime=start.replace(" +0900","")
207 btime=btime[0:4]+"-"+btime[4:6]+"-"+btime[6:8]+" "+btime[8:10]+":"+btime[10:12]+":00"
208 etime=stop.replace(" +0900","")
209 etime=etime[0:4]+"-"+etime[4:6]+"-"+etime[6:8]+" "+etime[8:10]+":"+etime[10:12]+":00"
211 chtxt=chdb.ontvsearch(ch)['chtxt']
214 ret.append(chtxt+","+title.encode('utf-8')+","+btime+","+etime)
217 def select_by_time_ngram_tv(self,btime,etime,chtxt):
218 db=self.connect_db(60)
219 dbexe="SELECT chdata.chtxt,title,start,stop FROM tv INNER JOIN chdata WHERE chdata.ontv=tv.channel AND start >= ? AND start <= ? AND chdata.chtxt=?"
220 dbcmd=db.execute(dbexe,(btime,etime,chtxt))
221 retall=dbcmd.fetchall()
224 def new_ch(self,bctype):
225 db=self.connect_db(60)
227 db.execute("delete from ch where bctype = ?", (bctype,))
231 db.execute('create table ch (bctype TEXT,channel TEXT NOT NULL,display TEXT)')
236 def add_ch(self,bctype, channel, display):
237 db=self.connect_db(60)
241 db.execute('insert into ch values (?,?,?)', (bctype, channel, display))
243 except sqlite3.OperationalError: