[addon] include trackers when downloading to debrid

This commit is contained in:
TheBeastLT
2020-12-24 17:32:15 +01:00
parent f8fe581313
commit c733d7e266
6 changed files with 37 additions and 9 deletions

View File

@@ -1,6 +1,9 @@
const needle = require('needle'); const needle = require('needle');
const magnet = require('magnet-uri');
const { getRandomProxy, getProxyAgent, getRandomUserAgent } = require('../lib/requestHelper'); const { getRandomProxy, getProxyAgent, getRandomUserAgent } = require('../lib/requestHelper');
const { cacheWrapProxy } = require('../lib/cache'); const { cacheWrapProxy } = require('../lib/cache');
const { getTorrent } = require('../lib/repository');
const { Type } = require('../lib/types');
const TRACKERS_URL = 'https://ngosang.github.io/trackerslist/trackers_best.txt'; const TRACKERS_URL = 'https://ngosang.github.io/trackerslist/trackers_best.txt';
const ANIME_TRACKERS = [ const ANIME_TRACKERS = [
@@ -18,6 +21,17 @@ function getAllTrackers() {
return ALL_TRACKERS; return ALL_TRACKERS;
} }
async function getMagnetLink(infoHash) {
const torrent = getTorrent(infoHash).catch(() => ({ infoHash }));
const torrentTrackers = torrent.trackers && torrent.trackers.split(',');
const animeTrackers = torrent.type === Type.ANIME ? ALL_TRACKERS : undefined;
const trackers = torrentTrackers || animeTrackers;
return trackers
? magnet.encode({ infoHash: infoHash, announce: trackers })
: magnet.encode({ infoHash: infoHash });
}
async function initBestTrackers() { async function initBestTrackers() {
const userAgent = getRandomUserAgent(); const userAgent = getRandomUserAgent();
const proxy = await cacheWrapProxy('moch', () => getRandomProxy()).catch(() => getRandomProxy()); const proxy = await cacheWrapProxy('moch', () => getRandomProxy()).catch(() => getRandomProxy());
@@ -34,4 +48,4 @@ async function initBestTrackers() {
ALL_TRACKERS = BEST_TRACKERS.concat(ANIME_TRACKERS); ALL_TRACKERS = BEST_TRACKERS.concat(ANIME_TRACKERS);
} }
module.exports = { initBestTrackers, getAllTrackers }; module.exports = { initBestTrackers, getAllTrackers, getMagnetLink };

View File

@@ -44,6 +44,10 @@ const File = database.define('file',
Torrent.hasMany(File, { foreignKey: 'infoHash', constraints: false }); Torrent.hasMany(File, { foreignKey: 'infoHash', constraints: false });
File.belongsTo(Torrent, { foreignKey: 'infoHash', constraints: false }); File.belongsTo(Torrent, { foreignKey: 'infoHash', constraints: false });
function getTorrent(infoHash) {
return Torrent.findOne({ where: { infoHash: infoHash } });
}
function getImdbIdMovieEntries(imdbId) { function getImdbIdMovieEntries(imdbId) {
return File.findAll({ return File.findAll({
where: { where: {
@@ -87,4 +91,10 @@ function getKitsuIdSeriesEntries(kitsuId, episode) {
}); });
} }
module.exports = { getImdbIdMovieEntries, getImdbIdSeriesEntries, getKitsuIdMovieEntries, getKitsuIdSeriesEntries }; module.exports = {
getTorrent,
getImdbIdMovieEntries,
getImdbIdSeriesEntries,
getKitsuIdMovieEntries,
getKitsuIdSeriesEntries
};

View File

@@ -4,6 +4,7 @@ const { isVideo, isArchive } = require('../lib/extension');
const StaticResponse = require('./static'); const StaticResponse = require('./static');
const { getRandomProxy, getProxyAgent, getRandomUserAgent } = require('../lib/requestHelper'); const { getRandomProxy, getProxyAgent, getRandomUserAgent } = require('../lib/requestHelper');
const { cacheWrapProxy, cacheUserAgent } = require('../lib/cache'); const { cacheWrapProxy, cacheUserAgent } = require('../lib/cache');
const { getMagnetLink } = require('../lib/magnetHelper');
const KEY = 'alldebrid'; const KEY = 'alldebrid';
@@ -122,7 +123,8 @@ async function _findTorrent(AD, infoHash) {
} }
async function _createTorrent(AD, infoHash) { async function _createTorrent(AD, infoHash) {
const uploadResponse = await AD.magnet.upload(infoHash); const magnetLink = await getMagnetLink(infoHash);
const uploadResponse = await AD.magnet.upload(magnetLink);
const torrentId = uploadResponse.data.magnets[0].id; const torrentId = uploadResponse.data.magnets[0].id;
return AD.magnet.status(torrentId).then(statusResponse => statusResponse.data.magnets); return AD.magnet.status(torrentId).then(statusResponse => statusResponse.data.magnets);
} }

View File

@@ -1,9 +1,9 @@
const PremiumizeClient = require('premiumize-api'); const PremiumizeClient = require('premiumize-api');
const { encode } = require('magnet-uri');
const { isVideo } = require('../lib/extension'); const { isVideo } = require('../lib/extension');
const StaticResponse = require('./static'); const StaticResponse = require('./static');
const { getRandomProxy, getProxyAgent, getRandomUserAgent } = require('../lib/requestHelper'); const { getRandomProxy, getProxyAgent, getRandomUserAgent } = require('../lib/requestHelper');
const { cacheWrapProxy, cacheUserAgent } = require('../lib/cache'); const { cacheWrapProxy, cacheUserAgent } = require('../lib/cache');
const { getMagnetLink } = require('../lib/magnetHelper');
async function getCachedStreams(streams, apiKey) { async function getCachedStreams(streams, apiKey) {
const options = await getDefaultOptions(apiKey); const options = await getDefaultOptions(apiKey);
@@ -82,7 +82,8 @@ async function _findTorrent(PM, infoHash) {
} }
async function _createTorrent(PM, infoHash) { async function _createTorrent(PM, infoHash) {
return PM.transfer.create(encode({ infoHash })).then(() => _findTorrent(PM, infoHash)); const magnetLink = await getMagnetLink(infoHash);
return PM.transfer.create(magnetLink).then(() => _findTorrent(PM, infoHash));
} }
async function _retryCreateTorrent(PM, infoHash, encodedFileName, fileIndex) { async function _retryCreateTorrent(PM, infoHash, encodedFileName, fileIndex) {

View File

@@ -1,8 +1,8 @@
const PutioAPI = require('@putdotio/api-client').default const PutioAPI = require('@putdotio/api-client').default
const { encode } = require('magnet-uri');
const { isVideo } = require('../lib/extension'); const { isVideo } = require('../lib/extension');
const delay = require('./delay'); const delay = require('./delay');
const StaticResponse = require('./static'); const StaticResponse = require('./static');
const { getMagnetLink } = require('../lib/magnetHelper');
async function getCachedStreams(streams, apiKey) { async function getCachedStreams(streams, apiKey) {
return streams return streams
@@ -64,7 +64,7 @@ async function _findTorrent(Putio, infoHash) {
} }
async function _createTorrent(Putio, infoHash) { async function _createTorrent(Putio, infoHash) {
const magnetLink = encode({ infoHash }); const magnetLink = await getMagnetLink(infoHash);
// Add the torrent and then delay for 3 secs for putio to process it and then check it's status. // Add the torrent and then delay for 3 secs for putio to process it and then check it's status.
return Putio.Transfers.Add({ url: magnetLink }) return Putio.Transfers.Add({ url: magnetLink })
.then(response => _getNewTorrent(Putio, response.data.transfer.id)); .then(response => _getNewTorrent(Putio, response.data.transfer.id));

View File

@@ -1,11 +1,11 @@
const RealDebridClient = require('real-debrid-api'); const RealDebridClient = require('real-debrid-api');
const { encode } = require('magnet-uri');
const { Type } = require('../lib/types'); const { Type } = require('../lib/types');
const { isVideo, isArchive } = require('../lib/extension'); const { isVideo, isArchive } = require('../lib/extension');
const delay = require('./delay'); const delay = require('./delay');
const StaticResponse = require('./static'); const StaticResponse = require('./static');
const { getRandomProxy, getProxyAgent, getRandomUserAgent, blacklistProxy } = require('../lib/requestHelper'); const { getRandomProxy, getProxyAgent, getRandomUserAgent, blacklistProxy } = require('../lib/requestHelper');
const { cacheWrapProxy, cacheUserAgent, uncacheProxy } = require('../lib/cache'); const { cacheWrapProxy, cacheUserAgent, uncacheProxy } = require('../lib/cache');
const { getMagnetLink } = require('../lib/magnetHelper');
const MIN_SIZE = 5 * 1024 * 1024; // 5 MB const MIN_SIZE = 5 * 1024 * 1024; // 5 MB
const CATALOG_MAX_PAGE = 5; const CATALOG_MAX_PAGE = 5;
@@ -192,7 +192,8 @@ async function _getTorrentInfo(RD, torrentId) {
} }
async function _createTorrentId(RD, infoHash, cachedFileIds) { async function _createTorrentId(RD, infoHash, cachedFileIds) {
const addedMagnet = await RD.torrents.addMagnet(encode({ infoHash })); const magnetLink = await getMagnetLink(infoHash);
const addedMagnet = await RD.torrents.addMagnet(magnetLink);
await _selectTorrentFiles(RD, { id: addedMagnet.id }, cachedFileIds); await _selectTorrentFiles(RD, { id: addedMagnet.id }, cachedFileIds);
return addedMagnet.id; return addedMagnet.id;
} }