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):
19 self.dbpasswd = passwd
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_all_timeline(self):
33 db = self.connect_db()
35 dl = db[1].execute("SELECT id,type,chtxt,title,btime,etime,deltatime,deltaday,opt FROM timeline")
36 dls = db[1].fetchall()
37 for id, typet, chtxt, title, btime, etime, deltatime, deltaday, opt in dls:
43 btime = btime.strftime("%Y-%m-%d %H:%M:%S")
44 etime = etime.strftime("%Y-%m-%d %H:%M:%S")
55 ret['deltatime'] = deltatime
56 elif typet == 'keyevery':
57 ret['deltatime'] = deltatime
58 ret['deltaday'] = deltaday
62 def select_by_chtxt_timeline(self, chtxt):
63 db = self.connect_db()
65 dl = db[1].execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM timeline WHERE chtxt = %s ", (chtxt, ))
67 for typet, chtxt, title, btime, etime, deltatime, deltaday, opt in d:
72 btime = btime.strftime("%Y-%m-%d %H:%M:%S")
73 etime = etime.strftime("%Y-%m-%d %H:%M:%S")
82 ret['deltatime'] = deltatime
83 elif typet == 'keyevery':
84 ret['deltatime'] = deltatime
85 ret['deltaday'] = deltaday
89 def select_by_id_timeline(self, id):
90 db = self.connect_db()
92 dl = db[1].execute("SELECT type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM timeline WHERE id = %s ", (id, ))
94 for typet, chtxt, title, btime, etime, deltatime, deltaday, opt in d:
99 btime = btime.strftime("%Y-%m-%d %H:%M:%S")
100 etime = etime.strftime("%Y-%m-%d %H:%M:%S")
104 if deltatime == None:
109 ret['deltatime'] = deltatime
110 elif typet == 'keyevery':
111 ret['deltatime'] = deltatime
112 ret['deltaday'] = deltaday
116 def select_all_epg_ch(self):
117 db = self.connect_db()
118 ret = db[1].execute("SELECT bctype,ontv,chtxt,chname,ch,csch,updatetime FROM epg_ch")
119 ret = db[1].fetchall()
122 def select_by_chtxt_epg_ch(self, chtxt):
123 db = self.connect_db()
124 ret = db[1].execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM epg_ch WHERE chtxt=%s", (chtxt, ))
125 ret = db[1].fetchall()
128 def add_timeline(self, type="", chtxt="", title="", btime="", etime="", deltatime="", deltaday="", opt=""):
129 db = self.connect_db()
130 db[1].execute('INSERT IGNORE INTO timeline (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))
133 def schedule_timeline(self, btime, etime):
134 db = self.connect_db()
135 dbexe = "SELECT type,epg_ch.bctype,timeline.chtxt,timeline.title,timeline.btime,timeline.etime FROM timeline INNER JOIN epg_ch ON timeline.chtxt=epg_ch.chtxt"
136 dbexe = dbexe + " WHERE NOT( ( timeline.etime <= %s ) OR ( timeline.btime >= %s ) )"
137 db[1].execute(dbexe, (btime, etime))
139 for typet, bctypet, chtxtt, titlet, btimet, etimet in db[1].fetchall():
140 ret = [typet, bctypet, chtxtt, titlet, btimet.strftime("%Y-%m-%d %H:%M:%S"), etimet.strftime("%Y-%m-%d %H:%M:%S")]
144 def count_schedule_timeline(self, btime, etime):
147 return [te num,bs/cs num]
149 db = self.connect_db()
150 dbexe = "SELECT type,epg_ch.bctype,timeline.chtxt,title FROM timeline INNER JOIN epg_ch ON timeline.chtxt=epg_ch.chtxt"
151 dbexe = dbexe + " WHERE NOT( ( timeline.etime <= %s ) OR ( timeline.btime >= %s ) )"
154 db[1].execute(dbexe, (btime, etime))
155 for typet, bctypet, chtxtt, titlet in db[1].fetchall():
156 if (typet == "reserve_flexible") or (typet == "reserve_fixed") or (typet == "search_today") or (typet == "search_everyday"):
157 if bctypet.find("cs") > -1:
159 elif bctypet.find("bs") > -1:
161 elif bctypet.find("te") > -1:
165 def del_by_id_timeline(self, id):
166 db = self.connect_db()
167 db[1].execute('DELETE FROM timeline WHERE id=' + id)
170 db = self.connect_db()
172 db[1].execute("CREATE TABLE in_iepg \
174 id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,\
175 station VARCHAR(200) NOT NULL,\
176 chtxt VARCHAR(30) NOT NULL\
181 def add_iepg(self, station, chtxt):
182 db = self.connect_db()
183 db[1].execute('INSERT IGNORE INTO in_iepg (station,chtxt) VALUES (%s,%s)', (station, chtxt))
185 def del_by_id_iepg(self, num):
186 db = self.connect_db()
187 db[1].execute("DELETE FROM in_iepg \
191 def select_by_chtxt_iepg(self, chtxt):
192 db = self.connect_db()
199 retall = db[1].fetchall()
208 def select_by_station_iepg(self, station):
209 db = self.connect_db()
216 retall = db[1].fetchall()
225 def select_all_iepg(self):
226 db = self.connect_db()
232 retall = db[1].fetchall()