From c556a00e4a324aff6f0c83252b7abfe1f5b9d0ae Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Fri, 8 Nov 2024 18:28:58 -0300 Subject: [PATCH] feat: get seed status --- src/main/services/download/python-instance.ts | 10 ++++++++++ src/main/services/download/types.ts | 1 + src/main/services/main-loop.ts | 1 + torrent-client/main.py | 14 ++++++++++++++ 4 files changed, 26 insertions(+) diff --git a/src/main/services/download/python-instance.ts b/src/main/services/download/python-instance.ts index f59b20b8..09ea10ed 100644 --- a/src/main/services/download/python-instance.ts +++ b/src/main/services/download/python-instance.ts @@ -123,6 +123,16 @@ export class PythonInstance { } } + public static async getSeedStatus() { + const response = await this.rpc.get( + "/seed-status" + ); + + if (response.data === null) return []; + + return response.data; + } + static async pauseDownload() { await this.rpc .post("/action", { diff --git a/src/main/services/download/types.ts b/src/main/services/download/types.ts index fd8009a2..c09455c7 100644 --- a/src/main/services/download/types.ts +++ b/src/main/services/download/types.ts @@ -25,6 +25,7 @@ export interface LibtorrentPayload { numPeers: number; numSeeds: number; downloadSpeed: number; + uploadSpeed: number; bytesDownloaded: number; fileSize: number; folderName: string; diff --git a/src/main/services/main-loop.ts b/src/main/services/main-loop.ts index b4836b46..a1c2b449 100644 --- a/src/main/services/main-loop.ts +++ b/src/main/services/main-loop.ts @@ -10,6 +10,7 @@ export const startMainLoop = async () => { watchProcesses(), DownloadManager.watchDownloads(), AchievementWatcherManager.watchAchievements(), + DownloadManager.getSeedStatus(), ]); await sleep(1500); diff --git a/torrent-client/main.py b/torrent-client/main.py index d62150b8..c8ffd9e2 100644 --- a/torrent-client/main.py +++ b/torrent-client/main.py @@ -50,6 +50,20 @@ class Handler(BaseHTTPRequestHandler): self.wfile.write(json.dumps(status).encode('utf-8')) + elif self.path == "/seed-status": + if self.headers.get(self.rpc_password_header) != rpc_password: + self.send_response(401) + self.end_headers() + return + + self.send_response(200) + self.send_header("Content-type", "application/json") + self.end_headers() + + status = torrent_downloader.get_seed_status() + + self.wfile.write(json.dumps(status).encode('utf-8')) + elif self.path == "/healthcheck": self.send_response(200) self.end_headers()