X-Git-Url: http://git.osdn.net/view?p=rec10%2Frec10-git.git;a=blobdiff_plain;f=rec10%2Ftrunk%2Fsrc%2Fauto_process.py;h=fabee0522e4877a663c30c6435f3cf0f38cb44c7;hp=7a12b015a4c553555a0c18b924787b8c6739bfd3;hb=d63ca135202a679bd918561b65e806966f94546e;hpb=40093cda645b35eafda61d53d48cd3e9aebe9a76 diff --git a/rec10/trunk/src/auto_process.py b/rec10/trunk/src/auto_process.py index 7a12b01..fabee05 100644 --- a/rec10/trunk/src/auto_process.py +++ b/rec10/trunk/src/auto_process.py @@ -1,21 +1,25 @@ #!/usr/bin/python # coding: UTF-8 # Rec10 TS Recording Tools -# Copyright (C) 2009-2010 Yukikaze +# Copyright (C) 2009-2011 Yukikaze import os import glob import time import datetime +import commands +import re +import os.path import chdb import status +import configreader import recdblist import rec10d -import os.path import tv2mp4 import epgdb -def Update_to_MP4(path): +def updateToMP4(path): """ + !現在未使用! 録画一時フォルダ内mp4ファイルを検索 """ avilist = glob.glob(path + "/*.avi") @@ -52,7 +56,7 @@ def Update_to_MP4(path): if mkvdtime>300: recdblist.printutf8(mkvpath+":"+mp4path) tv2mp4.mkv2mp4(mkvpath,mp4path) -def auto_check(path): +def autoCheck(path): avilist = glob.glob(path + "/*.avi") mkvlist = glob.glob(path+"/*.mkv") mp4list = glob.glob(path+"/*.mp4") @@ -63,30 +67,31 @@ def auto_check(path): tbtime=datetime.datetime.now()+datetime.timedelta(seconds=60) tbtime2=datetime.datetime.now()+datetime.timedelta(seconds=1200) for fn in filelist: - if fn.rfind("sa.avi")==-1 and fn.rfind(".120.avi")==-1 and os.path.getsize(fn)>1*1000*1000: - dir = os.path.split(fn)[0] - file = os.path.split(fn)[1] - title = os.path.splitext(file)[0] - title = unicode(title,'utf-8') - ext = os.path.splitext(file)[1] - if ext == ".b25": - title=title.replace(".ts","") - dbs=rec10d.rec10db.select_by_name_time_timeline(title,tbtime,tbtime2) - if len(dbs)==0: - proc=check_process(dir, title) - chtxtt=rec10d.rec10db.select_chtxt_by_title_timeline_log(title) - nchtxt="" - if chtxtt!=None: - nchtxt=chtxtt - if proc=="b25": - add.append([recdblist.REC_AUTO_SUGGEST_DECODE,title,nchtxt]) - elif proc=="ts": - add.append([recdblist.REC_AUTO_SUGGEST_ENCODE,title,nchtxt]) - elif proc =="264": - add.append([recdblist.REC_AUTO_SUGGEST_AVI2FP,title,nchtxt]) - #elif proc =="mp4": - # add.append([recdblist.REC_AUTO_SUGGEST_AP2FP,title,nchtxt]) - #print add + if os.path.exists(fn): + if fn.rfind("sa.avi")==-1 and fn.rfind(".120.avi")==-1 and os.path.getsize(fn)>1*1000*1000: + dir = os.path.split(fn)[0] + file = os.path.split(fn)[1] + title = os.path.splitext(file)[0] + title = unicode(title,'utf-8',errors='replace') + ext = os.path.splitext(file)[1] + if ext == ".b25": + title=title.replace(".ts","") + dbs=rec10d.rec10db.select_by_name_time_timeline(title,tbtime,tbtime2) + if len(dbs)==0: + proc=checkProcess(dir, title) + chtxtt=rec10d.rec10db.select_chtxt_by_title_timeline_log(title) + nchtxt="" + if chtxtt!=None: + nchtxt=chtxtt + if proc=="b25": + add.append([recdblist.REC_AUTO_SUGGEST_DECODE,title,nchtxt]) + elif proc=="ts": + add.append([recdblist.REC_AUTO_SUGGEST_ENCODE,title,nchtxt]) + elif proc =="264": + add.append([recdblist.REC_AUTO_SUGGEST_AVI2FP,title,nchtxt]) + #elif proc =="mp4": + # add.append([recdblist.REC_AUTO_SUGGEST_AP2FP,title,nchtxt]) + #print add if len(add)>0: rec10d.rec10db.new_auto_proc() for a in add: @@ -105,7 +110,7 @@ def auto_check(path): mp4making mp4 """ -def check_process(path,title): +def checkProcess(path,title): path1 = os.path.join(path,title+".mkv") if os.path.exists(path1): if int(time.time()-os.path.getmtime(path1))>300: @@ -156,9 +161,9 @@ def update_timeline_epg_schedule(btime,etime): ret=[] #[chtxtt, title, btime, etime,exp,longexp,category] if db['type']==recdblist.REC_KEYWORD or db['type']==recdblist.REC_KEYWORD_EVERY_SOME_DAYS: - ret=epgdb.searchtime2(db['title'], db['btime'], db['deltatime'], db['chtxt']) + ret=epgdb.searchTime(db['title'], db['btime'], db['deltatime'], db['chtxt']) if len(ret)>4 and len(ret[2])>18: - rec10d.rec10db.update_epg_timeline(db['type'], db['chtxt'], db['title'], db['btime'], ret[2],ret[3],ret[1]) + rec10d.rec10db.update_epg_timeline(db['type'], db['chtxt'], db['title'], db['btime'], ret[2],ret[3],ret[1],ret[4],ret[6]) if not (db['btime'] == ret[2] and db['etime']==ret[3]): rec10d.rec10db.update_status_change_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "1") else: @@ -166,9 +171,9 @@ def update_timeline_epg_schedule(btime,etime): else: rec10d.rec10db.update_status_change_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "1") elif db['type']==recdblist.REC_RESERVE or db['type']==recdblist.REC_FINAL_RESERVE : - ret=epgdb.searchtime2(db['title'], db['btime'],"5", db['chtxt']) + ret=epgdb.searchTime(db['title'], db['btime'],"5", db['chtxt']) if len(ret)>4 and len(ret[2])>18: - rec10d.rec10db.update_epg_timeline(db['type'], db['chtxt'], db['title'], db['btime'], ret[2],ret[3],ret[1]) + rec10d.rec10db.update_epg_timeline(db['type'], db['chtxt'], db['title'], db['btime'], ret[2],ret[3],ret[1],ret[4],ret[6]) if not (db['btime'] == ret[2] and db['etime']==ret[3]): rec10d.rec10db.update_status_change_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "1") else: @@ -179,15 +184,102 @@ def update_timeline_dup(epgbtime,epgetime): dbl=rec10d.rec10db.select_byepgtime_all_timeline(epgbtime, epgetime) for db in dbl: if db['type']==recdblist.REC_KEYWORD or db['type']==recdblist.REC_KEYWORD_EVERY_SOME_DAYS: - dbn=epgdb.count_epgschedule(db['epgbtime'], db['epgetime']) - bctypet=chdb.chtxtsearch(db['chtxt'])['bctype'] - if bctypet.find("cs") > -1 or bctypet.find("bs") > -1 : - if dbn[1]>status.getRecordingMax()[1]: - rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "1") - else: - rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "0") - else: - if dbn[0]>status.getRecordingMax()[0]: - rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "1") + dbn=epgdb.countEpgSchedule(db['epgbtime'], db['epgetime']) + try: + bctypet=chdb.searchCHFromChtxt(db['chtxt'])['bctype'] + if bctypet.find("cs") > -1 or bctypet.find("bs") > -1 : + if dbn[1]>status.getRecordingMax()[1]: + rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "1") + else: + rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "0") else: - rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "0") \ No newline at end of file + if dbn[0]>status.getRecordingMax()[0]: + rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "1") + else: + rec10d.rec10db.update_status_dup_timeline(db['type'], db['chtxt'], db['title'], db['btime'], "0") + except: + "" +def killDeadEncode(path): + rawlist = glob.glob(path + "/*.264") + for fn in rawlist: + if int(time.time()-os.path.getmtime(fn))>3000: + m2vpath=unicode(fn.replace(".264",".m2v"),'utf-8') + x264path=os.path.split(fn)[1] + folderpath=unicode(os.path.split(fn)[0],'utf-8') + x264path=re.sub("\\[","[",x264path) + x264path=re.sub("\[","\\\[",x264path) + x264path=re.sub("\\]","]",x264path) + x264path=re.sub("]","\\]",x264path) + tspath=unicode(x264path.replace(".264",".ts"),'utf-8') + m2vpath=unicode(x264path.replace(".264",".m2v"),'utf-8') + x264path=unicode(x264path,'utf-8') + os.environ['LANG']="ja_JP.UTF-8" + ktmp=[] + ktmp.append(u"ps auxww | grep \""+folderpath+"\" | grep \""+x264path+u"\" | egrep -v grep | egrep -v \"sh -c\" | grep x264 | awk '{print $2}'") + ktmp.append(u"ps auxww | grep \""+folderpath+"\" | grep \""+tspath+u"\" | egrep -v grep | egrep -v \"sh -c\" | grep mencoder | awk '{print $2}'") + ktmp.append(u"ps auxww | grep \""+folderpath+"\" | grep \""+m2vpath+u"\" | egrep -v grep | egrep -v \"sh -c\" | grep ffmpeg | awk '{print $2}'") + recdblist.printutf8(u"エンコード処理異常終了タスク終了") + for istr in ktmp: + recdblist.printutf8(istr) + ktmt=commands.getoutput(istr.encode('utf-8')) + #print ktmt + #print len(ktmt) + if len(ktmt)>0: + #print ktmt + if len(ktmt[0])>0: + ktmt=ktmt[0] + #print ktmt + try: + if int(ktmt)>0: + ktmp=u"kill -9 `"+istr+u"`" + recdblist.printutf8(ktmp) + #print ktmp + os.system(ktmp.encode('utf-8')) + except: + "" +def deleteTmpFile(path,title,ext): + level= 0##0:b25 1:ts(del tsmix and ts.b25) 5:x264(del 2 and so on) 10:mp4/mkv + smsize= 0 + if re.search(".ts",ext): + level= 1 + smsize = 100*1000*1000 + elif re.search(".264",ext): + level= 5 + smsize = 10*1000*1000 + elif re.search(".mp4",ext): + level = 10 + smsize = 10*1000*1000 + elif re.search(".mkv",ext): + level = 15 + smsize = 10*1000*1000 + dp=[] + if level > 0 : + if os.path.exists(os.path.join(path,title+".ts")) and os.path.exists(os.path.join(path,title+".ts.b25")): + if os.path.getsize(os.path.join(path,title+".ts"))*12>os.path.getsize(os.path.join(path,title+".ts.b25")): + dp.append(os.path.join(path,title+".ts.b25")) + elif os.path.getsize(os.path.join(path,title+".ts"))>200*1000*1000: + dp.append(os.path.join(path,title+".ts.b25")) + if level > 4 : + if configreader.getConfEnv("remove_ts")=="1": + dp.append(os.path.join(path,title+".ts")) + if level > 9 : + dp.append(os.path.join(path,title+".avi")) + dp.append(os.path.join(path,title+".264")) + dp.append(os.path.join(path,title+".120.avi")) + dp.append(os.path.join(path,title+".noodml.avi")) + dp.append(os.path.join(path,title+".aac")) + dp.append(os.path.join(path,title+".m2v")) + dp.append(os.path.join(path,title+"_1.aac")) + dp.append(os.path.join(path,title+"_2.aac")) + dp.append(os.path.join(path,title+"_1.mp3")) + dp.append(os.path.join(path,title+"_2.mp3")) + dp.append(os.path.join(path,title+".srt")) + if level > 14 : + dp.append(os.path.join(path,title+".mp4")) + if os.path.exists(os.path.join(path,title+ext)): + if os.path.getsize(os.path.join(path,title+ext))>smsize: + for ip in dp: + try: + os.remove(ip) + except: + ""