Spaces:
Running
Running
File size: 1,909 Bytes
c237e22 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import { details, search } from "yts-api-node";
import { TorrentSearchResult } from "./search.js";
import { isImdbId } from "../utils/imdb.js";
const trackers = [
"udp://glotorrents.pw:6969/announce",
"udp://tracker.opentrackr.org:1337/announce",
"udp://torrent.gresille.org:80/announce",
"udp://tracker.openbittorrent.com:80",
"udp://tracker.coppersurfer.tk:6969",
"udp://tracker.leechers-paradise.org:6969",
"udp://p4p.arenabg.ch:1337",
"udp://tracker.internetwarriors.net:1337",
];
const trackersString = "&tr=" + trackers.join("&tr=");
export const searchYts = async (
searchQuery: string
): Promise<TorrentSearchResult[]> => {
try {
if (isImdbId(searchQuery)) {
const res = await details({ movie_id: searchQuery });
return res.data.movie.torrents.map((torrent) => ({
name: `${res.data.movie.title_long} ${torrent.quality} ${torrent.type
.replace("bluray", "BluRay")
.replace("web", "WEB")}`,
tracker: "YTS",
category: `Movies/${torrent.quality}`,
size: torrent.size_bytes,
seeds: torrent.seeds,
peers: torrent.peers,
torrent: torrent.url,
magnet: `magnet:?xt=urn:btih:${torrent.hash}${trackersString}`,
}));
} else {
const res = await search({ query_term: searchQuery });
return res.data.movies.flatMap((movie) =>
movie.torrents.map((torrent) => ({
name: `${movie.title_long} ${torrent.quality} ${torrent.type
.replace("bluray", "BluRay")
.replace("web", "WEB")}`,
tracker: "YTS",
category: `Movies/${torrent.quality}`,
size: torrent.size_bytes,
seeds: torrent.seeds,
peers: torrent.peers,
torrent: torrent.url,
magnet: `magnet:?xt=urn:btih:${torrent.hash}${trackersString}`,
}))
);
}
} catch (error) {
return [];
}
};
|