How do you execute external programs from Python?

C

Carl

Hi,

I have this little code snippet that I use for recording audio streams. My
problem is that I want to schedule my recordings with crontab. This does
not work, however. I cannot figure out why; my code works fine when run
manually from the command prompt.

On final thing: What would be the best way to turn off the recording?

Can someone help me?

Carl


Here is my code:

import time
import os
import shutil

URL = "http://www.jazzandblues.org/listen/links/kkjz1.ram"

def RecordURL(what = "KKJZ"):
str_mplayer = "mplayer -playlist " + URL
str_mplayer += " -ao pcm -aofile "
str_mplayer += what + ".wav" + " -vc dummy -vo null"
os.system(str_mplayer)

def CreateOGG(what = "KKJZ"):
ogg_file = what + ".ogg"
str_oggenc = "oggenc " + what + ".wav"
os.system(str_oggenc)

def CreateMP3(what = "KKJZ"):
mp3_file = what + ".mp3"
str_lame = "lame " + what + ".wav " + mp3_file
os.system(str_lame)

def DeleteWAV(what = "KKJZ"):
wav_file = what + ".wav"
str_rm = "rm " + wav_file
os.system(str_rm)

def DateTag(what = "KKJZ"):
local_time = time.asctime(time.localtime())
for local_file in [ what + ".ogg", what + ".mp3" ]:
length = len(local_file)
local_file_copy = local_file[: length - 4] + "_" + local_time + "."
+ local_file[length - 3 :]
shutil.copy(local_file, local_file_copy)

RecordURL()
## CreateOGG()
## CreateMP3()
## DeleteWAV()
## DateTag()

Here is my crontab entry:

30 * * * * python -c "import os; os.chdir('/home/alpha/mymusic/P2/Jazz/');
import KKJZ"
 
J

Jean Brouwers

You did not mentions what specific part is not working under cron, so
here is a guess.

Maybe the PATH environment variable is not set correctly such that
binaries like mplayer can not be found.

Try using absolute path names for mplayer and any other files.

/Jean Brouwers
 
M

michael

Here is my crontab entry:
Hi,

if cron is running as root say

30 * * * * "su - user; script.sh"

su - user means that .profile, .bash-profile etc is read. I think its
an "Environmental" Problem
 
C

Carl

Carl said:
Hi,

I have this little code snippet that I use for recording audio streams. My
problem is that I want to schedule my recordings with crontab. This does
not work, however. I cannot figure out why; my code works fine when run
manually from the command prompt.

On final thing: What would be the best way to turn off the recording?

Can someone help me?

Carl


Here is my code:

import time
import os
import shutil

URL = "http://www.jazzandblues.org/listen/links/kkjz1.ram"

def RecordURL(what = "KKJZ"):
str_mplayer = "mplayer -playlist " + URL
str_mplayer += " -ao pcm -aofile "
str_mplayer += what + ".wav" + " -vc dummy -vo null"
os.system(str_mplayer)

def CreateOGG(what = "KKJZ"):
ogg_file = what + ".ogg"
str_oggenc = "oggenc " + what + ".wav"
os.system(str_oggenc)

def CreateMP3(what = "KKJZ"):
mp3_file = what + ".mp3"
str_lame = "lame " + what + ".wav " + mp3_file
os.system(str_lame)

def DeleteWAV(what = "KKJZ"):
wav_file = what + ".wav"
str_rm = "rm " + wav_file
os.system(str_rm)

def DateTag(what = "KKJZ"):
local_time = time.asctime(time.localtime())
for local_file in [ what + ".ogg", what + ".mp3" ]:
length = len(local_file)
local_file_copy = local_file[: length - 4] + "_" + local_time +
"."
+ local_file[length - 3 :]
shutil.copy(local_file, local_file_copy)

RecordURL()
## CreateOGG()
## CreateMP3()
## DeleteWAV()
## DateTag()

Here is my crontab entry:

30 * * * * python -c "import os; os.chdir('/home/alpha/mymusic/P2/Jazz/');
import KKJZ"

Thanks guys!

It was an environmental problem. It works now; the only thing I still
haven't solved is how to kill the spawned process after say an hour. Any
clues?

Carl
 
P

Paul Watson

Carl said:
Carl wrote:

Thanks guys!

It was an environmental problem. It works now; the only thing I still
haven't solved is how to kill the spawned process after say an hour. Any
clues?

Carl

Have you investigated...?

os.spawn*()
os.P_NOWAIT
os.kill()
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,906
Latest member
SkinfixSkintag

Latest Threads

Top