3 # Rec10 TS Recording Tools
\r
4 # Copyright (C) 2009-2011 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
441 if dt <= 90 * 60 and dt > 70 * 60:
\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 elif dt <= 70 * 60:
\r
469 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
470 recdb.reserveReckey(typetxtres, title, chtxt, btime, etime, opt)
\r
471 recdblist.addCommonlogEX(u"エラー","timerec.py",u"nothing match","",log_level=200)
\r
472 recdblist.addCommonlogEX(u"エラー","timerec.py",u"key "+title+u" : "+titlet+u" "+btimet+u" "+etimet,"",log_level=200)
\r
473 def type_keyword_every_day(type,chtxt,title,bt,et,opt,deltatime,deltaday,counter):
\r
474 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
475 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
476 tnow = datetime.datetime.now()
\r
478 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
479 dd = datetime.timedelta(days=int(deltaday))
\r
481 recdb.deleteReckey(recdblist.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
\r
484 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
485 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
\r
486 recdb.reserveEverydayKeyword(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
\r
487 elif dt < 120 * 60:
\r
488 recdb.deleteReckey(recdblist.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
\r
491 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
492 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
\r
494 recdb.reserveEverydayKeyword(title, chtxt, btxt, etxt, deltatime, opt, deltaday,counter-1)
\r
496 recdb.reserveEverydayKeyword(title, chtxt, btxt, etxt, deltatime, opt, deltaday,-1)
\r
497 recdata = epgdb.searchTime(title, btime, deltatime, chtxt)
\r
498 if recdata[1] != "":
\r
499 chtxtt = recdata[0]
\r
500 titlet = recdata[1]
\r
501 btimet = recdata[2]
\r
502 etimet = recdata[3]
\r
504 longexp = recdata[5]
\r
505 category=recdata[6]
\r
506 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
\r
507 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
\r
508 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
509 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
\r
511 recdb.reserveKeyword(titlet, chtxt, btimet, etimet, deltatime, opt)
\r
513 recdb.reserveKeyword(title, chtxt, btime, etime, deltatime, opt)
\r
514 def type_decode_que(typetxt,chtxt,title,bt,et,opt):
\r
515 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
516 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
517 tnow = datetime.datetime.now()
\r
519 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
524 if typetxt== recdblist.REC_TS_DECODE_QUE:
\r
525 typetxting=recdblist.REC_TS_DECODING
\r
526 typetxtmiss=recdblist.REC_MISS_DECODE
\r
527 typetxtencque=recdblist.REC_ENCODE_QUE
\r
528 tnow = datetime.datetime.now()
\r
530 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
532 if status.getB25Decoding() < 2:
\r
533 pin = recpath + "/" + title
\r
534 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
535 recdb.reserveReckey(typetxting, title, chtxt, btime, etime, opt)
\r
536 tv2avi.b252ts(pin, chtxt, btime, etime, opt)
\r
537 recdb.deleteReckey(typetxting, title, chtxt, btime)
\r
538 if not os.access(recpath + "/" + title + ".ts", os.F_OK):
\r
539 recdb.deleteReckey(typetxting, title, chtxt, btime)
\r
540 recdb.reserveReckey(typetxtmiss, title, chtxt, btime, etime, opt)
\r
542 auto_process.deleteTmpFile(recpath, title, ".ts")
\r
543 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
\r
544 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
\r
546 if not re.search("D", opt):
\r
547 tnow = datetime.datetime.now()
\r
548 bt = tnow + datetime.timedelta(seconds=600)
\r
550 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
551 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
552 recdb.reserveReckey(typetxtencque, title, chtxt, btime, etime, opt)
\r
556 shutil.copy(os.path.join(recpath,title+".ts"), os.path.join(movepath,title+".ts"))
\r
560 os.chmod(os.path.join(movepath,title+".ts"),0777)
\r
563 recque.writeRecQue(movepath, chtxt, title, opt)
\r
565 os.chmod(os.path.join(movepath,title+".recq"),0777)
\r
569 if os.path.getsize(os.path.join(recpath,title+".ts"))==os.path.getsize(os.path.join(movepath,title+".ts")):
\r
570 os.remove(os.path.join(recpath,title+".ts"))
\r
571 except Exception, inst:
\r
572 errtxt1="move ts error.\n"
\r
573 errtxt2=str(type(inst))+"\n"
\r
574 errtxt2=errtxt2+str(inst)
\r
575 recdblist.addCommonlogEX("Error", "type_decode_que(timerec.py)", errtxt1,errtxt2+traceback.format_exc(),log_level=200)
\r
576 recdb.reserveReckey(recdblist.REC_MOVE_END, title, chtxt, btime, etime, opt)
\r
578 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
579 bt = bt + datetime.timedelta(seconds=600)
\r
580 et = et + datetime.timedelta(seconds=600)
\r
581 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
582 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
583 recdb.reserveReckey(typetxtnow, title, chtxt, btime, etime, opt)
\r
586 def type_encode_que(typetxt,chtxt,title,bt,et,opt):
\r
587 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
588 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
589 tnow = datetime.datetime.now()
\r
591 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
\r
595 if typetxt==recdblist.REC_ENCODE_QUE:
\r
596 typetxting=recdblist.REC_ENCODE_LOCAL
\r
597 typetxtfin=recdblist.REC_FIN_LOCAL
\r
599 if status.getEncoding() < int(configreader.getConfEnv("enc_max")):
\r
600 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
601 recdb.reserveReckey(typetxting, title, chtxt, btime, etime, opt)
\r
602 recdblist.printutf8(opt)
\r
603 pin = recpath + "/" + title + ".ts"
\r
604 if re.search("d", opt):
\r
605 pin = recpath + "/" + title + ".m2v"
\r
606 if not os.path.exists(pin) or os.path.getsize(pin)<100*1000:
\r
607 paac2 = recpath + "/" + title + "_2.aac"
\r
608 pmp32 = recpath + "/" + title + "_2.mp3"
\r
609 if not os.path.exists(paac2) and not os.path.exists(pmp32):
\r
610 tv2audio.ts2dualaudio_BonTsDemux(os.path.join(recpath, title+".ts"),recdblist.BONTSDEMUX_DELAY,opt)
\r
612 elif re.search("5", opt):
\r
613 pin = recpath + "/" + title + ".m2v"
\r
614 if not os.path.exists(pin) or os.path.getsize(pin)<100*1000:
\r
615 paac2 = recpath + "/" + title + "_2.aac"
\r
616 pmp32 = recpath + "/" + title + "_2.mp3"
\r
617 if not os.path.exists(paac2) and not os.path.exists(pmp32):
\r
618 tv2audio.ts2pentaaudio_BonTsDemux(os.path.join(recpath, title+".ts"), recdblist.BONTSDEMUX_DELAY, opt)
\r
622 if configreader.getConfEnv("make_mp4")=="1":
\r
626 if re.search("m", opt):
\r
628 if re.search("4", opt):
\r
630 recdblist.printutf8(pin)
\r
631 if not re.search("0", opt):
\r
633 pout = recpath + "/" + title + ".mp4"
\r
634 tv2mp4.ts2mp4(pin, pout, opt)
\r
636 pout = recpath + "/" + title + ".mkv"
\r
637 tv2mkv.ts2mkv(pin, pout, opt)
\r
638 if re.search("1", opt) or re.search("2", opt):
\r
639 optt=opt.replace("1","MW1")
\r
640 optt=optt.replace("2","MW2")
\r
641 poutt = recpath + "/" + "m_"+title + ".mp4"
\r
642 if re.search("d", opt) or re.search("5", opt):
\r
643 if os.path.exists(os.path.join(recpath, "m_"+title+".m2v")):
\r
644 shutil.move(os.path.join(recpath, title+".m2v"),os.path.join(recpath, "m_"+title+".m2v"))
\r
645 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.aac")):
\r
646 shutil.move(os.path.join(recpath, title+"_1.aac"),os.path.join(recpath, "m_"+title+"_1.aac"))
\r
647 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.mp3")):
\r
648 shutil.move(os.path.join(recpath, title+"_1.mp3"),os.path.join(recpath, "m_"+title+"_1.mp3"))
\r
649 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.aac")):
\r
650 shutil.move(os.path.join(recpath, title+"_2.aac"),os.path.join(recpath, "m_"+title+"_2.aac"))
\r
651 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.mp3")):
\r
652 shutil.move(os.path.join(recpath, title+"_2.mp3"),os.path.join(recpath, "m_"+title+"_2.mp3"))
\r
653 shutil.move(os.path.join(recpath, title+".ts"),os.path.join(recpath, "m_"+title+".ts"))
\r
654 tv2mp4.ts2mp4(os.path.join(recpath, "m_"+title+".ts"), poutt, optt)
\r
655 shutil.move(os.path.join(recpath, "m_"+title+".ts"),os.path.join(recpath, title+".ts"))
\r
658 poutt = recpath + "/" + "m_"+title + ".mp4"
\r
659 shutil.move(os.path.join(recpath, title+".ts"),os.path.join(recpath, "m_"+title+".ts"))
\r
660 if re.search("d", opt) or re.search("5", opt):
\r
661 if os.path.exists(os.path.join(recpath, "m_"+title+".m2v")):
\r
662 shutil.move(os.path.join(recpath, title+".m2v"),os.path.join(recpath, "m_"+title+".m2v"))
\r
663 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.aac")):
\r
664 shutil.move(os.path.join(recpath, title+"_1.aac"),os.path.join(recpath, "m_"+title+"_1.aac"))
\r
665 if os.path.exists(os.path.join(recpath, "m_"+title+"_1.mp3")):
\r
666 shutil.move(os.path.join(recpath, title+"_1.mp3"),os.path.join(recpath, "m_"+title+"_1.mp3"))
\r
667 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.aac")):
\r
668 shutil.move(os.path.join(recpath, title+"_2.aac"),os.path.join(recpath, "m_"+title+"_2.aac"))
\r
669 if os.path.exists(os.path.join(recpath, "m_"+title+"_2.mp3")):
\r
670 shutil.move(os.path.join(recpath, title+"_2.mp3"),os.path.join(recpath, "m_"+title+"_2.mp3"))
\r
671 tv2mp4.ts2mp4(os.path.join(recpath, "m_"+title+".ts"), poutt, optt)
\r
672 shutil.move(os.path.join(recpath, "m_"+title+".ts"),os.path.join(recpath, title+".ts"))
\r
673 recdb.deleteReckey(typetxting, title, chtxt, btime)
\r
675 if re.search("E", opt):
\r
677 if os.path.exists(os.path.join(recpath,title+".mp4")):
\r
679 shutil.copy(os.path.join(recpath,title+".mp4"), os.path.join(movepath,title+".mp4"))
\r
683 os.chmod(os.path.join(movepath,title+".mp4"),0777)
\r
686 recque.writeRecQue(movepath, chtxt, title, opt)
\r
688 os.chmod(os.path.join(movepath,title+".recq"),0777)
\r
691 elif os.path.exists(os.path.join(recpath,title+".mkv")):
\r
693 shutil.copy(os.path.join(recpath,title+".mkv"), os.path.join(movepath,title+".mkv"))
\r
697 os.chmod(os.path.join(movepath,title+".mkv"),0777)
\r
700 recque.writeRecQue(movepath, chtxt, title, opt)
\r
702 os.chmod(os.path.join(movepath,title+".recq"),0777)
\r
705 except Exception, inst:
\r
706 errtxt1="move mkv/mp4 error."
\r
707 errtxt2=str(type(inst))+"\n"
\r
708 errtxt2=errtxt2+str(inst)
\r
709 recdblist.addCommonlogEX("Error", "type_encode_que(timerec.py)", errtxt1,errtxt2+traceback.format_exc(),log_level=200)
\r
710 recdb.reserveReckey(recdblist.REC_MOVE_END, title, chtxt, btime, etime, opt)
\r
711 recdb.reserveReckey(typetxtfin, title, chtxt, btime, etime, opt)
\r
714 recdb.deleteReckey(typetxtnow, title, chtxt, btime)
\r
715 bt = bt + datetime.timedelta(seconds=600)
\r
716 et = et + datetime.timedelta(seconds=600)
\r
717 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
\r
718 etime = et.strftime("%Y-%m-%d %H:%M:%S")
\r
719 recdb.reserveReckey(typetxtnow, title, chtxt, btime, etime, opt)
\r