aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsiikamiika <siikamiika@users.noreply.github.com>2020-08-11 00:05:32 +0300
committersiikamiika <siikamiika@users.noreply.github.com>2020-08-11 00:05:32 +0300
commiteaedbfd97e860214399b0028fc47a487762e8294 (patch)
treeb4a67d8e9ffb006aa52b317ea742cb1474cf9e7e
parentf0f76a33dc0e5a3f495a05293b1db4ceab5c3029 (diff)
downloadhypervideo-pre-eaedbfd97e860214399b0028fc47a487762e8294.tar.lz
hypervideo-pre-eaedbfd97e860214399b0028fc47a487762e8294.tar.xz
hypervideo-pre-eaedbfd97e860214399b0028fc47a487762e8294.zip
fix ytInitialData parsing
-rw-r--r--youtube_dl/downloader/youtube_live_chat.py10
-rw-r--r--youtube_dl/extractor/youtube.py3
2 files changed, 10 insertions, 3 deletions
diff --git a/youtube_dl/downloader/youtube_live_chat.py b/youtube_dl/downloader/youtube_live_chat.py
index f7478c336..697e52550 100644
--- a/youtube_dl/downloader/youtube_live_chat.py
+++ b/youtube_dl/downloader/youtube_live_chat.py
@@ -28,8 +28,14 @@ class YoutubeLiveChatReplayFD(FragmentFD):
return self._download_fragment(ctx, url, info_dict, headers)
def parse_yt_initial_data(data):
- raw_json = re.search(b'window\\["ytInitialData"\\]\\s*=\\s*(.*);', data).group(1)
- return json.loads(raw_json)
+ window_patt = b'window\\["ytInitialData"\\]\\s*=\\s*(.*?);'
+ var_patt = b'var\\s+ytInitialData\\s*=\\s*(.*?);'
+ for patt in window_patt, var_patt:
+ try:
+ raw_json = re.search(patt, data).group(1)
+ return json.loads(raw_json)
+ except AttributeError:
+ continue
self._prepare_and_start_frag_download(ctx)
diff --git a/youtube_dl/extractor/youtube.py b/youtube_dl/extractor/youtube.py
index d6c35fab4..e143bbee7 100644
--- a/youtube_dl/extractor/youtube.py
+++ b/youtube_dl/extractor/youtube.py
@@ -1495,7 +1495,8 @@ class YoutubeIE(YoutubeBaseInfoExtractor):
def _get_yt_initial_data(self, video_id, webpage):
config = self._search_regex(
- r'window\["ytInitialData"\]\s*=\s*(.*);',
+ (r'window\["ytInitialData"\]\s*=\s*(.*);',
+ r'var\s+ytInitialData\s*=\s*(.*?);'),
webpage, 'ytInitialData', default=None)
if config:
return self._parse_json(