diff --git a/src/scrapers/mindgeek.js b/src/scrapers/mindgeek.js index dd0dc3b8..46f1032e 100644 --- a/src/scrapers/mindgeek.js +++ b/src/scrapers/mindgeek.js @@ -45,21 +45,6 @@ function getVideos(data) { } function scrapeLatestX(data, site, filterChannel) { - if (site.parameters?.extract === true && data.collections.length > 0) { - // release should not belong to any channel - return null; - } - - if (typeof site.parameters?.extract === 'string' && !data.collections.some(collection => collection.shortName === site.parameters.extract)) { - // release should belong to specific channel - return null; - } - - if (filterChannel && !data.collections?.some(collection => collection.id === site.parameters?.siteId)) { - // used to separate upcoming Brazzers scenes - return null; - } - const release = { entryId: data.id, title: data.title, @@ -90,16 +75,24 @@ function scrapeLatestX(data, site, filterChannel) { tags: [chapter.name], })); + if ((site.parameters?.extract === true && data.collections.length > 0) // release should not belong to any channel + || (typeof site.parameters?.extract === 'string' && !data.collections.some(collection => collection.shortName === site.parameters.extract)) // release should belong to specific channel + || (filterChannel && !data.collections?.some(collection => collection.id === site.parameters?.siteId))) { // used to separate upcoming Brazzers scenes + return { + ...release, + exclude: true, + }; + } + return release; } async function scrapeLatest(items, site, filterChannel) { const latestReleases = items.map(data => scrapeLatestX(data, site, filterChannel)); - const extractedScenes = latestReleases.filter(Boolean); return { - scenes: extractedScenes, - unextracted: latestReleases.length - extractedScenes.length, + scenes: latestReleases.filter(scene => !scene.exclude), + unextracted: latestReleases.filter(scene => scene.exclude), }; } diff --git a/src/updates.js b/src/updates.js index 04dcb3a3..edcfa6c7 100644 --- a/src/updates.js +++ b/src/updates.js @@ -66,10 +66,10 @@ async function filterUniqueReleases(releases) { return { uniqueReleases, duplicateReleases }; } -function needNextPage(pageReleases, accReleases, isUpcoming, unextracted = 0) { +function needNextPage(pageReleases, accReleases, isUpcoming, unextracted = []) { const { localUniqueReleases: uniquePageReleases } = filterLocalUniqueReleases(pageReleases, accReleases); - if (uniquePageReleases.length + unextracted === 0) { + if (uniquePageReleases.length + unextracted.length === 0) { // page is empty, or only contains scenes from previous page return false; } @@ -78,17 +78,18 @@ function needNextPage(pageReleases, accReleases, isUpcoming, unextracted = 0) { return uniquePageReleases.length > 0 && argv.paginateUpcoming; } - if (uniquePageReleases.length + unextracted > 0) { + if (uniquePageReleases.length + unextracted.length > 0) { if (argv.last) { return accReleases.length + pageReleases.length < argv.last; } - if (!pageReleases.every(release => !!release.date)) { // some scenes don't have dates + if (!pageReleases.concat(unextracted).every(release => !!release.date)) { // some scenes don't have dates return accReleases.length + pageReleases.length < argv.missingDateLimit; } if (argv.after) { const oldestReleaseOnPage = pageReleases + .concat(unextracted) .sort((releaseA, releaseB) => releaseB.date - releaseA.date) .slice(-1)[0];