mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
[addon] fix rd retry loop
This commit is contained in:
@@ -7,7 +7,7 @@ const RESOLVED_URL_KEY_PREFIX = `${GLOBAL_KEY_PREFIX}|resolved`;
|
|||||||
|
|
||||||
const STREAM_TTL = process.env.STREAM_TTL || 4 * 60 * 60; // 4 hours
|
const STREAM_TTL = process.env.STREAM_TTL || 4 * 60 * 60; // 4 hours
|
||||||
const STREAM_EMPTY_TTL = process.env.STREAM_EMPTY_TTL || 30 * 60; // 30 minutes
|
const STREAM_EMPTY_TTL = process.env.STREAM_EMPTY_TTL || 30 * 60; // 30 minutes
|
||||||
const RESOLVED_URL_TTL = 60; // 2 minutes
|
const RESOLVED_URL_TTL = 60; // 1 minutes
|
||||||
// When the streams are empty we want to cache it for less time in case of timeouts or failures
|
// When the streams are empty we want to cache it for less time in case of timeouts or failures
|
||||||
|
|
||||||
const MONGO_URI = process.env.MONGODB_URI;
|
const MONGO_URI = process.env.MONGODB_URI;
|
||||||
|
|||||||
@@ -196,10 +196,15 @@ async function _createTorrentId(RD, infoHash, cachedFileIds) {
|
|||||||
return addedMagnet.id;
|
return addedMagnet.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function _retryCreateTorrent(RD, infoHash, fileIndex) {
|
async function _recreateTorrentId(RD, infoHash, fileIndex) {
|
||||||
console.log(`Retry failed download in RealDebrid ${infoHash} [${fileIndex}]...`);
|
|
||||||
const newTorrentId = await _createTorrentId(RD, infoHash);
|
const newTorrentId = await _createTorrentId(RD, infoHash);
|
||||||
await _selectTorrentFiles(RD, { id: newTorrentId }, fileIndex);
|
await _selectTorrentFiles(RD, { id: newTorrentId }, fileIndex);
|
||||||
|
return newTorrentId;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function _retryCreateTorrent(RD, infoHash, fileIndex) {
|
||||||
|
console.log(`Retry failed download in RealDebrid ${infoHash} [${fileIndex}]...`);
|
||||||
|
const newTorrentId = await _recreateTorrentId(RD, infoHash, fileIndex);
|
||||||
const newTorrent = await _getTorrentInfo(RD, newTorrentId);
|
const newTorrent = await _getTorrentInfo(RD, newTorrentId);
|
||||||
return newTorrent && statusReady(newTorrent.status)
|
return newTorrent && statusReady(newTorrent.status)
|
||||||
? _unrestrictLink(RD, newTorrent, fileIndex)
|
? _unrestrictLink(RD, newTorrent, fileIndex)
|
||||||
@@ -230,7 +235,8 @@ async function _unrestrictLink(RD, torrent, fileIndex) {
|
|||||||
const targetFile = torrent.files.find(file => file.id === fileIndex + 1)
|
const targetFile = torrent.files.find(file => file.id === fileIndex + 1)
|
||||||
|| torrent.files.filter(file => file.selected).sort((a, b) => b.bytes - a.bytes)[0];
|
|| torrent.files.filter(file => file.selected).sort((a, b) => b.bytes - a.bytes)[0];
|
||||||
if (!targetFile.selected) {
|
if (!targetFile.selected) {
|
||||||
await _retryCreateTorrent(RD, torrent.hash.toLowerCase(), fileIndex);
|
console.log(`Target RealDebrid file is not downloaded: ${JSON.stringify(torrent)}`);
|
||||||
|
await _recreateTorrentId(RD, torrent.hash.toLowerCase(), fileIndex);
|
||||||
return StaticResponse.DOWNLOADING;
|
return StaticResponse.DOWNLOADING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user