OSDN Git Service

fix many bugs.
authorgn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 21 Jul 2009 14:52:55 +0000 (14:52 +0000)
committergn64_jp <gn64_jp@4e526526-5e11-4fc0-8910-f8fd03428081>
Tue, 21 Jul 2009 14:52:55 +0000 (14:52 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/rec10@75 4e526526-5e11-4fc0-8910-f8fd03428081

rec10/trunk/src/audioconvert.py [new file with mode: 0644]
rec10/trunk/src/chdata.py
rec10/trunk/src/status [new file with mode: 0644]
rec10/trunk/src/status.py
rec10/trunk/src/tester.py [deleted file]
rec10/trunk/src/tv2avi.py

diff --git a/rec10/trunk/src/audioconvert.py b/rec10/trunk/src/audioconvert.py
new file mode 100644 (file)
index 0000000..829af76
--- /dev/null
@@ -0,0 +1,24 @@
+def audio2ogg(pin,pout):
+    pout = pout.encode('utf-8')
+    pin = pin.encode('utf-8')
+    """
+    pinで指定されたファイルをpoutにoggでエンコードして書き出す
+    """
+
+    exe="mencoder \'"+pin+"\' -quiet -oac mp3lame -lameopts cbr:br=128 -o "+pout
+
+    if dualpass==1:
+        pas1exe="mencoder \'"+pin+"\' -quiet -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto:pass=1:turbo=2 -passlogfile "+pin+".log "+"-oac mp3lame -lameopts cbr:br=128 -o /dev/null"
+        pas2exe="mencoder \'"+pin+"\' -quiet -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto:pass=2 -passlogfile "+pin+".log "+"-oac mp3lame -lameopts cbr:br=128 -o \'"+pout+"\'"
+        pas1exe="/usr/bin/nice -n 19 "+pas1exe
+        pas2exe="/usr/bin/nice -n 19 "+pas2exe
+        print pas2exe
+        os.system(pas1exe)
+        print "1pass終了"
+        time.sleep(5)
+        os.system(pas2exe)
+    else:
+        pas1exe="mencoder \'"+pin+"\' -quiet -ovc x264 "+encvf+" -x264encopts "+bitrate+":threads=auto -oac mp3lame -lameopts cbr:br=128  -o \'"+pout+"\'"
+        pas1exe="/usr/bin/nice -n 19 "+pas1exe
+        os.system(pas1exe)
+    status.setEncoding(status.getEncoding()-1)
\ No newline at end of file
index 13a0407..d4f527b 100644 (file)
@@ -3,6 +3,7 @@
 # Rec10 TS Recording Tools
 # Copyright (C) 2009 Yukikaze
 import sqlite3
+
 import os
 #CS放送では複数のチャンネルを指定する必要があるためチャンネル名をテキストデータで持っておき(chtxt)、必要に応じて変換する
 #ontvはepgデータなどで指定されている名前
@@ -28,7 +29,7 @@ db.commit()
 #   db.commit()
 #db.commit()
 db.close()
-def chadd(bctype, ontv, chtxt, ch, csch,station,station_name):#すべて文字列
+def chadd(bctype, ontv, chtxt, ch, csch, station, station_name):#すべて文字列
     """
     ChannelDBに指定したデータを追加する
     bctype:放送種別,bs/cs/te10などが入る。
@@ -37,7 +38,7 @@ def chadd(bctype, ontv, chtxt, ch, csch,station,station_name):#すべて文字
     チャンネルの数字を足したものにする
     """
     db = sqlite3.connect(dbpath)
-    value = "(\'" + bctype + "\',\'" + ontv + "\',\'" + chtxt + "\',\'" + ch + "\',\'" + csch +"\',\'"+station+ "\',\'" +station_name+ "\',datetime(\'2009-04-01 00:00:00\'))"
+    value = "(\'" + bctype + "\',\'" + ontv + "\',\'" + chtxt + "\',\'" + ch + "\',\'" + csch + "\',\'" + station + "\',\'" + station_name + "\',datetime(\'2009-04-01 00:00:00\'))"
     print value
     value = unicode(value)
     db.execute('insert into chdata values ' + value)
@@ -50,43 +51,44 @@ def chadd(bctype, ontv, chtxt, ch, csch,station,station_name):#すべて文字
 #iEPGDigitalはテレビ王国のサイトでiEPGはサイトによってまちまちのようなので自分の使うサイトに即したものにしてください
 #指定しない場合はnoneなどにしておけば動作はします(自動でチャンネルを設定する部分が動かないためチャンネルをRec10WEBから指定する必要があります。)
 #CS放送(スカパーe2)主に基本パックには言ってるものを中心に
-chadd('cs', '1204.ontvjapan.com', 'natiogeo', 'CS6', '343','CSDT343','none')
-chadd('cs', '1070.ontvjapan.com', 'bbc', 'CS12', '353','CSDT353','BBCワールド')
-chadd('cs', '1069.ontvjapan.com', 'cnn', 'CS12', '354','CSDT354','CNNインターナショナル')
-chadd('cs', '1045.ontvjapan.com', 'kids', 'CS22', '330','CSDT330','キッズステーション')
-chadd('cs', '1007.ontvjapan.com', 'movieplus', 'CS18', '240','CSDT240','ムービープラス')
-chadd('cs', '1016.ontvjapan.com', 'fox', 'CS4', '312','CSDT312','FOX')
-chadd('cs', '1014.ontvjapan.com', 'axn', 'CS6', '311','CSDT311','AXN')
-chadd('cs', '1201.ontvjapan.com', 'atx', 'CS16', '333','CSDT333','アニメシアターX')
-chadd('cs', '1050.ontvjapan.com', 'hisch', 'CS16', '342','CSDT342','LET’sTRY')
-chadd('cs', '1047.ontvjapan.com', 'animax', 'CS20', '332','CSDT332','AXNアニマックス')
-chadd('cs', '1062.ontvjapan.com', 'disch', 'CS20', '340','CSDT340','ディスカバリーチャンネル')
-chadd('cs', '1193.ontvjapan.com', 'anipla', 'CS20', '341','CSDT341','アニマルプラネット')
-chadd('cs', '1008.ontvjapan.com', 'neco', 'CS6', '223','CSDT223','SPTV261')
-chadd('cs', '1015.ontvjapan.com', 'family', 'CS22', '293','CSDT293','ファミリー劇場')
-chadd('cs', '1213.ontvjapan.com', 'disney', 'CS4', '334','CSDT334','ディズニーチャンネル')
-chadd('cs', '1009.ontvjapan.com', 'yo-ga', 'CS6', '224','CSDT224','シネフィル・イマジカ')
-chadd('cs2', '1217.ontvjapan.com', 'thecinema', 'CS10', '228','CSDT228','none')
-chadd('cs2', '1086.ontvjapan.com', 'nihoneiga', 'CS2', '239','CSDT239','日本映画専門チャンネル')
+chadd('cs', '1204.ontvjapan.com', 'natiogeo', 'CS6', '343', 'CSDT343', 'none')
+chadd('cs', '1070.ontvjapan.com', 'bbc', 'CS12', '353', 'CSDT353', 'BBCワールド')
+chadd('cs', '1069.ontvjapan.com', 'cnn', 'CS12', '354', 'CSDT354', 'CNNインターナショナル')
+chadd('cs', '1045.ontvjapan.com', 'kids', 'CS22', '330', 'CSDT330', 'キッズステーション')
+chadd('cs', '1007.ontvjapan.com', 'movieplus', 'CS18', '240', 'CSDT240', 'ムービープラス')
+chadd('cs', '1016.ontvjapan.com', 'fox', 'CS4', '312', 'CSDT312', 'FOX')
+chadd('cs', '1014.ontvjapan.com', 'axn', 'CS6', '311', 'CSDT311', 'AXN')
+chadd('cs', '1201.ontvjapan.com', 'atx', 'CS16', '333', 'CSDT333', 'アニメシアターX')
+chadd('cs', '1050.ontvjapan.com', 'hisch', 'CS16', '342', 'CSDT342', 'LET’sTRY')
+chadd('cs', '1047.ontvjapan.com', 'animax', 'CS20', '332', 'CSDT332', 'AXNアニマックス')
+chadd('cs', '1062.ontvjapan.com', 'disch', 'CS20', '340', 'CSDT340', 'ディスカバリーチャンネル')
+chadd('cs', '1193.ontvjapan.com', 'anipla', 'CS20', '341', 'CSDT341', 'アニマルプラネット')
+chadd('cs', '1008.ontvjapan.com', 'neco', 'CS6', '223', 'CSDT223', 'SPTV261')
+chadd('cs', '1015.ontvjapan.com', 'family', 'CS22', '293', 'CSDT293', 'ファミリー劇場')
+chadd('cs', '1213.ontvjapan.com', 'disney', 'CS4', '334', 'CSDT334', 'ディズニーチャンネル')
+chadd('cs', '1092.ontvjapan.com', 'teroasa', 'CS12', '303', 'CSDT303', '糞朝チャンネル')
+chadd('cs', '1009.ontvjapan.com', 'yo-ga', 'CS6', '224', 'CSDT224', 'シネフィル・イマジカ')
+chadd('cs2', '1217.ontvjapan.com', 'thecinema', 'CS10', '228', 'CSDT228', 'none')
+chadd('cs2', '1086.ontvjapan.com', 'nihoneiga', 'CS2', '239', 'CSDT239', '日本映画専門チャンネル')
 
 #bs放送の設定 全国共通のはず
-chadd('bs', '3001.ontvjapan.com', 'bs-nhk-1', '101', '0','BSDT101','NHK衛星第一')
-chadd('bs', '3002.ontvjapan.com', 'bs-nhk-2', '102', '0','BSDT102','NHK衛星第二')
-chadd('bs', '3003.ontvjapan.com', 'bs-nhk-hi', '103', '0','BSDT103','NHKハイビジョン')
-chadd('bs', '3004.ontvjapan.com', 'bs-nittere', '141', '0','BSDT141','BS日テレ')
-chadd('bs', '3005.ontvjapan.com', 'bs-asahi', '151', '0','BSDT151','BS朝日')
-chadd('bs', '3006.ontvjapan.com', 'bs-tbs', '161', '0','BSDT161','BS−i')
-chadd('bs', '3007.ontvjapan.com', 'bs-japan', '171', '0','BSDT171','BSジャパン')
-chadd('bs', '3008.ontvjapan.com', 'bs-fuji', '181', '0','BSDT181','BSフジ')
-chadd('bs', '3013.ontvjapan.com', 'bs-11', '211', '0','BSDT211','')
+chadd('bs', '3001.ontvjapan.com', 'bs-nhk-1', '101', '0', 'BSDT101', 'NHK衛星第一')
+chadd('bs', '3002.ontvjapan.com', 'bs-nhk-2', '102', '0', 'BSDT102', 'NHK衛星第二')
+chadd('bs', '3003.ontvjapan.com', 'bs-nhk-hi', '103', '0', 'BSDT103', 'NHKハイビジョン')
+chadd('bs', '3004.ontvjapan.com', 'bs-nittere', '141', '0', 'BSDT141', 'BS日テレ')
+chadd('bs', '3005.ontvjapan.com', 'bs-asahi', '151', '0', 'BSDT151', 'BS朝日')
+chadd('bs', '3006.ontvjapan.com', 'bs-tbs', '161', '0', 'BSDT161', 'BS−i')
+chadd('bs', '3007.ontvjapan.com', 'bs-japan', '171', '0', 'BSDT171', 'BSジャパン')
+chadd('bs', '3008.ontvjapan.com', 'bs-fuji', '181', '0', 'BSDT181', 'BSフジ')
+chadd('bs', '3013.ontvjapan.com', 'bs-11', '211', '0', 'BSDT211', '')
 
 #地上波の設定 愛知県向け
-chadd('te13', '0442.ontvjapan.com', 'nhk-k', '13', '0','DFS00C08','NHK教育')
-chadd('te20', '0432.ontvjapan.com', 'nhk-s', '20', '0','DFS08400','NHK総合')
-chadd('te22', '0404.ontvjapan.com', 'me-tere', '22', '0','DFS00C20','名古屋テレビ')
-chadd('te18', '0405.ontvjapan.com', 'cbc', '18', '0','DFS00C18','中京テレビ')
-chadd('te21', '0406.ontvjapan.com', 'toukai', '21', '0','DFS00C10','東海テレビ')
-chadd('te19', '0407.ontvjapan.com', 'chukyo', '19', '0','DFS00C28','中京テレビ')
-chadd('te23', '0420.ontvjapan.com', 'aichi', '23', '0','DFS08430','テレビ愛知')
+chadd('te13', '0442.ontvjapan.com', 'nhk-k', '13', '0', 'DFS00C08', 'NHK教育')
+chadd('te20', '0432.ontvjapan.com', 'nhk-s', '20', '0', 'DFS08400', 'NHK総合')
+chadd('te22', '0404.ontvjapan.com', 'me-tere', '22', '0', 'DFS00C20', '名古屋テレビ')
+chadd('te18', '0405.ontvjapan.com', 'cbc', '18', '0', 'DFS00C18', '中京テレビ')
+chadd('te21', '0406.ontvjapan.com', 'toukai', '21', '0', 'DFS00C10', '東海テレビ')
+chadd('te19', '0407.ontvjapan.com', 'chukyo', '19', '0', 'DFS00C28', '中京テレビ')
+chadd('te23', '0420.ontvjapan.com', 'aichi', '23', '0', 'DFS08430', 'テレビ愛知')
 
 
diff --git a/rec10/trunk/src/status b/rec10/trunk/src/status
new file mode 100644 (file)
index 0000000..a19316d
--- /dev/null
@@ -0,0 +1,3 @@
+terec=0
+bscsrec=0
+ts2avi=0
\ No newline at end of file
index a973522..bc618f5 100755 (executable)
@@ -26,3 +26,44 @@ def setEncoding(tasknum):
     f = open(path+'status', 'w') # 書き込みモードで開く
     f.write(s) # 引数の文字列をファイルに書き込む
     f.close() # ファイルを閉じる
+def getTERecording():
+    f = open(path+'status')
+    lines = f.readlines() # 1行毎にファイル終端まで全て読む(改行文字も含まれる)
+    f.close()
+    t=0
+    # lines2: リスト。要素は1行の文字列データ
+    for line in lines:
+        if re.search('terec=',line):
+            line=line.replace("terec=","")
+            line=line.replace(" ","")
+            t=int(line)
+            break
+    return t
+def setTERecording(tasknum):
+    if tasknum<0:
+        tasknum=0
+    s = "terec="+str(tasknum)
+    f = open(path+'status', 'w') # 書き込みモードで開く
+    f.write(s) # 引数の文字列をファイルに書き込む
+    f.close() # ファイルを閉じる
+def getBSCSRecording():
+    f = open(path+'status')
+    lines = f.readlines() # 1行毎にファイル終端まで全て読む(改行文字も含まれる)
+    f.close()
+    bscsrec=0
+    # lines2: リスト。要素は1行の文字列データ
+    for line in lines:
+        if re.search('bscsrec=',line):
+            line=line.replace("bscsrec=","")
+            line=line.replace(" ","")
+            bscsrec=int(line)
+            break
+    return bscsrec
+def setBSCSRecording(tasknum):
+    if tasknum<0:
+        tasknum=0
+    s = "bscsrec="+str(tasknum)
+    f = open(path+'status', 'w') # 書き込みモードで開く
+    f.write(s) # 引数の文字列をファイルに書き込む
+    f.close() # ファイルを閉じる
+
diff --git a/rec10/trunk/src/tester.py b/rec10/trunk/src/tester.py
deleted file mode 100644 (file)
index ad61ffb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/python
-# coding: UTF-8
-# Rec10 TS Recording Tools
-# Copyright (C) 2009 Yukikaze
-import os
-import epgdb
-#import ts2epg
-#import xml2db
-#import chdb
-#import tv2ts
-##import tv2avi
-import recdb
-import tv2avi
-import re
-import ts2x264
-#import datetime
-path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
-recordingpath="/home/ftpusr/ftp3/Recording/"
-recordedpath="/home/ftpusr/ftp3/Recorded/"
index b4e682d..f84e1a0 100644 (file)
@@ -2,6 +2,7 @@
 # coding: UTF-8
 # Rec10 TS Recording Tools
 # Copyright (C) 2009 Yukikaze
+import shutil
 import time
 import chdb
 import configreader
@@ -76,12 +77,6 @@ def timetv2avi(pout, chtxt, btime, etime,opt):
     if pentaaudio ==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)
@@ -99,9 +94,6 @@ def tv2avi(pout, chtxt, btime, etime,opt):
     time = str(time)
     extt = os.path.splitext(pout)
     tsout = extt[0]
-    #tsout=pout####
-    #print "4"+tsout
-    #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+time
     tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], time)
     aviin = tsout + ".ts"
     dualaudio = 0
@@ -136,22 +128,9 @@ def tv2avi(pout, chtxt, btime, etime,opt):
     ts2x264.ts2x264(aviin, pout,opts)
     #os.remove(aviin)
 def b252avi(pout, chtxt,opt):
-    #bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
-    #et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
     extt = os.path.splitext(pout)
     tsout = extt[0]
-    #tsout=pout####
-    #print "4"+tsout
-    #tnow = datetime.datetime.now()
-    #wt = bt-tnow
-    #waitt = wt.seconds-5
-    #time.sleep(waitt)
-    #tnow = datetime.datetime.now()
-    #dt = et-tnow
-    #rectime = dt.seconds-10
-    #rectime = str(rectime)
     tv2ts.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
-    #tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], rectime)
     aviin = tsout + ".ts"
     dualaudio = 0
     pentaaudio = 0
@@ -198,41 +177,6 @@ def b252avi(pout, chtxt,opt):
     #except:
     #    ""
 
-    """
-    pout = pout.encode('utf-8')
-    extt = os.path.splitext(pout)
-    tsout = extt[0]
-    #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+time
-    tv2ts.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
-    aviin = tsout + ".ts"
-    dualaudio = 0
-    if re.search("d",opt):
-        dualaudio = 1
-    if re.search('\[二\]', pout):
-        dualaudio = 1
-    elif re.search('(二)', pout):
-        dualaudio = 1
-    elif re.search('\(二\)', pout):
-        dualaudio = 1
-    opts=""
-    if chdb.chtxtsearch(chtxt)['bctype'] == 'cs':
-        opts=opts+"S2"
-        if chtxt == "disch":
-            ""
-        elif chtxt == "hisch":
-            ""
-        else:
-            opts=opts+"a"
-    else:
-        opts=opts+"Ha2"
-    if dualaudio == 1:
-        dualaudiots2avi(aviin, tsout + "sa.avi")
-        aviin = tsout + "sa.avi"
-    ts2x264.ts2x264(aviin, pout,opts)
-    #os.remove(aviin)
-
-    """
-
 def dualaudiots2avi(pin, pout):
     bontsdemux = configreader.getpath('bontsdemux')
     wine = configreader.getpath('wine')
@@ -253,6 +197,41 @@ def dualaudiots2avi(pin, pout):
     os.system(exe)
     os.remove(ffpin1)
     os.remove(ffpin2)
+def dualaudio2sep(pin,pout,delay):
+    bontsdemux = configreader.getpath('bontsdemux')
+    wine = configreader.getpath('wine')
+    cmdwine = configreader.getpath('cmdwine')
+    bonpin = "Z:\\" + pin[1:]
+    outf = os.path.splitext(pin)[0]
+    bonpout = "Z:\\" + outf[1:]
+    exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 1 -o \"" + bonpout + "\" -start -quit"
+    #print exe
+    exe = 'xvfb-run -a ' + exe
+    #exe='export Display=:2&&'+exe
+    print exe
+    os.system(exe)
+    ffpin=pin.replace(".ts","")
+    ffpin1 = pin.replace("ts", "wav")
+    ffpin2 = pin.replace("ts", "m2v")
+    ffpout1=ffpin+"1_delay"+delay+".wav"
+    ffpout2=ffpin+"2_delay"+delay+".wav"
+    shutil.move(ffpin1, ffpout1)
+    exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit"
+    exe = 'xvfb-run -a ' + exe
+    os.system(exe)
+    shutil.move(ffpin1, ffpout2)
+    ffpout21=ffpout1.replace(".wav",".ogg")
+    ffpout22=ffpout2.replace(".wav",".ogg")
+    aexe1="ffmpeg -i "+ffpout1+" -vn -acodec vorbis -ar 48000 -ab 128k "+ffpout21
+    aexe2="ffmpeg -i "+ffpout2+" -vn -acodec vorbis -ar 48000 -ab 128k "+ffpout22
+    os.system(aexe1)
+    os.system(aexe2)
+
+    #exe = "ffmpeg -y  -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi  \'" + pout + "\'"
+    #print exe
+    
+    #os.remove(ffpin1)
+    #os.remove(ffpin2)
 
 def pentaaudiots2avi(pin, pout):
     bontsdemux = configreader.getpath('bontsdemux')