X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=rec10%2Ftrunk%2Fsrc%2Ftimerec.py;h=9cc4f9d9190485f00ae23df43d9b6c380beba9e4;hb=b07d53df3e40035c9c3ca59d86f048e1f6700d77;hp=7c90a1ed7cb4d3ccb04ac399cb652e7b9fd63bf9;hpb=b502fb1f49b01c0fa93a64d461e00cb2c0d9ff81;p=rec10%2Frec10-git.git diff --git a/rec10/trunk/src/timerec.py b/rec10/trunk/src/timerec.py index 7c90a1e..9cc4f9d 100644 --- a/rec10/trunk/src/timerec.py +++ b/rec10/trunk/src/timerec.py @@ -8,15 +8,14 @@ import os import datetime import epgdb import configreader -#import japanesenkf -import ts2x264 +import checker import tv2avi import recdb import chdb import status import re -#japanesenkf.overrideEncodings() recpath=configreader.getpath('recpath') +tmppath=configreader.getpath('temppath') path=str(os.path.dirname(os.path.abspath(__file__)))+"/" def task(): """ @@ -24,28 +23,36 @@ def task(): 予定によって子プロセスを生成し処理する。 """ recdb.delete_old("6") - tasks=recdb.getnow("1") - - #tasks=recdb.getall() - print tasks - if len(tasks)==0: + tasks=recdb.getnow("2") + #print tasks + inum=recdb.countRecNow("1") + print "now-rectask" + print "inum:"+str(inum)+"bscsrec:"+str(status.getBSCSRecording())+"terec:"+str(status.getTERecording()) + if inum+status.getBSCSRecording()+status.getTERecording() < 2: update=chdb.update() - print "番組表更新処理" + #print "番組表更新処理" print update - if len(update)>0: + if len(update)>0 and status.getEPGUpdating()==0: print "番組表を更新" - print update + status.setEPGUpdating(1) pid=os.fork() - if pid>0:#親プロセスの場合 + if pid!=0:#親プロセスの場合 "" else:#子プロセスの場合 アップデートを行って終了 + i=0 for bctype in update: time.sleep(1) print bctype epgdb.updatebc(bctype) - sys.exit(0) - + update=chdb.update() + i=i+1 + print update + if i>10: + break + status.setEPGUpdating(0) + sys.exit() for task in tasks: + #print task try: chtxt=task['chtxt'] except: @@ -70,169 +77,180 @@ def task(): opt=task['opt'] except: opt="" - dtt=bt-tnow# + tnow=datetime.datetime.now() + dtt=bt-tnow dt=dtt.days*24*60*60+dtt.seconds - #value=line.split(",") if task["type"]==recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt - """bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") - tnow=datetime.datetime.now() - dt=bt-tnow - dt=dt.days*24*60*60+dt.seconds + isUpdate=0 print dt - """ - if dt<58*60*60: - recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime) - #recdb.delrec(title,chtxt,btime) - recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt) - #recdb.lastrecreserv(title,chtxt,btime,etime,opt) - """if dt >30*60: - pid=os.fork() - if pid>0:#親プロセスの場合 + if (dt<58*60 and dt>20*60): + pid=os.fork() + if pid!=0:#親プロセスの場合 + "" + else:#子プロセスの場合 アップデートを行って終了 + cht=chdb.chtxtsearch(chtxt)['bctype'] + if cht.find('te')!=-1: + cht='te' + else: + cht='bscs' + if cht=='bscs': + gettaskbscs=recdb.countRecNow_minutes_BSCS("10") + getnowbscs=status.getBSCSRecording() + bscs=getnowbscs+gettaskbscs + if bscs <2: + print "now(bscs):"+str(getnowbscs)+" task(bscs):"+str(gettaskbscs) + epgdb.updatebc(chdb.chtxtsearch(chtxt)['bctype']) + time.sleep(10) + isUpdate=1 + else: + isUpdate=0 + if cht=="te": + gettaskte=recdb.countRecNow_minutes_TE("10") + getnowte=status.getTERecording() + bscs=getnowte+gettaskte + if recdb.countRecNow_minutes_TE("10")+status.getTERecording() <2: + print "now(te):"+str(getnowte)+" task(te):"+str(gettaskte) + epgdb.updatebc(chdb.chtxtsearch(chtxt)['bctype']) + time.sleep(10) + isUpdate=1 + else: + isUpdate=0 + if isUpdate: + recdata=epgdb.searchtime2(title.decode('utf-8'),btime,"5",chtxt) + chtxtn=recdata[0] + titlen=recdata[1] + btimen=recdata[2] + etimen=recdata[3] + bt=datetime.datetime.strptime(btimen,"%Y-%m-%d %H:%M:%S") + et=datetime.datetime.strptime(etimen,"%Y-%m-%d %H:%M:%S") + btimen=bt.strftime("%Y-%m-%d %H:%M:%S") + etimen=et.strftime("%Y-%m-%d %H:%M:%S") + if chtxt!="": + try: + recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime) + recdb.rec_reckey(recdb.REC_FINAL_RESERVE, titlen, chtxtn, btimen, etimen, opt) + except Exception,inst: + print type(inst) + print inst + else: + print "nothing match" + else: "" - else:#子プロセスの場合 アップデートを行って終了 - epgdb.update(chtxt) - sys.exit(0) - """ - + sys.exit() + elif dt<=10*60: + try: + recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime) + recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt) + except Exception,inst: + print type(inst) + print inst elif task["type"]==recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt - """ - chtxt=task['chtxt'] - #title=task['title'] - btime=task['btime'] - etime=task['etime'] - keyword=task['title'] - """ deltatime=task['deltatime'] - #opt=task['opt'] - #bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") - #tnow=datetime.datetime.now() - #dt=bt-tnow - #dt=dt.days*24*60*60+dt.seconds - #print dt - - if dt<30*60*60: - recdatum=epgdb.searchtime(title,btime,deltatime) - if len(recdata)>0: - #recdb.delkey(title,chtxt,btime,deltatime) - recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime) - for recdata in recdatum: - recdata=recdata[0] - #print recdata - recds=recdata.split(",") - chtxt=recds[0] - title=recds[1] - btime=recds[2] - etime=recds[3] - bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") - et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S") - btime=bt.strftime("%Y-%m-%d %H:%M:%S") - etime=et.strftime("%Y-%m-%d %H:%M:%S") - recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt) - #recdb.lastrecreserv(title,chtxt,btime,etime,opt) - else : + if dt<90*60: + recdata=epgdb.searchtime2(title.decode('utf-8'),btime,deltatime,chtxt) + if recdata[1]!="": + chtxtt=recdata[0] + titlet=recdata[1] + btimet=recdata[2] + etimet=recdata[3] + bt=datetime.datetime.strptime(btimet,"%Y-%m-%d %H:%M:%S") + et=datetime.datetime.strptime(etimet,"%Y-%m-%d %H:%M:%S") + btimet=bt.strftime("%Y-%m-%d %H:%M:%S") + etimet=et.strftime("%Y-%m-%d %H:%M:%S") + try: + recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime) + recdb.rec_reckey(recdb.REC_RESERVE, titlet, chtxtt, btimet, etimet, opt) + except Exception,inst: + print type(inst) + print inst + else: print "nothing match" elif task["type"]==recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday - """chtxt=task['chtxt'] - #title=task['title'] - btime=task['btime'] - etime=task['etime'] - keyword=task['title'] - """ deltatime=task['deltatime'] - #opt=task['opt'] deltaday=task['deltaday'] dd=datetime.timedelta(days=int(deltaday)) - #bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") - #et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S") - #tnow=datetime.datetime.now() - #dt=bt-tnow - #dtt=dt.days*24*60*60+dt.seconds if dtt.days<0: - #recdb.delevery(keyword,chtxt,btime,deltatime,deltaday) recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime) bt=bt+dd et=et+dd btxt=bt.strftime("%Y-%m-%d %H:%M:%S") etxt=et.strftime("%Y-%m-%d %H:%M:%S") - recdb.everyreserv(keyword,chtxt,btxt,etxt,deltatime,opt,deltaday) - elif dt<30*60*60: - recdb.keyreserv(keyword,chtxt,btime,etime,deltatime,opt) + recdb.everyreserv(title,chtxt,btxt,etxt,deltatime,opt,deltaday) + elif dt<120*60: + recdb.keyreserv(title,chtxt,btime,etime,deltatime,opt) recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime) - #recdb.delevery(keyword,chtxt,btime,deltatime,deltaday) bt=bt+dd et=et+dd btxt=bt.strftime("%Y-%m-%d %H:%M:%S") etxt=et.strftime("%Y-%m-%d %H:%M:%S") - recdb.everyreserv(keyword,chtxt,btxt,etxt,deltatime,opt,deltaday) - """ - recdata=epgdb.searchtime(keyword,btime,deltatime) - if len(recdata)>0: - recdata=recdata[0] - recds=recdata.split(",") - chtxt=recds[0] - title=recds[1] - btime=recds[2] - etime=recds[3] - recdb.lastrecreserv(title,chtxt,btime,etime,opt) - """ - elif task["type"]==recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt - """chtxt=task['chtxt'] - title=task['title'] - btime=task['btime'] - etime=task['etime'] - - #keyword=task['keyword'] - #deltatime==task['deltatime'] - #opt=task['opt'] + recdb.everyreserv(title,chtxt,btxt,etxt,deltatime,opt,deltaday) - bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") - tnow=datetime.datetime.now() - dt=bt-tnow - dt=dt.days*24*60*60+dt.seconds - #print "dt="+str(dt) - """ - if dt<6*60*60: - #recdb.dellastrec(title,chtxt,btime) + elif task["type"]==recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt + print dt + if dt<6*60 and dt>0: recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime) - #recdb.recend(title,chtxt,btime,etime,opt) - recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt) + recdb.rec_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime, etime, opt) print "録画開始" pid=os.fork() - if pid>0:#親プロセスの場合 + if pid!=0:#親プロセスの場合 "" else: #print title - tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt) - if not os.access(recpath+"/"+title+".ts", os.F_OK): - #recdb.del_reckey("tsfin", title, chtxt, btime) - recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime) - recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt) + tv2avi.timetv2b25(recpath+"/"+title+".avi", chtxt, btime, etime, opt) + recdb.del_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime) + tnow=datetime.datetime.now() + bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") + et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S") + dt=tnow-bt + bt=tnow+datetime.timedelta(seconds=600) + et=et+dt+datetime.timedelta(seconds=600) + btime=bt.strftime("%Y-%m-%d %H:%M:%S") + etime=et.strftime("%Y-%m-%d %H:%M:%S") + recdb.rec_reckey(recdb.REC_TS_DECODE_QUE,title,chtxt,btime,etime,opt) + sys.exit() + elif task["type"]==recdb.REC_TS_DECODE_QUE: + if dt<10*60: + if status.getB25Decoding()<2: + pid=os.fork() + if pid!=0:#親プロセスの場合 + "" else: - recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt) - recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime) - recdb.rec_reckey(recdb.REC_FIN_DECODE,title,chtxt,btime,etime,opt) - sys.exit(0) + pin=recpath+"/"+title + recdb.del_reckey(recdb.REC_TS_DECODE_QUE,title,chtxt,btime) + recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt) + tv2avi.b252ts(pin, chtxt, btime, etime, opt) + recdb.del_reckey(recdb.REC_TS_DECODING,title,chtxt,btime) + if not os.access(recpath+"/"+title+".ts", os.F_OK): + recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime) + recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt) + tnow=datetime.datetime.now() + bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") + et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S") + dt=tnow-bt + bt=tnow+datetime.timedelta(seconds=600) + et=et+dt+datetime.timedelta(seconds=600) + btime=bt.strftime("%Y-%m-%d %H:%M:%S") + etime=et.strftime("%Y-%m-%d %H:%M:%S") + recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt) + print "b25check "+recpath+"/"+title+".ts.b25 "+recpath+"/"+title+".ts" + print checker.checkB25Decode(recpath+"/"+title+".ts.b25",recpath+"/"+title+".ts") + if checker.checkB25Decode(recpath+"/"+title+".ts.b25",recpath+"/"+title+".ts")==1: + os.remove(recpath+"/"+title+".ts.b25") + sys.exit() + else: + recdb.del_reckey(recdb.REC_TS_DECODE_QUE,title,chtxt,btime) + bt=bt+datetime.timedelta(seconds=600) + et=et+datetime.timedelta(seconds=600) + btime=bt.strftime("%Y-%m-%d %H:%M:%S") + etime=et.strftime("%Y-%m-%d %H:%M:%S") + recdb.rec_reckey(recdb.REC_TS_DECODE_QUE,title,chtxt,btime,etime,opt) elif task["type"]==recdb.REC_ENCODE_QUE: - """title=task['title'] - opt=task['opt'] - btime=task['btime'] - etime=task['etime'] - chtxt=task['chtxt'] - tnow=datetime.datetime.now() - bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") - et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S") - dt=bt-tnow - dt=dt.days*24*60*60+dt.seconds - - """ if dt<10*60: - if status.getEncoding()<2: + if status.getEncoding()0:#親プロセスの場合 "" else: - #print title - #tv2avi.b252avi(recpath+"/"+title+".avi", chtxt,opt) pin=recpath+"/"+title+".ts" if re.search("d",opt): pin=recpath+"/"+title+"sa.avi" @@ -240,16 +258,16 @@ def task(): pin=recpath+"/"+title+"sa.avi" pout=recpath+"/"+title+".avi" print pin+":"+pout+":"+opt - recdb.del_reckey("ts2avi",title,chtxt,btime) - recdb.rec_reckey("local", title, chtxt, btime, etime, opt) - ts2x264.ts2x264(pin, pout, opt) - - #tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt) - sys.exit(0) + recdb.del_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime) + recdb.rec_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime, etime, opt) + tv2avi.ts2avi(pin, pout, opt) + recdb.del_reckey(recdb.REC_ENCODE_LOCAL,title,chtxt,btime) + recdb.rec_reckey(recdb.REC_FIN_LOCAL, title, chtxt, btime, etime, opt) + sys.exit() else: recdb.del_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime) bt=bt+datetime.timedelta(seconds=600) et=et+datetime.timedelta(seconds=600) btime=bt.strftime("%Y-%m-%d %H:%M:%S") etime=et.strftime("%Y-%m-%d %H:%M:%S") - recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt) + recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt) \ No newline at end of file