improve sources for russian providers
This commit is contained in:
@@ -13,6 +13,14 @@ const ANIME_TRACKERS = [
|
||||
"http://share.camoe.cn:8080/announce",
|
||||
"http://t.nyaatracker.com:80/announce"
|
||||
];
|
||||
const RUSSIAN_TRACKERS = [
|
||||
"udp://opentor.org:2710",
|
||||
"http://retracker.local/announce",
|
||||
"http://bt.t-ru.org/ann?magnet",
|
||||
"http://bt2.t-ru.org/ann?magnet",
|
||||
"http://bt3.t-ru.org/ann?magnet",
|
||||
"http://bt4.t-ru.org/ann?magnet"
|
||||
]
|
||||
// Some trackers have limits on original torrent trackers,
|
||||
// where downloading ip has to seed the torrents for some amount of time,
|
||||
// thus it doesn't work on mochs.
|
||||
@@ -21,19 +29,25 @@ const ANIME_TRACKERS = [
|
||||
const LIMITED_PROVIDERS = [
|
||||
'Rutor'
|
||||
];
|
||||
const ANIME_PROVIDERS = [
|
||||
'HorribleSubs',
|
||||
'NyaaSi',
|
||||
'NyaaPantsu'
|
||||
];
|
||||
const RUSSIAN_PROVIDERS = [
|
||||
'Rutor',
|
||||
'Rutracker'
|
||||
]
|
||||
let BEST_TRACKERS = [];
|
||||
let ALL_TRACKERS = [];
|
||||
|
||||
function getAllTrackers() {
|
||||
return ALL_TRACKERS;
|
||||
}
|
||||
|
||||
async function getMagnetLink(infoHash) {
|
||||
const torrent = await getTorrent(infoHash).catch(() => ({ infoHash }));
|
||||
const torrentTrackers = !LIMITED_PROVIDERS.includes(torrent.provider)
|
||||
&& torrent.trackers && torrent.trackers.split(',');
|
||||
const animeTrackers = torrent.type === Type.ANIME ? ALL_TRACKERS : undefined;
|
||||
const trackers = torrentTrackers || animeTrackers;
|
||||
const providerTrackers = RUSSIAN_PROVIDERS.includes(torrent.provider) && RUSSIAN_TRACKERS;
|
||||
const trackers = unique([].concat(torrentTrackers).concat(animeTrackers).concat(providerTrackers));
|
||||
|
||||
return trackers
|
||||
? magnet.encode({ infoHash: infoHash, announce: trackers })
|
||||
@@ -60,4 +74,30 @@ async function getBestTrackers(retry = 2) {
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = { initBestTrackers, getAllTrackers, getMagnetLink };
|
||||
function getSources(trackersInput, infoHash) {
|
||||
if (!trackersInput) {
|
||||
return null;
|
||||
}
|
||||
const trackers = Array.isArray(trackersInput) ? trackersInput : trackersInput.split(',');
|
||||
return trackers.map(tracker => `tracker:${tracker}`).concat(`dht:${infoHash}`);
|
||||
}
|
||||
|
||||
function enrichStreamSources(stream) {
|
||||
const match = stream.title.match(/⚙.* ([^ \n]+)/);
|
||||
const provider = match && match[1];
|
||||
if (ANIME_PROVIDERS.includes(provider)) {
|
||||
const sources = getSources(ALL_TRACKERS, stream.infoHash);
|
||||
return { ...stream, sources };
|
||||
}
|
||||
if (RUSSIAN_PROVIDERS.includes(provider)) {
|
||||
const sources = unique([].concat(stream.sources).concat(getSources(RUSSIAN_TRACKERS, stream.infoHash)));
|
||||
return { ...stream, sources };
|
||||
}
|
||||
return stream;
|
||||
}
|
||||
|
||||
function unique(array) {
|
||||
return Array.from(new Set(array));
|
||||
}
|
||||
|
||||
module.exports = { initBestTrackers, getMagnetLink, getSources, enrichStreamSources };
|
||||
Reference in New Issue
Block a user