X-Git-Url: http://git.osdn.net/view?p=rec10%2Frec10-git.git;a=blobdiff_plain;f=rec10%2Ftrunk%2Fsrc%2Fauto_move.py;h=195b1b86d039bcd9caf00b46d58a499f2fec85f3;hp=9f7f95efb508466c5dedfdabca3daadfe99ca5fe;hb=457582814be566efb4e3ee88bd54dcf6f6ee641f;hpb=3ebb101303a74c7239e34337f10e16b0bbbb2eba diff --git a/rec10/trunk/src/auto_move.py b/rec10/trunk/src/auto_move.py index 9f7f95e..195b1b8 100644 --- a/rec10/trunk/src/auto_move.py +++ b/rec10/trunk/src/auto_move.py @@ -1,154 +1,154 @@ -#!/usr/bin/python -# coding: UTF-8 -# Rec10 TS Recording Tools -# Copyright (C) 2009-2011 Yukikaze - -import glob -import os -import os.path -import re -import time -import shutil -import traceback -import sys - -import recdblist -import guess -def getTitle(title): - rT=re.compile("(.+)_(\d+)\Z") - tT=rT.match(title) - rT2=re.compile("(.+)_(.+)_(\d*)\Z")#_(aichi)_2010-02-06T01:59:00.mkv - tT2=rT2.match(title) - rT3=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+:\d+:\d+\Z")#_(aichi)_2010-02-06T01:59:00.mkv - tT3=rT3.match(title) - rT4=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+-\d+-\d+\Z")#_(aichi)_2010-02-06T01-59-00.mkv - tT4=rT4.match(title) - rT5=re.compile("(.+)_(.+)_(.+)\Z")#_(aichi)_2010-02-06T01-59-00.mkv - tT5=rT5.match(title) - ntitle=title - if tT : - ntitle=tT.group(1) - elif tT2: - ntitle=tT2.group(1) - elif tT3: - ntitle=tT3.group(1) - elif tT4: - ntitle=tT4.group(1) - elif tT5: - ntitle=tT5.group(1) - return ntitle -def searchFile(temppath,recpath,ext): - """ - 録画一時フォルダ内ファイルを検索 - """ - avilist = glob.glob(temppath + "/*"+ext) - ret=[] - for avif in avilist: - ##b25f is title.ts.b25 avi is title.avi - dir = os.path.split(avif)[0] - title = os.path.split(avif)[1] - title = title.replace(ext, "") - avipath = os.path.join(dir, title + ext) - if os.path.exists(avipath): - dtime = time.time()-os.path.getmtime(avipath) - dtime = int(dtime) - if dtime > 300: - if veryfySize(avipath): - ret.append(title) - return ret -def getMoveDestpath(title,temppath,recpath,ext): - dstpath=os.path.join(recpath,title+ext) - srcpath=os.path.join(temppath,title+ext) - if os.path.exists(dstpath): - if not os.path.getsize(dstpath) == os.path.getsize(srcpath): - gmtime=time.gmtime(os.path.getmtime(srcpath)) - iff="" - try: - iff=u"("+configreader.getConfEnv("iff")+u")_" - if iff==u"()_": - iff = u"" - except: - iff="" - title=title+u"_"+iff+time.strftime("%Y-%m-%dT%H-%M-%S",gmtime) - else: - recdblist.printutf8(u"同サイズのファイルが存在します") - - return title -def getDelpath(temppath,title,addfp=1): - delpath=[os.path.join(temppath,title+".ts")] - delpath.append(os.path.join(temppath,title+".avi")) - if addfp==1: - delpath.append(os.path.join(temppath,title+".mp4")) - delpath.append(os.path.join(temppath,title+".mkv")) - delpath.append(os.path.join(temppath,title+".m2v")) - delpath.append(os.path.join(temppath,title+".120.avi")) - delpath.append(os.path.join(temppath,title+".timecode.txt")) - delpath.append(os.path.join(temppath,title+".aac")) - delpath.append(os.path.join(temppath,title+".ts.b25")) - delpath.append(os.path.join(temppath,title+".ts.tsmix")) - delpath.append(os.path.join(temppath,title+".ts.log")) - delpath.append(os.path.join(temppath,title+".sa.avi")) - delpath.append(os.path.join(temppath,title+".sa.avi.log")) - delpath.append(os.path.join(temppath,title+".log")) - delpath.append(os.path.join(temppath,title+".log.zip")) - return delpath -def veryfySize(path): - #vsize=[297,497,596,1196]#SD 30m 1h 1.5h 2h - vsize=[245,275,295,591,830] - vsize=vsize+[325,449,560,590,602,690,805,860,1014,1138,1237] - vsize=vsize+[261,535,540,616,740]#HD 30m 1h - #vsize=vsize+[381,895,447] - ret = 0 - for size in vsize: - if os.path.getsize(path)>(size-10)*1024*1024 and os.path.getsize(path)<(size+10)*1024*1024: - ret=1 - if os.path.getsize(path)>270*1024*1024: - ret=1 - return ret -def execMove(title,temppath,recpath,ext,autodel): - srcpath=os.path.join(temppath,title+ext) +#!/usr/bin/python +# coding: UTF-8 +# Rec10 TS Recording Tools +# Copyright (C) 2009-2011 Yukikaze + +import glob +import os +import os.path +import re +import time +import shutil +import traceback +import sys + +import recdblist +import guess +def getTitle(title): + rT=re.compile("(.+)_(\d+)\Z") + tT=rT.match(title) + rT2=re.compile("(.+)_(.+)_(\d*)\Z")#_(aichi)_2010-02-06T01:59:00.mkv + tT2=rT2.match(title) + rT3=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+:\d+:\d+\Z")#_(aichi)_2010-02-06T01:59:00.mkv + tT3=rT3.match(title) + rT4=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+-\d+-\d+\Z")#_(aichi)_2010-02-06T01-59-00.mkv + tT4=rT4.match(title) + rT5=re.compile("(.+)_(.+)_(.+)\Z")#_(aichi)_2010-02-06T01-59-00.mkv + tT5=rT5.match(title) + ntitle=title + if tT : + ntitle=tT.group(1) + elif tT2: + ntitle=tT2.group(1) + elif tT3: + ntitle=tT3.group(1) + elif tT4: + ntitle=tT4.group(1) + elif tT5: + ntitle=tT5.group(1) + return ntitle +def searchFile(temppath,recpath,ext): + """ + 録画一時フォルダ内ファイルを検索 + """ + avilist = glob.glob(temppath + "/*"+ext) + ret=[] + for avif in avilist: + ##b25f is title.ts.b25 avi is title.avi + dir = os.path.split(avif)[0] + title = os.path.split(avif)[1] + title = title.replace(ext, "") + avipath = os.path.join(dir, title + ext) + if os.path.exists(avipath): + dtime = time.time()-os.path.getmtime(avipath) + dtime = int(dtime) + if dtime > 300: + if veryfySize(avipath): + ret.append(title) + return ret +def getMoveDestpath(title,temppath,recpath,ext): + dstpath=os.path.join(recpath,title+ext) + srcpath=os.path.join(temppath,title+ext) + if os.path.exists(dstpath): + if not os.path.getsize(dstpath) == os.path.getsize(srcpath): + gmtime=time.gmtime(os.path.getmtime(srcpath)) + iff="" + try: + iff=u"("+configreader.getConfEnv("iff")+u")_" + if iff==u"()_": + iff = u"" + except: + iff="" + title=title+u"_"+iff+time.strftime("%Y-%m-%dT%H-%M-%S",gmtime) + else: + recdblist.printutf8(u"同サイズのファイルが存在します") + + return title +def getDelpath(temppath,title,addfp=1): + delpath=[os.path.join(temppath,title+".ts")] + delpath.append(os.path.join(temppath,title+".avi")) + if addfp==1: + delpath.append(os.path.join(temppath,title+".mp4")) + delpath.append(os.path.join(temppath,title+".mkv")) + delpath.append(os.path.join(temppath,title+".m2v")) + delpath.append(os.path.join(temppath,title+".120.avi")) + delpath.append(os.path.join(temppath,title+".timecode.txt")) + delpath.append(os.path.join(temppath,title+".aac")) + delpath.append(os.path.join(temppath,title+".ts.b25")) + delpath.append(os.path.join(temppath,title+".ts.tsmix")) + delpath.append(os.path.join(temppath,title+".ts.log")) + delpath.append(os.path.join(temppath,title+".sa.avi")) + delpath.append(os.path.join(temppath,title+".sa.avi.log")) + delpath.append(os.path.join(temppath,title+".log")) + delpath.append(os.path.join(temppath,title+".log.zip")) + return delpath +def veryfySize(path): + #vsize=[297,497,596,1196]#SD 30m 1h 1.5h 2h + vsize=[245,275,295,591,830] + vsize=vsize+[325,449,560,590,602,690,805,860,1014,1138,1237] + vsize=vsize+[261,535,540,616,740]#HD 30m 1h + #vsize=vsize+[381,895,447] + ret = 0 + for size in vsize: + if os.path.getsize(path)>(size-10)*1024*1024 and os.path.getsize(path)<(size+10)*1024*1024: + ret=1 + if os.path.getsize(path)>270*1024*1024: + ret=1 + return ret +def execMove(title,temppath,recpath,ext,autodel): + srcpath=os.path.join(temppath,title+ext) # patched. orig: searchFolder(title, recpath) - sf=guess.searchFolder(title, recpath,200) - if sf!="": - destpath=os.path.join(sf,getMoveDestpath(title, temppath, sf, ext)+ext) - if os.path.exists(destpath): - if os.path.getsize(destpath) == os.path.getsize(srcpath): - recdblist.printutf8(u"同名同サイズのファイルが存在します。") - if autodel==1: - recdblist.printutf8(u"関連ファイルを削除します。") - delpath=getDelpath(temppath, title) - for dp in delpath: - try: - os.remove(dp) - "" - except: - "" - else: - recdblist.printutf8("moving now..") - recdblist.printutf8(srcpath+" : "+destpath) - print srcpath - shutil.copy(srcpath, destpath) - #shutil.copy(srcpath, destpath) - if autodel==1: - delpath=getDelpath(temppath, title) - for dp in delpath: - try: - os.remove(dp) - "" - except: + sf=guess.searchFolder(title, recpath,200) + if sf!="": + destpath=os.path.join(sf,getMoveDestpath(title, temppath, sf, ext)+ext) + if os.path.exists(destpath): + if os.path.getsize(destpath) == os.path.getsize(srcpath): + recdblist.printutf8(u"同名同サイズのファイルが存在します。") + if autodel==1: + recdblist.printutf8(u"関連ファイルを削除します。") + delpath=getDelpath(temppath, title) + for dp in delpath: + try: + os.remove(dp) + "" + except: + "" + else: + recdblist.printutf8("moving now..") + recdblist.printutf8(srcpath+" : "+destpath) + print srcpath + shutil.copy(srcpath, destpath) + #shutil.copy(srcpath, destpath) + if autodel==1: + delpath=getDelpath(temppath, title) + for dp in delpath: + try: + os.remove(dp) + "" + except: "" else: recdblist.printutf8("sf not fonud @ execMove",verbose_level=100) - -def execDelete(title,temppath): - delpath=getDelpath(temppath, title,0) - recdblist.printutf8(title+u" 関連の一時ファイルを削除します") - for dp in delpath: - try: - if os.path.exists(dp): - recdblist.printutf8(dp) - os.remove(dp) - except Exception, inst: - print type(inst) - print str(inst) - print traceback.print_exc(file=sys.stdout) + +def execDelete(title,temppath): + delpath=getDelpath(temppath, title,0) + recdblist.printutf8(title+u" 関連の一時ファイルを削除します") + for dp in delpath: + try: + if os.path.exists(dp): + recdblist.printutf8(dp) + os.remove(dp) + except Exception, inst: + print type(inst) + print str(inst) + print traceback.print_exc(file=sys.stdout)