From 0ef906dacca33569ce34a8d5ac6b905313b70634 Mon Sep 17 00:00:00 2001 From: TheBeastLT Date: Tue, 5 Apr 2022 15:41:27 +0200 Subject: [PATCH] check pm for archive and stream link status --- addon/moch/alldebrid.js | 2 +- addon/moch/debridlink.js | 2 +- addon/moch/premiumize.js | 11 ++++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/addon/moch/alldebrid.js b/addon/moch/alldebrid.js index fe96172..f3dbea7 100644 --- a/addon/moch/alldebrid.js +++ b/addon/moch/alldebrid.js @@ -17,7 +17,7 @@ async function getCachedStreams(streams, apiKey) { if (error && error.code === 'AUTH_BAD_APIKEY') { return Promise.reject(BadTokenError); } - console.warn('Failed AllDebrid cached torrent availability request:', error); + console.warn(`Failed AllDebrid cached [${hashes[0]}] torrent availability request:`, error); return undefined; }); return available && available.data && available.data.magnets && streams diff --git a/addon/moch/debridlink.js b/addon/moch/debridlink.js index 407ec5a..92dfb95 100644 --- a/addon/moch/debridlink.js +++ b/addon/moch/debridlink.js @@ -120,7 +120,7 @@ async function _unrestrictLink(DL, torrent, fileIndex) { ? torrent.files[fileIndex] : torrent.files.filter(file => file.downloadPercent === 100).sort((a, b) => b.size - a.size)[0]; - if (!targetFile && isArchive(targetFile.downloadUrl)) { + if (!targetFile && torrent.files.every(file => isArchive(file.downloadUrl))) { console.log(`Only DebridLink archive is available for [${torrent.hashString}] ${fileIndex}`) return StaticResponse.FAILED_RAR; } diff --git a/addon/moch/premiumize.js b/addon/moch/premiumize.js index 11c5cef..a1d59d5 100644 --- a/addon/moch/premiumize.js +++ b/addon/moch/premiumize.js @@ -1,7 +1,7 @@ const PremiumizeClient = require('premiumize-api'); const magnet = require('magnet-uri'); const { Type } = require('../lib/types'); -const { isVideo } = require('../lib/extension'); +const { isVideo, isArchive } = require('../lib/extension'); const StaticResponse = require('./static'); const { getMagnetLink } = require('../lib/magnetHelper'); const { BadTokenError, chunkArray } = require('./mochHelper'); @@ -90,7 +90,7 @@ async function getFolderContents(PM, itemId, ip, folderPrefix = '') { } async function resolve({ ip, isBrowser, apiKey, infoHash, cachedEntryInfo, fileIndex }) { - console.log(`Unrestricting Premiumize ${infoHash} [${fileIndex}] for IP ${ip}`); + console.log(`Unrestricting Premiumize ${infoHash} [${fileIndex}] for IP ${ip} from browser=${isBrowser}`); const options = await getDefaultOptions(); const PM = new PremiumizeClient(apiKey, options); return _getCachedLink(PM, infoHash, cachedEntryInfo, fileIndex, ip, isBrowser) @@ -126,7 +126,12 @@ async function _getCachedLink(PM, infoHash, encodedFileName, fileIndex, ip, isBr const targetVideo = Number.isInteger(fileIndex) ? videos.find(video => video.path.includes(targetFileName)) : videos.sort((a, b) => b.size - a.size)[0]; - const unrestrictedLink = isBrowser && targetVideo.stream_link || targetVideo.link; + if (!targetVideo && videos.every(video => isArchive(video.path))) { + console.log(`Only Premiumize archive is available for [${infoHash}] ${fileIndex}`) + return StaticResponse.FAILED_RAR; + } + const streamLink = isBrowser && targetVideo.transcode_status === 'finished' && targetVideo.stream_link; + const unrestrictedLink = streamLink || targetVideo.link; console.log(`Unrestricted Premiumize ${infoHash} [${fileIndex}] to ${unrestrictedLink}`); return unrestrictedLink; }