diff --git a/core/network/libtorrent_misc.py b/core/network/libtorrent_misc.py index 87f3e92..3760796 100644 --- a/core/network/libtorrent_misc.py +++ b/core/network/libtorrent_misc.py @@ -2,6 +2,7 @@ from core.utils.data.state import state from core.utils.general.logs import update_download_completed_by_hash from core.utils.general.logs import consoleLog from plyer import notification +import libtorrent as lt import time @@ -22,17 +23,19 @@ def send_notification(shutdown_event): notified = set() while not shutdown_event.is_set(): try: - for d in state.aria2.get_downloads(): - if d.is_metadata: + for magnet_uri, magnetdl in list(state.active_downloads.items()): + if isinstance(magnetdl, dict): continue - if d.progress == 100 and d.gid not in notified: + + status = magnetdl.status() + + if status.state == lt.torrent_status.seeding and magnet_uri not in notified: notification.notify( title="Download finished", - message=f"{d.name} has finished downloading.", + message=f"{status.name} has finished downloading.", timeout=4 ) - notified.add(d.gid) - state.downloads = [d for d in state.aria2.get_downloads() if d.is_active and not d.is_metadata] + notified.add(magnet_uri) except Exception: pass time.sleep(5) @@ -41,14 +44,17 @@ def update_log(shutdown_event): updated = set() while not shutdown_event.is_set(): try: - for d in state.aria2.get_downloads(): - if d.is_metadata: + for magnet_uri, magnetdl in list(state.active_downloads.items()): + if isinstance(magnetdl, dict): continue - if d.progress == 100 and d.gid not in updated: - consoleLog(f"Marking {d.name} as completed") - update_download_completed_by_hash(d.info_hash, True) - updated.add(d.gid) - state.downloads = [d for d in state.aria2.get_downloads() if d.is_active and not d.is_metadata] + + status = magnetdl.status() + + if status.state == lt.torrent_status.seeding and magnet_uri not in updated: + consoleLog(f"Marking {status.name} as completed") + info_hash = str(status.info_hash) + update_download_completed_by_hash(info_hash, True) + updated.add(magnet_uri) except Exception: pass time.sleep(5) \ No newline at end of file diff --git a/main.py b/main.py index 47edf20..bc1d890 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ from core.interface.gui import MainWindow from core.utils.data.state import state from core.utils.general.logs import consoleLog +from core.network.libtorrent_misc import send_notification, update_log from core.utils.general.logs import get_download_logs from core.utils.general.shutdown import closehelper, shutdown_event from core.utils.general.wrappers import run_thread @@ -43,9 +44,9 @@ if __name__ == "__main__": if args.debug: state.debug = args.debug # override of read_config signal.signal(signal.SIGINT, keyboardinterrupthandler) - # run_thread(threading.Thread(target=send_notification, args=(shutdown_event,), daemon=True)) + run_thread(threading.Thread(target=send_notification, args=(shutdown_event,), daemon=True)) consoleLog("Started send_notification thread") - # run_thread(threading.Thread(target=update_log, args=(shutdown_event,), daemon=True)) + run_thread(threading.Thread(target=update_log, args=(shutdown_event,), daemon=True)) consoleLog("Started update_log thread") run_thread(threading.Thread(target=check_completed, args=(downloads, state.autoresume))) consoleLog("Started check_completed thread")