From fe3fcd0741e051ae4f96b3e225c5c48971685535 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Mon, 9 Feb 2026 02:33:11 +0100 Subject: [PATCH] Fixed ExploitedX not matching some age fields. --- src/scrapers/exploitedx.js | 2 +- src/scrapers/fullpornnetwork.js | 4 +++- tests/profiles.js | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/scrapers/exploitedx.js b/src/scrapers/exploitedx.js index ce19525e..2863d228 100755 --- a/src/scrapers/exploitedx.js +++ b/src/scrapers/exploitedx.js @@ -81,7 +81,7 @@ function scrapeProfile({ query }, _entity) { const bio = Object.fromEntries(keys.map((key, index) => [slugify(key, '_'), values[index]])); - profile.age = Number(bio.age) || null; + profile.age = unprint.extractNumber(bio.age); profile.height = convert(bio.height, 'cm'); profile.measurements = bio.measurements; diff --git a/src/scrapers/fullpornnetwork.js b/src/scrapers/fullpornnetwork.js index 848d5328..198c2c8a 100755 --- a/src/scrapers/fullpornnetwork.js +++ b/src/scrapers/fullpornnetwork.js @@ -91,11 +91,13 @@ function scrapeProfile({ query }, { url }) { profile.description = [query.content('.model-bio-text, #performer-description'), bio.funfact].filter(Boolean).join(' '); profile.aliases = bio.alias?.split(/[,\n]/).map((alias) => alias.trim()); - profile.age = parseInt(bio.age, 10) || null; + profile.age = unprint.extractNumber(bio.age); profile.dateOfBirth = unprint.extractDate(bio.age, 'MM/DD/YYYY'); profile.measurements = bio.measurements; profile.height = Number(bio.height?.match(/(\d+)\s*cm/)?.[1]) || convert(bio.height, 'cm'); + console.log(profile); + return profile; } diff --git a/tests/profiles.js b/tests/profiles.js index 458254f2..939b3498 100644 --- a/tests/profiles.js +++ b/tests/profiles.js @@ -207,7 +207,7 @@ const actors = [ { entity: 'amateurallure', name: 'Ava Amira', fields: ['avatar', 'description'] }, { entity: 'swallowsalon', name: 'Abella Danger', fields: ['avatar'] }, // exploitedx - { entity: 'exploitedx', name: 'Amber Moore', url: 'https://exploitedcollegegirls.com/models/AmberMoore.html', fields: ['avatar', 'description', 'age', 'height', 'measurements'] }, + { entity: 'exploitedx', name: 'Amber Moore', url: 'https://exploitedcollegegirls.com/models/Amber-Moore.html', fields: ['avatar', 'description', 'age', 'height', 'measurements'] }, { entity: 'exploitedx', name: 'Amber Moore', url: 'https://bbcsurprise.com/models/AmberMoore.html', fields: ['avatar', 'age'] }, { entity: 'exploitedx', name: 'Megan Marx', url: 'https://excogigirls.com/models/megan-marx.html', fields: ['avatar', 'description', 'age', 'height', 'measurements'] }, { entity: 'exploitedx', name: 'Sophie Hunt', url: 'https://www.backroomcastingcouch.com/models/Sophie-Hunt.html', fields: ['avatar', 'age'] }, @@ -375,7 +375,7 @@ async function init() { validators[field] ? await validators[field](profile[field]) : typeof profile[field] !== 'undefined', - `broken field ${field}, got ${profile[field]}`, + `broken field ${field}, got ${profile[field]} for ${actor.name}`, ); })); })));