OSDN Git Service

implement mysql function.(RC1)
[rec10/rec10-git.git] / rec10 / trunk / src / timerec.py
index 90e62c1..9cc4f9d 100644 (file)
@@ -8,7 +8,7 @@ import os
 import datetime
 import epgdb
 import configreader
-import ts2x264
+import checker
 import tv2avi
 import recdb
 import chdb
@@ -23,28 +23,36 @@ def task():
     予定によって子プロセスを生成し処理する。
     """
     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:
@@ -70,34 +78,93 @@ 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'
+                    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']
@@ -109,7 +176,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
@@ -120,41 +187,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")
@@ -163,13 +231,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()<int(configreader.getenv("enc_max")):
                     pid=os.fork()
                     if pid>0:#親プロセスの場合
                             ""
@@ -183,10 +260,10 @@ def task():
                         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)