adds seeders retrieval from magnetlink

This commit is contained in:
TheBeastLT
2020-02-17 13:29:35 +01:00
parent 0125fc6fe5
commit 683b58b4b6
2 changed files with 26 additions and 1 deletions

View File

@@ -1,13 +1,37 @@
const torrentStream = require('torrent-stream');
const needle = require('needle');
const parseTorrent = require('parse-torrent');
const async = require('async');
const decode = require('magnet-uri');
const { retrieveTorrentFiles } = require('./cache');
const MAX_PEER_CONNECTIONS = process.env.MAX_PEER_CONNECTIONS || 20;
const SEEDS_CHECK_TIMEOUT = process.env.SEEDS_CHECK_TIMEOUT || 10 * 1000; // 10 secs
const EXTENSIONS = ["3g2", "3gp", "avi", "flv", "mkv", "mov", "mp2", "mp4", "mpe", "mpeg", "mpg", "mpv", "webm", "wmv"];
module.exports.updateCurrentSeeders = function (torrent) {
return Promise.resolve({ ...torrent, seeders: torrent.seeders || 0 });
return new Promise((resolve) => {
if (!torrent.magnetLink) {
return resolve(0);
}
const Tracker = require("peer-search/tracker");
const seeders = {};
const decodedMagnetLink = decode(torrent.magnetLink);
const trackers = decodedMagnetLink && decodedMagnetLink.tr;
const callback = () => resolve(Math.max(...Object.values(seeders).map(values => values[0]).concat(0)));
setTimeout(callback, SEEDS_CHECK_TIMEOUT);
async.each(trackers, function (tracker, ready) {
const t = new Tracker(tracker, {}, torrent.infoHash);
console.error = () => 0; // do nothing
t.run();
t.on("info", function (inf) {
seeders[tracker] = [inf.seeders, inf.leechers];
ready();
});
}, callback);
}).then((seeders) => ({ ...torrent, seeders: torrent.seeders || seeders }));
};
module.exports.torrentFiles = function (torrent) {

View File

@@ -33,6 +33,7 @@
"parse-torrent": "^6.1.2",
"parse-torrent-title": "git://github.com/TheBeastLT/parse-torrent-title.git#master",
"peer-search": "^0.6.x",
"async": "0.9.2",
"pg": "^7.8.2",
"pg-hstore": "^2.3.2",
"sequelize": "^4.43.0",