youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

rtsp.py (1559B)


      1 from __future__ import unicode_literals
      2 
      3 import os
      4 import subprocess
      5 
      6 from .common import FileDownloader
      7 from ..utils import (
      8     check_executable,
      9     encodeFilename,
     10 )
     11 
     12 
     13 class RtspFD(FileDownloader):
     14     def real_download(self, filename, info_dict):
     15         url = info_dict['url']
     16         self.report_destination(filename)
     17         tmpfilename = self.temp_name(filename)
     18 
     19         if check_executable('mplayer', ['-h']):
     20             args = [
     21                 'mplayer', '-really-quiet', '-vo', 'null', '-vc', 'dummy',
     22                 '-dumpstream', '-dumpfile', tmpfilename, url]
     23         elif check_executable('mpv', ['-h']):
     24             args = [
     25                 'mpv', '-really-quiet', '--vo=null', '--stream-dump=' + tmpfilename, url]
     26         else:
     27             self.report_error('MMS or RTSP download detected but neither "mplayer" nor "mpv" could be run. Please install any.')
     28             return False
     29 
     30         self._debug_cmd(args)
     31 
     32         retval = subprocess.call(args)
     33         if retval == 0:
     34             fsize = os.path.getsize(encodeFilename(tmpfilename))
     35             self.to_screen('\r[%s] %s bytes' % (args[0], fsize))
     36             self.try_rename(tmpfilename, filename)
     37             self._hook_progress({
     38                 'downloaded_bytes': fsize,
     39                 'total_bytes': fsize,
     40                 'filename': filename,
     41                 'status': 'finished',
     42             })
     43             return True
     44         else:
     45             self.to_stderr('\n')
     46             self.report_error('%s exited with code %d' % (args[0], retval))
     47             return False