diff --git a/src/scrapers/naughtyamerica.js b/src/scrapers/naughtyamerica.js index 4f8ae366..95919fe5 100755 --- a/src/scrapers/naughtyamerica.js +++ b/src/scrapers/naughtyamerica.js @@ -5,6 +5,16 @@ const unprint = require('unprint'); const slugify = require('../utils/slugify'); const { stripQuery } = require('../utils/url'); +const channelMap = { + spa: 'thespa', + gym: 'thegym', + dormroom: 'thedormroom', + dressingroom: 'thedressingroom', + psepornstarexperience: 'pornstarexperience', + office: 'theoffice', + ta: 'tanda', +}; + function scrapeLatest(scenes, channel) { return scenes.map(({ query }) => { const release = {}; @@ -40,7 +50,9 @@ function scrapeLatest(scenes, channel) { query.exists('//a[contains(@class, "label-hd") and contains(text(), "HD")]') && 720, ].filter(Boolean); - release.channel = slugify(query.content('.site-title'), ''); + const channelSlug = slugify(query.content('.site-title'), ''); + + release.channel = channelMap[channelSlug] || channelSlug; // NA affiliate prefers to push more traffic to Naughty America VR, all scenes labeled VR seem to be available on NAVR release.url = release.tags?.some((tag) => tag.toLowerCase() === 'vr') @@ -95,6 +107,7 @@ function scrapeScene({ query }, { url }) { query.img('.play-trailer img[data-srcset*="scenes/"]', { attribute: 'data-srcset' }), query.img('.scenepage-video .playcard'), query.img('.scene-page .start-card'), + query.poster('dl8-video[poster]'), ].filter(Boolean); release.photos = query.els('.contain-scene-images.desktop-only .scene-image').map((imgEl) => [ @@ -114,7 +127,9 @@ function scrapeScene({ query }, { url }) { ]; } - release.channel = slugify(query.content('.site-title'), ''); + const channelSlug = slugify(query.content('.site-title'), ''); + + release.channel = channelMap[channelSlug] || channelSlug; release.tags = query.contents('.categories a, .category a'); diff --git a/src/tools/naughtyamerica-map.js b/src/tools/naughtyamerica-map.js new file mode 100644 index 00000000..b45848a9 --- /dev/null +++ b/src/tools/naughtyamerica-map.js @@ -0,0 +1,26 @@ +'use strict'; + +const knex = require('../knex'); +const slugify = require('../utils/slugify'); + +async function init() { + const channels = await knex('entities') + .select('entities.*') + .leftJoin('entities as parents', 'parents.id', 'entities.parent_id') + .where('parents.slug', 'in', ['naughtyamerica', 'naughtyamericavr']); + + const mapped = Object.fromEntries(channels.map((channel) => { + const path = new URL(channel.url).pathname.match(/\/site\/(.*)/)?.[1]; + const urlSlug = slugify(path, ''); + + if (!urlSlug || urlSlug === channel.slug) { + return null; + } + + return [urlSlug, channel.slug]; + }).filter(Boolean)); + + console.log(mapped); +} + +init();