mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-02-04 01:03:47 +03:00
d924c64710
Small adjustment to webTorrentData logic
41 lines
779 B
TypeScript
41 lines
779 B
TypeScript
import webTorrentHealth from "webtorrent-health";
|
|
|
|
type WebTorrentHealthData = {
|
|
seeds: number;
|
|
peers: number;
|
|
};
|
|
|
|
const MILLISECONDS = 1000;
|
|
const SECONDS = 1.5;
|
|
|
|
export const webTorrentData = {
|
|
async getSeedersAndPeers(
|
|
magnet: string
|
|
): Promise<{ seeders: number; peers: number } | null> {
|
|
let peers = 0;
|
|
let seeds = 0;
|
|
let retry = 0;
|
|
let timeout = SECONDS * MILLISECONDS;
|
|
|
|
while (retry < 3) {
|
|
try {
|
|
const data: WebTorrentHealthData = await webTorrentHealth(magnet, {
|
|
timeout,
|
|
});
|
|
|
|
peers = data.peers;
|
|
seeds = data.seeds;
|
|
|
|
if (peers || seeds) break;
|
|
} catch (e) {
|
|
return null;
|
|
}
|
|
|
|
timeout *= 2;
|
|
retry++;
|
|
}
|
|
|
|
return { peers, seeders: seeds };
|
|
},
|
|
};
|