From a1a530b067b36b0233c3a3d1eff61680648acbd9 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Fri, 21 Mar 2014 00:59:51 +0100 Subject: [PATCH] [pbs] Add support for video ratings --- youtube_dl/extractor/pbs.py | 9 +++++++++ youtube_dl/extractor/viki.py | 10 ++-------- youtube_dl/utils.py | 9 +++++++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/youtube_dl/extractor/pbs.py b/youtube_dl/extractor/pbs.py index 56fbe3d56..64cded707 100644 --- a/youtube_dl/extractor/pbs.py +++ b/youtube_dl/extractor/pbs.py @@ -3,6 +3,9 @@ from __future__ import unicode_literals import re from .common import InfoExtractor +from ..utils import ( + US_RATINGS, +) class PBSIE(InfoExtractor): @@ -57,6 +60,11 @@ class PBSIE(InfoExtractor): info_url = 'http://video.pbs.org/videoInfo/%s?format=json' % video_id info = self._download_json(info_url, display_id) + rating_str = info.get('rating') + if rating_str is not None: + rating_str = rating_str.rpartition('-')[2] + age_limit = US_RATINGS.get(rating_str) + return { 'id': video_id, 'title': info['title'], @@ -65,4 +73,5 @@ class PBSIE(InfoExtractor): 'description': info['program'].get('description'), 'thumbnail': info.get('image_url'), 'duration': info.get('duration'), + 'age_limit': age_limit, } diff --git a/youtube_dl/extractor/viki.py b/youtube_dl/extractor/viki.py index 213b04e8b..15f315298 100644 --- a/youtube_dl/extractor/viki.py +++ b/youtube_dl/extractor/viki.py @@ -6,6 +6,7 @@ from ..utils import ( ExtractorError, unescapeHTML, unified_strdate, + US_RATINGS, ) from .subtitles import SubtitlesInfoExtractor @@ -48,14 +49,7 @@ class VikiIE(SubtitlesInfoExtractor): rating_str = self._html_search_regex( r'Rating: \s*([^<]*)<', webpage, 'rating information', default='').strip() - RATINGS = { - 'G': 0, - 'PG': 10, - 'PG-13': 13, - 'R': 16, - 'NC': 18, - } - age_limit = RATINGS.get(rating_str) + age_limit = US_RATINGS.get(rating_str) info_url = 'http://www.viki.com/player5_fragment/%s?action=show&controller=videos' % video_id info_webpage = self._download_webpage( diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index f60141bd1..7809c4e0b 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -1289,3 +1289,12 @@ if sys.version_info < (3, 0) and sys.platform == 'win32': return getpass.getpass(prompt, *args, **kwargs) else: compat_getpass = getpass.getpass + + +US_RATINGS = { + 'G': 0, + 'PG': 10, + 'PG-13': 13, + 'R': 16, + 'NC': 18, +}