OSDN Git Service

88a584b8a9eefa976a061657f2d45f25e3a03e83
[rec10/rec10-git.git] / rec10 / trunk / src / auto_process.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009-2010 Yukikaze
5 import os
6 import glob
7 import time
8 import datetime
9
10 import recdblist
11 import rec10d
12 import os.path
13 import tv2mp4
14 def Update_to_MP4(path):
15     """
16     録画一時フォルダ内mp4ファイルを検索
17     """
18     avilist = glob.glob(path + "/*.avi")
19     mkvlist = glob.glob(path+"/*.mkv")
20     avilist=avilist+mkvlist
21     #recdblist.printutf8(avilist)
22     for avif in avilist:
23         if avif.rfind("sa.avi")==-1:
24             ##b25f is title.ts.b25  avi is title.avi
25             dir = os.path.split(avif)[0]
26             title = os.path.split(avif)[1]
27             title = title.replace(".avi", "")
28             title = title.replace(".mkv", "")
29             avipath = os.path.join(dir, title + ".avi")
30             mkvpath = os.path.join(dir, title + ".mkv")
31             mp4path = os.path.join(dir, title + ".mp4")
32             if not os.path.exists(mp4path):
33                 if os.path.exists(avipath):
34                     avidtime = int(time.time()-os.path.getmtime(avipath))
35                     if avidtime>300:
36                         if os.path.exists(mkvpath):
37                             mkvdtime = int(time.time()-os.path.getmtime(mkvpath))
38                             if mkvdtime>300:
39                                 recdblist.printutf8(mkvpath+":"+mp4path)
40                                 tv2mp4.mkv2mp4(mkvpath,mp4path)
41                             else:
42                                 recdblist.printutf8(avipath+":"+mp4path)
43                                 tv2mp4.avi2mp4(avipath,mp4path)
44                         else:
45                             recdblist.printutf8(avipath+":"+mp4path)
46                             tv2mp4.avi2mp4(avipath,mp4path)
47                 else:
48                     if not os.path.exists(avipath):
49                         if os.path.exists(mkvpath):
50                             mkvdtime = int(time.time()-os.path.getmtime(mkvpath))
51                             if mkvdtime>300:
52                                 recdblist.printutf8(mkvpath+":"+mp4path)
53                                 tv2mp4.mkv2mp4(mkvpath,mp4path)
54 def auto_check(path):
55     avilist = glob.glob(path + "/*.avi")
56     mkvlist = glob.glob(path+"/*.mkv")
57     mp4list = glob.glob(path+"/*.mp4")
58     tslist = glob.glob(path+"/*.ts")
59     b25list = glob.glob(path+"/*.ts.b25")
60     filelist=avilist+mkvlist+tslist+b25list+mp4list
61     add=[]
62     tbtime=datetime.datetime.now()+datetime.timedelta(seconds=60)
63     tbtime2=datetime.datetime.now()+datetime.timedelta(seconds=1200)
64     for fn in filelist:
65         if fn.rfind("sa.avi")==-1 and fn.rfind(".120.avi")==-1:
66             dir = os.path.split(fn)[0]
67             file = os.path.split(fn)[1]
68             title = os.path.splitext(file)[0]
69             title = unicode(title,'utf-8')
70             dbs=rec10d.rec10db.select_by_name_time_timeline(self,title,tbtime,tbtime2)
71             if len(dbs)==0:
72                 ext = os.path.splitext(file)[1]
73                 if ext == ".b25":
74                     title=title.replace(".ts","")
75                 proc=check_process(dir, title)
76                 chtxtt=rec10d.rec10db.select_chtxt_by_title_timeline_log(title)
77                 nchtxt=""
78                 if chtxtt!=None:
79                     nchtxt=chtxtt
80                 if proc=="b25":
81                     """chtxtt=rec10d.rec10db.select_chtxt_by_title_timeline_log(title)
82                     nchtxt=""
83                     if chtxtt!=None:
84                         nchtxt=chtxtt"""
85                     add.append([recdblist.REC_AUTO_SUGGEST_DECODE,title,nchtxt])
86                 elif proc=="ts":
87                     add.append([recdblist.REC_AUTO_SUGGEST_ENCODE,title,nchtxt])
88                 elif proc =="avi":
89                     add.append([recdblist.REC_AUTO_SUGGEST_AVI2FP,title,nchtxt])
90                 #elif proc =="mp4":
91                 #    add.append([recdblist.REC_AUTO_SUGGEST_AP2FP,title,nchtxt])
92     if len(add)>0:
93         rec10d.rec10db.new_auto_proc_tmp()
94         for a in add:
95             rec10d.rec10db.add_auto_proc_tmp(a[0],a[1],a[2])
96         time.sleep(1)
97         rec10d.rec10db.new_auto_proc()
98         rec10d.rec10db.update_auto_proc()
99 """
100     処理がどの段階まで言ったのかを調査し返す。
101     return
102     recording
103     b25
104     b25decoding
105     tssplitting
106     ts
107     encoding
108     avi
109     mp4making
110     mp4
111 """
112 def check_process(path,title):
113     path1 = os.path.join(path,title+".mkv")
114     if os.path.exists(path1):
115         if int(time.time()-os.path.getmtime(path1))>300:
116             return "mkv"
117         else:
118             return "mkvmaking"
119     elif os.path.exists(os.path.join(path,title+".mp4")):
120         if int(time.time()-os.path.getmtime(os.path.join(path,title+".mp4")))>300:
121             return "mp4"
122         else:
123             return "mp4making"
124     elif os.path.exists(os.path.join(path,title+".avi")):
125         if int(time.time()-os.path.getmtime(os.path.join(path,title+".avi")))>300:
126             return "avi"
127         else:
128             return "encoding"
129     elif os.path.exists(os.path.join(path,title+".ts.log")):
130         if int(time.time()-os.path.getmtime(os.path.join(path,title+".ts")))<300:
131             return "encoding"
132     elif os.path.exists(os.path.join(path,title+".ts")):
133         if int(time.time()-os.path.getmtime(os.path.join(path,title+".ts")))>300:
134             return "ts"
135         else:
136             return "tssplitting"
137     elif os.path.exists(os.path.join(path,title+".sa.avi")):
138         if int(time.time()-os.path.getmtime(os.path.join(path,title+".sa.avi")))>300:
139             return "ts"
140         else:
141             return "tssplitting"
142     elif os.path.exists(os.path.join(path,title+".ts.b25")):
143         if int(time.time()-os.path.getmtime(os.path.join(path,title+".ts.b25")))>300:
144             return "b25"
145         else:
146             return "recording"
147     
148