[youtube] Remove annotations and deprecate --write-annotations (#765)

Closes #692 
Authored by: coletdjnz
This commit is contained in:
coletdjnz 2021-08-24 15:52:40 +12:00 committed by GitHub
parent 45842107b9
commit 0bb1bc1b10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 5 additions and 37 deletions

View file

@ -1500,6 +1500,8 @@ These options may no longer work as intended
--no-call-home Default --no-call-home Default
--include-ads No longer supported --include-ads No longer supported
--no-include-ads Default --no-include-ads Default
--write-annotations No supported site has annotations now
--no-write-annotations Default
#### Removed #### Removed
These options were deprecated since 2014 and have now been entirely removed These options were deprecated since 2014 and have now been entirely removed

View file

@ -59,7 +59,6 @@ from ..utils import (
unsmuggle_url, unsmuggle_url,
update_url_query, update_url_query,
url_or_none, url_or_none,
urlencode_postdata,
urljoin, urljoin,
variadic, variadic,
) )
@ -3168,40 +3167,7 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
needs_auth=info['age_limit'] >= 18, needs_auth=info['age_limit'] >= 18,
is_unlisted=None if is_private is None else is_unlisted) is_unlisted=None if is_private is None else is_unlisted)
# get xsrf for annotations or comments if self.get_param('getcomments', False):
get_annotations = self.get_param('writeannotations', False)
get_comments = self.get_param('getcomments', False)
if get_annotations or get_comments:
xsrf_token = None
if master_ytcfg:
xsrf_token = try_get(master_ytcfg, lambda x: x['XSRF_TOKEN'], compat_str)
if not xsrf_token:
xsrf_token = self._search_regex(
r'([\'"])XSRF_TOKEN\1\s*:\s*([\'"])(?P<xsrf_token>(?:(?!\2).)+)\2',
webpage, 'xsrf token', group='xsrf_token', fatal=False)
# annotations
if get_annotations:
invideo_url = get_first(
player_responses,
('annotations', 0, 'playerAnnotationsUrlsRenderer', 'invideoUrl'),
expected_type=str)
if xsrf_token and invideo_url:
xsrf_field_name = None
if master_ytcfg:
xsrf_field_name = try_get(master_ytcfg, lambda x: x['XSRF_FIELD_NAME'], compat_str)
if not xsrf_field_name:
xsrf_field_name = self._search_regex(
r'([\'"])XSRF_FIELD_NAME\1\s*:\s*([\'"])(?P<xsrf_field_name>\w+)\2',
webpage, 'xsrf field name',
group='xsrf_field_name', default='session_token')
info['annotations'] = self._download_webpage(
self._proto_relative_url(invideo_url),
video_id, note='Downloading annotations',
errnote='Unable to download video annotations', fatal=False,
data=urlencode_postdata({xsrf_field_name: xsrf_token}))
if get_comments:
info['__post_extractor'] = lambda: self._extract_comments(master_ytcfg, video_id, contents, webpage) info['__post_extractor'] = lambda: self._extract_comments(master_ytcfg, video_id, contents, webpage)
self.mark_watched(video_id, player_responses) self.mark_watched(video_id, player_responses)

View file

@ -1070,11 +1070,11 @@ def parseOpts(overrideArguments=None):
filesystem.add_option( filesystem.add_option(
'--write-annotations', '--write-annotations',
action='store_true', dest='writeannotations', default=False, action='store_true', dest='writeannotations', default=False,
help='Write video annotations to a .annotations.xml file') help=optparse.SUPPRESS_HELP)
filesystem.add_option( filesystem.add_option(
'--no-write-annotations', '--no-write-annotations',
action='store_false', dest='writeannotations', action='store_false', dest='writeannotations',
help='Do not write video annotations (default)') help=optparse.SUPPRESS_HELP)
filesystem.add_option( filesystem.add_option(
'--write-playlist-metafiles', '--write-playlist-metafiles',
action='store_true', dest='allow_playlist_files', default=None, action='store_true', dest='allow_playlist_files', default=None,