3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
7 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
8 dbpath = path + "ch.db"
15 def __init__(self,dbname,user,passwd,host="localhost",port=3306):
25 con=MySQLdb.connect(db=self.dbname,host=self.dbhost,port=self.dbport,user=self.dbusr,passwd=self.dbpasswd,charset="utf8")
27 cur.execute('set names utf8;')
29 def close_db(self,db):
32 def select_by_ontv_ch(self,ontv):
34 ret=db[1].execute("SELECT bctype,channel,display FROM ch WHERE channel= %s ",(ontv,))
38 def select_all_rectime(self):
41 dl=db[1].execute("SELECT id,type,chtxt,title,btime,etime,deltatime,deltaday,opt FROM rectime")
43 for id,typet, chtxt, title, btime, etime, deltatime, deltaday, opt in dls:
48 ret['title']=title.encode('utf-8')
49 btime=btime.strftime("%Y-%m-%d %H:%M:%S")
50 etime=etime.strftime("%Y-%m-%d %H:%M:%S")
61 ret['deltatime']=deltatime
62 elif typet == 'keyevery':
63 ret['deltatime']=deltatime
64 ret['deltaday']=deltaday
68 def select_by_chtxt_rectime(self,chtxt):
71 dl=db[1].execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime WHERE chtxt = %s ",(chtxt,))
73 for typet, chtxt, title, btime, etime, deltatime, deltaday, opt in d:
77 ret['title']=title.encode('utf-8')
78 btime=btime.strftime("%Y-%m-%d %H:%M:%S")
79 etime=etime.strftime("%Y-%m-%d %H:%M:%S")
88 ret['deltatime']=deltatime
89 elif typet == 'keyevery':
90 ret['deltatime']=deltatime
91 ret['deltaday']=deltaday
95 def select_by_id_rectime(self,id):
98 dl=db[1].execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime WHERE id = %s ",(id,))
100 for typet, chtxt, title, btime, etime, deltatime, deltaday, opt in d:
104 ret['title']=title.encode('utf-8')
105 btime=btime.strftime("%Y-%m-%d %H:%M:%S")
106 etime=etime.strftime("%Y-%m-%d %H:%M:%S")
110 if deltatime == None:
115 ret['deltatime']=deltatime
116 elif typet == 'keyevery':
117 ret['deltatime']=deltatime
118 ret['deltaday']=deltaday
122 def select_all_chdata(self):
124 ret=db[1].execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata")
128 def select_by_chtxt_chdata(self,chtxt):
130 ret=db[1].execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE chtxt=%s",(chtxt,))
134 def select_by_station_chdata(self,station):
136 ret=db[1].execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE station=%s",(station,))
140 def select_by_station_name_chdata(self,station_name):
142 db[1].execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE station_name=%s",(station_name,))
146 def add_rectime(self,type="", chtxt="", title="", btime="", etime="", deltatime="", deltaday="", opt=""):
147 db = self.connect_db()
148 db[1].execute('INSERT IGNORE INTO rectime (type,chtxt,title,btime,etime,deltatime,deltaday,opt) values (%s,%s,%s,%s,%s,%s,%s,%s)', (type, chtxt, title, btime, etime, deltatime, deltaday, opt))
151 def schedule_rectime(self,btime,etime):
153 dbexe="SELECT type,chdata.bctype,rectime.chtxt,rectime.title,rectime.btime,rectime.etime FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
154 dbexe=dbexe+" WHERE NOT( ( rectime.etime <= %s ) OR ( rectime.btime >= %s ) )"
155 db[1].execute(dbexe,(btime,etime))
157 for typet,bctypet, chtxtt, titlet,btimet,etimet in db[1].fetchall():
158 ret=[typet,bctypet,chtxtt,titlet,btimet,etimet]
162 def count_schedule_rectime(self,btime,etime):
165 return [te num,bs/cs num]
168 dbexe="SELECT type,chdata.bctype,rectime.chtxt,rectime.title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
169 dbexe=dbexe+" WHERE NOT( ( rectime.etime <= %s ) OR ( rectime.btime >= %s ) )"
172 db[1].execute(dbexe,(btime,etime))
173 for typet,bctypet, chtxtt, titlet in db[1].fetchall():
174 if (typet=="rec") or (typet=="res") or (typet=="key") or (typet=="keyevery"):
175 if bctypet.find("cs")>-1:
177 elif bctypet.find("bs")>-1:
179 elif bctypet.find("te")>-1:
183 def del_by_id_rectime(self,id):
185 db[1].execute('DELETE FROM rectime WHERE id='+id)