OSDN Git Service

not to show db error.
[rec10/rec10-git.git] / rec10 / trunk / src / tv2mkv.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009-2010 Yukikaze
5 import status
6 import os
7 import commands
8 import tv2avi
9 import os.path
10 import time
11 import re
12 import recdblist
13 import configreader
14 def ts2mkv(pin, pout, opt):
15     dir=os.path.split(pout)[0]
16     title=os.path.split(pout)[1]
17     title=os.path.splitext(title)[0]
18     tpavi=os.path.join(dir,title+".avi")
19     tpmkv=os.path.join(dir, title+".mkv")
20     tv2avi.ts2avi(pin, tpavi, opt)
21     time.sleep(10)
22     avi2mkv(tpavi,tpmkv,opt)
23 def avi2mkv(pin,pout,opt):
24     dir=os.path.split(pout)[0]
25     title=os.path.split(pout)[1]
26     title=os.path.splitext(title)[0]
27     isvfr=0
28     isdualaac=0
29     if re.search("v", opt):
30         isvfr=1
31     if re.search("d",opt):
32         isvfr=0
33         isdualaac=1
34     elif re.search("5",opt):
35         isvfr=0
36     exe = configreader.getpath("mkvmerge")
37     txt=""
38     os.environ['LANG']="ja_JP.UTF-8"
39     if isvfr==1:
40         wineexe=configreader.getpath("wine")
41         cap2ass=configreader.getpath("Caption2Ass")
42         pints=pin.replace(".avi",".ts")
43         pincap=pin.replace(".avi",".srt")
44         pinaac=pin.replace(".avi",".aac")
45         e0="ffmpeg -i '"+pints+"' -vn -f aac -acodec copy '"+pinaac+"'"
46         #e1=wineexe+u" "+cfr2tc+u" '"+"Z:\\"+pin+"' '"+"Z:\\"+pin120+u"' '"+"Z:\\"+pintimecode+u"' 2"
47         e2=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
48         #e3=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -A -S '"+pin+"' --sync 0:-100 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0"
49         #e3s=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -A -S '"+pin+"' --sync 0:-100 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --forced-track 0:no -s 0 -D -A '"+pincap+"' --track-order 0:0,1:0,2:0"
50         e3=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -a 1 -S '"+pin+"' --sync 0:0 --track-order 0:0,0:1"
51         e3s=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -a 1 -S '"+pin+"' --sync 0:0 --forced-track 0:no -s 0 -D -A '"+pincap+"' --track-order 0:0,0:1,1:0"
52         txt=txt+execcomd(e0)
53         #txt=txt+execcomd(e1)
54         txt=txt+execcomd(e2)
55         if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
56             txt=txt+execcomd(e3s)
57         else:
58             txt=txt+execcomd(e3)
59     elif isdualaac==1:
60         wineexe=configreader.getpath("wine")
61         pincap=pin.replace(".avi",".srt")
62         cap2ass=configreader.getpath("Caption2Ass")
63         pints=pin.replace(".avi",".ts")
64         paac1=pin.replace(".avi","_1.aac")
65         paac2=pin.replace(".avi","_2.aac")
66         recdblist.printutf8(paac1)
67         if not os.path.exists(paac1):
68             paac1=pin.replace(".avi","_1.mp3")
69             paac2=pin.replace(".avi","_2.mp3")
70         e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
71         e1=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -A -S '"+pin+"' --sync 0:0 --forced-track 0:no -a 1 -D -S '"+paac1+"' --forced-track 0:no -a 1 -D -S '"+paac2+"' --track-order 0:0,1:1,2:1"
72         e1s=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -A -S '"+pin+"' --sync 0:0 --forced-track 0:no -a 1 -D -S '"+paac1+"' --forced-track 0:no -a 1 -D -S '"+paac2+"' --forced-track 0:no -s 0 -D -A '"+pincap+"' --track-order 0:0,1:1,2:1,3:0"
73         txt=txt+execcomd(e0)
74         if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
75             txt=txt+execcomd(e1s)
76         else:
77             txt=txt+execcomd(e1)
78     else:
79         wineexe=configreader.getpath("wine")
80         pincap=pin.replace(".avi",".srt")
81         cap2ass=configreader.getpath("Caption2Ass")
82         pints=pin.replace(".avi",".ts")
83         pinaac=pin.replace(".avi",".aac")
84         e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
85         e1="ffmpeg -i '"+pints+"' -vn -f aac -acodec copy '"+pinaac+"'"
86
87         e2=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -A -S '"+pin+"' --sync 0:0 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --track-order 0:0,1:0"
88         e2s=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -A -S '"+pin+"' --sync 0:0 --forced-track 0:no -a 0 -D -S '"+pinaac+"' --forced-track 0:no -s 0 -D -A '"+pincap+"' --track-order 0:0,1:0,2:0"
89
90
91         #e2=exe + u" -o '" + pout + u"' --forced-track 0:no --forced-track 1:no -a 1 -d 0 -S '" + pin + u"' --track-order 0:0,0:1"
92         #e2s=exe + u" -o '" + pout + u"' --forced-track 0:no --forced-track 1:no -a 1 -d 0 -S '" + pin + u"' --forced-track 0:no -s 0 -A -D '"+pincap+"' --track-order 0:0,0:1,1:0"
93         txt=txt+execcomd(e0)
94         txt=txt+execcomd(e1)
95         if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
96             txt=txt+execcomd(e2s)
97         else:
98             txt=txt+execcomd(e2)
99     logo=pout.replace(".mkv",".log")
100     if status.getSettings_auto_del_tmp()==1:
101         deltitle(dir,title)
102     txt = "\n####mkvmerge-log####\n"+txt
103     f=open(logo,'a')
104     f.write(txt.encode('utf-8'))
105     f.close()
106 def execcomd(cmd):
107     txt=""
108     cmdt=u"nice -n 17 "+cmd
109     try:
110         txt=u"Cmd : "+cmd+"\n"
111         txt2=commands.getoutput(cmdt.encode('utf-8'))
112         txt=txt+unicode(txt2,"utf-8")+"\n"
113     except:
114         ""
115     return txt
116 def deltitle(path,title):
117     dp=[]
118     dp.append(os.path.join(path,title+".avi"))
119     dp.append(os.path.join(path,title+".120.avi"))
120     dp.append(os.path.join(path,title+".noodml.avi"))
121     dp.append(os.path.join(path,title+".aac"))
122     dp.append(os.path.join(path,title+".m2v"))
123     dp.append(os.path.join(path,title+"_1.aac"))
124     dp.append(os.path.join(path,title+"_2.aac"))
125     dp.append(os.path.join(path,title+"_1.mp3"))
126     dp.append(os.path.join(path,title+"_2.mp3"))
127     dp.append(os.path.join(path,title+".srt"))
128     if os.path.exists(os.path.join(path,title+".ts"))and os.path.exists(os.path.join(path,title+".ts.b25")):
129         if os.path.getsize(os.path.join(path,title+".ts"))*10>os.path.getsize(os.path.join(path,title+".ts.b25")):
130             if os.path.getsize(os.path.join(path,title+".ts"))>1000*1000*100:
131                 dp.append(os.path.join(path,title+".ts.b25"))
132     for ip in dp:
133         try:
134             os.remove(ip)
135         except:
136             ""
137