[hlsnative] Support test parameter
This commit is contained in:
parent
0b97f3a936
commit
b686fc18da
4 changed files with 18 additions and 7 deletions
|
@ -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',
|
||||||
|
|
Loading…
Reference in a new issue