diff options
author | Jaime Marquínez Ferrándiz <[email protected]> | 2013-06-08 11:11:49 +0200 |
---|---|---|
committer | Jaime Marquínez Ferrándiz <[email protected]> | 2013-06-08 11:44:01 +0200 |
commit | 3054ff0cbebc7969d918f0deee76cd37ea6f5b40 (patch) | |
tree | 6b2ce6e27a2b6f5c3d31507ece37769c988ac698 /youtube_dl/FileDownloader.py | |
parent | cd453d38bbd038076c1b301396c2f996e77e261f (diff) | |
parent | f2cd958c0a09bca580a955c60c19e177f6ff45b8 (diff) | |
download | youtube-dl-3054ff0cbebc7969d918f0deee76cd37ea6f5b40.tar.gz youtube-dl-3054ff0cbebc7969d918f0deee76cd37ea6f5b40.zip |
Merge pull request #853 from mc2avr/master
add ZDFIE
Diffstat (limited to 'youtube_dl/FileDownloader.py')
-rw-r--r-- | youtube_dl/FileDownloader.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/youtube_dl/FileDownloader.py b/youtube_dl/FileDownloader.py index 49f3a8712..bf0f5bb9e 100644 --- a/youtube_dl/FileDownloader.py +++ b/youtube_dl/FileDownloader.py @@ -810,6 +810,37 @@ class FileDownloader(object): self.report_error(u'rtmpdump exited with code %d' % retval) return False + def _download_with_mplayer(self, filename, url): + self.report_destination(filename) + tmpfilename = self.temp_name(filename) + + args = ['mplayer', '-really-quiet', '-vo', 'null', '-vc', 'dummy', '-dumpstream', '-dumpfile', tmpfilename, url] + # Check for mplayer first + try: + subprocess.call(['mplayer', '-h'], stdout=(open(os.path.devnull, 'w')), stderr=subprocess.STDOUT) + except (OSError, IOError): + self.report_error(u'MMS or RTSP download detected but "%s" could not be run' % args[0] ) + return False + + # Download using mplayer. + retval = subprocess.call(args) + if retval == 0: + fsize = os.path.getsize(encodeFilename(tmpfilename)) + self.to_screen(u'\r[%s] %s bytes' % (args[0], fsize)) + self.try_rename(tmpfilename, filename) + self._hook_progress({ + 'downloaded_bytes': fsize, + 'total_bytes': fsize, + 'filename': filename, + 'status': 'finished', + }) + return True + else: + self.to_stderr(u"\n") + self.report_error(u'mplayer exited with code %d' % retval) + return False + + def _do_download(self, filename, info_dict): url = info_dict['url'] @@ -830,6 +861,10 @@ class FileDownloader(object): info_dict.get('play_path', None), info_dict.get('tc_url', None)) + # Attempt to download using mplayer + if url.startswith('mms') or url.startswith('rtsp'): + return self._download_with_mplayer(filename, url) + tmpfilename = self.temp_name(filename) stream = None |