3 # Rec10 TS Recording Tools
\r
4 # Copyright (C) 2009-2010 Yukikaze
\r
29 recpath = configreader.getConfPath('recpath')
\r
30 movepath = configreader.getConfPath('move_destpath')
\r
31 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
\r
35 予定によって子プロセスを生成し処理する。
\r
38 if rec10d.rec10db.select_installed_in_status()==0 or rec10d.rec10db.select_version_in_status()<recdblist.version:
\r
40 elif rec10d.rec10db.select_installed_in_status()==1:
\r
42 rec10d.rec10db.new_epg_ch()
\r
44 rec10d.rec10db.change_chscaned_in_status()
\r
47 recdb.deleteOldProgramBeforeTheseHours("24")
\r
48 recdb.delete_old_auto_bayes("1")
\r
49 recdb.delete_old_auto_keyword("1")
\r
50 tasks = recdb.getProgramsInTheseHours("3")
\r
51 inum = recdb.countRecNow_minutes("10")
\r
52 recdblist.printutf8(u"rec10処理開始"+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),verbose_level=800)
\r
53 recdblist.printutf8(u"直近録画予約件数:" + str(inum) + u"BS/CS録画中件数:" + str(status.getBSCSRecording()) + u"TE録画中件数:" + str(status.getTERecording()) ,verbose_level=800)
\r
56 dnow=datetime.datetime.now()
\r
57 if dnow.minute%10<5:
\r
62 search_keyword(recdb.getAllJbkKeyword())
\r
63 recque.searchRecQue(recpath)
\r
71 auto_process.autoCheck(recpath)
\r
73 auto_process.killDeadEncode(recpath)
\r
75 update = chdb.update()
\r
82 for bctype in update:
\r
84 if bctype.find('te') > -1:
\r
85 recnum = status.getTERecording() + recdb.countRecNow_minutes_TE("10")
\r
86 recdblist.printutf8(u"放送種別:"+bctype + u"||該当チューナー実行中件数:" + str(status.getTERecording()) + u":直近予約件数:" + str(recdb.countRecNow_minutes_TE("10")),verbose_level=800)
\r
87 recnum = int(configreader.getConfEnv("te_max")) -recnum
\r
89 recnum = status.getBSCSRecording() + recdb.countRecNow_minutes_BSCS("10")
\r
90 recdblist.printutf8(u"放送種別:"+bctype + u"||該当チューナー実行中件数:" + str(status.getBSCSRecording()) + u":直近予約件数:" + str(recdb.countRecNow_minutes_BSCS("10")),verbose_level=800)
\r
91 recnum = int(configreader.getConfEnv("bscs_max")) -recnum
\r
93 recdblist.printutf8(str(update),verbose_level=750)
\r
94 rec10d.rec10db.update_status_by_bctype_epg_ch(bctype, "0")
\r
95 epgdb.updatebc(bctype)
\r
96 update = chdb.update()
\r
101 auto_process.update_all_timeline_epg()
\r
108 auto_process.update_all_timeline_epg()
\r
111 typetxt = task["type"]
\r
113 chtxt = task['chtxt']
\r
117 title = task['title']
\r
121 btime = task['btime']
\r
122 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
\r
125 bt = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
\r
127 etime = task['etime']
\r
128 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
\r
131 et = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
\r
136 tnow = datetime.datetime.now()
\r
138 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
139 if task["type"] == recdblist.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
\r
141 if pid != 0:#親プロセスの場合
\r
143 else:#子プロセスの場合 アップデートを行って終了
\r
144 type_reserve(task["type"],chtxt,title,bt,et,opt)
\r
146 elif task["type"] == recdblist.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
\r
147 deltatime = task['deltatime']
\r
149 if pid != 0:#親プロセスの場合
\r
151 else:#子プロセスの場合 アップデートを行って終了
\r
152 type_keyword(task["type"],chtxt,title, bt, et, opt, deltatime)
\r
154 elif task["type"] == recdblist.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
\r
155 deltatime = task['deltatime']
\r
156 deltaday = task['deltaday']
\r
158 keyeverycounter=task['counter']
\r
162 if pid != 0:#親プロセスの場合
\r
164 else:#子プロセスの場合 アップデートを行って終了
\r
165 type_keyword_every_day(task["type"],chtxt, title, bt, et, opt, deltatime, deltaday,keyeverycounter)
\r
167 elif task["type"] == recdblist.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
\r
169 if pid != 0:#親プロセスの場合
\r
171 else:#子プロセスの場合 アップデートを行って終了
\r
172 type_final(task["type"],chtxt, title, bt, et, opt)
\r
174 elif task["type"] == recdblist.REC_TS_DECODE_QUE:
\r
177 if pid != 0:#親プロセスの場合
\r
179 else:#子プロセスの場合 アップデートを行って終了
\r
180 time.sleep(5*b25num)
\r
181 type_decode_que(task["type"],chtxt, title, bt, et, opt)
\r
183 elif task["type"] == recdblist.REC_ENCODE_QUE:
\r
184 encodenum=encodenum+1
\r
186 if pid != 0:#親プロセスの場合
\r
188 else:#子プロセスの場合 アップデートを行って終了
\r
189 time.sleep(5*encodenum)
\r
190 type_encode_que(task["type"],chtxt, title, bt, et, opt)
\r
192 elif task["type"] == recdblist.REC_AVI_TO_MKV:
\r
195 if pid > 0:#親プロセスの場合
\r
200 if configreader.getConfEnv("make_mp4")==1:
\r
204 if re.search("m", opt):
\r
206 if re.search("4", opt):
\r
208 recdb.deleteReckey(recdblist.REC_AVI_TO_MKV, title, chtxt, btime)
\r
209 recdb.reserveReckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime, etime, opt)
\r
211 tv2mp4.raw2mp4(os.path.join(recpath,title+".264"),os.path.join(recpath,title+".mp4"),opt)
\r
213 tv2mkv.raw2mkv(os.path.join(recpath,title+".264"),os.path.join(recpath,title+".mkv"),opt)
\r
214 recdb.deleteReckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime)
\r
216 elif task["type"] == recdblist.REC_AVI_TO_MP4:
\r
219 if pid > 0:#親プロセスの場合
\r
224 if configreader.getConfEnv("make_mp4")==1:
\r
228 if re.search("m", opt):
\r
230 if re.search("4", opt):
\r
232 recdb.deleteReckey(recdblist.REC_AVI_TO_MP4, title, chtxt, btime)
\r
233 recdb.reserveReckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime, etime, opt)
\r
235 tv2mp4.ts2mp4(pin, pout, opt)
\r
236 tv2mp4.raw2mp4(os.path.join(recpath,title+".264"),os.path.join(recpath,title+".mp4"),opt)
\r
238 tv2mkv.raw2mkv(os.path.join(recpath,title+".264"),os.path.join(recpath,title+".mkv"),opt)
\r
239 recdb.deleteReckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime)
\r
241 elif task["type"] == recdblist.REC_MKV_TO_MP4:
\r
244 if pid > 0:#親プロセスの場合
\r
247 recdb.deleteReckey(recdblist.REC_MKV_TO_MP4, title, chtxt, btime)
\r
248 recdb.reserveReckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime, etime, opt)
\r
249 tv2mp4.mkv2mp4(os.path.join(recpath,title+".mkv"),os.path.join(recpath,title+".mp4"))
\r
250 recdb.deleteReckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime)
\r
253 def search_keyword(key):
\r
254 tnow = datetime.datetime.now()
\r
255 nows =tnow.strftime("%Y-%m-%d %H:%M:%S")
\r
256 for k,auto,opt in key:
\r
257 recdatum = epgdb.searchTimeAuto(k,nows, "144")
\r
258 for recdata in recdatum:
\r
259 if recdata[1] != "":
\r
260 chtxtt = recdata[0]
\r
261 titlet = recdata[1]
\r
262 btimet = recdata[2]
\r
263 etimet = recdata[3]
\r
264 btt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
\r
265 ett = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
\r
266 btimet = btt.strftime("%Y-%m-%d %H:%M:%S")
\r
267 etimet = ett.strftime("%Y-%m-%d %H:%M:%S")
\r
268 #if status.getSettings_auto_jbk()==1:
\r
269 if auto==1 or status.getSettings_auto_jbk()==1:
\r
272 topt=status.getSettings_auto_opt()
\r
275 if len(ch['ch'])>2:
\r
276 maxnum=epgdb.count_schedule_timeline(btimet, etimet)[1]
\r
277 maxnum=int(configreader.getConfEnv("bscs_max"))-maxnum
\r
279 maxnum=epgdb.count_schedule_timeline(btimet, etimet)[0]
\r
280 maxnum=int(configreader.getConfEnv("te_max"))-maxnum
\r
282 if recdb.checkDuplicated(titlet, chtxtt, btimet, etimet)==0:
\r
283 recdb.recreserv(titlet,chtxtt, btimet, etimet,topt)
\r
284 except Exception, inst:
\r
285 recdblist.addCommonlogEX("Error", "search_keyword_auto_jbk(timerec.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
\r
288 recdb.reserveAutoKeyword(chtxtt, titlet, btimet, etimet)
\r
289 except Exception, inst:
\r
290 recdblist.addCommonlogEX("Error", "search_keyword(timerec.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
\r
291 def type_reserve(typetxt,chtxt,title,bt,et,opt):
\r
292 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
293 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
296 if typetxt==recdblist.REC_RESERVE:
\r
297 typetxtfinal=recdblist.REC_FINAL_RESERVE
\r
298 tnow = datetime.datetime.now()
\r
300 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
301 if (dt < 58 * 60 and dt > 30 * 60):
\r
302 bctypet = chdb.searchCHFromChtxt(chtxt)['bctype']
\r
303 chdatat = rec10d.rec10db.select_by_bctype_epg_ch(bctypet)
\r
304 dt1=bt-datetime.datetime.strptime(chdatat[0][4], "%Y-%m-%d %H:%M:%S")
\r
305 dt1 = dt1.days * 24 * 60 * 60 + dt1.seconds
\r
307 recdata = epgdb.searchTime(title, btime, "5", chtxt)
\r
308 chtxtn = recdata[0]
\r
309 titlen = recdata[1]
\r
310 btimen = recdata[2]
\r
311 etimen = recdata[3]
\r
313 longexp = recdata[5]
\r
314 category=recdata[6]
\r
315 bt = datetime.datetime.strptime(btimen, "%Y-%m-%d %H:%M:%S")
\r
316 et = datetime.datetime.strptime(etimen, "%Y-%m-%d %H:%M:%S")
\r
317 btimen = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
318 etimen = et.strftime("%Y-%m-%d %H:%M:%S")
\r
321 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
322 recdb.reserveReckey(typetxtfinal, titlen, chtxtn, btimen, etimen, opt)
\r
323 recdb.addRecLogProgram(titlen, chtxtn, btimen, etimen, opt, exp, longexp, category)
\r
324 auto_rec.addKey(chtxt, titlen,exp+" "+longexp)
\r
325 auto_rec.addKey("ALL", titlen,exp+" "+longexp)
\r
326 recdblist.printutf8(u"追いかけ機能実行中: "+title+" : "+titlen+" "+btimen+" "+etimen)
\r
327 except Exception, inst:
\r
328 recdblist.addCommonlogEX("Error", "Oikake DB(timerec.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
\r
330 recdblist.printutf8(u"追いかけ機能エラー:番組データが見付かりません。")
\r
332 if rec10d.rec10db.select_by_bctype_epg_ch(bctypet)[0][5] != "0":
\r
333 rec10d.rec10db.update_status_by_bctype_epg_ch(bctypet, "3")
\r
335 elif (dt <= 30 * 60 and dt > 20 * 60):
\r
336 recdata = epgdb.searchTime(title, btime, "5", chtxt)
\r
337 chtxtn = recdata[0]
\r
338 titlen = recdata[1]
\r
339 btimen = recdata[2]
\r
340 etimen = recdata[3]
\r
342 longexp = recdata[5]
\r
343 category=recdata[6]
\r
344 bt = datetime.datetime.strptime(btimen, "%Y-%m-%d %H:%M:%S")
\r
345 et = datetime.datetime.strptime(etimen, "%Y-%m-%d %H:%M:%S")
\r
346 btimen = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
347 etimen = et.strftime("%Y-%m-%d %H:%M:%S")
\r
350 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
351 recdb.reserveReckey(typetxtfinal, titlen, chtxtn, btimen, etimen, opt)
\r
352 recdb.addRecLogProgram(titlen, chtxtn, btimen, etimen, opt, exp, longexp, category)
\r
353 auto_rec.addKey(chtxt, titlen,exp+" "+longexp)
\r
354 auto_rec.addKey("ALL", titlen,exp+" "+longexp)
\r
355 #recdblist.printutf8(u"追いかけ機能実行中: "+title+" : "+titlen+" "+btimen+" "+etimen)
\r
356 recdblist.addCommonlogEX(u"通常", "Oikake (timerec.py)",u"追いかけ機能実行中",u"追いかけ機能実行中: "+title+" : "+titlen+" "+btimen+" "+etimen,log_level=500)
\r
357 except Exception, inst:
\r
358 recdblist.addCommonlogEX("Error", "Oikake DB(timerec.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
\r
359 elif dt <= 20 * 60:
\r
361 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
362 recdb.reserveReckey(typetxtfinal, title, chtxt, btime, etime, opt)
\r
363 except Exception, inst:
\r
364 recdblist.addCommonlogEX("Error", "Oikake DB(timerec.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
\r
365 def type_final(typetxt,chtxt,title,bt,et,opt):
\r
366 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
367 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
371 if typetxt==recdblist.REC_FINAL_RESERVE:
\r
372 typetxting=recdblist.REC_TS_RECORDING
\r
373 typetxtdecque=recdblist.REC_TS_DECODE_QUE
\r
374 tnow = datetime.datetime.now()
\r
376 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
377 if dt < 6 * 60 and dt > 0:
\r
379 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
380 testpath=[os.path.join(recpath,title+".ts.b25")]
\r
381 testpath.append(os.path.join(recpath,title+".ts"))
\r
382 testpath.append(os.path.join(recpath,title+".avi"))
\r
383 testpath.append(os.path.join(recpath,title+".mp4"))
\r
384 testpath.append(os.path.join(recpath,title+".log"))
\r
386 for ti in testpath:
\r
387 if os.path.exists(ti):
\r
389 if re.search("N", opt) or tcheck>0:
\r
392 iff=u"("+configreader.getConfEnv("iff")+u")_"
\r
396 newtitle=newtitle+u"_"+iff+newtime.strftime("%Y-%m-%dT%H-%M-%S")
\r
397 recdb.reserveReckey(typetxting, newtitle, chtxt, btime, etime, opt)
\r
398 recdblist.addCommonlogEX(u"通常","timerec.py",u"録画開始 "+newtitle+" "+btime+" "+etime,"",log_level=500)
\r
399 tv2avi.timetv2b25(recpath + "/" + newtitle + ".avi", chtxt, btime, etime, opt)
\r
400 recdb.deleteReckey(typetxting, newtitle, chtxt, btime)
\r
401 if not re.search("R", opt):
\r
402 tnow = datetime.datetime.now()
\r
403 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
\r
404 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
\r
406 bt = tnow + datetime.timedelta(seconds=600)
\r
407 et = et + dt + datetime.timedelta(seconds=600)
\r
408 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
409 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
410 recdb.reserveReckey(typetxtdecque, newtitle, chtxt, btime, etime, opt)
\r
414 shutil.copy(os.path.join(recpath,title+".ts.b25"), os.path.join(movepath,title+".ts.b25"))
\r
418 os.chmod(os.path.join(movepath,title+".ts.b25"),0777)
\r
421 recque.writeRecQue(movepath, chtxt, title, opt)
\r
423 os.chmod(os.path.join(movepath,title+".recq"),0777)
\r
426 except Exception, inst:
\r
427 recdblist.addCommonlogEX("Error", "Move option(timerec.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
\r
428 recdb.reserveReckey(recdblist.REC_MOVE_END, newtitle, chtxt, btime, etime, opt)
\r
430 def type_keyword(typetxt,chtxt,title,bt,et,opt,deltatime):
\r
431 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
432 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
435 if typetxt==recdblist.REC_KEYWORD:
\r
436 typetxtres=recdblist.REC_RESERVE
\r
437 tnow = datetime.datetime.now()
\r
439 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
440 recdblist.printutf8(str(dt), verbose_level=800)
\r
442 recdata = epgdb.searchTime(title, btime, deltatime, chtxt)
\r
443 if recdata[1] != "":
\r
444 chtxtt = recdata[0]
\r
445 titlet = recdata[1]
\r
446 btimet = recdata[2]
\r
447 etimet = recdata[3]
\r
449 longexp = recdata[5]
\r
450 category=recdata[6]
\r
451 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
\r
452 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
\r
453 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
454 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
\r
456 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
457 recdb.reserveReckey(typetxtres, titlet, chtxt, btimet, etimet, opt)
\r
458 recdb.addRecLogProgram(titlet, chtxtt, btimet, etimet, opt, exp,longexp,category)
\r
459 auto_rec.addKey(chtxt, titlet,exp+" "+longexp)
\r
460 auto_rec.addKey("ALL", titlet,exp+" "+longexp)
\r
461 recdblist.addCommonlogEX(u"通常","timerec.py",u"key "+title+u" : "+titlet+u" "+btimet+u" "+etimet,"",log_level=500)
\r
462 #except Exception, inst:
\r
463 # recdblist.printutf8("Error happened in REC_KEYWORD DB")
\r
464 # recdblist.printutf8(type(inst))
\r
465 # recdblist.printutf8(inst)
\r
467 recdblist.printutf8("nothing match")
\r
468 def type_keyword_every_day(type,chtxt,title,bt,et,opt,deltatime,deltaday,counter):
\r
469 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
470 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
471 tnow = datetime.datetime.now()
\r
473 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
474 dd = datetime.timedelta(days=int(deltaday))
\r
476 recdb.deleteReckey(recdblist.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
\r
479 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
480 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
\r
481 recdb.reserveEverydayKeyword(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
\r
482 elif dt < 120 * 60:
\r
483 recdb.deleteReckey(recdblist.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
\r
486 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
487 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
\r
489 recdb.reserveEverydayKeyword(title, chtxt, btxt, etxt, deltatime, opt, deltaday,counter-1)
\r
491 recdb.reserveEverydayKeyword(title, chtxt, btxt, etxt, deltatime, opt, deltaday,-1)
\r
492 recdata = epgdb.searchTime(title, btime, deltatime, chtxt)
\r
493 if recdata[1] != "":
\r
494 chtxtt = recdata[0]
\r
495 titlet = recdata[1]
\r
496 btimet = recdata[2]
\r
497 etimet = recdata[3]
\r
499 longexp = recdata[5]
\r
500 category=recdata[6]
\r
501 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
\r
502 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
\r
503 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
504 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
\r
506 recdb.reserveKeyword(titlet, chtxt, btimet, etimet, deltatime, opt)
\r
508 recdb.reserveKeyword(title, chtxt, btime, etime, deltatime, opt)
\r
509 def type_decode_que(typetxt,chtxt,title,bt,et,opt):
\r
510 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
511 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
512 tnow = datetime.datetime.now()
\r
514 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
519 if typetxt== recdblist.REC_TS_DECODE_QUE:
\r
520 typetxting=recdblist.REC_TS_DECODING
\r
521 typetxtmiss=recdblist.REC_MISS_DECODE
\r
522 typetxtencque=recdblist.REC_ENCODE_QUE
\r
523 tnow = datetime.datetime.now()
\r
525 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
527 if status.getB25Decoding() < 2:
\r
528 pin = recpath + "/" + title
\r
529 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
530 recdb.reserveReckey(typetxting, title, chtxt, btime, etime, opt)
\r
531 tv2avi.b252ts(pin, chtxt, btime, etime, opt)
\r
532 recdb.deleteReckey(typetxting, title, chtxt, btime)
\r
533 if not os.access(recpath + "/" + title + ".ts", os.F_OK):
\r
534 recdb.deleteReckey(typetxting, title, chtxt, btime)
\r
535 recdb.reserveReckey(typetxtmiss, title, chtxt, btime, etime, opt)
\r
537 auto_process.deleteTmpFile(recpath, title, ".ts")
\r
538 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
\r
539 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
\r
541 if not re.search("D", opt):
\r
542 tnow = datetime.datetime.now()
\r
543 bt = tnow + datetime.timedelta(seconds=600)
\r
545 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
546 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
547 recdb.reserveReckey(typetxtencque, title, chtxt, btime, etime, opt)
\r
551 shutil.copy(os.path.join(recpath,title+".ts"), os.path.join(movepath,title+".ts"))
\r
555 os.chmod(os.path.join(movepath,title+".ts"),0777)
\r
558 recque.writeRecQue(movepath, chtxt, title, opt)
\r
560 os.chmod(os.path.join(movepath,title+".recq"),0777)
\r
564 if os.path.getsize(os.path.join(recpath,title+".ts"))==os.path.getsize(os.path.join(movepath,title+".ts")):
\r
565 os.remove(os.path.join(recpath,title+".ts"))
\r
566 except Exception, inst:
\r
567 errtxt1="move ts error.\n"
\r
568 errtxt2=str(type(inst))+"\n"
\r
569 errtxt2=errtxt2+str(inst)
\r
570 recdblist.addCommonlogEX("Error", "type_decode_que(timerec.py)", errtxt1,errtxt2+traceback.format_exc(),log_level=200)
\r
571 recdb.reserveReckey(recdblist.REC_MOVE_END, title, chtxt, btime, etime, opt)
\r
573 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
574 bt = bt + datetime.timedelta(seconds=600)
\r
575 et = et + datetime.timedelta(seconds=600)
\r
576 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
577 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
578 recdb.reserveReckey(typetxtnow, title, chtxt, btime, etime, opt)
\r
581 def type_encode_que(typetxt,chtxt,title,bt,et,opt):
\r
582 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
583 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
584 tnow = datetime.datetime.now()
\r
586 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
590 if typetxt==recdblist.REC_ENCODE_QUE:
\r
591 typetxting=recdblist.REC_ENCODE_LOCAL
\r
592 typetxtfin=recdblist.REC_FIN_LOCAL
\r
594 if status.getEncoding() < int(configreader.getConfEnv("enc_max")):
\r
595 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
596 recdb.reserveReckey(typetxting, title, chtxt, btime, etime, opt)
\r
597 recdblist.printutf8(opt)
\r
598 pin = recpath + "/" + title + ".ts"
\r
599 if re.search("d", opt):
\r
600 pin = recpath + "/" + title + ".m2v"
\r
601 if not os.path.exists(pin) or os.path.getsize(pin)<100*1000:
\r
602 paac2 = recpath + "/" + title + "_2.aac"
\r
603 pmp32 = recpath + "/" + title + "_2.mp3"
\r
604 if not os.path.exists(paac2) and not os.path.exists(pmp32):
\r
605 tv2audio.ts2dualaudio_BonTsDemux(os.path.join(recpath, title+".ts"),recdblist.BONTSDEMUX_DELAY,opt)
\r
607 elif re.search("5", opt):
\r
608 pin = recpath + "/" + title + ".m2v"
\r
609 if not os.path.exists(pin) or os.path.getsize(pin)<100*1000:
\r
610 paac2 = recpath + "/" + title + "_2.aac"
\r
611 pmp32 = recpath + "/" + title + "_2.mp3"
\r
612 if not os.path.exists(paac2) and not os.path.exists(pmp32):
\r
613 tv2audio.ts2pentaaudio_BonTsDemux(os.path.join(recpath, title+".ts"), recdblist.BONTSDEMUX_DELAY, opt)
\r
617 if configreader.getConfEnv("make_mp4")=="1":
\r
621 if re.search("m", opt):
\r
623 if re.search("4", opt):
\r
625 recdblist.printutf8(pin)
\r
626 if not re.search("0", opt):
\r
628 pout = recpath + "/" + title + ".mp4"
\r
629 tv2mp4.ts2mp4(pin, pout, opt)
\r
631 pout = recpath + "/" + title + ".mkv"
\r
632 tv2mkv.ts2mkv(pin, pout, opt)
\r
633 if re.search("8", opt) or re.search("9", opt):
\r
635 poutt = recpath + "/" + "m_"+title + ".mp4"
\r
636 if re.search("d", opt) or re.search("5", opt):
\r
637 if os.path.exists(os.path.join(recpath, "m_"+title+".m2v")):
\r
638 shutil.move(os.path.join(recpath, title+".m2v"),os.path.join(recpath, "m_"+title+".m2v"))
\r
639 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.aac")):
\r
640 shutil.move(os.path.join(recpath, title+"_1.aac"),os.path.join(recpath, "m_"+title+"_1.aac"))
\r
641 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.mp3")):
\r
642 shutil.move(os.path.join(recpath, title+"_1.mp3"),os.path.join(recpath, "m_"+title+"_1.mp3"))
\r
643 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.aac")):
\r
644 shutil.move(os.path.join(recpath, title+"_2.aac"),os.path.join(recpath, "m_"+title+"_2.aac"))
\r
645 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.mp3")):
\r
646 shutil.move(os.path.join(recpath, title+"_2.mp3"),os.path.join(recpath, "m_"+title+"_2.mp3"))
\r
647 shutil.move(os.path.join(recpath, title+".ts"),os.path.join(recpath, "m_"+title+".ts"))
\r
648 tv2mp4.ts2mp4(os.path.join(recpath, "m_"+title+".ts"), poutt, optt)
\r
649 shutil.move(os.path.join(recpath, "m_"+title+".ts"),os.path.join(recpath, title+".ts"))
\r
652 poutt = recpath + "/" + "m_"+title + ".mp4"
\r
653 shutil.move(os.path.join(recpath, title+".ts"),os.path.join(recpath, "m_"+title+".ts"))
\r
654 if re.search("d", opt) or re.search("5", opt):
\r
655 if os.path.exists(os.path.join(recpath, "m_"+title+".m2v")):
\r
656 shutil.move(os.path.join(recpath, title+".m2v"),os.path.join(recpath, "m_"+title+".m2v"))
\r
657 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.aac")):
\r
658 shutil.move(os.path.join(recpath, title+"_1.aac"),os.path.join(recpath, "m_"+title+"_1.aac"))
\r
659 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.mp3")):
\r
660 shutil.move(os.path.join(recpath, title+"_1.mp3"),os.path.join(recpath, "m_"+title+"_1.mp3"))
\r
661 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.aac")):
\r
662 shutil.move(os.path.join(recpath, title+"_2.aac"),os.path.join(recpath, "m_"+title+"_2.aac"))
\r
663 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.mp3")):
\r
664 shutil.move(os.path.join(recpath, title+"_2.mp3"),os.path.join(recpath, "m_"+title+"_2.mp3"))
\r
665 tv2mp4.ts2mp4(os.path.join(recpath, "m_"+title+".ts"), poutt, optt)
\r
666 shutil.move(os.path.join(recpath, "m_"+title+".ts"),os.path.join(recpath, title+".ts"))
\r
667 recdb.deleteReckey(typetxting, title, chtxt, btime)
\r
669 if re.search("E", opt):
\r
671 if os.path.exists(os.path.join(recpath,title+".mp4")):
\r
673 shutil.copy(os.path.join(recpath,title+".mp4"), os.path.join(movepath,title+".mp4"))
\r
677 os.chmod(os.path.join(movepath,title+".mp4"),0777)
\r
680 recque.writeRecQue(movepath, chtxt, title, opt)
\r
682 os.chmod(os.path.join(movepath,title+".recq"),0777)
\r
685 elif os.path.exists(os.path.join(recpath,title+".mkv")):
\r
687 shutil.copy(os.path.join(recpath,title+".mkv"), os.path.join(movepath,title+".mkv"))
\r
691 os.chmod(os.path.join(movepath,title+".mkv"),0777)
\r
694 recque.writeRecQue(movepath, chtxt, title, opt)
\r
696 os.chmod(os.path.join(movepath,title+".recq"),0777)
\r
699 except Exception, inst:
\r
700 errtxt1="move mkv/mp4 error."
\r
701 errtxt2=str(type(inst))+"\n"
\r
702 errtxt2=errtxt2+str(inst)
\r
703 recdblist.addCommonlogEX("Error", "type_encode_que(timerec.py)", errtxt1,errtxt2+traceback.format_exc(),log_level=200)
\r
704 recdb.reserveReckey(recdblist.REC_MOVE_END, title, chtxt, btime, etime, opt)
\r
705 recdb.reserveReckey(typetxtfin, title, chtxt, btime, etime, opt)
\r
708 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
709 bt = bt + datetime.timedelta(seconds=600)
\r
710 et = et + datetime.timedelta(seconds=600)
\r
711 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
712 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
713 recdb.reserveReckey(typetxtnow, title, chtxt, btime, etime, opt)
\r