X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=rec10%2Ftrunk%2Fsrc%2Ftimerec.py;h=d4926ee9040a6fb6b5b5beb481213cdaded4463b;hb=a62623f21de4b07a9a185e261c8ec07dbd2a52a5;hp=688cd3c0be120cc4e03a9cabb3bca2961947b8fa;hpb=317b61ef703135708c81707f4d4355d4316215c8;p=rec10%2Frec10-git.git diff --git a/rec10/trunk/src/timerec.py b/rec10/trunk/src/timerec.py index 688cd3c..d4926ee 100644 --- a/rec10/trunk/src/timerec.py +++ b/rec10/trunk/src/timerec.py @@ -8,14 +8,14 @@ import os import datetime import epgdb import configreader -import ts2x264 +import checker import tv2avi import recdb import chdb import status import re +import rec10d recpath=configreader.getpath('recpath') -tmppath=configreader.getpath('temppath') path=str(os.path.dirname(os.path.abspath(__file__)))+"/" def task(): """ @@ -23,25 +23,54 @@ def task(): 予定によって子プロセスを生成し処理する。 """ recdb.delete_old("6") - tasks=recdb.getnow("1") - 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())+" epg:"+str(status.getEPGUpdating()) + + if inum+status.getBSCSRecording()+status.getTERecording() < 2: update=chdb.update() print "番組表更新処理" - print update if len(update)>0: + pid=os.fork() + if pid!=0: + time.sleep(1) + else: + for bctype in update: + i=0 + print update + rec10d.rec10db.update_status_by_bctype_chdata(bctype,"0") + epgdb.updatebc(bctype) + update=chdb.update() + rec10d.rec10db.update_by_bctype_chdata(bctype) + i=i+1 + if i>5: + break + sys.exit() + """if len(update)>0 and status.getEPGUpdating()==0: + #status.setEPGUpdating(1) print "番組表を更新" - print update + #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: @@ -67,39 +96,103 @@ def task(): except: opt="" tnow=datetime.datetime.now() - dtt=bt-tnow# + dtt=bt-tnow dt=dtt.days*24*60*60+dtt.seconds if task["type"]==recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt - if dt<58*60: - recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime) - recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt) - + isUpdate=0 + print dt + 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' + bctypetemp=chdb.chtxtsearch(chtxt)['bctype'] + 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) + rec10d.rec10db.update_status_by_bctype_chdata(bctype,"0") + epgdb.updatebc(bctypetemp) + 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(bctypetemp) + 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: + "" + 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'] - if dt<30*60: - recdatum=epgdb.searchtime(title,btime,deltatime) - if len(recdatum)>0: - recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime) - for recdata in recdatum: - 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) - 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 deltatime=task['deltatime'] deltaday=task['deltaday'] - if deltatime="": - deltatime=3 dd=datetime.timedelta(days=int(deltaday)) if dtt.days<0: recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime) @@ -108,7 +201,7 @@ def task(): btxt=bt.strftime("%Y-%m-%d %H:%M:%S") etxt=et.strftime("%Y-%m-%d %H:%M:%S") recdb.everyreserv(title,chtxt,btxt,etxt,deltatime,opt,deltaday) - elif dt<30*60*60: + 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 @@ -119,41 +212,42 @@ def task(): elif task["type"]==recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt print dt - if dt<6*60: + if dt<6*60 and dt>0: recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime) - 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): - time.sleep(60) - tnow2=datetime.datetime.now() - dtt2=et-tnow - dt2=dtt2.days*24*60*60+dtt2.seconds - if dt2>0: - title="rt-"+title - tv2avi.timetv2avi(recpath+"/"+title+".avi",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: + 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) - else: - recdb.del_reckey(recdb.REC_TS_DECODING, 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_ENCODE_QUE,title,chtxt,btime,etime,opt) - recdb.rec_reckey(recdb.REC_FIN_DECODE,title,chtxt,btime,etime,opt) - else: - recdb.del_reckey(recdb.REC_TS_DECODING, 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") @@ -162,13 +256,22 @@ def task(): 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) - recdb.rec_reckey(recdb.REC_FIN_DECODE,title,chtxt,btime,etime,opt) - sys.exit(0) - + 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: if dt<10*60: - if status.getEncoding()<2: + if status.getEncoding()0:#親プロセスの場合 "" @@ -179,13 +282,14 @@ def task(): if re.search("5",opt): pin=recpath+"/"+title+"sa.avi" pout=recpath+"/"+title+".avi" - print pin+":"+pout+":"+opt + 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) - ts2x264.ts2x264(pin, pout, 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(0) + sys.exit() else: recdb.del_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime) bt=bt+datetime.timedelta(seconds=600)