OSDN Git Service

modify tune software and recording script.
[rec10/rec10-git.git] / rec10 / trunk / src / recording_earth_pt1.py
index ccd7adb..57df045 100644 (file)
@@ -7,6 +7,7 @@ import sys
 import subprocess
 import time
 import os
+import os.path
 import signal
 
 import configreader
@@ -17,6 +18,7 @@ import recdblist
 #BS1,BS3...BS23 BS放送
 #CS2,CS4...CS24 CS放送
 
+tmppath = configreader.getConfPath("tmp")+"/"
 def channel2freq(channel):##freqを返す
     freq=""
     if channel[0:2].upper() != "CS" and channel[0:2].upper() != "BS":
@@ -32,9 +34,10 @@ def channel2freq(channel):##freqを返す
         freq=str((ch-1)*38360/2+1049480)
     return freq
 def testTune(adapter,channel):
+    my_env=recdblist.getEnv()
     tunecmd=configreader.getConfDVB("DVBtune")+u" "+adapter+u" "+channel2freq(channel)
     #p1=subprocess.Popen(tunecmd,shell=True)
-    p1=subprocess.Popen([configreader.getConfDVB("DVBtune"),adapter,channel2freq(channel)],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
+    p1=subprocess.Popen([configreader.getConfDVB("DVBtune"),adapter,channel2freq(channel)],env=my_env,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
     time.sleep(0.2)
     try:
         os.kill(p1.pid,signal.SIGKILL)
@@ -68,27 +71,33 @@ def getActiveAdapter(channel):
         if rt==1:
             return str(i)
 def record(channel,tsid,out,timelength,decode=1):
+    if not os.path.exists(tmppath+u"rec.sh"):
+        ft=open(tmppath+u"rec.sh","w")
+        ft.write(u"#!/bin/bash\n/bin/cat $1 > \"$2\"")
+        ft.close()
+        os.system(u"chmod +x "+tmppath+u"rec.sh")
     adapt=getActiveAdapter(channel)
+    my_env=recdblist.getEnv()
     if adapt!=None:
-        tunecmd=configreader.getConfDVB("DVBtune")+u" "+adapt+u" "+channel2freq(channel)+u" "+tsid
-        reccmd=u"/bin/cat \""+configreader.getConfDVB("DVBadapter")+adapt+"/dvr0\" > "+out
-        if decode==1:
-            reccmd=configreader.getConfPath("b25")+u" -v 0 \""+configreader.getConfDVB("DVBadapter")+adapt+"/dvr0\" \""+out+"\""
+        tunecmd=configreader.getConfDVB("DVBtune")+u" "+adapt+u" "+channel2freq(channel)+u" "+tsid+u" "+timelength+u" "+out
+        #reccmd=u"/bin/cat \""+configreader.getConfDVB("DVBadapter")+adapt+u"/dvr0\" > \""+out+u"\""
+        #if decode==1:
+        #    reccmd=configreader.getConfPath("b25")+u" -v 0 \""+configreader.getConfDVB("DVBadapter")+adapt+u"/dvr0\" \""+out+"\""
         recdblist.addLog(out, tunecmd+"\n"+reccmd, "record(DVB)",100)
-        p1=subprocess.Popen([configreader.getConfDVB("DVBtune"),adapt,channel2freq(channel),tsid])
-        time.sleep(0.2)
-        if decode==1:
-            p2=subprocess.Popen([configreader.getConfPath("b25"),u"-v 0",u"\""+configreader.getConfDVB("DVBadapter")+adapt+"/dvr0\"","\""+out+"\""],preexec_fn=os.setsid,bufsize=-1)
-        else:
-            p2=subprocess.Popen(reccmd,shell=True,preexec_fn=os.setsid,bufsize=-1)
-        time.sleep(float(timelength))
-        os.killpg(p2.pid,signal.SIGKILL)
-        p2.wait()
-        os.kill(p1.pid,signal.SIGKILL)
+        p1=subprocess.Popen([configreader.getConfDVB("DVBtune"),adapt,channel2freq(channel),tsid,timelength,out],env=my_env)
+        #time.sleep(0.2)
+        #if decode==1:
+        #    p2=subprocess.Popen([configreader.getConfPath("b25"),u"-v 0",u"\""+configreader.getConfDVB("DVBadapter")+adapt+"/dvr0\"","\""+out+"\""],preexec_fn=os.setsid,env=my_env,bufsize=-1)
+        #else:
+        #    p2=subprocess.Popen([tmppath+u"rec.sh",configreader.getConfDVB("DVBadapter")+adapt+"/dvr0",out],preexec_fn=os.setsid,env=my_env,bufsize=-1)
+            #p2=subprocess.Popen(reccmd,shell=True,preexec_fn=os.setsid,env=my_env,bufsize=-1)
+        #time.sleep(float(timelength))
+        #os.killpg(p2.pid,signal.SIGKILL)
+        #p2.wait()
+        #os.kill(p1.pid,signal.SIGKILL)
         p1.wait()
     else:
         recdblist.printutf8ex(u"tuner busy",100,100)
-        #f.close()
 def useDVB():
     try:
         if int(configreader.getConfDVB("useDVB").replace(" ",""))==1: