import datetime
import epgdb
import configreader
-import ts2x264
+import checker
import tv2avi
import recdb
import chdb
予定によって子プロセスを生成し処理する。
"""
recdb.delete_old("6")
- tasks=recdb.getnow("1")
+ tasks=recdb.getnow("2")
+ #print tasks
inum=recdb.countRecNow("1")
print "now-rectask"
- print inum
- if inum < 2:#1個ならTE|BS/CSのどちらかが埋まってる可能性はないので1以下にした。
+ print "inum:"+str(inum)+"bscsrec:"+str(status.getBSCSRecording())+"terec:"+str(status.getTERecording())
+ if inum+status.getBSCSRecording()+status.getTERecording() < 2:
update=chdb.update()
#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:
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'
+ 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:
+ ""
+ 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<90*60:
- recdatum=epgdb.searchtime2(title.decode('utf-8'),btime,deltatime,chtxt)
- 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 :
+ 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']
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
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")
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()<int(configreader.getenv("enc_max")):
pid=os.fork()
if pid>0:#親プロセスの場合
""
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)