From f991dd2bfb5a76685007a696815a080a60dc75dd Mon Sep 17 00:00:00 2001 From: Remita Amine Date: Mon, 10 Jun 2019 14:58:37 +0100 Subject: [PATCH 01/22] [biqle] add support for new embed domain --- youtube_dl/extractor/biqle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/biqle.py b/youtube_dl/extractor/biqle.py index 3707dc97f..c5c374845 100644 --- a/youtube_dl/extractor/biqle.py +++ b/youtube_dl/extractor/biqle.py @@ -42,7 +42,7 @@ class BIQLEIE(InfoExtractor): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) embed_url = self._proto_relative_url(self._search_regex( - r'', + r'', webpage, 'embed url')) if VKIE.suitable(embed_url): return self.url_result(embed_url, VKIE.ie_key(), video_id) From 427cc215310804127b55744fcc3664ede38a4a0d Mon Sep 17 00:00:00 2001 From: Remita Amine Date: Mon, 10 Jun 2019 15:17:26 +0100 Subject: [PATCH 02/22] [biqle] remove unnecessary regex group --- youtube_dl/extractor/biqle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/biqle.py b/youtube_dl/extractor/biqle.py index c5c374845..af21e3ee5 100644 --- a/youtube_dl/extractor/biqle.py +++ b/youtube_dl/extractor/biqle.py @@ -42,7 +42,7 @@ class BIQLEIE(InfoExtractor): video_id = self._match_id(url) webpage = self._download_webpage(url, video_id) embed_url = self._proto_relative_url(self._search_regex( - r'', + r'', webpage, 'embed url')) if VKIE.suitable(embed_url): return self.url_result(embed_url, VKIE.ie_key(), video_id) From 5611ac8b67fa1015374deae9cde1496a0b5fe280 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 14:18:10 +0300 Subject: [PATCH 03/22] meaningless comment --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 789dd79d5..0b4cafe95 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,6 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) + # adding a meaningless comment thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 3e0254ed7fafa07ceed7b2694defb87356b61490 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:39:25 +0300 Subject: [PATCH 04/22] a comment on the comment --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 0b4cafe95..8d278d485 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,7 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a meaningless comment + # adding a meaningless comment. we will need to remove it eventually thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 25336837f3135a8789ac7cd2793503ae0d488de6 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:41:26 +0300 Subject: [PATCH 05/22] adding pull.yml file --- .github/pull.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml new file mode 100644 index 000000000..06f0291ad --- /dev/null +++ b/.github/pull.yml @@ -0,0 +1,5 @@ +version: "1" +rules: + - base: master + upstream: aviperes:master # change `wei` to the owner of upstream repo + mergeMethod: hardreset From b100e95f198ae95a4b9735f46a5674e99547b9aa Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:44:38 +0300 Subject: [PATCH 06/22] going for a conflict!!! ya!! --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 8d278d485..14ca712a7 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,7 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a meaningless comment. we will need to remove it eventually + # changed the comment from my fork thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 45d7fde2e0b3f9129bc9775f9dacb09925e99bd8 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:45:46 +0300 Subject: [PATCH 07/22] making conflict with the fork... let's see how pull will react... --- youtube_dl/extractor/facebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 8d278d485..418cccd73 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,7 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a meaningless comment. we will need to remove it eventually + # adding a meaningless comment. Don't we love mess in the code ? thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 6683833b117c5ece7b395f4053c0b95b21a5d811 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 15:51:30 +0300 Subject: [PATCH 08/22] changing pull.yml with the hope to get pull request... --- .github/pull.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/pull.yml b/.github/pull.yml index 06f0291ad..1a2188824 100644 --- a/.github/pull.yml +++ b/.github/pull.yml @@ -3,3 +3,8 @@ rules: - base: master upstream: aviperes:master # change `wei` to the owner of upstream repo mergeMethod: hardreset + assignees: + - hashark + reviewers: + - hashark + From 96ec9d969189fdf0d1777acf8dc05c462a94c6ad Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 18:20:35 +0300 Subject: [PATCH 09/22] removing the comment --- youtube_dl/extractor/facebook.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 4c9102268..789dd79d5 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,9 +428,6 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - - # adding a meaningless comment. Don't we love mess in the code ? - # changed the comment from my fork thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From ee722ada9b74f4e5ccd9da20794a73f3a75e0216 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 18:26:01 +0300 Subject: [PATCH 10/22] adding a new comment now to see what's up with pull bot --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 789dd79d5..806e8f94e 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,6 +428,7 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) + # adding a new comment now to see what's up thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 019d706dd9f450604fcc96fb21631ad7cab29aaa Mon Sep 17 00:00:00 2001 From: hashark <18191362+hashark@users.noreply.github.com> Date: Tue, 11 Jun 2019 18:45:12 +0300 Subject: [PATCH 11/22] deleting pull.yml as it was added by accident --- .github/pull.yml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml deleted file mode 100644 index 1a2188824..000000000 --- a/.github/pull.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: "1" -rules: - - base: master - upstream: aviperes:master # change `wei` to the owner of upstream repo - mergeMethod: hardreset - assignees: - - hashark - reviewers: - - hashark - From 65c71ac598be7f6a4b0156ad2c1c529c949efd1b Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 19:19:43 +0300 Subject: [PATCH 12/22] new comment to test the branch pull --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 806e8f94e..b39d5c5a7 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -429,6 +429,7 @@ class FacebookIE(InfoExtractor): r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) # adding a new comment now to see what's up + # adding commit to see if it reaches the new branch thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 8e0a8ad583c92b70c421e88ccc6c71b78b47f3f8 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 19:22:10 +0300 Subject: [PATCH 13/22] another comment --- youtube_dl/extractor/facebook.py | 1 + 1 file changed, 1 insertion(+) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index b39d5c5a7..1dab582f2 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -430,6 +430,7 @@ class FacebookIE(InfoExtractor): 'timestamp', default=None)) # adding a new comment now to see what's up # adding commit to see if it reaches the new branch + # another comment to check base thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From f21e20734eb9f85ab547838c03bfdc399d7c2661 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Tue, 11 Jun 2019 19:28:33 +0300 Subject: [PATCH 14/22] removing comments --- youtube_dl/extractor/facebook.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/youtube_dl/extractor/facebook.py b/youtube_dl/extractor/facebook.py index 1dab582f2..789dd79d5 100644 --- a/youtube_dl/extractor/facebook.py +++ b/youtube_dl/extractor/facebook.py @@ -428,9 +428,6 @@ class FacebookIE(InfoExtractor): timestamp = int_or_none(self._search_regex( r']+data-utime=["\'](\d+)', webpage, 'timestamp', default=None)) - # adding a new comment now to see what's up - # adding commit to see if it reaches the new branch - # another comment to check base thumbnail = self._og_search_thumbnail(webpage) view_count = parse_count(self._search_regex( From 8361e7f93489f226542517216b2127ff170ca996 Mon Sep 17 00:00:00 2001 From: Remita Amine Date: Wed, 12 Jun 2019 21:41:46 +0100 Subject: [PATCH 15/22] [toutv] update client key(closes #21370) --- youtube_dl/extractor/toutv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/youtube_dl/extractor/toutv.py b/youtube_dl/extractor/toutv.py index 00f58a087..44b022fca 100644 --- a/youtube_dl/extractor/toutv.py +++ b/youtube_dl/extractor/toutv.py @@ -38,7 +38,7 @@ class TouTvIE(RadioCanadaIE): 'url': 'https://ici.tou.tv/l-age-adulte/S01C501', 'only_matching': True, }] - _CLIENT_KEY = '4dd36440-09d5-4468-8923-b6d91174ad36' + _CLIENT_KEY = '90505c8d-9c34-4f34-8da1-3a85bdc6d4f4' def _real_initialize(self): email, password = self._get_login_info() From 610d227188261fdc6139d7b39cea1b3fe08cb123 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Thu, 13 Jun 2019 12:01:30 +0300 Subject: [PATCH 16/22] adding pull configurations file --- .github/pull.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/pull.yml diff --git a/.github/pull.yml b/.github/pull.yml new file mode 100644 index 000000000..b55ef8820 --- /dev/null +++ b/.github/pull.yml @@ -0,0 +1,8 @@ +version: "1" +rules: + - base: master + upstream: ytdl-org:master + mergeMethod: hardreset + reviewers: + - aviperes + - hashark From 4b7016c23eb1009c681e90ffe45b9ba3ed0005a6 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Thu, 13 Jun 2019 17:36:45 +0300 Subject: [PATCH 17/22] fixing OK live video detection --- youtube_dl/extractor/odnoklassniki.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/youtube_dl/extractor/odnoklassniki.py b/youtube_dl/extractor/odnoklassniki.py index 1eb3bdd2f..f177e4eb4 100644 --- a/youtube_dl/extractor/odnoklassniki.py +++ b/youtube_dl/extractor/odnoklassniki.py @@ -96,14 +96,14 @@ class OdnoklassnikiIE(InfoExtractor): 'skip': 'Video has not been found', }, { # live video - 'url': 'https://www.ok.ru/video/1050794925929', + 'url': 'https://www.ok.ru/live/1385317932687', 'info_dict': { - 'id': '1050794925929', - 'title': 're:^Поиск репертуара [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', + 'id': u'1385317932687', + 'title': u're:АНДРЕЙ МАЛАХОВ. ПРЯМОЙ ЭФИР [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}$', 'ext': 'mp4', - 'upload_date': u'20190428', - 'uploader': u'(((((КнЯзЬ ))))', - 'uploader_id': u'557343776873', + 'upload_date': u'20190603', + 'uploader': u'Светлана Соколенко', + 'uploader_id': u'575511609483', 'is_live': True }, 'params': { @@ -259,7 +259,7 @@ class OdnoklassnikiIE(InfoExtractor): return info assert title - if provider == 'LIVE_TV_APP': + if 'LIVE_TV' in provider: info['title'] = self._live_title(title) info['is_live'] = True From 28cc2241e44ff0c0704cfffaca6d47d377041aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergey=20M=E2=80=A4?= Date: Fri, 14 Jun 2019 01:56:17 +0700 Subject: [PATCH 18/22] [utils] Restrict parse_codecs and add theora as known vcodec (#21381) --- test/test_utils.py | 9 +++++++++ youtube_dl/utils.py | 11 +++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/test/test_utils.py b/test/test_utils.py index 71980b3fc..659c6ece5 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -822,6 +822,15 @@ class TestUtil(unittest.TestCase): 'vcodec': 'av01.0.05M.08', 'acodec': 'none', }) + self.assertEqual(parse_codecs('theora, vorbis'), { + 'vcodec': 'theora', + 'acodec': 'vorbis', + }) + self.assertEqual(parse_codecs('unknownvcodec, unknownacodec'), { + 'vcodec': 'unknownvcodec', + 'acodec': 'unknownacodec', + }) + self.assertEqual(parse_codecs('unknown'), {}) def test_escape_rfc3986(self): reserved = "!*'();:@&=+$,/?#[]" diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index ead9bd862..a1f586b80 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -2529,7 +2529,7 @@ def parse_codecs(codecs_str): vcodec, acodec = None, None for full_codec in splited_codecs: codec = full_codec.split('.')[0] - if codec in ('avc1', 'avc2', 'avc3', 'avc4', 'vp9', 'vp8', 'hev1', 'hev2', 'h263', 'h264', 'mp4v', 'hvc1', 'av01'): + if codec in ('avc1', 'avc2', 'avc3', 'avc4', 'vp9', 'vp8', 'hev1', 'hev2', 'h263', 'h264', 'mp4v', 'hvc1', 'av01', 'theora'): if not vcodec: vcodec = full_codec elif codec in ('mp4a', 'opus', 'vorbis', 'mp3', 'aac', 'ac-3', 'ec-3', 'eac3', 'dtsc', 'dtse', 'dtsh', 'dtsl'): @@ -2540,13 +2540,8 @@ def parse_codecs(codecs_str): if not vcodec and not acodec: if len(splited_codecs) == 2: return { - 'vcodec': vcodec, - 'acodec': acodec, - } - elif len(splited_codecs) == 1: - return { - 'vcodec': 'none', - 'acodec': vcodec, + 'vcodec': splited_codecs[0], + 'acodec': splited_codecs[1], } else: return { From b85eae0f057a0afdf1da9d6034c19327c8de33cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergey=20M=E2=80=A4?= Date: Fri, 14 Jun 2019 01:59:05 +0700 Subject: [PATCH 19/22] [youtube] Hardcode codec metadata for av01 video only formats (closes #21381) --- youtube_dl/extractor/youtube.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 963c73a2d..7b630b191 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -500,6 +500,12 @@ class YoutubeIE(YoutubeBaseInfoExtractor): # RTMP (unnamed) '_rtmp': {'protocol': 'rtmp'}, + + # av01 video only formats sometimes served with "unknown" codecs + '394': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'}, + '395': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'}, + '396': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'}, + '397': {'acodec': 'none', 'vcodec': 'av01.0.05M.08'}, } _SUBTITLE_FORMATS = ('srv1', 'srv2', 'srv3', 'ttml', 'vtt') From 7c24a58bdb60af80137beac85c8804c70194a455 Mon Sep 17 00:00:00 2001 From: Remita Amine Date: Sun, 16 Jun 2019 06:32:17 +0100 Subject: [PATCH 20/22] [sixplay] add support for rtlmost.hu(#21405) --- youtube_dl/extractor/sixplay.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/youtube_dl/extractor/sixplay.py b/youtube_dl/extractor/sixplay.py index 2a72af11b..7ec66ecf3 100644 --- a/youtube_dl/extractor/sixplay.py +++ b/youtube_dl/extractor/sixplay.py @@ -19,7 +19,7 @@ from ..utils import ( class SixPlayIE(InfoExtractor): IE_NAME = '6play' - _VALID_URL = r'(?:6play:|https?://(?:www\.)?(?P6play\.fr|rtlplay\.be|play\.rtl\.hr)/.+?-c_)(?P[0-9]+)' + _VALID_URL = r'(?:6play:|https?://(?:www\.)?(?P6play\.fr|rtlplay\.be|play\.rtl\.hr|rtlmost\.hu)/.+?-c_)(?P[0-9]+)' _TESTS = [{ 'url': 'https://www.6play.fr/minute-par-minute-p_9533/le-but-qui-a-marque-lhistoire-du-football-francais-c_12041051', 'md5': '31fcd112637baa0c2ab92c4fcd8baf27', @@ -35,6 +35,9 @@ class SixPlayIE(InfoExtractor): }, { 'url': 'https://play.rtl.hr/pj-masks-p_9455/epizoda-34-sezona-1-catboyevo-cudo-na-dva-kotaca-c_11984989', 'only_matching': True, + }, { + 'url': 'https://www.rtlmost.hu/megtorve-p_14167/megtorve-6-resz-c_12397787', + 'only_matching': True, }] def _real_extract(self, url): @@ -43,6 +46,7 @@ class SixPlayIE(InfoExtractor): '6play.fr': ('6play', 'm6web'), 'rtlplay.be': ('rtlbe_rtl_play', 'rtlbe'), 'play.rtl.hr': ('rtlhr_rtl_play', 'rtlhr'), + 'rtlmost.hu': ('rtlhu_rtl_most', 'rtlhu'), }.get(domain, ('6play', 'm6web')) data = self._download_json( From d75b910ad2d1d50424d8a2b791e2f327e7431771 Mon Sep 17 00:00:00 2001 From: Avichai Cohen Date: Sun, 16 Jun 2019 12:46:03 +0300 Subject: [PATCH 21/22] changing the merge method from master --- .github/pull.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull.yml b/.github/pull.yml index b55ef8820..cb259a99c 100644 --- a/.github/pull.yml +++ b/.github/pull.yml @@ -2,7 +2,7 @@ version: "1" rules: - base: master upstream: ytdl-org:master - mergeMethod: hardreset + mergeMethod: merge reviewers: - aviperes - hashark From c40714cdee0ce3de1a5f6e17a61d3ee4c610ae63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergey=20M=E2=80=A4?= Date: Thu, 20 Jun 2019 00:57:58 +0700 Subject: [PATCH 22/22] [youtube] Make --write-annotations non fatal (closes #21452) --- youtube_dl/extractor/youtube.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py index 7b630b191..1010c8616 100644 --- a/youtube_dl/extractor/youtube.py +++ b/youtube_dl/extractor/youtube.py @@ -1581,8 +1581,15 @@ class YoutubeIE(YoutubeBaseInfoExtractor): return video_id def _extract_annotations(self, video_id): - url = 'https://www.youtube.com/annotations_invideo?features=1&legacy=1&video_id=%s' % video_id - return self._download_webpage(url, video_id, note='Searching for annotations.', errnote='Unable to download video annotations.') + return self._download_webpage( + 'https://www.youtube.com/annotations_invideo', video_id, + note='Downloading annotations', + errnote='Unable to download video annotations', fatal=False, + query={ + 'features': 1, + 'legacy': 1, + 'video_id': video_id, + }) @staticmethod def _extract_chapters(description, duration):