OSDN Git Service

simplify codes.
[rec10/rec10-git.git] / rec10 / trunk / src / tv2mkv.py
index 7097343..3516e25 100644 (file)
@@ -15,49 +15,140 @@ def ts2mkv(pin, pout, opt):
     dir=os.path.split(pout)[0]
     title=os.path.split(pout)[1]
     title=os.path.splitext(title)[0]
-    tpavi=os.path.join(dir,title+".avi")
+    ##use avi
+    """tpavi=os.path.join(dir,title+".avi")
     tpmkv=os.path.join(dir, title+".mkv")
     tv2avi.ts2avi(pin, tpavi, opt)
     time.sleep(10)
-    avi2mkv(tpavi,tpmkv,opt)
+    avi2mkv(tpavi,tpmkv,opt)"""
+    tpraw=os.path.join(dir, title+".264")
+    tpmkv=os.path.join(dir, title+".mkv")
+    tv2avi.ts2raw(pin, tpraw, opt)
+    time.sleep(10)
+    raw2mkv(tpraw, tpmkv, opt)
+def raw2mkv(pin,pout,opt):#x264
+    dir=os.path.split(pout)[0]
+    title=os.path.split(pout)[1]
+    title=os.path.splitext(title)[0]
+    duration="--default-duration 0:30000/1001fps "
+    ffmpeg=configreader.getpath("ffmpeg")
+    isdualaac=0
+    ispentaaudio=0
+    if re.search("a",opt):
+        duration="--default-duration 0:24000/1001fps "
+    elif re.search("v",opt):
+        duration="--default-duration 0:24000/1001fps "
+    if re.search("d",opt):
+        isdualaac=1
+        duration="--default-duration 0:30000/1001fps "##ffmpegが24fpsに対応していないための措置
+    elif re.search("5",opt):
+        ispentaaudio=1
+        duration="--default-duration 0:30000/1001fps "##ffmpegが24fpsに対応していないための措置
+    exe = configreader.getpath("mkvmerge")
+    txt=""
+    os.environ['LANG']="ja_JP.UTF-8"
+    if isdualaac==1:
+        wineexe=configreader.getpath("wine")
+        pincap=pin.replace(".264",".srt")
+        cap2ass=configreader.getpath("Caption2Ass")
+        pints=pin.replace(".264",".ts")
+        paac1=pin.replace(".264","_1.aac")
+        paac2=pin.replace(".264","_2.aac")
+        recdblist.printutf8(paac1)
+        if not os.path.exists(paac1):
+            paac1=pin.replace(".264","_1.mp3")
+        if not os.path.exists(paac2):
+            paac2=pin.replace(".264","_2.mp3")
+        e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
+        e1=exe +" -o \""+pout+u"\" --forced-track 0:no "+duration+"-d 0 -A -S \""+pin+"\" --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"
+        e1s=exe +" -o \""+pout+u"\" --forced-track 0:no "+duration+"-d 0 -A -S \""+pin+"\" --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"
+        if os.path.isfile(cap2ass):
+            txt=txt+execcomd(e0)
+        if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
+            txt=txt+u"\n Cmd:"+e1s+u"\n"+execcomd(e1s)
+        else:
+            txt=txt+u"\n Cmd:"+e1+u"\n"+execcomd(e1)
+    elif ispentaaudio==1:
+        wineexe=configreader.getpath("wine")
+        pincap=pin.replace(".264",".srt")
+        cap2ass=configreader.getpath("Caption2Ass")
+        pints=pin.replace(".264",".ts")
+        paac1=pin.replace(".264","_1.aac")
+        paac2=pin.replace(".264","_2.aac")
+        recdblist.printutf8(paac1)
+        if not os.path.exists(paac1):
+            paac1=pin.replace(".264","_1.mp3")
+        if not os.path.exists(paac2):
+            paac2=pin.replace(".264","_2.mp3")
+        e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
+        e1=exe +" -o \""+pout+u"\" --forced-track 0:no "+duration+"-d 0 -A -S \""+pin+"\" --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"
+        e1s=exe +" -o \""+pout+u"\" --forced-track 0:no "+duration+"-d 0 -A -S \""+pin+"\" --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"
+        if os.path.isfile(cap2ass):
+            txt=txt+execcomd(e0)
+        if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
+            txt=txt+u"\n Cmd:"+e1s+u"\n"+execcomd(e1s)
+        else:
+            txt=txt+u"\n Cmd:"+e1+u"\n"+execcomd(e1)
+    else:
+        wineexe=configreader.getpath("wine")
+        pincap=pin.replace(".264",".srt")
+        cap2ass=configreader.getpath("Caption2Ass")
+        pints=pin.replace(".264",".ts")
+        pinaac=pin.replace(".264",".aac")
+        e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
+        e1=ffmpeg+" -i \""+pints+"\" -vn -f aac -acodec copy \""+pinaac+"\""
+        e2=exe +" -o \""+pout+u"\" --forced-track 0:no "+duration+"-d 0 -A -S \""+pin+"\" --forced-track 0:no -a 0 -D -S \""+pinaac+"\" --track-order 0:0,1:0"
+        e2s=exe +" -o \""+pout+u"\" --forced-track 0:no "+duration+"-d 0 -A -S \""+pin+"\" --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"
+        if os.path.isfile(cap2ass):
+            txt=txt+execcomd(e0)
+        txt=txt+execcomd(e1)
+        if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
+            txt=txt+u"\n Cmd:"+e2s+"\n"+execcomd(e2s)
+            recdblist.printutf8(e2s)
+        else:
+            txt=txt+u"\n Cmd:"+e2+"\n"+execcomd(e2)
+            recdblist.printutf8(e2)
+    recdblist.addlog(pout, txt, "mkvmerge-log")
+    logo=pout.replace(".mkv",".log")
+    if status.getSettings_auto_del_tmp()==1:
+        if os.path.exists(pout):
+            if os.path.getsize(pout)>100*1000*1000:
+                deltitle(dir,title)
 def avi2mkv(pin,pout,opt):
     dir=os.path.split(pout)[0]
     title=os.path.split(pout)[1]
     title=os.path.splitext(title)[0]
-    isvfr=0
     isdualaac=0
     ispentaaudio=0
-    if re.search("v", opt):
-        isvfr=1
     if re.search("d",opt):
-        isvfr=0
         isdualaac=1
     elif re.search("5",opt):
         ispentaaudio=1
     exe = configreader.getpath("mkvmerge")
     txt=""
     os.environ['LANG']="ja_JP.UTF-8"
-    if isvfr==1:
+    if isdualaac==1:
         wineexe=configreader.getpath("wine")
+        pincap=pin.replace(".avi",".srt")
         cap2ass=configreader.getpath("Caption2Ass")
         pints=pin.replace(".avi",".ts")
-        pincap=pin.replace(".avi",".srt")
-        pinaac=pin.replace(".avi",".aac")
-        e0="ffmpeg -i '"+pints+"' -vn -f aac -acodec copy '"+pinaac+"'"
-        #e1=wineexe+u" "+cfr2tc+u" '"+"Z:\\"+pin+"' '"+"Z:\\"+pin120+u"' '"+"Z:\\"+pintimecode+u"' 2"
-        e2=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
-        #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"
-        #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"
-        e3=exe +" -o '"+pout+u"'  --forced-track 0:no -d 0 -a 1 -S '"+pin+"' --sync 0:0 --track-order 0:0,0:1"
-        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"
-        txt=txt+execcomd(e0)
-        #txt=txt+execcomd(e1)
-        txt=txt+execcomd(e2)
+        paac1=pin.replace(".avi","_1.aac")
+        paac2=pin.replace(".avi","_2.aac")
+        recdblist.printutf8(paac1)
+        if not os.path.exists(paac1):
+            paac1=pin.replace(".avi","_1.mp3")
+        if not os.path.exists(paac2):
+            paac2=pin.replace(".avi","_2.mp3")
+        e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
+        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"
+        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"
+        if os.path.isfile(cap2ass):
+            txt=txt+execcomd(e0)
         if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
-            txt=txt+execcomd(e3s)
+            txt=txt+execcomd(e1s)
         else:
-            txt=txt+execcomd(e3)
-    elif isdualaac==1:
+            txt=txt+execcomd(e1)
+    elif ispentaaudio==1:
         wineexe=configreader.getpath("wine")
         pincap=pin.replace(".avi",".srt")
         cap2ass=configreader.getpath("Caption2Ass")
@@ -67,11 +158,13 @@ def avi2mkv(pin,pout,opt):
         recdblist.printutf8(paac1)
         if not os.path.exists(paac1):
             paac1=pin.replace(".avi","_1.mp3")
+        if not os.path.exists(paac2):
             paac2=pin.replace(".avi","_2.mp3")
         e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
-        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"
-        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"
-        txt=txt+execcomd(e0)
+        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"
+        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"
+        if os.path.isfile(cap2ass):
+            txt=txt+execcomd(e0)
         if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
             txt=txt+execcomd(e1s)
         else:
@@ -83,15 +176,11 @@ def avi2mkv(pin,pout,opt):
         pints=pin.replace(".avi",".ts")
         pinaac=pin.replace(".avi",".aac")
         e0=wineexe+u" "+cap2ass+u" -format srt \"Z:\\"+pints+"\" \"Z:\\"+pincap+"\""
-        e1="ffmpeg -i '"+pints+"' -vn -f aac -acodec copy '"+pinaac+"'"
-
-        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"
-        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"
-
-
-        #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"
-        #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"
-        txt=txt+execcomd(e0)
+        e1=ffmpeg+u" -i \""+pints+u"\" -vn -f aac -acodec copy \""+pinaac+"\""
+        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"
+        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"
+        if os.path.isfile(cap2ass):
+            txt=txt+execcomd(e0)
         txt=txt+execcomd(e1)
         if os.path.exists(pincap) and (os.path.getsize(pincap)>1000):
             txt=txt+execcomd(e2s)
@@ -116,6 +205,7 @@ def execcomd(cmd):
 def deltitle(path,title):
     dp=[]
     dp.append(os.path.join(path,title+".avi"))
+    dp.append(os.path.join(path,title+".264"))
     dp.append(os.path.join(path,title+".120.avi"))
     dp.append(os.path.join(path,title+".noodml.avi"))
     dp.append(os.path.join(path,title+".aac"))