mirror of
https://github.com/mmahdium/TorrentMax.git
synced 2025-12-20 04:33:53 +01:00
- Add Arctic Lights background with radial gradient to index.vue - Make multiple app files executable (changed modes from 644 to 755) - Update dependencies in package-lock.json (browserslist, postcss-selector-parser, etc.) for latest versions and potential bug fixes
55 lines
1.4 KiB
TypeScript
Executable File
55 lines
1.4 KiB
TypeScript
Executable File
import type { MagnetUrl } from "../../shared/types/magnet";
|
|
|
|
let cachedTrackers: string[] | null = null;
|
|
let lastFetched = 0;
|
|
const CACHE_TTL = 1000 * 60 * 10; // 10 minutes
|
|
|
|
export async function getTrackers(): Promise<string[]> {
|
|
const now = Date.now();
|
|
|
|
if (cachedTrackers && now - lastFetched < CACHE_TTL) {
|
|
return cachedTrackers;
|
|
}
|
|
|
|
const TRACKER_URLS = [
|
|
"https://raw.githubusercontent.com/XIU2/TrackersListCollection/refs/heads/master/all.txt",
|
|
"https://raw.githubusercontent.com/ngosang/trackerslist/refs/heads/master/trackers_all.txt",
|
|
];
|
|
|
|
for (const url of TRACKER_URLS) {
|
|
try {
|
|
const response = await fetch(url);
|
|
if (response.ok) {
|
|
const text = await response.text();
|
|
const trackers = text
|
|
.split("\n")
|
|
.map((line) => line.trim())
|
|
.filter((line) => line !== "");
|
|
|
|
// update cache
|
|
cachedTrackers = trackers;
|
|
lastFetched = now;
|
|
return trackers;
|
|
}
|
|
} catch (err) {
|
|
console.error(err);
|
|
}
|
|
}
|
|
|
|
// fallback: return cached even if stale, or empty
|
|
return cachedTrackers ?? [];
|
|
}
|
|
|
|
export function addTrackers(magnet: MagnetUrl, trackers: string[]): MagnetUrl {
|
|
if (trackers.length > 0) {
|
|
// avoid duplicates
|
|
const existing = new Set(magnet.tr ?? []);
|
|
for (const tracker of trackers) {
|
|
if (!existing.has(tracker)) {
|
|
magnet.tr?.push(tracker);
|
|
}
|
|
}
|
|
}
|
|
return magnet;
|
|
}
|