Allow users to specify an age limit (fixes #1545)
With these changes, users can now restrict what videos are downloaded by the intented audience, by specifying their age with --age-limit YEARS . Add rudimentary support in youtube, pornotube, and youporn.
This commit is contained in:
parent
f4aac741d5
commit
8dbe9899a9
7 changed files with 81 additions and 3 deletions
|
@ -54,6 +54,7 @@ class InfoExtractor(object):
|
|||
view_count: How many users have watched the video on the platform.
|
||||
urlhandle: [internal] The urlHandle to be used to download the file,
|
||||
like returned by urllib.request.urlopen
|
||||
age_limit: Age restriction for the video, as an integer (years)
|
||||
formats: A list of dictionaries for each format available, it must
|
||||
be ordered from worst to best quality. Potential fields:
|
||||
* url Mandatory. The URL of the video file
|
||||
|
@ -318,6 +319,15 @@ class InfoExtractor(object):
|
|||
self._og_regex('video')],
|
||||
html, name, **kargs)
|
||||
|
||||
def _rta_search(self, html):
|
||||
# See http://www.rtalabel.org/index.php?content=howtofaq#single
|
||||
if re.search(r'(?ix)<meta\s+name="rating"\s+'
|
||||
r' content="RTA-5042-1996-1400-1577-RTA"',
|
||||
html):
|
||||
return 18
|
||||
return 0
|
||||
|
||||
|
||||
class SearchInfoExtractor(InfoExtractor):
|
||||
"""
|
||||
Base class for paged search queries extractors.
|
||||
|
|
|
@ -38,6 +38,7 @@ class PornotubeIE(InfoExtractor):
|
|||
VIDEO_UPLOADED_RE = r'<div class="video_added_by">Added (?P<date>[0-9\/]+) by'
|
||||
upload_date = self._html_search_regex(VIDEO_UPLOADED_RE, webpage, u'upload date', fatal=False)
|
||||
if upload_date: upload_date = unified_strdate(upload_date)
|
||||
age_limit = self._rta_search(webpage)
|
||||
|
||||
info = {'id': video_id,
|
||||
'url': video_url,
|
||||
|
@ -45,6 +46,7 @@ class PornotubeIE(InfoExtractor):
|
|||
'upload_date': upload_date,
|
||||
'title': video_title,
|
||||
'ext': 'flv',
|
||||
'format': 'flv'}
|
||||
'format': 'flv',
|
||||
'age_restriction': age_limit}
|
||||
|
||||
return [info]
|
||||
|
|
|
@ -51,6 +51,7 @@ class YouPornIE(InfoExtractor):
|
|||
req = compat_urllib_request.Request(url)
|
||||
req.add_header('Cookie', 'age_verified=1')
|
||||
webpage = self._download_webpage(req, video_id)
|
||||
age_limit = self._rta_search(webpage)
|
||||
|
||||
# Get JSON parameters
|
||||
json_params = self._search_regex(r'var currentVideo = new Video\((.*)\);', webpage, u'JSON parameters')
|
||||
|
@ -115,7 +116,8 @@ class YouPornIE(InfoExtractor):
|
|||
'ext': extension,
|
||||
'format': format,
|
||||
'thumbnail': thumbnail,
|
||||
'description': video_description
|
||||
'description': video_description,
|
||||
'age_restriction': age_limit,
|
||||
})
|
||||
|
||||
if self._downloader.params.get('listformats', None):
|
||||
|
|
|
@ -1495,7 +1495,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor, SubtitlesInfoExtractor):
|
|||
'description': video_description,
|
||||
'player_url': player_url,
|
||||
'subtitles': video_subtitles,
|
||||
'duration': video_duration
|
||||
'duration': video_duration,
|
||||
'age_restriction': 18 if age_gate else 0,
|
||||
})
|
||||
return results
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue