3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
12 path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
16 db=sqlite3.connect(dbpath)
17 recdata="\"id\",\"type\",\"chtxt\",\"title\",\"btime\",\"etime\",\"deltaday\",\"opt\"\n"
18 recdata="id,type,chtxt,title,btime,etime,deltaday,opt\n"
19 for id, typet, chtxt, title, btime, etime, deltatime ,deltaday ,opt in db.execute("SELECT id, type, chtxt, title, btime, etime, deltatime ,deltaday ,opt FROM rectime"):
30 elif typet=="keyevery":
40 btime=btime.replace("-","/")
41 etime=etime.replace("-","/")
42 if btime[0:5]==etime[0:5]:
44 s="\""+str(id)+"\",\""+typet+"\",\""+chtxt+"\",\""+title+"\",\""+btime+"\",\""+etime+"\",\""+deltaday+"\",\""+opt+"\"\n"
45 s=str(id)+","+typet+","+chtxt+","+title+","+btime+","+etime+","+deltaday+","+opt+"\n"
47 f=open(path+"/recdatum.csv","w")
51 db=sqlite3.connect(dbpath)
53 for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata"):
55 for bctype,channel,display in db.execute("SELECT bctype,channel,display FROM ch WHERE channel=\""+ontv+"\""):
57 chopt=chopt+"<option value="+chtxt+">"+display+"</option>\n "
61 db=sqlite3.connect(dbpath)
63 for idt,typet,chtxt,title,btime,etime,deltatime,opt,deltaday in db.execute("SELECT id,type,chtxt,title,btime,etime,deltatime,opt,deltaday From rectime WHERE id ="+id):
71 ret['deltatime']=deltatime
76 ret['deltaday']=daltaday
82 def reserv_recday(keyword,chtxt,btime,etime,deltatime,opt,deltaday,day):
86 bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
87 et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
88 dt=int(day)-bt.isoweekday()
91 dbt=bt+datetime.timedelta(days=dt)
92 det=et+datetime.timedelta(days=dt)
93 btime=dbt.strftime("%Y-%m-%d %H:%M:%S")
94 etime=det.strftime("%Y-%m-%d %H:%M:%S")
95 return reserv("keyevery",keyword,chtxt,btime,etime,deltatime,opt,"7")
96 def reserv(type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
99 db=sqlite3.connect(dbpath)
102 dbexe="SELECT type,chdata.bctype,rectime.chtxt,rectime.title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
103 #dbexe="SELECT bctype,chtxt,title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
105 dbexe=dbexe+" WHERE NOT( ( rectime.etime <= "+bt+" ) OR ( rectime.btime >= "+et+" ) )"
106 for typet,bctypet, chtxtt, titlet in db.execute(dbexe):
107 if (typet=="rec") or (typet=="res") or (typet=="key") or (typet=="keyevery"):
108 if bctypet.find("cs")>-1:
110 elif bctypet.find("bs")>-1:
112 elif bctypet.find("te")>-1:
116 for bctypet, chtxtt in db.execute("SELECT bctype,chtxt FROM chdata WHERE chtxt=\'"+chtxt+"\'"):
118 if (type=="rec") or (type=="res") or (type=="key") or (type=="keyevery"):
119 if bctype.find("cs")>-1:
121 elif bctype.find("bs")>-1:
123 elif bctype.find("te")>-1:
125 if MaxS>-1 and MaxT>-1:
126 recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
128 db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
134 def change_reserv(id,type,keyword,chtxt,btime,etime,deltatime,opt,deltaday):
140 db=sqlite3.connect(dbpath)
144 dbexe="SELECT id,type,chdata.bctype,rectime.chtxt,rectime.title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
145 #dbexe="SELECT bctype,chtxt,title FROM rectime INNER JOIN chdata ON rectime.chtxt=chdata.chtxt"
147 dbexe=dbexe+" WHERE NOT( ( rectime.etime <= "+bt+" ) OR ( rectime.btime >= "+et+" ) )"
148 for idt,typet,bctypet, chtxtt, titlet in db.execute(dbexe):
150 if (typet=="rec") or (typet=="res") or (typet=="key") or (typet=="keyevery"):
151 if bctypet.find("cs")>-1:
153 elif bctypet.find("bs")>-1:
155 elif bctypet.find("te")>-1:
159 for bctypet, chtxtt in db.execute("SELECT bctype,chtxt FROM chdata WHERE chtxt=\'"+chtxt+"\'"):
161 if (type=="rec") or (type=="res") or (type=="key") or (type=="keyevery"):
162 if bctype.find("cs")>-1:
164 elif bctype.find("bs")>-1:
166 elif bctype.find("te")>-1:
168 if MaxS>-1 and MaxT>-1:
169 db.execute('delete from rectime where id='+id)
170 recline="\""+type+"\",\""+chtxt+"\",\""+keyword+"\",datetime(\""+btime+"\"),datetime(\""+etime+"\"),\""+deltatime+"\",\""+opt+"\",\""+deltaday+"\""
172 db.execute('insert into rectime ("type","chtxt","title","btime","etime","deltatime","opt","deltaday") values ('+recline+')')
178 def station2chtxt(station):
179 db=sqlite3.connect(dbpath)
181 for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE station=\""+station+"\""):
185 def station_name2chtxt(station):
186 db=sqlite3.connect(dbpath)
188 for bctype, ontv, chtxt, ch, csch ,updatetime in db.execute("SELECT bctype,ontv,chtxt,ch,csch,updatetime FROM chdata WHERE station_name=\""+station+"\""):
192 def readHtmlSrcSimple():
193 f = open(path+'rswi.htm')
198 f = open(path+'rswi_edit.htm')
203 def readRecFinisSimple():
204 f = open(path+'fin.htm')
208 def readRecFinisOver():
209 f = open(path+'finover.htm')
213 def readRecSchedule():
214 f = open(path+'schedule.htm')
227 if f.getfirst('mode')=="schedule":
231 if f.getfirst('station_name'):
232 station=f.getfirst('station_name')
233 chtxt=station_name2chtxt(station)
234 if f.getfirst('station'):
235 station=f.getfirst('station')
236 chtxt=station2chtxt(station)
238 if f.getfirst('type'):
239 type=f.getfirst('type')
240 if f.getfirst('title'):
241 title=f.getfirst('title')
242 if f.getfirst('chtxt'):
243 chtxt=f.getfirst('chtxt')
244 if f.getfirst('btime'):
245 btime=f.getfirst('btime')
246 bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
247 if f.getfirst('etime'):
248 etime=f.getfirst('etime')
249 et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
252 dt=delt.days*24*60*60+delt.seconds
254 dd=datetime.timedelta(days=1)
256 etime=et.strftime("%Y-%m-%d %H:%M:%S")
258 d1=datetime.datetime(bt.year,0,0)
259 d2=datetime.datetime(bt.year+1,0,0)
262 etime=et.strftime("%Y-%m-%d %H:%M:%S")
265 if f.getfirst('size'):
266 size=f.getfirst('size')
268 if f.getfirst('opts'):
269 opts=f.getfirst('opts')
271 if f.getfirst('deltahour',""):
272 deltahour=f.getfirst('deltahour',"")
274 if f.getfirst('deltaday',""):
275 deltaday=f.getfirst('deltaday',"")
277 if f.getfirst('exec',""):
278 exect=f.getfirst('exec',"")
281 htmdate= readHtmlSrcSimple()
282 htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
283 htmdate=htmdate.replace("<!--btime-value//-->",btime)
284 htmdate=htmdate.replace("<!--etime-value//-->",etime)
285 htmdate=htmdate.replace("<!--type-value//-->",type)
286 htmdate=htmdate.replace("<!--ch-value//-->",chtxt)
287 htmdate=htmdate.replace("<!--title-value//-->",title)
288 htmdate=htmdate.replace("<!--size-value//-->",size)
289 htmdate=htmdate.replace("<!--opts-value//-->",opts)
293 if f.getfirst('type')=="keyday":
295 dayt=f.getfirst('day_Mon')
297 rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
298 dayt=f.getfirst('day_Tue')
300 rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
301 dayt=f.getfirst('day_Wed')
303 rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
304 dayt=f.getfirst('day_Thu')
306 rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
307 dayt=f.getfirst('day_Fri')
309 rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
310 dayt=f.getfirst('day_Sat')
312 rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
313 dayt=f.getfirst('day_Sun')
315 rett=rett+reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
318 htmdate=readRecFinisSimple()
320 htmdate=readRecFinisOver()
326 if (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(exect=="yes"):
327 restxt=reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
329 htmdate=readRecFinisSimple()
331 htmdate=readRecFinisOver()
334 if (chtxt != "")and(title != "")and(btime!="")and(etime!="")and(opts!="")and(re.search('edit-exec:',exect)):
335 editnum=exect.replace("edit-exec:","")
336 restxt=change_reserv(editnum,type, title, chtxt, btime, etime, deltahour, opts, deltaday)
338 htmdate=readRecFinisSimple()
340 htmdate=readRecFinisOver()
342 if exect=="schedule":
343 htmdate=readRecSchedule()
344 if re.search('edit:',exect):
345 editnum=exect.replace("edit:","")
346 htmdate= readHtmlEdit()
347 iddata=edit_date(editnum)
348 htmdate=htmdate.replace("<!--text_for_replace_chtxt_input//-->",getchtxt())
349 htmdate=htmdate.replace("<!--ch-value//-->",iddata["chtxt"])
350 htmdate=htmdate.replace("<!--btime-value//-->",iddata["btime"])
351 htmdate=htmdate.replace("<!--etime-value//-->",iddata["etime"])
352 htmdate=htmdate.replace("<!--type-value//-->",iddata["type"])
353 htmdate=htmdate.replace("<!--ch-value//-->",iddata["chtxt"])
354 htmdate=htmdate.replace("<!--title-value//-->",iddata["title"])
355 htmdate=htmdate.replace("<!--size-value//-->",size)
356 htmdate=htmdate.replace("<!--opts-value//-->",iddata["opt"])
357 htmdate=htmdate.replace("<!--exec-value//-->","edit-exec:"+editnum)
358 print "Content-Type: text/html\n"