diff options
Diffstat (limited to 'src/livestreamer/stream.py')
-rw-r--r-- | src/livestreamer/stream.py | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/livestreamer/stream.py b/src/livestreamer/stream.py index 8dd4115..9f5aafc 100644 --- a/src/livestreamer/stream.py +++ b/src/livestreamer/stream.py @@ -1,3 +1,4 @@ +from livestreamer import options from livestreamer.utils import urlopen import os @@ -9,7 +10,7 @@ class StreamError(Exception): pass class Stream(object): - def open(self, **args): + def open(self): raise NotImplementedError class StreamProcess(Stream): @@ -17,12 +18,13 @@ class StreamProcess(Stream): self.params = params or {} self.params["_bg"] = True self.params["_err"] = open(os.devnull, "w") + self.errorlog = options.get("errorlog") def cmdline(self): return str(self.cmd.bake(**self.params)) - def open(self, errorlog=False): - if errorlog: + def open(self): + if self.errorlog: tmpfile = tempfile.NamedTemporaryFile(prefix="livestreamer", suffix=".err", delete=False) self.params["_err"] = tmpfile @@ -34,7 +36,7 @@ class StreamProcess(Stream): stream.process.poll() if stream.process.returncode is not None: - if errorlog: + if self.errorlog: raise StreamError(("Error while executing subprocess, error output logged to: {0}").format(tmpfile.name)) else: raise StreamError("Error while executing subprocess") @@ -45,18 +47,22 @@ class RTMPStream(StreamProcess): def __init__(self, params): StreamProcess.__init__(self, params) + self.rtmpdump = options.get("rtmpdump") self.params["flv"] = "-" try: - self.cmd = pbs.rtmpdump - except pbs.CommandNotFound: - raise StreamError("Unable to find 'rtmpdump' command") + if self.rtmpdump: + self.cmd = pbs.Command._create(self.rtmpdump) + else: + self.cmd = pbs.rtmpdump + except pbs.CommandNotFound as err: + raise StreamError(("Unable to find {0} command").format(str(err))) - def open(self, **args): + def open(self): if "jtv" in self.params and not self._has_jtv_support(): raise StreamError("Installed rtmpdump does not support --jtv argument") - return StreamProcess.open(self, **args) + return StreamProcess.open(self) def _has_jtv_support(self): help = self.cmd(help=True, _err_to_out=True) @@ -71,6 +77,6 @@ class HTTPStream(Stream): def __init__(self, url): self.url = url - def open(self, **args): + def open(self): return urlopen(self.url) |