diff --git a/downloader.py b/downloader.py index 2e7674c..35ba057 100644 --- a/downloader.py +++ b/downloader.py @@ -11,6 +11,7 @@ import subprocess import os import pip import signal +from logger import logger def updateYoutubeDL(): pip.main(['install', '--target=' + dirpath, '--upgrade', 'youtube_dl']) @@ -38,11 +39,12 @@ def executeYoutubeDL(url, cb): #"--external-downloader-args", "-re", url ] - popen = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE, preexec_fn=os.setsid) + popen = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE, preexec_fn=os.setsid) # monitor the stdout and send to callback, if result from callback function is true, # then kill the download process BUFFER_SIZE = 8096 + logger.add(popen.stderr, "youtube-dl.log") for chunk in iter(lambda: popen.stdout.read(BUFFER_SIZE), b''): if cb(chunk): os.killpg(os.getpgid(popen.pid), signal.SIGTERM) diff --git a/radio.py b/radio.py index d6bd6fd..58d2973 100644 --- a/radio.py +++ b/radio.py @@ -1,14 +1,18 @@ import downloader import ffmpeg import sys +from logger import logger def run(): process = ( ffmpeg .input('pipe:', re=None) .output("icecast://source:hackme@localhost:8000/stream.mp3", format='mp3', content_type="audio/mpeg") - .run_async(pipe_stdin=True) + .run_async(pipe_stdin=True, pipe_stdout=True, pipe_stderr=True) ) + logger.add(process.stdout, "ffmpeg.out.log") + logger.add(process.stderr, "ffmpeg.err.log") + def cb(chunk): process.stdin.write(chunk) return False