OSDN Git Service

implement mysql function.(RC1)
[rec10/rec10-git.git] / rec10 / trunk / src / timerec.py
index 477daf4..9cc4f9d 100644 (file)
@@ -23,28 +23,34 @@ def task():
     予定によって子プロセスを生成し処理する。
     """
     recdb.delete_old("6")
-    tasks=recdb.getnow("1")
-    inum=recdb.countRecNow("2")
+    tasks=recdb.getnow("2")
+    #print tasks
+    inum=recdb.countRecNow("1")
     print "now-rectask"
-    print inum+status.getBSCSRecording()+status.getTERecording()
+    print "inum:"+str(inum)+"bscsrec:"+str(status.getBSCSRecording())+"terec:"+str(status.getTERecording())
     if inum+status.getBSCSRecording()+status.getTERecording() < 2:
-    #if ( inum < 2 ) and ( status.getBSCSRecording()+status.getTERecording() < 2 ):#1個ならTE|BS/CSのどちらかが埋まってる可能性はないので1以下にした。
         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:
@@ -72,47 +78,65 @@ 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
             isUpdate=0
-            if (dt<58*60 and dt>10*60):
-                if len(chdb.chtxtsearch(chtxt)['ch'])>2:
-                    if recdb.countRecNow_minutes_BSCS("10")+status.getBSCSRecording() <2:
-                        epgdb.updatebc(chdb.chtxtsearch(chtxt)['bctype'])
-                        time.sleep(10)
-                        isUpdate=1
-                    else:
-                        isUpdate=0
-                if len(chdb.chtxtsearch(chtxt)['ch'])<3:
-                    if recdb.countRecNow_minutes_TE("10")+status.getTERecording() <2:
-                        epgdb.updatebc(chdb.chtxtsearch(chtxt)['bctype'])
-                        time.sleep(10)
-                        isUpdate=1
+            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:
-                        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
+                        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:
-                        print "nothing match"
-                else:
-                    ""
+                        ""
+                    sys.exit()
             elif dt<=10*60:
                 try:
                     recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
@@ -124,18 +148,18 @@ def task():
             deltatime=task['deltatime']
             if dt<90*60:
                 recdata=epgdb.searchtime2(title.decode('utf-8'),btime,deltatime,chtxt)
-                chtxt=recdata[0]
-                title=recdata[1]
-                btime=recdata[2]
-                etime=recdata[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")
-                if 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_FINAL_RESERVE, title, chtxt, btime, etime, opt)
+                        recdb.rec_reckey(recdb.REC_RESERVE, titlet, chtxtt, btimet, etimet, opt)
                     except Exception,inst:
                         print type(inst)
                         print inst
@@ -152,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
@@ -163,12 +187,12 @@ 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_RECORDING, title, chtxt, btime, etime, opt)
                 print "録画開始"
                 pid=os.fork()
-                if pid>0:#親プロセスの場合
+                if pid!=0:#親プロセスの場合
                     ""
                 else:
                     #print title
@@ -183,12 +207,12 @@ def task():
                     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(0)
+                    sys.exit()
         elif task["type"]==recdb.REC_TS_DECODE_QUE:
             if dt<10*60:
                 if status.getB25Decoding()<2:
                     pid=os.fork()
-                    if pid>0:#親プロセスの場合
+                    if pid!=0:#親プロセスの場合
                             ""
                     else:
                         pin=recpath+"/"+title
@@ -208,9 +232,11 @@ def task():
                         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)
-                        if checker.checkB25Decode(recpath+"/"+title+".ts.b25",recpath+"/"+title+".ts"):
+                        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(0)
+                        sys.exit()
                 else:
                     recdb.del_reckey(recdb.REC_TS_DECODE_QUE,title,chtxt,btime)
                     bt=bt+datetime.timedelta(seconds=600)
@@ -220,7 +246,7 @@ def task():
                     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:#親プロセスの場合
                             ""
@@ -237,7 +263,7 @@ def task():
                         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)