youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit 9a61dfba0cfb9b978278fe2e1c823c205fcd72dd
parent 154c209e2db2bd6f51998503b15d9a050bc1e738
Author: Sergey M․ <dstftw@gmail.com>
Date:   Thu, 11 Feb 2016 21:22:57 +0600

[pbs] Revert prefer portalplayer

Diffstat:
Myoutube_dl/extractor/pbs.py | 24+++++++++++++-----------
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'):