mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-23 21:26:55 +01:00
[pbs] check all http formats and remove unnecessary request
- some of the quality that not reported in the documentation are available(4500k, 6500k) - the videoInfo request doesn't work for a long time
This commit is contained in:
parent
990d533ee4
commit
3cddb8d6a7
@ -448,17 +448,6 @@ def extract_redirect_urls(info):
|
|||||||
redirects.append(redirect)
|
redirects.append(redirect)
|
||||||
redirect_urls.add(redirect_url)
|
redirect_urls.add(redirect_url)
|
||||||
|
|
||||||
try:
|
|
||||||
video_info = self._download_json(
|
|
||||||
'http://player.pbs.org/videoInfo/%s?format=json&type=partner' % video_id,
|
|
||||||
display_id, 'Downloading video info JSON')
|
|
||||||
extract_redirect_urls(video_info)
|
|
||||||
info = video_info
|
|
||||||
except ExtractorError as e:
|
|
||||||
# videoInfo API may not work for some videos
|
|
||||||
if not isinstance(e.cause, compat_HTTPError) or e.cause.code != 404:
|
|
||||||
raise
|
|
||||||
|
|
||||||
# Player pages may also serve different qualities
|
# Player pages may also serve different qualities
|
||||||
for page in ('widget/partnerplayer', 'portalplayer'):
|
for page in ('widget/partnerplayer', 'portalplayer'):
|
||||||
player = self._download_webpage(
|
player = self._download_webpage(
|
||||||
@ -511,12 +500,12 @@ def extract_redirect_urls(info):
|
|||||||
formats))
|
formats))
|
||||||
if http_url:
|
if http_url:
|
||||||
for m3u8_format in m3u8_formats:
|
for m3u8_format in m3u8_formats:
|
||||||
bitrate = self._search_regex(r'(\d+k)', m3u8_format['url'], 'bitrate', default=None)
|
bitrate = self._search_regex(r'(\d+)k', m3u8_format['url'], 'bitrate', default=None)
|
||||||
# extract only the formats that we know that they will be available as http format.
|
# extract only the formats that we know that they will be available as http format.
|
||||||
# https://projects.pbs.org/confluence/display/coveapi/COVE+Video+Specifications
|
# https://projects.pbs.org/confluence/display/coveapi/COVE+Video+Specifications
|
||||||
if not bitrate or bitrate not in ('400k', '800k', '1200k', '2500k'):
|
if not bitrate or int(bitrate) < 400:
|
||||||
continue
|
continue
|
||||||
f_url = re.sub(r'\d+k|baseline', bitrate, http_url)
|
f_url = re.sub(r'\d+k|baseline', bitrate + 'k', http_url)
|
||||||
# This may produce invalid links sometimes (e.g.
|
# This may produce invalid links sometimes (e.g.
|
||||||
# http://www.pbs.org/wgbh/frontline/film/suicide-plan)
|
# http://www.pbs.org/wgbh/frontline/film/suicide-plan)
|
||||||
if not self._is_valid_url(f_url, display_id, 'http-%s video' % bitrate):
|
if not self._is_valid_url(f_url, display_id, 'http-%s video' % bitrate):
|
||||||
|
Loading…
Reference in New Issue
Block a user