[pbs] Add support for video ratings

This commit is contained in:
Philipp Hagemeister 2014-03-21 00:59:51 +01:00
parent cb9722cb3f
commit a1a530b067
3 changed files with 20 additions and 8 deletions

View file

@ -3,6 +3,9 @@
import re import re
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import (
US_RATINGS,
)
class PBSIE(InfoExtractor): class PBSIE(InfoExtractor):
@ -57,6 +60,11 @@ def _real_extract(self, url):
info_url = 'http://video.pbs.org/videoInfo/%s?format=json' % video_id info_url = 'http://video.pbs.org/videoInfo/%s?format=json' % video_id
info = self._download_json(info_url, display_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 { return {
'id': video_id, 'id': video_id,
'title': info['title'], 'title': info['title'],
@ -65,4 +73,5 @@ def _real_extract(self, url):
'description': info['program'].get('description'), 'description': info['program'].get('description'),
'thumbnail': info.get('image_url'), 'thumbnail': info.get('image_url'),
'duration': info.get('duration'), 'duration': info.get('duration'),
'age_limit': age_limit,
} }

View file

@ -6,6 +6,7 @@
ExtractorError, ExtractorError,
unescapeHTML, unescapeHTML,
unified_strdate, unified_strdate,
US_RATINGS,
) )
from .subtitles import SubtitlesInfoExtractor from .subtitles import SubtitlesInfoExtractor
@ -48,14 +49,7 @@ def _real_extract(self, url):
rating_str = self._html_search_regex( rating_str = self._html_search_regex(
r'<strong>Rating: </strong>\s*([^<]*)<', webpage, r'<strong>Rating: </strong>\s*([^<]*)<', webpage,
'rating information', default='').strip() 'rating information', default='').strip()
RATINGS = { age_limit = US_RATINGS.get(rating_str)
'G': 0,
'PG': 10,
'PG-13': 13,
'R': 16,
'NC': 18,
}
age_limit = RATINGS.get(rating_str)
info_url = 'http://www.viki.com/player5_fragment/%s?action=show&controller=videos' % video_id info_url = 'http://www.viki.com/player5_fragment/%s?action=show&controller=videos' % video_id
info_webpage = self._download_webpage( info_webpage = self._download_webpage(

View file

@ -1289,3 +1289,12 @@ def compat_getpass(prompt, *args, **kwargs):
return getpass.getpass(prompt, *args, **kwargs) return getpass.getpass(prompt, *args, **kwargs)
else: else:
compat_getpass = getpass.getpass compat_getpass = getpass.getpass
US_RATINGS = {
'G': 0,
'PG': 10,
'PG-13': 13,
'R': 16,
'NC': 18,
}