OSDN Git Service

fix encode.
[rec10/rec10-git.git] / rec10 / trunk / src / auto_move.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009-2010 Yukikaze
5
6 import glob
7 import os
8 import os.path
9 import re
10 import time
11 import shutil
12
13 import recdblist
14 import guess
15 def getTitle(title):
16     rT=re.compile("(.+)_(\d+)\Z")
17     tT=rT.match(title)
18     rT2=re.compile("(.+)_(.+)_(\d*)\Z")#_(aichi)_2010-02-06T01:59:00.mkv
19     tT2=rT2.match(title)
20     rT3=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+:\d+:\d+\Z")#_(aichi)_2010-02-06T01:59:00.mkv
21     tT3=rT3.match(title)
22     rT4=re.compile("(.+)_(.+)_\d+-\d+-\d+T\d+-\d+-\d+\Z")#_(aichi)_2010-02-06T01-59-00.mkv
23     tT4=rT4.match(title)
24     rT5=re.compile("(.+)_(.+)_(.+)\Z")#_(aichi)_2010-02-06T01-59-00.mkv
25     tT5=rT5.match(title)
26     ntitle=title
27     if tT :
28         ntitle=tT.group(1)
29     elif tT2:
30         ntitle=tT2.group(1)
31     elif tT3:
32         ntitle=tT3.group(1)
33     elif tT4:
34         ntitle=tT4.group(1)
35     elif tT5:
36         ntitle=tT5.group(1)
37     return ntitle
38 def search_file(temppath,recpath,ext):
39     """
40     録画一時フォルダ内ファイルを検索
41     """
42     avilist = glob.glob(temppath + "/*"+ext)
43     ret=[]
44     for avif in avilist:
45         ##b25f is title.ts.b25  avi is title.avi
46         dir = os.path.split(avif)[0]
47         title = os.path.split(avif)[1]
48         title = title.replace(ext, "")
49         avipath = os.path.join(dir, title + ext)
50         if os.path.exists(avipath):
51             dtime = time.time()-os.path.getmtime(avipath)
52             dtime = int(dtime)
53             if dtime > 300:
54                 if veryfySize(avipath):
55                     ret.append(title)
56     return ret
57 def get_move_dest_path(title,temppath,recpath,ext):
58     dstpath=os.path.join(recpath,title+ext)
59     srcpath=os.path.join(temppath,title+ext)
60     if os.path.exists(dstpath):
61         if not os.path.getsize(dstpath) == os.path.getsize(srcpath):
62             gmtime=time.gmtime(os.path.getmtime(srcpath))
63             iff=""
64             try:
65                 iff=u"("+configreader.getenv("iff")+u")_"
66                 if iff==u"()_":
67                     iff = u""
68             except:
69                 iff=""
70             title=title+u"_"+iff+time.strftime("%Y-%m-%dT%H-%M-%S",gmtime)
71         else:
72             recdblist.printutf8(u"同サイズのファイルが存在します")
73
74     return title
75 def get_delpath(temppath,title):
76     delpath=[os.path.join(temppath,title+".ts")]
77     delpath.append(os.path.join(temppath,title+".avi"))
78     delpath.append(os.path.join(temppath,title+".mp4"))
79     delpath.append(os.path.join(temppath,title+".m2v"))
80     delpath.append(os.path.join(temppath,title+".mkv"))
81     delpath.append(os.path.join(temppath,title+".120.avi"))
82     delpath.append(os.path.join(temppath,title+".timecode.txt"))
83     delpath.append(os.path.join(temppath,title+".aac"))
84     delpath.append(os.path.join(temppath,title+".ts.b25"))
85     delpath.append(os.path.join(temppath,title+".ts.tsmix"))
86     delpath.append(os.path.join(temppath,title+".ts.log"))
87     delpath.append(os.path.join(temppath,title+".sa.avi"))
88     delpath.append(os.path.join(temppath,title+".sa.avi.log"))
89     delpath.append(os.path.join(temppath,title+".log"))
90     return delpath
91 def veryfySize(path):
92     #vsize=[297,497,596,1196]#SD 30m 1h 1.5h 2h
93     vsize=[245,275,295,591,830]
94     vsize=vsize+[325,449,560,590,602,690,805,860,1014,1138,1237]
95     vsize=vsize+[261,535,540,616,740]#HD 30m 1h
96     #vsize=vsize+[381,895,447]
97     ret = 0
98     for size in vsize:
99         if os.path.getsize(path)>(size-10)*1024*1024 and os.path.getsize(path)<(size+10)*1024*1024:
100             ret=1
101     if os.path.getsize(path)>270*1024*1024:
102         ret=1
103     return ret
104 def execMove(title,temppath,recpath,ext,autodel):
105     srcpath=os.path.join(temppath,title+ext)
106     sf=guess.searchFolder(title, recpath)
107     if sf!="":
108         destpath=os.path.join(sf,get_move_dest_path(title, temppath, sf, ext)+ext)
109         if os.path.exists(destpath):
110             if os.path.getsize(destpath) == os.path.getsize(srcpath):
111                 recdblist.printutf8(u"同名同サイズのファイルが存在します。")
112         else:
113             recdblist.printutf8("moving now..")
114             recdblist.printutf8(srcpath+" : "+destpath)
115             print srcpath
116             shutil.copy(srcpath, destpath)
117             #shutil.copy(srcpath, destpath)
118             if autodel==1:
119                 delpath=get_delpath(temppath, title)
120                 for dp in delpath:
121                     try:
122                         os.remove(dp)
123                         ""
124                     except:
125                         ""