3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
7 import rec10web_dbMySQL
14 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
15 confp = ConfigParser.SafeConfigParser()
17 confp.read(path + Conf)
19 f = cgi.FieldStorage()
22 return confp.get('path', string)
23 def getdbpath(string):
25 return confp.get('db', string)
28 if getdbpath('db') == 'MySQL':
29 dbn = getdbpath("mysql_dbname")
30 dbh = getdbpath("mysql_host")
31 dbu = getdbpath("mysql_user")
32 dbpwd = getdbpath("mysql_passwd")
33 dbport = int(getdbpath("mysql_port"))
34 retdb = rec10web_dbMySQL.DB_MySQL(dbname=dbn, host=dbh, user=dbu, passwd=dbpwd, port=dbport)
37 dl = database.select_all_timeline()
38 recdata = "id,type,chtxt,title,btime,etime,deltaday,opt\n"
47 deltatime = d['deltatime']
48 deltaday = d['deltaday']
60 elif typet == "keyevery":
66 elif typet == "ts2avi":
68 elif typet == "b252ts":
73 btime = btime.replace("-", "/")
74 etime = etime.replace("-", "/")
75 if btime[0:5] == etime[0:5]:
77 s = "\"" + str(id) + "\",\"" + typet + "\",\"" + chtxt + "\",\"" + title + "\",\"" + btime + "\",\"" + etime + "\",\"" + deltaday + "\",\"" + opt + "\"\n"
78 s = str(id) + "," + typet + "," + chtxt + "," + title + "," + btime + "," + etime + "," + deltaday + "," + opt + "\n"
80 f = open(path + "/recdatum.csv", "w")
84 dl = database.select_all_iepg()
85 recdata = "id,name,chtxt\n"
89 s = s + d[0] + "," + d[1] + "," + d[2] + "\n"
91 f = open(path + "/iepgdatum.csv", "w")
95 dl = database.select_all_epg_ch()
97 for bctype, ontv, chtxt, chname, ch, csch, updatetime in dl:
98 chopt = chopt + "<option value=" + chtxt + ">" + chname + "</option>\n "
101 ret = database.select_by_id_timeline(id)
103 def reserv_recday(keyword, chtxt, btime, etime, deltatime, opt, deltaday, day):
107 #bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
108 #et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
109 bt = datetime.datetime(*time.strptime(btime, "%Y-%m-%d %H:%M:%S")[:-3])
110 et = datetime.datetime(*time.strptime(etime, "%Y-%m-%d %H:%M:%S")[:-3])
111 dt = int(day)-bt.isoweekday()
114 dbt = bt + datetime.timedelta(days=dt)
115 det = et + datetime.timedelta(days=dt)
116 btime = dbt.strftime("%Y-%m-%d %H:%M:%S")
117 etime = det.strftime("%Y-%m-%d %H:%M:%S")
118 return reserv("keyevery", keyword, chtxt, btime, etime, deltatime, opt, "7")
119 def reserv(type, keyword, chtxt, btime, etime, deltatime, opt, deltaday):
122 tsnum = count_schedule(btime, etime)
127 bctypegetdb = database.select_by_chtxt_epg_ch(chtxt)
128 for bctypet, ontvt, chtxtt, cht, cscht, updatetimet in bctypegetdb:
130 if (type == "rec") or (type == "res") or (type == "key") or (type == "keyevery"):
131 if bctype.find("cs") > -1:
133 elif bctype.find("bs") > -1:
135 elif bctype.find("te") > -1:
137 if MaxS > -1 and MaxT > -1:
138 database.add_timeline(type=type, chtxt=chtxt, title=keyword, btime=btime, etime=etime, deltatime=deltatime, deltaday=deltaday, opt=opt)
143 def count_schedule(btime, etime):
145 return rec num (int return[0]:TE /int return[1]:BS/CS)
148 #xt=datetime.datetime(*time.strptime(x,"%Y-%m-%d %H:%M:%S")[:-3])
149 #yt=datetime.datetime(*time.strptime(y,"%Y-%m-%d %H:%M:%S")[:-3])
158 dls = database.schedule_timeline(btime, etime)
160 btd = datetime.datetime(*time.strptime(btime, "%Y-%m-%d %H:%M:%S")[:-3])
161 etd = datetime.datetime(*time.strptime(etime, "%Y-%m-%d %H:%M:%S")[:-3])
163 dd1 = datetime.datetime(*time.strptime(dl[4], "%Y-%m-%d %H:%M:%S")[:-3])
164 dd2 = datetime.datetime(*time.strptime(dl[5], "%Y-%m-%d %H:%M:%S")[:-3])
171 times = list(set(times))
175 for i in xrange(0, len(times)-2, 1):
178 btime1 = bt1.strftime("%Y-%m-%d %H:%M:%S")
179 etime1 = et1.strftime("%Y-%m-%d %H:%M:%S")
180 ret1 = database.count_schedule_timeline(btime1, etime1)
181 if retcount[0] < ret1[0]:
182 retcount[0] = ret1[0]
183 if retcount[1] < ret1[1]:
184 retcount[1] = ret1[1]
186 def change_reserv(id, type, keyword, chtxt, btime, etime, deltatime, opt, deltaday):
192 tsnum = count_schedule(btime, etime)
197 for dl in database.select_by_chtxt_epg_ch(chtxt):
199 if (type == "rec") or (type == "res") or (type == "key") or (type == "keyevery"):
200 if bctype.find("cs") > -1:
202 elif bctype.find("bs") > -1:
204 elif bctype.find("te") > -1:
206 if MaxS > -1 and MaxT > -1:
207 database.del_by_id_timeline(id)
208 database.add_timeline(type=type, chtxt=chtxt, title=keyword, btime=btime, etime=etime, deltatime=deltatime, deltaday=deltaday, opt=opt)
212 def station2chtxt(station):
218 sta = database.select_by_station_iepg(station)
224 def readHtmlSrcSimple():
225 f = open(path + 'rswi.htm')
229 def readRecFinisSimple():
230 f = open(path + 'fin.htm')
234 def readRecSchedule():
235 f = open(path + 'schedule.htm')
240 f = open(path + 'iepg_add.htm')
245 f = open(path + 'iepg_show.htm')
249 def get_fin(string, refreshurl):
250 htmdate = readRecFinisSimple()
251 htmdate = htmdate.replace('<!--text_for_replace_fin//-->', string)
252 htmdate = htmdate.replace('<!--url_for_replace_fin//-->', refreshurl)
254 def mode_iepg_add(station):
255 htmdate = readiEPGadd()
256 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
257 htmdate = htmdate.replace("<!--ch-value//-->", "")
258 htmdate = htmdate.replace("<!--iepg_title-value//-->", station)
261 s = "epgデータの追加を完了しました。<br>\n録画を行う場合はもう一度おねがいします。<br>"
262 u = "rec10web.py?exec=iepg-show"
264 def mode_iepg_show():
265 htmdate = readiEPGshow()
269 u = "rec10web.py?exec=iepg-show"
271 def mode_iepg_del_miss():
272 s = "epgデータの削除に失敗しました。"
273 u = "rec10web.py?exec=iepg-show"
276 htmdate = readRecSchedule()
279 s = "予約が終了しました。移動します。"
280 u = "rec10web.py?exec=schedule"
284 u = "rec10web.py?exec=schedule"
287 htmdate = readHtmlSrcSimple()
288 htmdate = htmdate.replace("<!--exec-value//-->", "yes")
292 u = "rec10web.py?exec=schedule"
294 def mode_edit_rec10web(tasknum):
295 #editnum=exect.replace("edit:","")
296 htmdate = readHtmlSrcSimple()
297 iddata = edit_date(tasknum)
298 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
299 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
300 htmdate = htmdate.replace("<!--btime-value//-->", iddata['btime'])
301 htmdate = htmdate.replace("<!--etime-value//-->", iddata['etime'])
302 htmdate = htmdate.replace("<!--type-value//-->", iddata['type'])
303 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
304 htmdate = htmdate.replace("<!--title-value//-->", iddata['title'])
305 htmdate = htmdate.replace("<!--size-value//-->", size)
306 htmdate = htmdate.replace("<!--opts-value//-->", iddata["opt"])
307 htmdate = htmdate.replace("<!--exec-value//-->", "edit-exec:" + tasknum)
310 editnum = exect.replace("edit:", "")
311 htmdate = readHtmlSrcSimple()
312 iddata = edit_date(editnum)
313 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
314 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
315 htmdate = htmdate.replace("<!--btime-value//-->", iddata['btime'])
316 htmdate = htmdate.replace("<!--etime-value//-->", iddata['etime'])
317 htmdate = htmdate.replace("<!--type-value//-->", iddata['type'])
318 htmdate = htmdate.replace("<!--ch-value//-->", iddata['chtxt'])
319 htmdate = htmdate.replace("<!--title-value//-->", iddata['title'])
320 htmdate = htmdate.replace("<!--size-value//-->", size)
321 htmdate = htmdate.replace("<!--opts-value//-->", iddata["opt"])
322 htmdate = htmdate.replace("<!--exec-value//-->", "edit-exec:" + editnum)
324 dbpath = path + "ch.db"
335 if f.getfirst('station_name'):
336 station = f.getfirst('station_name')
337 chtxt = station2chtxt(station)
340 station_name = station
342 if f.getfirst('station'):
343 station = f.getfirst('station')
344 chtxt = station2chtxt(station)
347 station_name = station
350 if f.getfirst('type'):
351 type = f.getfirst('type')
352 if f.getfirst('title'):
353 title = f.getfirst('title')
354 if f.getfirst('chtxt'):
355 chtxt = f.getfirst('chtxt')
356 if f.getfirst('btime'):
357 btime = f.getfirst('btime')
358 bt = datetime.datetime(*time.strptime(btime, "%Y-%m-%d %H:%M:%S")[:-3])
359 if f.getfirst('etime'):
360 etime = f.getfirst('etime')
361 et = datetime.datetime(*time.strptime(etime, "%Y-%m-%d %H:%M:%S")[:-3])
364 dt = delt.days * 24 * 60 * 60 + delt.seconds
366 dd = datetime.timedelta(days=1)
368 etime = et.strftime("%Y-%m-%d %H:%M:%S")
369 if dt < -1 * 24 * 60 * 60:
370 d1 = datetime.datetime(bt.year, 0, 0)
371 d2 = datetime.datetime(bt.year + 1, 0, 0)
374 etime = et.strftime("%Y-%m-%d %H:%M:%S")
376 if f.getfirst('size'):
377 size = f.getfirst('size')
379 if f.getfirst('opts'):
380 opts = f.getfirst('opts')
382 if f.getfirst('deltahour', ""):
383 deltahour = f.getfirst('deltahour', "")
385 if f.getfirst('deltaday', ""):
386 deltaday = f.getfirst('deltaday', "")
388 if f.getfirst('exec', ""):
389 exect = f.getfirst('exec', "")
390 if exect == "schedule":
395 elif re.search('edit:', exect):
397 elif re.search('edit-exec:', exect):
399 elif exect == "change":
403 elif exect == "iepg-add":
405 elif exect == "iepg-show":
407 elif exect == "iepg-add_yes":
408 mode = "iepg-add-yes"
409 elif exect == "iepg-del":
411 htmdate = mode_normal()
412 htmdate = htmdate.replace("<!--text_for_replace_chtxt_input//-->", getchtxt())
413 htmdate = htmdate.replace("<!--btime-value//-->", btime)
414 htmdate = htmdate.replace("<!--etime-value//-->", etime)
415 htmdate = htmdate.replace("<!--type-value//-->", type)
416 htmdate = htmdate.replace("<!--ch-value//-->", chtxt)
417 htmdate = htmdate.replace("<!--title-value//-->", title)
418 htmdate = htmdate.replace("<!--size-value//-->", size)
419 htmdate = htmdate.replace("<!--opts-value//-->", opts)
421 if f.getfirst('type') == "keyday":
423 dayt = f.getfirst('day_Mon')
425 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
426 dayt = f.getfirst('day_Tue')
428 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
429 dayt = f.getfirst('day_Wed')
431 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
432 dayt = f.getfirst('day_Thu')
434 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
435 dayt = f.getfirst('day_Fri')
437 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
438 dayt = f.getfirst('day_Sat')
440 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
441 dayt = f.getfirst('day_Sun')
443 rett = rett + reserv_recday(title, chtxt, btime, etime, deltahour, opts, deltaday, dayt)
445 htmdate = mode_recfin()
447 htmdate = mode_recover()
452 if mode == "schedule":
453 htmdate = mode_schedule()
455 htmdate = mode_edit()
456 elif mode == "iepg-add":
457 htmdate = mode_iepg_add(station_name)
458 elif mode == "iepg-add-yes":
463 if f.getfirst('iepg_station') and f.getfirst('iepg_chtxt'):
464 database.add_iepg(f.getfirst('iepg_station'), f.getfirst('iepg_chtxt'))
465 htmdate = mode_iepg_fin()
466 elif mode == "iepg-show":
468 htmdate = mode_iepg_show()
469 elif mode == "iepg-del":
470 s = f.getfirst('iepgdelnum')
473 for st in s.split(","):
475 database.del_by_id_iepg(st)
476 htmdate = mode_iepg_del()
478 # htmdate=mode_iepg_del_miss()
479 elif mode == "edit-rec10":
480 s = f.getfirst('tasknum')
482 htmdate = mode_edit_rec10web(s.split(",")[0])
484 s = f.getfirst('tasknum')
489 database.del_by_id_timeline(st)
491 elif mode == "edit-exec":
492 if (chtxt != "")and(title != "")and(btime != "")and(etime != "")and(opts != ""):
493 editnum = exect.replace("edit-exec:", "")
494 restxt = change_reserv(editnum, type, title, chtxt, btime, etime, deltahour, opts, deltaday)
496 htmdate = mode_recfin()
497 elif restxt == "over":
498 htmdate = mode_recover()
500 htmdate = mode_recfin()
503 if (chtxt != "")and(title != "")and(btime != "")and(etime != "")and(opts != ""):
504 restxt = reserv(type, title, chtxt, btime, etime, deltahour, opts, deltaday)
506 htmdate = mode_recfin()
507 elif restxt == "over":
508 htmdate = mode_recover()
510 htmdate = mode_recfin()
511 print "Content-Type: text/html"