OSDN Git Service

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