mirror of
https://github.com/ytdl-org/youtube-dl
synced 2024-11-06 21:17:11 +01:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
ffbc3901d2
@ -237,7 +237,7 @@ class TestFormatSelection(unittest.TestCase):
|
|||||||
f2['url'] = 'url:' + f2id
|
f2['url'] = 'url:' + f2id
|
||||||
|
|
||||||
info_dict = _make_result([f1, f2], extractor='youtube')
|
info_dict = _make_result([f1, f2], extractor='youtube')
|
||||||
ydl = YDL()
|
ydl = YDL({'format': 'best/bestvideo'})
|
||||||
yie = YoutubeIE(ydl)
|
yie = YoutubeIE(ydl)
|
||||||
yie._sort_formats(info_dict['formats'])
|
yie._sort_formats(info_dict['formats'])
|
||||||
ydl.process_ie_result(info_dict)
|
ydl.process_ie_result(info_dict)
|
||||||
@ -245,7 +245,7 @@ class TestFormatSelection(unittest.TestCase):
|
|||||||
self.assertEqual(downloaded['format_id'], f1id)
|
self.assertEqual(downloaded['format_id'], f1id)
|
||||||
|
|
||||||
info_dict = _make_result([f2, f1], extractor='youtube')
|
info_dict = _make_result([f2, f1], extractor='youtube')
|
||||||
ydl = YDL()
|
ydl = YDL({'format': 'best/bestvideo'})
|
||||||
yie = YoutubeIE(ydl)
|
yie = YoutubeIE(ydl)
|
||||||
yie._sort_formats(info_dict['formats'])
|
yie._sort_formats(info_dict['formats'])
|
||||||
ydl.process_ie_result(info_dict)
|
ydl.process_ie_result(info_dict)
|
||||||
|
@ -914,15 +914,16 @@ class YoutubeDL(object):
|
|||||||
if not available_formats:
|
if not available_formats:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if format_spec == 'best' or format_spec is None:
|
if format_spec in ['best', 'worst', None]:
|
||||||
return available_formats[-1]
|
format_idx = 0 if format_spec == 'worst' else -1
|
||||||
elif format_spec == 'worst':
|
|
||||||
audiovideo_formats = [
|
audiovideo_formats = [
|
||||||
f for f in available_formats
|
f for f in available_formats
|
||||||
if f.get('vcodec') != 'none' and f.get('acodec') != 'none']
|
if f.get('vcodec') != 'none' and f.get('acodec') != 'none']
|
||||||
if audiovideo_formats:
|
if audiovideo_formats:
|
||||||
return audiovideo_formats[0]
|
return audiovideo_formats[format_idx]
|
||||||
return available_formats[0]
|
# for audio only urls, select the best/worst audio format
|
||||||
|
elif all(f.get('acodec') != 'none' for f in available_formats):
|
||||||
|
return available_formats[format_idx]
|
||||||
elif format_spec == 'bestaudio':
|
elif format_spec == 'bestaudio':
|
||||||
audio_formats = [
|
audio_formats = [
|
||||||
f for f in available_formats
|
f for f in available_formats
|
||||||
|
@ -27,9 +27,6 @@ class VpornIE(InfoExtractor):
|
|||||||
'duration': 393,
|
'duration': 393,
|
||||||
'age_limit': 18,
|
'age_limit': 18,
|
||||||
'view_count': int,
|
'view_count': int,
|
||||||
'like_count': int,
|
|
||||||
'dislike_count': int,
|
|
||||||
'comment_count': int,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -47,9 +44,6 @@ class VpornIE(InfoExtractor):
|
|||||||
'duration': 588,
|
'duration': 588,
|
||||||
'age_limit': 18,
|
'age_limit': 18,
|
||||||
'view_count': int,
|
'view_count': int,
|
||||||
'like_count': int,
|
|
||||||
'dislike_count': int,
|
|
||||||
'comment_count': int,
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -64,29 +58,29 @@ class VpornIE(InfoExtractor):
|
|||||||
title = self._html_search_regex(
|
title = self._html_search_regex(
|
||||||
r'videoname\s*=\s*\'([^\']+)\'', webpage, 'title').strip()
|
r'videoname\s*=\s*\'([^\']+)\'', webpage, 'title').strip()
|
||||||
description = self._html_search_regex(
|
description = self._html_search_regex(
|
||||||
r'<div class="description_txt">(.*?)</div>', webpage, 'description', fatal=False)
|
r'class="(?:descr|description_txt)">(.*?)</div>',
|
||||||
|
webpage, 'description', fatal=False)
|
||||||
thumbnail = self._html_search_regex(
|
thumbnail = self._html_search_regex(
|
||||||
r'flashvars\.imageUrl\s*=\s*"([^"]+)"', webpage, 'description', fatal=False, default=None)
|
r'flashvars\.imageUrl\s*=\s*"([^"]+)"', webpage, 'description', fatal=False, default=None)
|
||||||
if thumbnail:
|
if thumbnail:
|
||||||
thumbnail = 'http://www.vporn.com' + thumbnail
|
thumbnail = 'http://www.vporn.com' + thumbnail
|
||||||
|
|
||||||
uploader = self._html_search_regex(
|
uploader = self._html_search_regex(
|
||||||
r'(?s)UPLOADED BY.*?<a href="/user/[^"]+">([^<]+)</a>',
|
r'(?s)Uploaded by:.*?<a href="/user/[^"]+"[^>]*>(.+?)</a>',
|
||||||
webpage, 'uploader', fatal=False)
|
webpage, 'uploader', fatal=False)
|
||||||
|
|
||||||
categories = re.findall(r'<a href="/cat/[^"]+">([^<]+)</a>', webpage)
|
categories = re.findall(r'<a href="/cat/[^"]+"[^>]*>([^<]+)</a>', webpage)
|
||||||
|
|
||||||
duration = parse_duration(self._search_regex(
|
duration = parse_duration(self._search_regex(
|
||||||
r'duration (\d+ min \d+ sec)', webpage, 'duration', fatal=False))
|
r'Runtime:\s*</span>\s*(\d+ min \d+ sec)',
|
||||||
|
webpage, 'duration', fatal=False))
|
||||||
|
|
||||||
view_count = str_to_int(self._html_search_regex(
|
view_count = str_to_int(self._search_regex(
|
||||||
r'<span>([\d,\.]+) VIEWS</span>', webpage, 'view count', fatal=False))
|
r'class="views">([\d,\.]+) [Vv]iews<',
|
||||||
like_count = str_to_int(self._html_search_regex(
|
webpage, 'view count', fatal=False))
|
||||||
r'<span id="like" class="n">([\d,\.]+)</span>', webpage, 'like count', fatal=False))
|
|
||||||
dislike_count = str_to_int(self._html_search_regex(
|
|
||||||
r'<span id="dislike" class="n">([\d,\.]+)</span>', webpage, 'dislike count', fatal=False))
|
|
||||||
comment_count = str_to_int(self._html_search_regex(
|
comment_count = str_to_int(self._html_search_regex(
|
||||||
r'<h4>Comments \(<b>([\d,\.]+)</b>\)</h4>', webpage, 'comment count', fatal=False))
|
r"'Comments \(([\d,\.]+)\)'",
|
||||||
|
webpage, 'comment count', default=None))
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
|
|
||||||
@ -117,8 +111,6 @@ class VpornIE(InfoExtractor):
|
|||||||
'categories': categories,
|
'categories': categories,
|
||||||
'duration': duration,
|
'duration': duration,
|
||||||
'view_count': view_count,
|
'view_count': view_count,
|
||||||
'like_count': like_count,
|
|
||||||
'dislike_count': dislike_count,
|
|
||||||
'comment_count': comment_count,
|
'comment_count': comment_count,
|
||||||
'age_limit': 18,
|
'age_limit': 18,
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
|
Loading…
Reference in New Issue
Block a user