mirror of
https://github.com/TheBeastLT/torrentio-scraper.git
synced 2026-01-11 22:40:22 +00:00
try to free last active item in TB when active limit reached
This commit is contained in:
parent
dac72da784
commit
01f5ebd90f
1 changed files with 21 additions and 1 deletions
|
|
@ -120,7 +120,7 @@ async function _findTorrent(apiKey, infoHash) {
|
|||
return foundTorrent || Promise.reject('No recent torrent found');
|
||||
}
|
||||
|
||||
async function _createTorrent(apiKey, infoHash) {
|
||||
async function _createTorrent(apiKey, infoHash, attempts = 1) {
|
||||
const magnetLink = await getMagnetLink(infoHash);
|
||||
return createTorrent(apiKey, magnetLink)
|
||||
.then(data => {
|
||||
|
|
@ -130,6 +130,10 @@ async function _createTorrent(apiKey, infoHash) {
|
|||
if (data.queued_id) {
|
||||
return Promise.resolve({ ...data, download_state: 'metaDL' })
|
||||
}
|
||||
if (data?.error === 'ACTIVE_LIMIT' && attempts > 0) {
|
||||
return freeLastActiveTorrent(apiKey)
|
||||
.then(() => _createTorrent(apiKey, infoHash, attempts - 1));
|
||||
}
|
||||
return Promise.reject(`Unexpected create data: ${JSON.stringify(data)}`);
|
||||
});
|
||||
}
|
||||
|
|
@ -141,6 +145,18 @@ async function _retryCreateTorrent(apiKey, infoHash, cachedEntryInfo, fileIndex)
|
|||
: StaticResponse.FAILED_DOWNLOAD;
|
||||
}
|
||||
|
||||
async function freeLastActiveTorrent(apiKey) {
|
||||
const torrents = await getTorrentList(apiKey);
|
||||
const seedingTorrent = torrents.filter(statusSeeding).pop();
|
||||
if (seedingTorrent) {
|
||||
return controlTorrent(apiKey, seedingTorrent.id, 'stop_seeding');
|
||||
}
|
||||
if (torrents.filter(statusDownloading).pop()) {
|
||||
return controlTorrent(apiKey, seedingTorrent.id, 'delete');
|
||||
}
|
||||
return Promise.reject({ detail: 'No torrent to pause found' });
|
||||
}
|
||||
|
||||
async function _unrestrictLink(apiKey, infoHash, torrent, cachedEntryInfo, fileIndex, ip) {
|
||||
const targetFileName = decodeURIComponent(cachedEntryInfo);
|
||||
const videos = torrent.files
|
||||
|
|
@ -263,6 +279,10 @@ function statusReady(torrent) {
|
|||
return torrent?.download_present;
|
||||
}
|
||||
|
||||
function statusSeeding(torrent) {
|
||||
return ['seeding', 'uploading (no peers)'].includes(torrent?.download_state);
|
||||
}
|
||||
|
||||
function isAccessDeniedError(error) {
|
||||
return ['AUTH_ERROR', 'BAD_TOKEN', 'PLAN_RESTRICTED_FEATURE'].includes(error?.error);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue