OSDN Git Service

ready to enable multi-pc encoding
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 30 May 2009 02:37:26 +0000 (02:37 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Sat, 30 May 2009 02:37:26 +0000 (02:37 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@25 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/rec10gridserver.py [new file with mode: 0755]
rec10/trunk/src/status.py [new file with mode: 0755]
rec10/trunk/src/timerec.py
rec10/trunk/src/ts2x264.py
rec10/trunk/src/ts2xvid.py
rec10/trunk/src/tv2avi.py

diff --git a/rec10/trunk/src/rec10gridserver.py b/rec10/trunk/src/rec10gridserver.py
new file mode 100755 (executable)
index 0000000..d8fd924
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# coding: UTF-8
+# Rec10 TS Recording Tools
+# Copyright (C) 2009 Yukikaze
+from SocketServer import *
+
+RECV_BUF = 8192
+
+class Handler(BaseRequestHandler):
+    def handle(self):
+        print "connect from:", self.client_address
+        while True:
+            ret = self.request.recv(RECV_BUF)
+            if len(ret) == 0:
+                break
+            self.request.send(ret)
+        self.request.close()
+
+def main():
+    sv = ThreadingTCPServer(('', 10910), Handler)
+    ##sv = ForkingTCPServer(('', 7070), Handler)
+    print 'listen to:', sv.socket.getsockname()
+    sv.serve_forever()
+
+if __name__ == '__main__': main()
diff --git a/rec10/trunk/src/status.py b/rec10/trunk/src/status.py
new file mode 100755 (executable)
index 0000000..82edf31
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+# coding: UTF-8
+# Rec10 TS Recording Tools
+# Copyright (C) 2009 Yukikaze
+import os
+import re
+path=os.path.dirname(os.path.abspath(__file__))+"/"
+
+def getEncoding():
+    f = open(path+'status')
+    lines = f.readlines() # 1行毎にファイル終端まで全て読む(改行文字も含まれる)
+    f.close()
+    ts2avi=0
+    # lines2: リスト。要素は1行の文字列データ
+    for line in lines:
+        if re.search('ts2avi=',line):
+            line=line.replace("ts2avi=","")
+            line=line.replace(" ","")
+            ts2avi=int(line)
+            break
+    return ts2avi
+def setEncoding(tasknum):
+    s = "ts2avi="+str(tasknum)
+    f = open('status', 'w') # 書き込みモードで開く
+    f.write(s) # 引数の文字列をファイルに書き込む
+    f.close() # ファイルを閉じる
index 1f96b1a..91b5b76 100644 (file)
@@ -9,10 +9,13 @@ import datetime
 import epgdb
 import configreader
 #import japanesenkf
+import ts2x264
 import tv2avi
 import tv2ts
 import recdb
 import chdb
+import status
+import re
 #japanesenkf.overrideEncodings()
 recpath=configreader.getpath('recpath')
 path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
@@ -159,7 +162,7 @@ def task():
                 else:
                     #print title
                     tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt)
-                    if not os.access(recpath+"/"+title+".avi", os.F_OK):
+                    if not os.access(recpath+"/"+title+".ts", os.F_OK):
                         recdb.delend(title,chtxt,btime)
                         recdb.misrecwrite(title,chtxt,btime,etime,opt)
                     sys.exit(0)
@@ -167,7 +170,7 @@ def task():
             title=task['title']
             opt=task['opt']
             pid=os.fork()
-            if pid>0:#親プロセスの場合
+            """if pid>0:#親プロセスの場合
                     ""
                 else:
                     #print title
@@ -176,6 +179,39 @@ def task():
                     if not os.access(recpath+"/"+title+".avi", os.F_OK):
                         recdb.delend(title,chtxt,btime)
                         recdb.misrecwrite(title,chtxt,btime,etime,opt)
-                    sys.exit(0)
-
-
+                    sys.exit(0)"""
+        elif task["type"]=="ts2avi":
+            title=task['title']
+            opt=task['opt']
+            btime=task['btime']
+            etime=task['etime']
+            chtxt=task['chtxt']
+            tnow=datetime.datetime.now()
+            bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
+            et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
+            dt=bt-tnow
+            dt=dt.days*24*60*60+dt.seconds
+            if dt<10*60:
+                if status.getEncoding()<3:
+                    pid=os.fork()
+                    if pid>0:#親プロセスの場合
+                            ""
+                    else:
+                        #print title
+                        #tv2avi.b252avi(recpath+"/"+title+".avi", chtxt,opt)
+                        pin=recpath+"/"+title+".ts"
+                        if re.search("d",opt):
+                            pin=recpath+"/"+title+"sa.avi"
+                        pout=recpath+"/"+title+".avi"
+                        print pin+":"+pout+":"+opt
+                        ts2x264.ts2x264(pin, pout, opt)
+                        recdb.del_reckey("ts2avi",title,chtxt,btime)
+                        #tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt)
+                        sys.exit(0)
+                else:
+                    recdb.del_reckey("ts2avi",title,chtxt,btime)
+                    bt=bt+datetime.timedelta(seconds=600)
+                    et=et+datetime.timedelta(seconds=600)
+                    btime=bt.strftime("%Y-%m-%d %H:%M:%S")
+                    etime=et.strftime("%Y-%m-%d %H:%M:%S")
+                    recdb.rec_reckey("ts2avi",title,chtxt,btime,etime,opt)
index 8f46e74..fd4d4b1 100644 (file)
@@ -2,6 +2,7 @@
 # coding: UTF-8
 # Rec10 TS Recording Tools
 # Copyright (C) 2009 Yukikaze
+import status
 import os
 import time
 import re
@@ -12,6 +13,8 @@ def ts2x264(pin,pout,opts):#sizeは"HD"か"SD"
     """
     pinで指定されたファイルをpoutにx264でエンコードして書き出す
     """
+    
+    status.setEncoding(status.getEncoding()+1)
     isAnime=0
     size="SD"
 
@@ -63,3 +66,4 @@ def ts2x264(pin,pout,opts):#sizeは"HD"か"SD"
     else:
         pas1exe="mencoder \'"+pin+"\' -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto -oac mp3lame -lameopts cbr:br=128  -o \'"+pout+"\'"
         os.system(pas1exe)
+    status.setEncoding(status.getEncoding()-1)
index c87c86a..d0745b2 100644 (file)
@@ -5,7 +5,7 @@
 import os
 import time
 import re
-
+import status
 def ts2xvid(pin,pout,opts):#sizeは"HD"か"SD"
     """
     pinで指定されたファイルをpoutにx264でエンコードして書き出す
@@ -14,7 +14,7 @@ def ts2xvid(pin,pout,opts):#sizeは"HD"か"SD"
     pin = pin.encode('utf-8')
     isAnime=0
     size="SD"
-
+    status.setEncoding(status.getEncoding()+1)
     makemini=0
     if re.search("a",opts):
         isAnime=1
@@ -63,3 +63,4 @@ def ts2xvid(pin,pout,opts):#sizeは"HD"か"SD"
     else:
         pas1exe="mencoder \'"+pin+"\' -ovc xvid "+encvf+" -xvidencopts fixed_quant=4:threads=2 -oac mp3lame -lameopts cbr:br=128  -o \'"+pout+"\'"
         os.system(pas1exe)
+    status.setEncoding(status.getEncoding()-1)
\ No newline at end of file
index 698d747..ac62b95 100644 (file)
@@ -11,6 +11,7 @@ import re
 import ts2x264
 import ts2xvid
 import tv2ts
+import recdb
 def timetv2avi(pout, chtxt, btime, etime,opt):
     bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
     et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
@@ -32,7 +33,7 @@ def timetv2avi(pout, chtxt, btime, etime,opt):
     dualaudio = 0
     if re.search("d",opt):
         dualaudio = 1
-    if re.search('\[二\]', pout):
+    if re.search("\[二\]", pout):
         dualaudio = 1
     elif re.search('(二)', pout):
         dualaudio = 1
@@ -56,13 +57,20 @@ def timetv2avi(pout, chtxt, btime, etime,opt):
         makexvid = 0
     else:
         makexvid = 1
-    if dualaudio == 1:
+    """if dualaudio == 1:
         dualaudiots2avi(aviin, tsout + "sa.avi")
         aviin = tsout + "sa.avi"
     if makexvid==1:
         ts2xvid.ts2xvid(aviin, pout,opts)
     else:
         ts2x264.ts2x264(aviin, pout,opts)
+        """
+    bt=datetime.datetime.now()+datetime.timedelta(seconds=600)
+    btime=bt.strftime("%Y-%m-%d %H:%M:%S")
+    et=datetime.datetime.now()+datetime.timedelta(seconds=600)
+    etime=et.strftime("%Y-%m-%d %H:%M:%S")
+    title=os.path.split(tsout)[1]
+    recdb.rec_reckey("ts2avi",title,chtxt,btime,etime,opt)
     #try:
     #    os.remove(aviin)
     #except: