X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=rec10%2Ftrunk%2Fsrc%2Ftimerec.py;h=4d02640ac5d4db5ef64a546f5c61c33cb9967554;hb=7eb323c57578fc78e4568a0cda5c49a3f3f240f5;hp=e73d2dfde5442fdfd766b9ef0e51218b650c23fb;hpb=96eeb10b5193b0f38c154895acc015504ef47af0;p=rec10%2Frec10-git.git diff --git a/rec10/trunk/src/timerec.py b/rec10/trunk/src/timerec.py index e73d2df..4d02640 100644 --- a/rec10/trunk/src/timerec.py +++ b/rec10/trunk/src/timerec.py @@ -8,15 +8,12 @@ import os import datetime import epgdb import configreader -#import japanesenkf -import ts2x264 +import checker import tv2avi -import tv2ts import recdb import chdb import status import re -#japanesenkf.overrideEncodings() recpath=configreader.getpath('recpath') path=str(os.path.dirname(os.path.abspath(__file__)))+"/" def task(): @@ -24,194 +21,260 @@ def task(): 数分毎に実行されるタスク処理 予定によって子プロセスを生成し処理する。 """ - tasks=recdb.getnow("1") - #tasks=recdb.getall() - print tasks - if len(tasks)==0: + recdb.delete_old("6") + 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())+" epg:"+str(status.getEPGUpdating()) + if inum+status.getBSCSRecording()+status.getTERecording() < 2: update=chdb.update() - print "番組表更新処理" - print update - if len(update)>0: + #print "番組表更新処理" + + if len(update)>0 and status.getEPGUpdating()==0: + status.setEPGUpdating(1) 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: - #value=line.split(",") - if task["type"]=="res":#"res,"+chtxt+","+title+","+btime+","+etime+","+opt + #print task + try: chtxt=task['chtxt'] + except: + chtxt="" + try: title=task['title'] + except: + title="" + try: btime=task['btime'] + bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S") + except: + btime="" + bt=datetime.datetime.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S") + try: etime=task['etime'] + et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S") + except: + etime="" + et=datetime.datetime.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S") + try: 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 + except: + opt="" + tnow=datetime.datetime.now() + dtt=bt-tnow + dt=dtt.days*24*60*60+dtt.seconds + + if task["type"]==recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt + isUpdate=0 print dt - if dt<58*60*60: - recdb.delrec(title,chtxt,btime) - 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 and status.getEPGUpdating()!=1: + print "now(bscs):"+str(getnowbscs)+" task(bscs):"+str(gettaskbscs) + status.setEPGUpdating(1) + epgdb.updatebc(chdb.chtxtsearch(chtxt)['bctype']) + time.sleep(10) + isUpdate=1 + status.setEPGUpdating(0) + else: + isUpdate=0 + if cht=="te": + gettaskte=recdb.countRecNow_minutes_TE("10") + getnowte=status.getTERecording() + te=getnowte+gettaskte + if te <2 and status.getEPGUpdating()!=1: + print "now(te):"+str(getnowte)+" task(te):"+str(gettaskte) + status.setEPGUpdating(1) + epgdb.updatebc(chdb.chtxtsearch(chtxt)['bctype']) + time.sleep(10) + status.setEPGUpdating(0) + 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) - """ - - elif task["type"]=="key":#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt - chtxt=task['chtxt'] - #title=task['title'] - btime=task['btime'] - etime=task['etime'] - keyword=task['title'] + 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 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: - recdata=epgdb.searchtime(keyword,btime,deltatime) - if len(recdata)>0: - recdb.delkey(keyword,chtxt,btime,deltatime) - 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.lastrecreserv(title,chtxt,btime,etime,opt) - elif task["type"]=="keyevery":#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday - chtxt=task['chtxt'] - #title=task['title'] - btime=task['btime'] - etime=task['etime'] - keyword=task['title'] + 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 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 dt.days<0: - recdb.delevery(keyword,chtxt,btime,deltatime,deltaday) + if dtt.days<0: + 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 dtt<30*60*60: - recdb.keyreserv(keyword,chtxt,btime,etime,deltatime,opt) - recdb.delevery(keyword,chtxt,btime,deltatime,deltaday) + 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) 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"]=="rec":#"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) - recdb.recend(title,chtxt,btime,etime,opt) + 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.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.delend(title,chtxt,btime) - recdb.misrecwrite(title,chtxt,btime,etime,opt) - sys.exit(0) - elif task["type"]=="b25-avi": - title=task['title'] - opt=task['opt'] - pid=os.fork() - """if pid>0:#親プロセスの場合 - "" + 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: + 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: - #print title - tv2avi.b252avi(recpath+"/"+title+".avi", chtxt,opt) - #tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt) - if not os.access(recpath+"/"+title+".avi", os.F_OK): - recdb.delend(title,chtxt,btime) - recdb.misrecwrite(title,chtxt,btime,etime,opt) - sys.exit(0)""" - elif task["type"]=="ts2avi": - 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 + 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: 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" + if re.search("5",opt): + pin=recpath+"/"+title+"sa.avi" pout=recpath+"/"+title+".avi" - print pin+":"+pout+":"+opt - ts2x264.ts2x264(pin, pout, opt) - recdb.del_reckey("ts2avi",title,chtxt,btime) - #tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt) - sys.exit(0) + print [pin,pout,opt] + #print pin+":"+pout+":"+opt + 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("ts2avi",title,chtxt,btime) + 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("ts2avi",title,chtxt,btime,etime,opt) + recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt) \ No newline at end of file