mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
[addon] includes trackers for anime torrents
This commit is contained in:
26
addon/lib/magnetHelper.js
Normal file
26
addon/lib/magnetHelper.js
Normal file
@@ -0,0 +1,26 @@
|
||||
const needle = require('needle');
|
||||
|
||||
const TRACKERS_URL = 'https://ngosang.github.io/trackerslist/trackers_best.txt';
|
||||
const ANIME_TRACKERS = [
|
||||
"http://nyaa.tracker.wf:7777/announce",
|
||||
"http://anidex.moe:6969/announce",
|
||||
"http://tracker.anirena.com:80/announce",
|
||||
"udp://tracker.uw0.xyz:6969/announce",
|
||||
"http://share.camoe.cn:8080/announce",
|
||||
"http://t.nyaatracker.com:80/announce"
|
||||
];
|
||||
let BEST_TRACKERS = [];
|
||||
let ALL_TRACKERS = [];
|
||||
|
||||
function getAllTrackers() {
|
||||
return ALL_TRACKERS;
|
||||
}
|
||||
|
||||
async function initBestTrackers() {
|
||||
BEST_TRACKERS = await needle('get', TRACKERS_URL, { open_timeout: 20000 })
|
||||
.then(response => response.body && response.body.trim())
|
||||
.then(body => body && body.split('\n\n') || []);
|
||||
ALL_TRACKERS = BEST_TRACKERS.concat(ANIME_TRACKERS);
|
||||
}
|
||||
|
||||
module.exports = { initBestTrackers, getAllTrackers };
|
||||
@@ -1,10 +1,16 @@
|
||||
const titleParser = require('parse-torrent-title');
|
||||
const { Type } = require('./types');
|
||||
const { mapLanguages } = require('./languages');
|
||||
const { getAllTrackers } = require('./magnetHelper');
|
||||
|
||||
const ADDON_NAME = 'Torrentio';
|
||||
const SIZE_DELTA = 0.02;
|
||||
const UNKNOWN_SIZE = 300000000;
|
||||
const ANIME_PROVIDERS = [
|
||||
'HorribleSubs',
|
||||
'NyaaSi',
|
||||
'NyaaPantsu'
|
||||
].map(provider => provider.toLowerCase());
|
||||
|
||||
function toStreamInfo(record) {
|
||||
const torrentInfo = titleParser.parse(record.torrent.title);
|
||||
@@ -86,4 +92,19 @@ function formatSize(size) {
|
||||
return Number((size / Math.pow(1024, i)).toFixed(2)) + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i];
|
||||
}
|
||||
|
||||
module.exports = { toStreamInfo };
|
||||
function applyStaticInfo(streams) {
|
||||
return streams.map(stream => enrichStaticInfo(stream));
|
||||
}
|
||||
|
||||
function enrichStaticInfo(stream) {
|
||||
const match = stream.title.match(/⚙.* ([^ \n]+)/);
|
||||
const provider = match && match[1].toLowerCase();
|
||||
if (ANIME_PROVIDERS.includes(provider)) {
|
||||
const infoHash = stream.infoHash;
|
||||
const sources = getAllTrackers().map(tracker => `tracker:${tracker}`).concat(`dht:${infoHash}`);
|
||||
return { ...stream, sources };
|
||||
}
|
||||
return stream;
|
||||
}
|
||||
|
||||
module.exports = { toStreamInfo, applyStaticInfo };
|
||||
|
||||
Reference in New Issue
Block a user