3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
7 import rec10web_dbMySQL
15 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
16 confp = ConfigParser.SafeConfigParser()
19 if (os.path.exists(os.path.join(path,Conf))):
20 cpath=os.path.join(path,Conf)
21 elif (os.path.exists(os.path.join("/etc/rec10",Conf))):
22 cpath=os.path.join("/etc/rec10",Conf)
23 elif (os.path.exists(os.path.join("/etc",Conf))):
24 cpath=os.path.join("/etc",Conf)
27 f = cgi.FieldStorage()
30 return confp.get('path', string)
31 def getdbpath(string):
33 return confp.get('db', string)
36 if getdbpath('db') == 'MySQL':
37 dbn = getdbpath("mysql_dbname")
38 dbh = getdbpath("mysql_host")
39 dbu = getdbpath("mysql_user")
40 dbpwd = getdbpath("mysql_passwd")
41 dbport = int(getdbpath("mysql_port"))
42 retdb = rec10web_dbMySQL.DB_MySQL(dbname=dbn, host=dbh, user=dbu, passwd=dbpwd, port=dbport)
45 dl = database.select_all_timeline()
46 recdata = "id,type,chtxt,title,btime,etime,deltaday,opt\n"
55 deltatime = d['deltatime']
56 deltaday = d['deltaday']
64 if typet == "reserve_flexible":
66 elif typet == "search_today":
68 elif typet == "search_everyday":
70 elif typet == "reserve_fixed":
74 elif typet == "convert_ts_mp4":
76 elif typet == "convert_b25_ts":
81 btime = btime.replace("-", "/")
82 etime = etime.replace("-", "/")
83 if btime[0:5] == etime[0:5]:
85 s = "\"" + str(id) + "\",\"" + typet + "\",\"" + chtxt + "\",\"" + title + "\",\"" + btime + "\",\"" + etime + "\",\"" + deltaday + "\",\"" + opt + "\"\n"
86 s = str(id) + "," + typet + "," + chtxt + "," + title + "," + btime + "," + etime + "," + deltaday + "," + opt + "\n"
88 f = open(path + "/recdatum.csv", "w")
92 dl = database.select_all_iepg()
93 recdata = "id,name,chtxt\n"
97 s = s + d[0] + "," + d[1] + "," + d[2] + "\n"
99 f = open(path + "/iepgdatum.csv", "w")
103 dl = database.select_all_epg_ch()
105 for bctype, ontv, chtxt, chname, ch, csch, updatetime in dl:
106 chopt = chopt + "<option value=" + chtxt + ">" + chname + "</option>\n "
109 ret = database.select_by_id_timeline(id)
111 def reserv_recday(keyword, chtxt, btime, etime, deltatime, opt, deltaday, day):
115 #bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
116 #et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
117 bt = datetime.datetime(*time.strptime(btime, "%Y-%m-%d %H:%M:%S")[:-3])
118 et = datetime.datetime(*time.strptime(etime, "%Y-%m-%d %H:%M:%S")[:-3])
119 dt = int(day)-bt.isoweekday()
122 dbt = bt + datetime.timedelta(days=dt)
123 det = et + datetime.timedelta(days=dt)
124 btime = dbt.strftime("%Y-%m-%d %H:%M:%S")
125 etime = det.strftime("%Y-%m-%d %H:%M:%S")
126 return reserv("keyevery", keyword, chtxt, btime, etime, deltatime, opt, "7")
127 def reserv(type, keyword, chtxt, btime, etime, deltatime, opt, deltaday):
130 tsnum = count_schedule(btime, etime)
135 bctypegetdb = database.select_by_chtxt_epg_ch(chtxt)
136 for bctypet, ontvt, chtxtt, cht, cscht, updatetimet in bctypegetdb:
138 if (type == "reserve_fixed") or (type == "reserve_flexible") or (type == "search_today") or (type == "search_everyday"):
139 if bctype.find("cs") > -1:
141 elif bctype.find("bs") > -1:
143 elif bctype.find("te") > -1:
145 if MaxS > -1 and MaxT > -1:
146 database.add_timeline(type=type, chtxt=chtxt, title=keyword, btime=btime, etime=etime, deltatime=deltatime, deltaday=deltaday, opt=opt)
151 def count_schedule(btime, etime):
153 return rec num (int return[0]:TE /int return[1]:BS/CS)
156 #xt=datetime.datetime(*time.strptime(x,"%Y-%m-%d %H:%M:%S")[:-3])
157 #yt=datetime.datetime(*time.strptime(y,"%Y-%m-%d %H:%M:%S")[:-3])
166 dls = database.schedule_timeline(btime, etime)
168 btd = datetime.datetime(*time.strptime(btime, "%Y-%m-%d %H:%M:%S")[:-3])
169 etd = datetime.datetime(*time.strptime(etime, "%Y-%m-%d %H:%M:%S")[:-3])
171 dd1 = datetime.datetime(*time.strptime(dl[4], "%Y-%m-%d %H:%M:%S")[:-3])
172 dd2 = datetime.datetime(*time.strptime(dl[5], "%Y-%m-%d %H:%M:%S")[:-3])
179 times = list(set(times))
183 for i in xrange(0, len(times)-2, 1):
186 btime1 = bt1.strftime("%Y-%m-%d %H:%M:%S")
187 etime1 = et1.strftime("%Y-%m-%d %H:%M:%S")
188 ret1 = database.count_schedule_timeline(btime1, etime1)
189 if retcount[0] < ret1[0]:
190 retcount[0] = ret1[0]
191 if retcount[1] < ret1[1]:
192 retcount[1] = ret1[1]
194 def change_reserv(id, type, keyword, chtxt, btime, etime, deltatime, opt, deltaday):
200 tsnum = count_schedule(btime, etime)
205 for dl in database.select_by_chtxt_epg_ch(chtxt):
207 if (type == "reserve_fixed") or (type == "reserve_flexible") or (type == "search_today") or (type == "search_everyday"):
208 if bctype.find("cs") > -1:
210 elif bctype.find("bs") > -1:
212 elif bctype.find("te") > -1:
214 if MaxS > -1 and MaxT > -1:
215 database.del_by_id_timeline(id)
216 database.add_timeline(type=type, chtxt=chtxt, title=keyword, btime=btime, etime=etime, deltatime=deltatime, deltaday=deltaday, opt=opt)
220 def station2chtxt(station):
226 sta = database.select_by_station_iepg(station)
232 def readHtmlSrcSimple():
233 f = open(path + 'rswi.htm')
237 def readRecFinisSimple():
238 f = open(path + 'fin.htm')
242 def readRecSchedule():
243 f = open(path + 'schedule.htm')
248 f = open(path + 'iepg_add.htm')
253 f = open(path + 'iepg_show.htm')
257 def get_fin(string, refreshurl):
258 htmdate = readRecFinisSimple()
259 htmdate = htmdate.replace('<!--text_for_replace_fin//-->', string)
260 htmdate = htmdate.replace('<!--url_for_replace_fin//-->', refreshurl)
262 def mode_iepg_add(station):
263 htmdate = readiEPGadd()
264 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
265 htmdate = htmdate.replace("<!--ch-value//-->", "")
266 htmdate = htmdate.replace("<!--iepg_title-value//-->", station)
269 s = "epgデータの追加を完了しました。<br>\n録画を行う場合はもう一度おねがいします。<br>"
270 u = "rec10web.py?exec=iepg-show"
272 def mode_iepg_show():
273 htmdate = readiEPGshow()
277 u = "rec10web.py?exec=iepg-show"
279 def mode_iepg_del_miss():
280 s = "epgデータの削除に失敗しました。"
281 u = "rec10web.py?exec=iepg-show"
284 htmdate = readRecSchedule()
287 s = "予約が終了しました。移動します。"
288 u = "rec10web.py?exec=schedule"
292 u = "rec10web.py?exec=schedule"
295 htmdate = readHtmlSrcSimple()
296 htmdate = htmdate.replace("<!--exec-value//-->", "yes")
300 u = "rec10web.py?exec=schedule"
302 def mode_edit_rec10web(tasknum):
303 #editnum=exect.replace("edit:","")
304 htmdate = readHtmlSrcSimple()
305 iddata = edit_date(tasknum)
306 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
307 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
308 htmdate = htmdate.replace("<!--btime-value//-->", iddata['btime'])
309 htmdate = htmdate.replace("<!--etime-value//-->", iddata['etime'])
310 htmdate = htmdate.replace("<!--type-value//-->", iddata['type'])
311 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
312 htmdate = htmdate.replace("<!--title-value//-->", iddata['title'])
313 htmdate = htmdate.replace("<!--size-value//-->", size)
314 htmdate = htmdate.replace("<!--opts-value//-->", iddata["opt"])
315 htmdate = htmdate.replace("<!--exec-value//-->", "edit-exec:" + tasknum)
318 editnum = exect.replace("edit:", "")
319 htmdate = readHtmlSrcSimple()
320 iddata = edit_date(editnum)
321 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
322 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
323 htmdate = htmdate.replace("<!--btime-value//-->", iddata['btime'])
324 htmdate = htmdate.replace("<!--etime-value//-->", iddata['etime'])
325 htmdate = htmdate.replace("<!--type-value//-->", iddata['type'])
326 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
327 htmdate = htmdate.replace("<!--title-value//-->", iddata['title'])
328 htmdate = htmdate.replace("<!--size-value//-->", size)
329 htmdate = htmdate.replace("<!--opts-value//-->", iddata["opt"])
330 htmdate = htmdate.replace("<!--exec-value//-->", "edit-exec:" + editnum)
332 dbpath = path + "ch.db"
338 type = "reserve_flexible"
343 if f.getfirst('station_name'):
344 station = f.getfirst('station_name')
345 chtxt = station2chtxt(station)
348 station_name = station
350 if f.getfirst('station'):
351 station = f.getfirst('station')
352 chtxt = station2chtxt(station)
355 station_name = station
358 if f.getfirst('type'):
359 type = f.getfirst('type')
360 if f.getfirst('title'):
361 title = f.getfirst('title')
362 if f.getfirst('chtxt'):
363 chtxt = f.getfirst('chtxt')
364 if f.getfirst('btime'):
365 btime = f.getfirst('btime')
366 bt = datetime.datetime(*time.strptime(btime, "%Y-%m-%d %H:%M:%S")[:-3])
367 if f.getfirst('etime'):
368 etime = f.getfirst('etime')
369 et = datetime.datetime(*time.strptime(etime, "%Y-%m-%d %H:%M:%S")[:-3])
372 dt = delt.days * 24 * 60 * 60 + delt.seconds
374 dd = datetime.timedelta(days=1)
376 etime = et.strftime("%Y-%m-%d %H:%M:%S")
377 if dt < -1 * 24 * 60 * 60:
378 d1 = datetime.datetime(bt.year, 0, 0)
379 d2 = datetime.datetime(bt.year + 1, 0, 0)
382 etime = et.strftime("%Y-%m-%d %H:%M:%S")
384 if f.getfirst('size'):
385 size = f.getfirst('size')
387 if f.getfirst('opts'):
388 opts = f.getfirst('opts')
390 if f.getfirst('deltahour', ""):
391 deltahour = f.getfirst('deltahour', "")
393 if f.getfirst('deltaday', ""):
394 deltaday = f.getfirst('deltaday', "")
396 if f.getfirst('exec', ""):
397 exect = f.getfirst('exec', "")
398 if exect == "schedule":
403 elif re.search('edit:', exect):
405 elif re.search('edit-exec:', exect):
407 elif exect == "change":
411 elif exect == "iepg-add":
413 elif exect == "iepg-show":
415 elif exect == "iepg-add_yes":
416 mode = "iepg-add-yes"
417 elif exect == "iepg-del":
419 htmdate = mode_normal()
420 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
421 htmdate = htmdate.replace("<!--btime-value//-->", btime)
422 htmdate = htmdate.replace("<!--etime-value//-->", etime)
423 htmdate = htmdate.replace("<!--type-value//-->", type)
424 htmdate = htmdate.replace("<!--ch-value//-->", chtxt)
425 htmdate = htmdate.replace("<!--title-value//-->", title)
426 htmdate = htmdate.replace("<!--size-value//-->", size)
427 htmdate = htmdate.replace("<!--opts-value//-->", opts)
429 if f.getfirst('type') == "keyday":
431 dayt = f.getfirst('day_Mon')
433 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
434 dayt = f.getfirst('day_Tue')
436 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
437 dayt = f.getfirst('day_Wed')
439 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
440 dayt = f.getfirst('day_Thu')
442 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
443 dayt = f.getfirst('day_Fri')
445 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
446 dayt = f.getfirst('day_Sat')
448 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
449 dayt = f.getfirst('day_Sun')
451 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
453 htmdate = mode_recfin()
455 htmdate = mode_recover()
460 if mode == "schedule":
461 htmdate = mode_schedule()
463 htmdate = mode_edit()
464 elif mode == "iepg-add":
465 htmdate = mode_iepg_add(station_name)
466 elif mode == "iepg-add-yes":
471 if f.getfirst('iepg_station') and f.getfirst('iepg_chtxt'):
472 database.add_iepg(f.getfirst('iepg_station'), f.getfirst('iepg_chtxt'))
473 htmdate = mode_iepg_fin()
474 elif mode == "iepg-show":
476 htmdate = mode_iepg_show()
477 elif mode == "iepg-del":
478 s = f.getfirst('iepgdelnum')
481 for st in s.split(","):
483 database.del_by_id_iepg(st)
484 htmdate = mode_iepg_del()
486 # htmdate=mode_iepg_del_miss()
487 elif mode == "edit-rec10":
488 s = f.getfirst('tasknum')
490 htmdate = mode_edit_rec10web(s.split(",")[0])
492 s = f.getfirst('tasknum')
497 database.del_by_id_timeline(st)
499 elif mode == "edit-exec":
500 if (chtxt != "")and(title != "")and(btime != "")and(etime != "")and(opts != ""):
501 editnum = exect.replace("edit-exec:", "")
502 restxt = change_reserv(editnum, type, title, chtxt, btime, etime, deltahour, opts, deltaday)
504 htmdate = mode_recfin()
505 elif restxt == "over":
506 htmdate = mode_recover()
508 htmdate = mode_recfin()
511 if (chtxt != "")and(title != "")and(btime != "")and(etime != "")and(opts != ""):
512 restxt = reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
514 htmdate = mode_recfin()
515 elif restxt == "over":
516 htmdate = mode_recover()
518 htmdate = mode_recfin()
519 print "Content-Type: text/html"