diff options
author | Lesmiscore (Naoya Ozaki) <nao20010128@gmail.com> | 2022-02-25 11:16:23 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-25 11:16:23 +0900 |
commit | 15dfb3929c3eaca897c85dc1ad792df3fbf5ebc7 (patch) | |
tree | 135688fa245f603a89a6a421c3dd0cb1d6318811 /yt_dlp/downloader/fc2.py | |
parent | 3e9b66d761048d568ed0da40e43d02e1bf02f759 (diff) | |
download | hypervideo-pre-15dfb3929c3eaca897c85dc1ad792df3fbf5ebc7.tar.lz hypervideo-pre-15dfb3929c3eaca897c85dc1ad792df3fbf5ebc7.tar.xz hypervideo-pre-15dfb3929c3eaca897c85dc1ad792df3fbf5ebc7.zip |
[fc2:live] Add extractor (#2418)
Authored by: Lesmiscore
Diffstat (limited to 'yt_dlp/downloader/fc2.py')
-rw-r--r-- | yt_dlp/downloader/fc2.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/yt_dlp/downloader/fc2.py b/yt_dlp/downloader/fc2.py new file mode 100644 index 000000000..157bcf23e --- /dev/null +++ b/yt_dlp/downloader/fc2.py @@ -0,0 +1,41 @@ +from __future__ import division, unicode_literals + +import threading + +from .common import FileDownloader +from .external import FFmpegFD + + +class FC2LiveFD(FileDownloader): + """ + Downloads FC2 live without being stopped. <br> + Note, this is not a part of public API, and will be removed without notice. + DO NOT USE + """ + + def real_download(self, filename, info_dict): + ws = info_dict['ws'] + + heartbeat_lock = threading.Lock() + heartbeat_state = [None, 1] + + def heartbeat(): + try: + heartbeat_state[1] += 1 + ws.send('{"name":"heartbeat","arguments":{},"id":%d}' % heartbeat_state[1]) + except Exception: + self.to_screen('[fc2:live] Heartbeat failed') + + with heartbeat_lock: + heartbeat_state[0] = threading.Timer(30, heartbeat) + heartbeat_state[0]._daemonic = True + heartbeat_state[0].start() + + heartbeat() + + new_info_dict = info_dict.copy() + new_info_dict.update({ + 'ws': None, + 'protocol': 'live_ffmpeg', + }) + return FFmpegFD(self.ydl, self.params or {}).download(filename, new_info_dict) |