diff options
author | Jesús <heckyel@hyperbola.info> | 2022-04-06 03:37:17 +0800 |
---|---|---|
committer | Jesús <heckyel@hyperbola.info> | 2022-04-06 03:37:17 +0800 |
commit | 1e5a50b71d8f0eae6007bedc329eecb24bb5aba3 (patch) | |
tree | a8611cda6596391cb6fb645e1469dcd356b63924 /hypervideo_dl/downloader/fc2.py | |
parent | f52fb3bceeb9d22b5106c1796fecec474a0cc138 (diff) | |
download | hypervideo-1e5a50b71d8f0eae6007bedc329eecb24bb5aba3.tar.lz hypervideo-1e5a50b71d8f0eae6007bedc329eecb24bb5aba3.tar.xz hypervideo-1e5a50b71d8f0eae6007bedc329eecb24bb5aba3.zip |
update from upstream
Diffstat (limited to 'hypervideo_dl/downloader/fc2.py')
-rw-r--r-- | hypervideo_dl/downloader/fc2.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/hypervideo_dl/downloader/fc2.py b/hypervideo_dl/downloader/fc2.py new file mode 100644 index 0000000..157bcf2 --- /dev/null +++ b/hypervideo_dl/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) |