aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan@gmail.com>2021-02-07 15:22:36 +0530
committerpukkandan <pukkandan@gmail.com>2021-02-07 15:22:36 +0530
commit4d608b522f7f05c7dbc4b74e6183e93cc95d6a0c (patch)
tree33c9aafa6c5d7a6f45a730299e634e9c084d0966
parent885d36d4e47aa225ab3a35ef4dc3c065ccfff2f3 (diff)
downloadhypervideo-pre-4d608b522f7f05c7dbc4b74e6183e93cc95d6a0c.tar.lz
hypervideo-pre-4d608b522f7f05c7dbc4b74e6183e93cc95d6a0c.tar.xz
hypervideo-pre-4d608b522f7f05c7dbc4b74e6183e93cc95d6a0c.zip
[youtube_live_chat] Improve extraction
:ci skip dl
-rw-r--r--youtube_dlc/downloader/youtube_live_chat.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/youtube_dlc/downloader/youtube_live_chat.py b/youtube_dlc/downloader/youtube_live_chat.py
index 615be1ec8..5ac24c020 100644
--- a/youtube_dlc/downloader/youtube_live_chat.py
+++ b/youtube_dlc/downloader/youtube_live_chat.py
@@ -50,7 +50,16 @@ class YoutubeLiveChatReplayFD(FragmentFD):
success, raw_fragment = dl_fragment(url)
if not success:
return False, None, None
- data = parse_yt_initial_data(raw_fragment) or json.loads(raw_fragment)['response']
+ data = parse_yt_initial_data(raw_fragment)
+ if not data:
+ raw_data = json.loads(raw_fragment)
+ # sometimes youtube replies with a list
+ if not isinstance(raw_data, list):
+ raw_data = [raw_data]
+ try:
+ data = next(item['response'] for item in raw_data if 'response' in item)
+ except StopIteration:
+ data = {}
live_chat_continuation = try_get(
data,