Compare commits
3 Commits
61b8f62221
...
e6de8f0f9a
Author | SHA1 | Date |
---|---|---|
|
e6de8f0f9a | |
|
cc83b832f1 | |
|
6ed02933a6 |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.145.1",
|
"version": "1.145.2",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.145.1",
|
"version": "1.145.2",
|
||||||
"description": "All the latest porn releases in one place",
|
"description": "All the latest porn releases in one place",
|
||||||
"main": "src/app.js",
|
"main": "src/app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
After Width: | Height: | Size: 432 KiB |
After Width: | Height: | Size: 459 KiB |
After Width: | Height: | Size: 417 KiB |
After Width: | Height: | Size: 356 KiB |
After Width: | Height: | Size: 377 KiB |
After Width: | Height: | Size: 411 KiB |
After Width: | Height: | Size: 458 KiB |
After Width: | Height: | Size: 415 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 7.9 KiB |
After Width: | Height: | Size: 8.1 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 699 KiB |
After Width: | Height: | Size: 699 KiB |
After Width: | Height: | Size: 706 KiB |
After Width: | Height: | Size: 708 KiB |
After Width: | Height: | Size: 821 KiB |
After Width: | Height: | Size: 682 KiB |
After Width: | Height: | Size: 843 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 33 KiB |
|
@ -801,6 +801,8 @@ const tagPhotos = [
|
||||||
['fake-boobs', 16, 'Marsha May in "Once You Go Black 7" for Jules Jordan'],
|
['fake-boobs', 16, 'Marsha May in "Once You Go Black 7" for Jules Jordan'],
|
||||||
['fake-boobs', 9, 'Putri Cinta for Watch 4 Beauty'],
|
['fake-boobs', 9, 'Putri Cinta for Watch 4 Beauty'],
|
||||||
['fake-boobs', 3, 'Ashly Anderson for Passion HD'],
|
['fake-boobs', 3, 'Ashly Anderson for Passion HD'],
|
||||||
|
['fake-boobs', 22, 'Sakura Sena'],
|
||||||
|
['fake-boobs', 23, 'Lulu Sex Bomb in "Tropical Touch"'],
|
||||||
['fake-boobs', 21, 'Emelie Ekström'],
|
['fake-boobs', 21, 'Emelie Ekström'],
|
||||||
['fake-boobs', 10, 'Tia Cyrus in "Titty-Fucked Yoga Goddess" for Latina Sex Tapes'],
|
['fake-boobs', 10, 'Tia Cyrus in "Titty-Fucked Yoga Goddess" for Latina Sex Tapes'],
|
||||||
['fake-boobs', 20, 'Chloe Lamour for DDF Busty'],
|
['fake-boobs', 20, 'Chloe Lamour for DDF Busty'],
|
||||||
|
|
|
@ -290,7 +290,7 @@ function curateProfileEntry(profile) {
|
||||||
return curatedProfileEntry;
|
return curatedProfileEntry;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function curateProfile(profile) {
|
async function curateProfile(profile, actor) {
|
||||||
if (!profile) {
|
if (!profile) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -404,7 +404,18 @@ async function curateProfile(profile) {
|
||||||
}).filter(Boolean)
|
}).filter(Boolean)
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
curatedProfile.scenes = toBaseReleases(profile.scenes || profile.releases, profile.entity);
|
curatedProfile.scenes = toBaseReleases(profile.scenes || profile.releases, profile.entity, actor)
|
||||||
|
// attach actor to base scene, in case it was not scraped
|
||||||
|
.map((scene) => {
|
||||||
|
if (actor && !scene.actors?.find(sceneActor => slugify(sceneActor) === actor.slug || slugify(sceneActor.name) === actor.slug)) {
|
||||||
|
return {
|
||||||
|
...scene,
|
||||||
|
actors: [actor, ...(scene.actors || [])],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return scene;
|
||||||
|
});
|
||||||
|
|
||||||
if (profile.ethnicity && !curatedProfile.ethnicity) logger.warn(`Unrecognized ethnicity returned by '${profile.entity.name}' scraper: ${profile.ethnicity}`);
|
if (profile.ethnicity && !curatedProfile.ethnicity) logger.warn(`Unrecognized ethnicity returned by '${profile.entity.name}' scraper: ${profile.ethnicity}`);
|
||||||
if ((profile.hairColor || profile.hair) && !curatedProfile.hairColor) logger.warn(`Unrecognized hair color returned by '${profile.entity.name}' scraper: ${profile.hairColor || profile.hair}`);
|
if ((profile.hairColor || profile.hair) && !curatedProfile.hairColor) logger.warn(`Unrecognized hair color returned by '${profile.entity.name}' scraper: ${profile.hairColor || profile.hair}`);
|
||||||
|
@ -617,7 +628,7 @@ async function scrapeProfiles(actor, sources, entitiesBySlug, existingProfilesBy
|
||||||
...profile,
|
...profile,
|
||||||
entity,
|
entity,
|
||||||
update: existingProfile?.id || false,
|
update: existingProfile?.id || false,
|
||||||
});
|
}, actor);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.code !== 'PROFILE_NOT_AVAILABLE') {
|
if (error.code !== 'PROFILE_NOT_AVAILABLE') {
|
||||||
logger.error(`Failed to fetch profile for '${actor.name}' from '${scraperSlug}': ${error.message}`);
|
logger.error(`Failed to fetch profile for '${actor.name}' from '${scraperSlug}': ${error.message}`);
|
||||||
|
|