mirror of
				https://github.com/ytdl-org/youtube-dl.git
				synced 2025-10-29 09:26:20 -07:00 
			
		
		
		
	[downloader/rtmp] Fix arguments encoding and simplify retry logic (Closes #5528)
This commit is contained in:
		| @@ -3,7 +3,6 @@ from __future__ import unicode_literals | |||||||
| import os | import os | ||||||
| import re | import re | ||||||
| import subprocess | import subprocess | ||||||
| import sys |  | ||||||
| import time | import time | ||||||
|  |  | ||||||
| from .common import FileDownloader | from .common import FileDownloader | ||||||
| @@ -11,6 +10,7 @@ from ..compat import compat_str | |||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     check_executable, |     check_executable, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
|  |     encodeArgument, | ||||||
|     get_exe_version, |     get_exe_version, | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -121,7 +121,7 @@ class RtmpFD(FileDownloader): | |||||||
|         # possible. This is part of rtmpdump's normal usage, AFAIK. |         # possible. This is part of rtmpdump's normal usage, AFAIK. | ||||||
|         basic_args = [ |         basic_args = [ | ||||||
|             'rtmpdump', '--verbose', '-r', url, |             'rtmpdump', '--verbose', '-r', url, | ||||||
|             '-o', encodeFilename(tmpfilename, True)] |             '-o', tmpfilename] | ||||||
|         if player_url is not None: |         if player_url is not None: | ||||||
|             basic_args += ['--swfVfy', player_url] |             basic_args += ['--swfVfy', player_url] | ||||||
|         if page_url is not None: |         if page_url is not None: | ||||||
| @@ -154,16 +154,9 @@ class RtmpFD(FileDownloader): | |||||||
|         if not live and continue_dl: |         if not live and continue_dl: | ||||||
|             args += ['--skip', '1'] |             args += ['--skip', '1'] | ||||||
|  |  | ||||||
|         if sys.platform == 'win32' and sys.version_info < (3, 0): |         args = [encodeArgument(a) for a in args] | ||||||
|             # Windows subprocess module does not actually support Unicode |  | ||||||
|             # on Python 2.x |  | ||||||
|             # See http://stackoverflow.com/a/9951851/35070 |  | ||||||
|             subprocess_encoding = sys.getfilesystemencoding() |  | ||||||
|             args = [a.encode(subprocess_encoding, 'ignore') for a in args] |  | ||||||
|         else: |  | ||||||
|             subprocess_encoding = None |  | ||||||
|  |  | ||||||
|         self._debug_cmd(args, subprocess_encoding, exe='rtmpdump') |         self._debug_cmd(args, exe='rtmpdump') | ||||||
|  |  | ||||||
|         RD_SUCCESS = 0 |         RD_SUCCESS = 0 | ||||||
|         RD_FAILED = 1 |         RD_FAILED = 1 | ||||||
| @@ -180,7 +173,11 @@ class RtmpFD(FileDownloader): | |||||||
|             prevsize = os.path.getsize(encodeFilename(tmpfilename)) |             prevsize = os.path.getsize(encodeFilename(tmpfilename)) | ||||||
|             self.to_screen('[rtmpdump] %s bytes' % prevsize) |             self.to_screen('[rtmpdump] %s bytes' % prevsize) | ||||||
|             time.sleep(5.0)  # This seems to be needed |             time.sleep(5.0)  # This seems to be needed | ||||||
|             retval = run_rtmpdump(basic_args + ['-e'] + [[], ['-k', '1']][retval == RD_FAILED]) |             args = basic_args + ['--resume'] | ||||||
|  |             if retval == RD_FAILED: | ||||||
|  |                 args += ['--skip', '1'] | ||||||
|  |             args = [encodeArgument(a) for a in args] | ||||||
|  |             retval = run_rtmpdump(args) | ||||||
|             cursize = os.path.getsize(encodeFilename(tmpfilename)) |             cursize = os.path.getsize(encodeFilename(tmpfilename)) | ||||||
|             if prevsize == cursize and retval == RD_FAILED: |             if prevsize == cursize and retval == RD_FAILED: | ||||||
|                 break |                 break | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user