Compare commits

..

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian
b79cf4fb78 1.248.34 2026-02-06 17:15:44 +01:00
DebaucheryLibrarian
93df88768c Improved Model Media profile scraper for Delphine, added test. 2026-02-06 17:15:42 +01:00
6 changed files with 12 additions and 12 deletions

4
package-lock.json generated
View File

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

View File

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

View File

@@ -200,7 +200,7 @@ module.exports = {
// model media
jerkaoke: modelmedia,
modelmediaasia: modelmedia,
// delphine: modelmedia,
delphine: modelmedia,
// etc
'18vr': badoink,
theflourishxxx: theflourish,

View File

@@ -204,8 +204,8 @@ async function fetchProfileApi(actor, { entity, parameters }) {
return null;
}
function scrapeProfile({ query }) {
const profile = {};
function scrapeProfile({ query }, url) {
const profile = { url };
const avatar = query.img('div[class*="prof-pic"] > img');
if (avatar) {
@@ -216,12 +216,11 @@ function scrapeProfile({ query }) {
}
profile.description = query.content('h2') || null;
profile.height = query.number('//span[text()="Height"]/following-sibling::span', { match: /(\d+) cm/, matchIndex: 1 });
profile.weight = query.number('//span[text()="Weight"]/following-sibling::span', { match: /(\d+) kg/, matchIndex: 1 });
profile.height = query.number('//span[text()="Height"]/following-sibling::node()[self::span or self::text()]', { match: /(\d+) cm/, matchIndex: 1 });
profile.weight = query.number('//span[text()="Weight"]/following-sibling::node()[self::span or self::text()]', { match: /(\d+) kg/, matchIndex: 1 });
// can't find a single profile wiht this information available, but add for good measure
profile.measurements = query.content('//span[text()="Measurements"]/following-sibling::span');
profile.birthPlace = query.number('//span[text()="Birth Place"]/following-sibling::span');
profile.measurements = query.content('//span[text()="Measurements"]/following-sibling::node()[self::span or self::text()]');
profile.birthPlace = query.content('//span[text()="Birth Place"]/following-sibling::node()[self::span or self::text()]');
profile.banner = query.img('div[class*="banner"] > img');
profile.photos = query.imgs('#MusModelSwiper img');

View File

@@ -121,7 +121,7 @@ module.exports = {
cumlouder,
czechav,
pornworld,
// delphine: modelmedia,
delphine: modelmedia,
dorcel,
elegantangel: adultempire,
exploitedx,

View File

@@ -215,6 +215,7 @@ const actors = [
// model media
{ entity: 'jerkaoke', name: 'Harley Haze', fields: ['avatar', 'description', 'height', 'weight', 'banner', 'photos'] },
{ entity: 'modelmediaasia', name: 'Li WeiWei', fields: ['avatar', 'entryId', 'gender', 'alias', 'height', 'weight', 'bust', 'waist', 'hip', 'socials'] },
{ entity: 'delphine', name: 'Bridgette B', fields: ['avatar', 'measurements', 'birthPlace'] },
// etc.
{ entity: 'analvids', name: 'Veronica Leal', fields: ['avatar', 'gender', 'birthCountry', 'nationality', 'age', 'aliases', 'nationality'] },
{ entity: 'bangbros', name: 'Kira Perez', fields: ['avatar', 'gender', 'ethnicity', 'hairColor'] },