4 # Rec10 TS Recording Tools
5 # Copyright (C) 2009-2010 Yukikaze
16 rT=re.compile("(.+)_(\d+)\Z")
18 rT2=re.compile("(.+)_(.+)_(\d*)\Z")#_(aichi)_2010-02-06T01:59:00.mkv
20 rT3=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+:\d+:\d+\Z")#_(aichi)_2010-02-06T01:59:00.mkv
22 rT4=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+-\d+-\d+\Z")#_(aichi)_2010-02-06T01-59-00.mkv
24 rT5=re.compile("(.+)_(.+)_(.+)\Z")#_(aichi)_2010-02-06T01-59-00.mkv
38 def detNameType(title):
40 type A ---title#<number>
41 type B ---title#<number>subtitle
42 type C ---title subtitle
43 type D ---title(without number)
45 recdblist.printutf8(title)
46 #rA=re.compile(".+(?P<title>)#\d(?P<num>)\s[0,10]\z")
47 rA=re.compile("(.+)#(\d*)\s*\Z")
49 rB=re.compile("(.+)#(\d*)\s*(\D*)")
52 recdblist.printutf8("typeA")
53 recdblist.printutf8("title="+tA.group(1))
54 recdblist.printutf8("num="+tA.group(2))
56 recdblist.printutf8("typeB")
57 recdblist.printutf8("title="+tB.group(1))
58 recdblist.printutf8("num="+tB.group(2))
59 recdblist.printutf8("subtitle="+tB.group(3))
60 def search_file(temppath,recpath,ext):
64 avilist = glob.glob(temppath + "/*"+ext)
67 ##b25f is title.ts.b25 avi is title.avi
68 dir = os.path.split(avif)[0]
69 title = os.path.split(avif)[1]
70 title = title.replace(ext, "")
71 avipath = os.path.join(dir, title + ext)
72 dtime = time.time()-os.path.getmtime(avipath)
75 if veryfySize(avipath):
78 def get_move_dest_path(title,temppath,recpath,ext):
79 dstpath=os.path.join(recpath,title+ext)
80 srcpath=os.path.join(temppath,title+ext)
81 if os.path.exists(dstpath):
82 gmtime=time.gmtime(os.path.getmtime(srcpath))
85 iff=u"("+configreader.getenv("iff")+u")_"
90 title=title+u"_"+iff+time.strftime("%Y-%m-%dT%H-%M-%S",gmtime)
92 def get_delpath(temppath,title):
93 delpath=[os.path.join(temppath,title+".ts")]
94 delpath.append(os.path.join(temppath,title+".avi"))
95 delpath.append(os.path.join(temppath,title+".mp4"))
96 delpath.append(os.path.join(temppath,title+".m2v"))
97 delpath.append(os.path.join(temppath,title+".mkv"))
98 delpath.append(os.path.join(temppath,title+".120.avi"))
99 delpath.append(os.path.join(temppath,title+".timecode.txt"))
100 delpath.append(os.path.join(temppath,title+".aac"))
101 delpath.append(os.path.join(temppath,title+".ts.b25"))
102 delpath.append(os.path.join(temppath,title+".ts.tsmix"))
103 delpath.append(os.path.join(temppath,title+".ts.log"))
104 delpath.append(os.path.join(temppath,title+".sa.avi"))
105 delpath.append(os.path.join(temppath,title+".sa.avi.log"))
106 delpath.append(os.path.join(temppath,title+".log"))
108 def veryfySize(path):
109 #vsize=[297,497,596,1196]#SD 30m 1h 1.5h 2h
110 vsize=[245,275,295,591,830]
111 vsize=vsize+[325,449,560,590,602,690,805,860,1014,1138,1237]
112 vsize=vsize+[261,535,540,616,740]#HD 30m 1h
113 #vsize=vsize+[381,895,447]
116 if os.path.getsize(path)>(size-10)*1024*1024 and os.path.getsize(path)<(size+10)*1024*1024:
118 if os.path.getsize(path)>270*1024*1024:
121 def searchFolder(title,path,threshold=500):
123 titleにマッチするフォルダを探し出す。
125 folderpath=os.listdir(path)
128 for ft in folderpath:
129 fullpath=os.path.join(path.encode('utf-8'), ft)
130 if os.path.isdir(fullpath):
131 lfpath.append(fullpath)
132 ftt=os.listdir(fullpath)
136 folderpath.append(os.path.join(fullpath, ft2))
137 except Exception, inst:
142 lfpath.append(fullpath)
147 if os.path.isdir(dirp):
148 cmpp=os.path.dirname(dirp)
151 cmpp=os.path.basename(dirp)
152 appp=os.path.dirname(dirp)
153 ntitle=getTitle(title)
154 #recdblist.printutf8(cmpp)
155 cmpp=getTitle(os.path.splitext(cmpp)[0])
156 #recdblist.printutf8(cmpp+"\n")
157 p=n_gram.trigram(ntitle,cmpp)
159 ngram.append((p,appp))
160 ngram=list(set(ngram))
164 #recdblist.printutf8(title + ngram[0][1] + " : "+str(ngram[0][0]))
165 if ngram[0][0]>threshold:
171 def execMove(title,temppath,recpath,ext,autodel):
172 srcpath=os.path.join(temppath,title+ext)
173 #desttitle=destName(title, temppath, recpath)
175 sf=searchFolder(title, recpath)
177 destpath=os.path.join(sf,destNameMKV(title, temppath, sf)+ext)
178 recdblist.printutf8("moving now..")
179 recdblist.printutf8(srcpath+" : "+destpath)
181 shutil.copy(srcpath, destpath)
182 #shutil.copy(srcpath, destpath)
184 delpath=get_delpath(temppath, title)