Compare commits

..

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian
950048df9a 1.247.8 2026-01-27 04:44:02 +01:00
DebaucheryLibrarian
0d20872489 Added ExploitedX profile tests, fixed bio queries. 2026-01-27 04:43:59 +01:00
5 changed files with 22 additions and 12 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "traxxx",
"version": "1.247.7",
"version": "1.247.8",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "traxxx",
"version": "1.247.7",
"version": "1.247.8",
"license": "ISC",
"dependencies": {
"@aws-sdk/client-s3": "^3.458.0",

View File

@@ -1,6 +1,6 @@
{
"name": "traxxx",
"version": "1.247.7",
"version": "1.247.8",
"description": "All the latest porn releases in one place",
"main": "src/app.js",
"scripts": {

View File

@@ -193,6 +193,7 @@ module.exports = {
// etc
'18vr': badoink,
theflourishxxx: theflourish,
exploitedx, // only from known URL that will specify site
fullpornnetwork,
adultempire,
allherluv: missax,
@@ -213,7 +214,6 @@ module.exports = {
cumlouder,
dorcelclub: dorcel,
doubleviewcasting: firstanalquest,
exploitedx, // only from known URL that will specify site
firstanalquest,
freeones,
hitzefrei,

View File

@@ -75,10 +75,11 @@ function scrapeScene({ query }, { url }) {
function scrapeProfile({ query }, _entity) {
const profile = {};
const bio = Object.fromEntries(query.all('.detail-div p').map((detailEl) => [
slugify(unprint.query.content(detailEl, 'strong'), '_'),
unprint.query.text(detailEl),
]));
// all three selectors still apply to different sites
const keys = query.contents('h1 + div strong, .bio-items li strong, .detail-div p strong');
const values = query.texts('h1 + div, .bio-items li, .detail-div p', { join: false }).flat();
const bio = Object.fromEntries(keys.map((key, index) => [slugify(key, '_'), values[index]]));
profile.age = Number(bio.age) || null;
profile.height = convert(bio.height, 'cm');
@@ -86,15 +87,18 @@ function scrapeProfile({ query }, _entity) {
profile.description = [
bio.favorite_position && `Favorite position: ${bio.favorite_position}`,
bio.favorite_sex_toy && `Favorite sex toy: ${bio.favorite_sex_toy}`,
bio.likes && `Likes: ${bio.likes}`,
].filter(Boolean).join('\n');
].filter(Boolean).join('\n') || null;
profile.avatar = [
query.img('.model_bio_thumb', { attribute: 'src0_2x' }),
query.img('.model_bio_thumb', { attribute: 'src0_1x' }),
query.img('.model_bio_thumb', { attribute: 'src0_3x' }), // too big
query.img('.model-bio__image, .model_bio_thumb', { attribute: 'src0_2x' }),
query.img('.model-bio__image, .model_bio_thumb', { attribute: 'src0_1x' }),
query.img('.model-bio__image, .model_bio_thumb', { attribute: 'src0_3x' }), // too big
];
console.log(bio);
return profile;
}

View File

@@ -199,6 +199,12 @@ const actors = [
{ entity: 'julesjordan', name: 'Vanna Bardot', fields: ['height', 'dateOfBirth', 'measurements', 'description', 'avatar'] },
{ 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://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'] },
{ entity: 'exploitedx', name: 'Lao Latina', url: 'https://hotmilfsfuck.com/models/Lao-Latina.html', fields: ['avatar', 'description', 'age', 'height', 'measurements'] },
// etc.
{ entity: 'analvids', name: 'Veronica Leal', fields: ['avatar', 'gender', 'birthCountry', 'nationality', 'age', 'aliases', 'nationality'] },
{ entity: 'bangbros', name: 'Kira Perez', fields: ['avatar', 'gender', 'ethnicity', 'hairColor'] },