From 5c090c604a67175252eddc3e256d85888be899b5 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Fri, 16 Jan 2026 05:04:56 +0100 Subject: [PATCH] Improved Score date handling. --- src/deep.js | 4 ++-- src/scrapers/score.js | 55 ++++++++++++++++++++++++++++++++++++------- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/src/deep.js b/src/deep.js index 917964cf..a55411ea 100755 --- a/src/deep.js +++ b/src/deep.js @@ -158,7 +158,7 @@ async function scrapeRelease(baseRelease, entitiesByHostname, type = 'scene') { parameters: getRecursiveParameters(entity), }; - logger.debug(`Memory usage before: ${process.memoryUsage.rss() / 1000000} MB (${baseRelease.url})`); + // logger.debug(`Memory usage before: ${process.memoryUsage.rss() / 1000000} MB (${baseRelease.url})`); const rawScrapedRelease = type === 'scene' ? await fetchScene(layoutScraper, baseRelease.url, entity, baseRelease, options) @@ -179,7 +179,7 @@ async function scrapeRelease(baseRelease, entitiesByHostname, type = 'scene') { await waitImmediate; - logger.debug(`Memory usage after: ${process.memoryUsage.rss() / 1000000} MB (${baseRelease.url})`); + // logger.debug(`Memory usage after: ${process.memoryUsage.rss() / 1000000} MB (${baseRelease.url})`); const scrapedRelease = rawScrapedRelease?.scene || rawScrapedRelease; diff --git a/src/scrapers/score.js b/src/scrapers/score.js index 40e53687..3861d2f9 100755 --- a/src/scrapers/score.js +++ b/src/scrapers/score.js @@ -21,6 +21,49 @@ function resizeSrc(src) { ])); } +function deriveDate(query) { + const now = new Date(); + + // Nov. 12th + const dateMY = query.date('.i-date', 'MMM. YYYY', { match: /(\w+\.? \d{4})/ }); + + if (dateMY) { + return { + date: dateMY, + precision: 'month', + }; + } + + const dateMDo = query.date('.i-date', 'MMM. Do', { match: /(\w+\.? \d{1,2}\w+)/ }); + + if (dateMDo) { + if (dateMDo > now) { + dateMDo.setFullYear(now.getFullYear() - 1); + } + + return { + date: dateMDo, + precision: 'day', + }; + } + + const dateAgo = query.dateAgo('.i-date'); + + if (dateAgo) { + return { + date: dateAgo.date, + precision: dateAgo.precision === 'week' // not much use for weekly precision + ? 'month' + : dateAgo.precision, + }; + } + + return { + date: null, + precision: null, + }; +} + function scrapeAll(scenes, channel, parameters) { return scenes.map(({ query }) => { const release = {}; @@ -32,16 +75,10 @@ function scrapeAll(scenes, channel, parameters) { release.title = query.content('a.i-title, h2.i-title'); release.duration = query.duration('.time-ol'); - release.date = query.date('.i-date', ['MMM. Do', 'MMM. YYYY'], { match: /(\w+\.? \d{1,2}\w+)|(\w+\.? \d{4})/ }); + const { date, precision } = deriveDate(query); - if (!release.date) { - const date = query.dateAgo('.i-date'); - - if (date) { - release.date = date.date; - release.datePrecision = date.precision === 'week' ? 'month' : date.precision; - } - } + release.date = date; + release.datePrecision = precision; release.actors = query.content('.i-model').split(',').map((actor) => actor.trim());