diff options
author | pukkandan <pukkandan@gmail.com> | 2021-02-07 15:22:36 +0530 |
---|---|---|
committer | pukkandan <pukkandan@gmail.com> | 2021-02-07 15:22:36 +0530 |
commit | 4d608b522f7f05c7dbc4b74e6183e93cc95d6a0c (patch) | |
tree | 33c9aafa6c5d7a6f45a730299e634e9c084d0966 | |
parent | 885d36d4e47aa225ab3a35ef4dc3c065ccfff2f3 (diff) | |
download | hypervideo-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.py | 11 |
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, |