From 89c0cd8b2aa6cbebdb26bb59c9fd6a7c4ebe83fa Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 14 Dec 2025 22:30:10 +0100 Subject: [PATCH] Improved case resolution in tag matching. Fixed Kelly Madison scraper returning BTS tag when indicating 'BTS available'. --- seeds/00_tags.js | 4 ++++ src/scrapers/kellymadison.js | 3 ++- src/tags.js | 11 +++-------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/seeds/00_tags.js b/seeds/00_tags.js index 9aa6ad64..6721075f 100755 --- a/seeds/00_tags.js +++ b/seeds/00_tags.js @@ -202,6 +202,10 @@ const tags = [ name: 'behind the scenes', slug: 'bts', }, + { + name: 'BTS available', + slug: 'hasbts', + }, { name: 'belgian', slug: 'belgian', diff --git a/src/scrapers/kellymadison.js b/src/scrapers/kellymadison.js index 0fa884b3..9c43b5cd 100755 --- a/src/scrapers/kellymadison.js +++ b/src/scrapers/kellymadison.js @@ -75,7 +75,8 @@ function scrapeSceneApi(data, channel, parameters) { })); } - release.tags = data.categories.map((category) => category.name); + // BTS category is used to indicate the scene has a BTS video available, not that it itself is a BTS + release.tags = data.categories.map((category) => (category.name.toLowerCase() === 'bts' ? 'bts available' : category.name)); release.photoCount = data.photosetPhotoCount || data.episode_photoset_photo_count; return release; diff --git a/src/tags.js b/src/tags.js index 779adaf4..14a59f22 100755 --- a/src/tags.js +++ b/src/tags.js @@ -74,19 +74,14 @@ function withRelations(queryBuilder, withMedia) { } async function matchReleaseTags(releases) { - const rawTags = releases + const tags = releases .map((release) => release.tags).flat() + .map((tag) => tag.trim().toLowerCase()) .filter(Boolean); - const casedTags = [...new Set( - rawTags - .concat(rawTags.map((tag) => tag.trim().toLowerCase())) - .concat(rawTags.map((tag) => tag.trim().toUpperCase())), - )]; - const tagEntries = await knex('tags') .select('tags.id', 'tags.name', 'tags.alias_for', 'tags.implied_tag_ids') - .whereIn('tags.name', casedTags); + .whereIn(knex.raw('lower(tags.name)'), tags); const tagIdsBySlug = tagEntries .reduce((acc, tag) => ({