mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[hlsnative] Support test parameter
This commit is contained in:
		| @@ -42,6 +42,7 @@ class FileDownloader(object): | |||||||
|     Subclasses of this one must re-define the real_download method. |     Subclasses of this one must re-define the real_download method. | ||||||
|     """ |     """ | ||||||
|  |  | ||||||
|  |     _TEST_FILE_SIZE = 10241 | ||||||
|     params = None |     params = None | ||||||
|  |  | ||||||
|     def __init__(self, ydl, params): |     def __init__(self, ydl, params): | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ import subprocess | |||||||
| from .common import FileDownloader | from .common import FileDownloader | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|     compat_urlparse, |     compat_urlparse, | ||||||
|  |     compat_urllib_request, | ||||||
|     check_executable, |     check_executable, | ||||||
|     encodeFilename, |     encodeFilename, | ||||||
| ) | ) | ||||||
| @@ -71,15 +72,26 @@ class NativeHlsFD(FileDownloader): | |||||||
|                     else compat_urlparse.urljoin(url, line)) |                     else compat_urlparse.urljoin(url, line)) | ||||||
|                 segment_urls.append(segment_url) |                 segment_urls.append(segment_url) | ||||||
|  |  | ||||||
|  |         is_test = self.params.get('test', False) | ||||||
|  |         remaining_bytes = self._TEST_FILE_SIZE if is_test else None | ||||||
|         byte_counter = 0 |         byte_counter = 0 | ||||||
|         with open(tmpfilename, 'wb') as outf: |         with open(tmpfilename, 'wb') as outf: | ||||||
|             for i, segurl in enumerate(segment_urls): |             for i, segurl in enumerate(segment_urls): | ||||||
|                 segment = self.ydl.urlopen(segurl).read() |  | ||||||
|                 outf.write(segment) |  | ||||||
|                 byte_counter += len(segment) |  | ||||||
|                 self.to_screen( |                 self.to_screen( | ||||||
|                     '[hlsnative] %s: Downloading segment %d / %d' % |                     '[hlsnative] %s: Downloading segment %d / %d' % | ||||||
|                     (info_dict['id'], i + 1, len(segment_urls))) |                     (info_dict['id'], i + 1, len(segment_urls))) | ||||||
|  |                 seg_req = compat_urllib_request.Request(segurl) | ||||||
|  |                 if remaining_bytes: | ||||||
|  |                     seg_req.add_header('Range', 'bytes=0-%d' % (remaining_bytes - 1)) | ||||||
|  |  | ||||||
|  |                 segment = self.ydl.urlopen(seg_req).read() | ||||||
|  |                 if remaining_bytes: | ||||||
|  |                     segment = segment[:remaining_bytes] | ||||||
|  |                     remaining_bytes -= len(segment) | ||||||
|  |                 outf.write(segment) | ||||||
|  |                 byte_counter += len(segment) | ||||||
|  |                 if remaining_bytes <= 0: | ||||||
|  |                     break | ||||||
|  |  | ||||||
|         self._hook_progress({ |         self._hook_progress({ | ||||||
|             'downloaded_bytes': byte_counter, |             'downloaded_bytes': byte_counter, | ||||||
|   | |||||||
| @@ -14,8 +14,6 @@ from ..utils import ( | |||||||
|  |  | ||||||
|  |  | ||||||
| class HttpFD(FileDownloader): | class HttpFD(FileDownloader): | ||||||
|     _TEST_FILE_SIZE = 10241 |  | ||||||
|  |  | ||||||
|     def real_download(self, filename, info_dict): |     def real_download(self, filename, info_dict): | ||||||
|         url = info_dict['url'] |         url = info_dict['url'] | ||||||
|         tmpfilename = self.temp_name(filename) |         tmpfilename = self.temp_name(filename) | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ class VevoIE(InfoExtractor): | |||||||
|  |  | ||||||
|     _TESTS = [{ |     _TESTS = [{ | ||||||
|         'url': 'http://www.vevo.com/watch/hurts/somebody-to-die-for/GB1101300280', |         'url': 'http://www.vevo.com/watch/hurts/somebody-to-die-for/GB1101300280', | ||||||
|         "md5": "06bea460acb744eab74a9d7dcb4bfd61", |         "md5": "95ee28ee45e70130e3ab02b0f579ae23", | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': 'GB1101300280', |             'id': 'GB1101300280', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
| @@ -41,7 +41,7 @@ class VevoIE(InfoExtractor): | |||||||
|     }, { |     }, { | ||||||
|         'note': 'v3 SMIL format', |         'note': 'v3 SMIL format', | ||||||
|         'url': 'http://www.vevo.com/watch/cassadee-pope/i-wish-i-could-break-your-heart/USUV71302923', |         'url': 'http://www.vevo.com/watch/cassadee-pope/i-wish-i-could-break-your-heart/USUV71302923', | ||||||
|         'md5': '893ec0e0d4426a1d96c01de8f2bdff58', |         'md5': 'f6ab09b034f8c22969020b042e5ac7fc', | ||||||
|         'info_dict': { |         'info_dict': { | ||||||
|             'id': 'USUV71302923', |             'id': 'USUV71302923', | ||||||
|             'ext': 'mp4', |             'ext': 'mp4', | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Philipp Hagemeister
					Philipp Hagemeister