From 85fbc9d2f23a1cf809f2b1361e998f456dc3d780 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 1 Feb 2026 04:50:29 +0100 Subject: [PATCH] Added missing Bang sites, updated channel URLs. --- seeds/02_sites.js | 48 ++++++++++++++++++++++++------------- src/scrapers/bang.js | 44 +++++++++++++++++----------------- src/scrapers/mikeadriano.js | 8 ++----- tests/profiles.js | 1 + 4 files changed, 56 insertions(+), 45 deletions(-) diff --git a/seeds/02_sites.js b/seeds/02_sites.js index 2f125fe0..a50a8d1f 100755 --- a/seeds/02_sites.js +++ b/seeds/02_sites.js @@ -1538,7 +1538,7 @@ const sites = [ { name: 'Bang! Trickery', slug: 'bangtrickery', - url: 'https://www.bang.com/videos?in=BANG%21+Trickery', + url: 'https://www.bang.com/originals/4800/bang-trickery', parameters: { siteId: 4800 }, parent: 'bang', }, @@ -1546,63 +1546,63 @@ const sites = [ name: 'Yngr', slug: 'yngrcom', alias: ['byngr'], - url: 'https://www.bang.com/videos?in=yngr.com', + url: 'https://www.bang.com/originals/5010/bang-yngr', parameters: { siteId: 5010 }, parent: 'bang', }, { name: 'Roadside XXX', slug: 'bangroadsidexxx', - url: 'https://www.bang.com/videos?in=Bang%21+Roadside+XXX', + url: 'https://www.bang.com/originals/4864/bang-roadside', parameters: { siteId: 4864 }, parent: 'bang', }, { name: 'Bang! Surprise', slug: 'bangsurprise', - url: 'https://www.bang.com/videos?in=BANG%21+Surprise', + url: 'https://www.bang.com/originals/5000/bang-surprise', parameters: { siteId: 5000 }, parent: 'bang', }, { name: 'Bang! Adventures', slug: 'bangadventures', - url: 'https://www.bang.com/videos?in=BANG%21+adventures', + url: 'https://www.bang.com/originals/7064/bang-adventures', parent: 'bang', }, { name: 'Bang! Real Teens', slug: 'bangrealteens', alias: ['brealteens'], - url: 'https://www.bang.com/videos?in=BANG%21+Real+Teens', + url: 'https://www.bang.com/originals/3366/bang-real-teens', parameters: { siteId: 3366 }, parent: 'bang', }, { name: 'FCK.news', slug: 'bangfakenews', - url: 'https://www.bang.com/videos?in=Bang%21+Fake+news', + url: 'https://www.bang.com/originals/4998/bang-fck-news', parameters: { siteId: 4998 }, parent: 'bang', }, { name: 'Pretty & Raw', slug: 'prettyandraw', - url: 'https://www.bang.com/videos?in=Pretty+%26+Raw', + url: 'https://www.bang.com/originals/4792/bang-pretty-and-raw', parameters: { siteId: 4792 }, parent: 'bang', }, { name: 'Bang! Japan', slug: 'bangjapan', - url: 'https://www.bang.com/videos?in=BANG%21+Japan', + url: 'https://www.bang.com/originals/3079/bang-japan', parameters: { siteId: 3079, ignore: true }, parent: 'bang', }, { name: 'Bang! Rammed', slug: 'bangrammed', - url: 'https://www.bang.com/videos?in=BANG%21+Rammed', + url: 'https://www.bang.com/originals/4836/bang-rammed', parameters: { siteId: 4836 }, parent: 'bang', }, @@ -1610,14 +1610,14 @@ const sites = [ name: 'Bang! Glamkore', slug: 'bangglamkore', alias: ['bglamkore'], - url: 'https://www.bang.com/videos?in=BANG%21+Glamkore', + url: 'https://www.bang.com/originals/4586/bang-glamkore', parameters: { siteId: 4586 }, parent: 'bang', }, { name: 'Screw The Cops', slug: 'screwthecops', - url: 'https://www.bang.com/videos?in=Screw+the+Cops', + url: 'https://www.bang.com/originals/4710/bang-screw-the-cops', parameters: { siteId: 4710 }, parent: 'bang', }, @@ -1625,7 +1625,7 @@ const sites = [ name: 'Bang! Real MILFs', slug: 'bangrealmilfs', alias: ['brealmilfs'], - url: 'https://www.bang.com/videos?in=BANG%21+Real+Milfs', + url: 'https://www.bang.com/originals/4448/bang-real-milfs', parameters: { siteId: 4448 }, parent: 'bang', }, @@ -1633,7 +1633,7 @@ const sites = [ name: 'Bang! Confessions', slug: 'bangconfessions', alias: ['bconfessions'], - url: 'https://www.bang.com/videos?in=BANG%21+Confessions', + url: 'https://www.bang.com/originals/4308/bang-confessions', parameters: { siteId: 4308 }, parent: 'bang', }, @@ -1641,21 +1641,35 @@ const sites = [ name: 'Bang! Casting', slug: 'bangcasting', alias: ['bcasting'], - url: 'https://www.bang.com/videos?in=BANG%21+Casting', + url: 'https://www.bang.com/originals/3261/bang-casting', parameters: { siteId: 3261 }, parent: 'bang', }, { name: 'Bang! Podcast', slug: 'bangpodcast', - url: 'https://www.bang.com/videos?in=bang%21+podcast', + url: 'https://www.bang.com/originals/6305/bang-podcast', parameters: { siteId: 6305 }, parent: 'bang', }, + { + name: 'Bang! Requests', + slug: 'bangrequests', + url: 'https://www.bang.com/originals/7184/bang-requests', + parameters: { siteId: 7184 }, + parent: 'bang', + }, + { + name: 'Pillowtalk', + slug: 'pillowtalk', + url: 'https://www.bang.com/originals/7068/pillowtalk', + parameters: { siteId: 7068 }, + parent: 'bang', + }, { name: 'My Stepdaughter\'s Friend', slug: 'mystepdaughtersfriend', - url: 'https://www.bang.com/videos?in=My%20Stepdaughter%27s%20Friend', + url: 'https://www.bang.com/originals/7072/my-stepdaughters-friend', parameters: { siteId: 7072 }, parent: 'bang', }, diff --git a/src/scrapers/bang.js b/src/scrapers/bang.js index e847bb6e..13770278 100755 --- a/src/scrapers/bang.js +++ b/src/scrapers/bang.js @@ -89,6 +89,28 @@ function scrapeAll(scenes, entity) { }); } +async function fetchLatest(channel, page = 1) { + const url = `${channel.url}?by=date.desc&page=${page}`; + const res = await unprint.get(url, { selectAll: '.video_container' }); + + if (res.ok) { + return scrapeAll(res.context, channel); + } + + return res.status; +} + +async function fetchUpcoming(channel) { + const url = `${channel.url}&by=date.desc&early-access=true`; + const res = await unprint.get(url, { selectAll: '.video_container' }); + + if (res.ok) { + return scrapeAll(res.context, channel); + } + + return res.status; +} + async function scrapeScene({ query }, { url, entity }) { const release = {}; const data = query.json('//script[contains(text(), "VideoObject")]'); @@ -177,28 +199,6 @@ async function scrapeProfile({ query, element }, url, entity, include) { return profile; } -async function fetchLatest(channel, page = 1) { - const url = `${channel.url}&by=date.desc&page=${page}`; - const res = await unprint.get(url, { selectAll: '.video_container' }); - - if (res.ok) { - return scrapeAll(res.context, channel); - } - - return res.status; -} - -async function fetchUpcoming(channel) { - const url = `${channel.url}&by=date.desc&early-access=true`; - const res = await unprint.get(url, { selectAll: '.video_container' }); - - if (res.ok) { - return scrapeAll(res.context, channel); - } - - return res.status; -} - async function fetchProfile({ name: actorName }, { entity }, include) { const searchRes = await unprint.get(`https://www.bang.com/pornstars?term=${slugify(actorName, '+')}`); diff --git a/src/scrapers/mikeadriano.js b/src/scrapers/mikeadriano.js index d00c29f3..dbd5ce30 100755 --- a/src/scrapers/mikeadriano.js +++ b/src/scrapers/mikeadriano.js @@ -99,7 +99,7 @@ async function scrapeProfile(data) { profile.birthPlace = bio.born; profile.dateOfBirth = unprint.extractDate(bio.birthdate, 'YYYY-MM-DD'); - profile.age = bio.age; + profile.age = bio.age; // not always in data even when displayed on site profile.measurements = bio.measurements; profile.height = convert(bio.height, 'cm'); @@ -121,11 +121,7 @@ async function scrapeProfile(data) { async function fetchProfile(actor, context) { const url = `${context.channel.url}/models/${actor.slug}`; - const res = await unprint.get(url, { - parser: { - runScripts: 'dangerously', - }, - }); + const res = await unprint.get(url); if (res.ok) { const data = res.context.query.json('#__NEXT_DATA__'); diff --git a/tests/profiles.js b/tests/profiles.js index 589ec259..1e3f8d62 100644 --- a/tests/profiles.js +++ b/tests/profiles.js @@ -229,6 +229,7 @@ const actors = [ { entity: 'meidenvanholland', name: 'Izzy Bizzy Bang Bang', fields: ['avatar', 'description'] }, { entity: 'karups', name: 'Peach Lollypop', fields: ['avatar'] }, { entity: 'boyfun', name: 'Amahd Passer', fields: ['avatar', 'age', 'height', 'weight', 'penisLength', 'isCircumcised'] }, + { entity: 'bang', name: 'Riley Reid', fields: ['avatar', 'dateOfBirth', 'birthPlace', 'ethnicity', 'hairColor', 'eyes'] }, ]; const actorScrapers = scrapers.actors;