commit 9a61dfba0cfb9b978278fe2e1c823c205fcd72dd
parent 154c209e2db2bd6f51998503b15d9a050bc1e738
Author: Sergey M․ <dstftw@gmail.com>
Date: Thu, 11 Feb 2016 21:22:57 +0600
[pbs] Revert prefer portalplayer
Diffstat:
1 file changed, 13 insertions(+), 11 deletions(-)
diff --git a/youtube_dl/extractor/pbs.py b/youtube_dl/extractor/pbs.py
@@ -4,6 +4,7 @@ from __future__ import unicode_literals
import re
from .common import InfoExtractor
+from ..compat import compat_HTTPError
from ..utils import (
ExtractorError,
determine_ext,
@@ -433,20 +434,21 @@ class PBSIE(InfoExtractor):
for vid_id in video_id]
return self.playlist_result(entries, display_id)
- player = self._download_webpage(
- 'http://player.pbs.org/portalplayer/%s' % video_id, display_id)
-
- info = self._parse_json(
- self._search_regex(
- r'(?s)PBS\.videoData\s*=\s*({.+?});\n',
- player, 'video data', default='{}'),
- display_id, transform_source=js_to_json, fatal=False)
-
- # Fallback to old videoInfo API
- if not info:
+ try:
info = self._download_json(
'http://player.pbs.org/videoInfo/%s?format=json&type=partner' % video_id,
display_id, 'Downloading video info JSON')
+ except ExtractorError as e:
+ if not isinstance(e.cause, compat_HTTPError) or e.cause.code != 404:
+ raise
+ # videoInfo API may not work for some videos, fallback to portalplayer API
+ player = self._download_webpage(
+ 'http://player.pbs.org/portalplayer/%s' % video_id, display_id)
+ info = self._parse_json(
+ self._search_regex(
+ r'(?s)PBS\.videoData\s*=\s*({.+?});\n',
+ player, 'video data', default='{}'),
+ display_id, transform_source=js_to_json, fatal=False)
formats = []
for encoding_name in ('recommended_encoding', 'alternate_encoding'):