diff --git a/public/img/logos/mindgeek/favicon.png b/public/img/logos/mindgeek/favicon.png index 15667be4..44e7f0d0 100644 Binary files a/public/img/logos/mindgeek/favicon.png and b/public/img/logos/mindgeek/favicon.png differ diff --git a/public/img/logos/mindgeek/network.png b/public/img/logos/mindgeek/network.png index cdecc81a..14d9833d 100644 Binary files a/public/img/logos/mindgeek/network.png and b/public/img/logos/mindgeek/network.png differ diff --git a/public/img/logos/mindgeek/transangels.png b/public/img/logos/mindgeek/transangels.png index 73a25a79..3b7f87db 100644 Binary files a/public/img/logos/mindgeek/transangels.png and b/public/img/logos/mindgeek/transangels.png differ diff --git a/public/img/logos/mindgeek/trueamateurs.png b/public/img/logos/mindgeek/trueamateurs.png new file mode 100644 index 00000000..dc8c0b0e Binary files /dev/null and b/public/img/logos/mindgeek/trueamateurs.png differ diff --git a/public/img/logos/mindgeek/tube8vip.png b/public/img/logos/mindgeek/tube8vip.png index 00e9e094..14efc2a1 100644 Binary files a/public/img/logos/mindgeek/tube8vip.png and b/public/img/logos/mindgeek/tube8vip.png differ diff --git a/public/img/logos/realitykings/40inchplus.png b/public/img/logos/realitykings/40inchplus.png index 7a1d123f..67bd0892 100644 Binary files a/public/img/logos/realitykings/40inchplus.png and b/public/img/logos/realitykings/40inchplus.png differ diff --git a/public/img/logos/realitykings/8thstreetlatinas.png b/public/img/logos/realitykings/8thstreetlatinas.png index 007f5f4d..d600c513 100644 Binary files a/public/img/logos/realitykings/8thstreetlatinas.png and b/public/img/logos/realitykings/8thstreetlatinas.png differ diff --git a/public/img/logos/realitykings/badtowtruck.png b/public/img/logos/realitykings/badtowtruck.png index d2034b88..145cafbc 100644 Binary files a/public/img/logos/realitykings/badtowtruck.png and b/public/img/logos/realitykings/badtowtruck.png differ diff --git a/public/img/logos/realitykings/bignaturals.png b/public/img/logos/realitykings/bignaturals.png index 044dac65..4b07b5b9 100644 Binary files a/public/img/logos/realitykings/bignaturals.png and b/public/img/logos/realitykings/bignaturals.png differ diff --git a/public/img/logos/realitykings/bigtitsboss.png b/public/img/logos/realitykings/bigtitsboss.png index 47baa03f..c36f95e0 100644 Binary files a/public/img/logos/realitykings/bigtitsboss.png and b/public/img/logos/realitykings/bigtitsboss.png differ diff --git a/public/img/logos/realitykings/bikinicrashers.png b/public/img/logos/realitykings/bikinicrashers.png index 0da72a8d..9a835010 100644 Binary files a/public/img/logos/realitykings/bikinicrashers.png and b/public/img/logos/realitykings/bikinicrashers.png differ diff --git a/public/img/logos/realitykings/blackgfs.png b/public/img/logos/realitykings/blackgfs.png index 40719379..8a766723 100644 Binary files a/public/img/logos/realitykings/blackgfs.png and b/public/img/logos/realitykings/blackgfs.png differ diff --git a/public/img/logos/realitykings/captainstabbin.png b/public/img/logos/realitykings/captainstabbin.png index c0896915..313f206b 100644 Binary files a/public/img/logos/realitykings/captainstabbin.png and b/public/img/logos/realitykings/captainstabbin.png differ diff --git a/public/img/logos/realitykings/cfnmsecret.png b/public/img/logos/realitykings/cfnmsecret.png index 90db0ded..27f5e609 100644 Binary files a/public/img/logos/realitykings/cfnmsecret.png and b/public/img/logos/realitykings/cfnmsecret.png differ diff --git a/public/img/logos/realitykings/crazyasiangfs.png b/public/img/logos/realitykings/crazyasiangfs.png index b3230822..df70f0ed 100644 Binary files a/public/img/logos/realitykings/crazyasiangfs.png and b/public/img/logos/realitykings/crazyasiangfs.png differ diff --git a/public/img/logos/realitykings/crazycollegegfs.png b/public/img/logos/realitykings/crazycollegegfs.png index 54d3c061..b589bea3 100644 Binary files a/public/img/logos/realitykings/crazycollegegfs.png and b/public/img/logos/realitykings/crazycollegegfs.png differ diff --git a/public/img/logos/realitykings/cumfiesta.png b/public/img/logos/realitykings/cumfiesta.png index e56e1f7a..815d7955 100644 Binary files a/public/img/logos/realitykings/cumfiesta.png and b/public/img/logos/realitykings/cumfiesta.png differ diff --git a/public/img/logos/realitykings/cumgirls.png b/public/img/logos/realitykings/cumgirls.png index ddf92372..9e60a60b 100644 Binary files a/public/img/logos/realitykings/cumgirls.png and b/public/img/logos/realitykings/cumgirls.png differ diff --git a/public/img/logos/realitykings/dangerousdongs.png b/public/img/logos/realitykings/dangerousdongs.png index 58835861..f59006a5 100644 Binary files a/public/img/logos/realitykings/dangerousdongs.png and b/public/img/logos/realitykings/dangerousdongs.png differ diff --git a/public/img/logos/realitykings/daredorm.png b/public/img/logos/realitykings/daredorm.png index 7af49461..72261ef6 100644 Binary files a/public/img/logos/realitykings/daredorm.png and b/public/img/logos/realitykings/daredorm.png differ diff --git a/public/img/logos/realitykings/eurosexparties.png b/public/img/logos/realitykings/eurosexparties.png index 02dc1aa4..d2574a80 100644 Binary files a/public/img/logos/realitykings/eurosexparties.png and b/public/img/logos/realitykings/eurosexparties.png differ diff --git a/public/img/logos/realitykings/extremeasses.png b/public/img/logos/realitykings/extremeasses.png index 986519b1..89ca8785 100644 Binary files a/public/img/logos/realitykings/extremeasses.png and b/public/img/logos/realitykings/extremeasses.png differ diff --git a/public/img/logos/realitykings/favicon.png b/public/img/logos/realitykings/favicon.png index ffe0fb38..2904f24f 100644 Binary files a/public/img/logos/realitykings/favicon.png and b/public/img/logos/realitykings/favicon.png differ diff --git a/public/img/logos/realitykings/firsttimeauditions.png b/public/img/logos/realitykings/firsttimeauditions.png index 3fa4d26e..e54fde1c 100644 Binary files a/public/img/logos/realitykings/firsttimeauditions.png and b/public/img/logos/realitykings/firsttimeauditions.png differ diff --git a/public/img/logos/realitykings/flowertucci.png b/public/img/logos/realitykings/flowertucci.png index d6284ac1..62e9ef16 100644 Binary files a/public/img/logos/realitykings/flowertucci.png and b/public/img/logos/realitykings/flowertucci.png differ diff --git a/public/img/logos/realitykings/gfrevenge.png b/public/img/logos/realitykings/gfrevenge.png index f71bc46f..85cb6497 100644 Binary files a/public/img/logos/realitykings/gfrevenge.png and b/public/img/logos/realitykings/gfrevenge.png differ diff --git a/public/img/logos/realitykings/happytugs.png b/public/img/logos/realitykings/happytugs.png index 2ca4192d..72415883 100644 Binary files a/public/img/logos/realitykings/happytugs.png and b/public/img/logos/realitykings/happytugs.png differ diff --git a/public/img/logos/realitykings/hdlove.png b/public/img/logos/realitykings/hdlove.png index d59c6220..24391904 100644 Binary files a/public/img/logos/realitykings/hdlove.png and b/public/img/logos/realitykings/hdlove.png differ diff --git a/public/img/logos/realitykings/hornybirds.png b/public/img/logos/realitykings/hornybirds.png index fad858f0..5d3a12a5 100644 Binary files a/public/img/logos/realitykings/hornybirds.png and b/public/img/logos/realitykings/hornybirds.png differ diff --git a/public/img/logos/realitykings/hotbush.png b/public/img/logos/realitykings/hotbush.png index 9ebf7128..9d364764 100644 Binary files a/public/img/logos/realitykings/hotbush.png and b/public/img/logos/realitykings/hotbush.png differ diff --git a/public/img/logos/realitykings/inthevip.png b/public/img/logos/realitykings/inthevip.png index 8562bc1f..a154b022 100644 Binary files a/public/img/logos/realitykings/inthevip.png and b/public/img/logos/realitykings/inthevip.png differ diff --git a/public/img/logos/realitykings/lilhumpers.png b/public/img/logos/realitykings/lilhumpers.png index d61af75b..bd5a16f3 100644 Binary files a/public/img/logos/realitykings/lilhumpers.png and b/public/img/logos/realitykings/lilhumpers.png differ diff --git a/public/img/logos/realitykings/lookathernow.png b/public/img/logos/realitykings/lookathernow.png index 2630773d..494757ee 100644 Binary files a/public/img/logos/realitykings/lookathernow.png and b/public/img/logos/realitykings/lookathernow.png differ diff --git a/public/img/logos/realitykings/mikeinbrazil.png b/public/img/logos/realitykings/mikeinbrazil.png index 2d1e18fb..463b5072 100644 Binary files a/public/img/logos/realitykings/mikeinbrazil.png and b/public/img/logos/realitykings/mikeinbrazil.png differ diff --git a/public/img/logos/realitykings/mikesapartment.png b/public/img/logos/realitykings/mikesapartment.png index 8fc5a94a..e17ab3cc 100644 Binary files a/public/img/logos/realitykings/mikesapartment.png and b/public/img/logos/realitykings/mikesapartment.png differ diff --git a/public/img/logos/realitykings/milfhunter.png b/public/img/logos/realitykings/milfhunter.png index 8475a161..34d1ce5c 100644 Binary files a/public/img/logos/realitykings/milfhunter.png and b/public/img/logos/realitykings/milfhunter.png differ diff --git a/public/img/logos/realitykings/misc/reality-kings_square.png b/public/img/logos/realitykings/misc/reality-kings_square.png new file mode 100644 index 00000000..a866c505 Binary files /dev/null and b/public/img/logos/realitykings/misc/reality-kings_square.png differ diff --git a/public/img/logos/realitykings/momsbangteens.png b/public/img/logos/realitykings/momsbangteens.png index 599b8540..a09a37f5 100644 Binary files a/public/img/logos/realitykings/momsbangteens.png and b/public/img/logos/realitykings/momsbangteens.png differ diff --git a/public/img/logos/realitykings/momslickteens.png b/public/img/logos/realitykings/momslickteens.png index 6a173bbf..1caae047 100644 Binary files a/public/img/logos/realitykings/momslickteens.png and b/public/img/logos/realitykings/momslickteens.png differ diff --git a/public/img/logos/realitykings/moneytalks.png b/public/img/logos/realitykings/moneytalks.png index 3c6598ee..fb84b962 100644 Binary files a/public/img/logos/realitykings/moneytalks.png and b/public/img/logos/realitykings/moneytalks.png differ diff --git a/public/img/logos/realitykings/monstercurves.png b/public/img/logos/realitykings/monstercurves.png index e5b44de7..9c41c0c4 100644 Binary files a/public/img/logos/realitykings/monstercurves.png and b/public/img/logos/realitykings/monstercurves.png differ diff --git a/public/img/logos/realitykings/network.png b/public/img/logos/realitykings/network.png index a866c505..82a82e6e 100644 Binary files a/public/img/logos/realitykings/network.png and b/public/img/logos/realitykings/network.png differ diff --git a/public/img/logos/realitykings/nofaces.png b/public/img/logos/realitykings/nofaces.png index d387d8ed..63542552 100644 Binary files a/public/img/logos/realitykings/nofaces.png and b/public/img/logos/realitykings/nofaces.png differ diff --git a/public/img/logos/realitykings/pure18.png b/public/img/logos/realitykings/pure18.png index 9679ea9f..7348a678 100644 Binary files a/public/img/logos/realitykings/pure18.png and b/public/img/logos/realitykings/pure18.png differ diff --git a/public/img/logos/realitykings/realorgasms.png b/public/img/logos/realitykings/realorgasms.png index a8ee9c8f..fcf42ba6 100644 Binary files a/public/img/logos/realitykings/realorgasms.png and b/public/img/logos/realitykings/realorgasms.png differ diff --git a/public/img/logos/realitykings/recklessinmiami.png b/public/img/logos/realitykings/recklessinmiami.png index 12f52fa5..187570ac 100644 Binary files a/public/img/logos/realitykings/recklessinmiami.png and b/public/img/logos/realitykings/recklessinmiami.png differ diff --git a/public/img/logos/realitykings/rkprime.png b/public/img/logos/realitykings/rkprime.png index 0509f35e..6a8bd3b1 100644 Binary files a/public/img/logos/realitykings/rkprime.png and b/public/img/logos/realitykings/rkprime.png differ diff --git a/public/img/logos/realitykings/roundandbrown.png b/public/img/logos/realitykings/roundandbrown.png index 96b4774d..4f99cab6 100644 Binary files a/public/img/logos/realitykings/roundandbrown.png and b/public/img/logos/realitykings/roundandbrown.png differ diff --git a/public/img/logos/realitykings/sneakysex.png b/public/img/logos/realitykings/sneakysex.png index de2a95f2..a8fdca8b 100644 Binary files a/public/img/logos/realitykings/sneakysex.png and b/public/img/logos/realitykings/sneakysex.png differ diff --git a/public/img/logos/realitykings/streetblowjobs.png b/public/img/logos/realitykings/streetblowjobs.png index 900bd4d8..d3275888 100644 Binary files a/public/img/logos/realitykings/streetblowjobs.png and b/public/img/logos/realitykings/streetblowjobs.png differ diff --git a/public/img/logos/realitykings/teenslovehugecocks.png b/public/img/logos/realitykings/teenslovehugecocks.png index 388f13be..fff590b9 100644 Binary files a/public/img/logos/realitykings/teenslovehugecocks.png and b/public/img/logos/realitykings/teenslovehugecocks.png differ diff --git a/public/img/logos/realitykings/topshelfpussy.png b/public/img/logos/realitykings/topshelfpussy.png index 5d3e04d1..6ed83fb9 100644 Binary files a/public/img/logos/realitykings/topshelfpussy.png and b/public/img/logos/realitykings/topshelfpussy.png differ diff --git a/public/img/logos/realitykings/trannysurprise.png b/public/img/logos/realitykings/trannysurprise.png index 185e1bf9..5e69150d 100644 Binary files a/public/img/logos/realitykings/trannysurprise.png and b/public/img/logos/realitykings/trannysurprise.png differ diff --git a/public/img/logos/realitykings/vipcrew.png b/public/img/logos/realitykings/vipcrew.png index 52b07897..19790069 100644 Binary files a/public/img/logos/realitykings/vipcrew.png and b/public/img/logos/realitykings/vipcrew.png differ diff --git a/public/img/logos/realitykings/welivetogether.png b/public/img/logos/realitykings/welivetogether.png index 25fe2e6d..ae490aa1 100644 Binary files a/public/img/logos/realitykings/welivetogether.png and b/public/img/logos/realitykings/welivetogether.png differ diff --git a/seeds/01_sites.js b/seeds/01_sites.js index 5d0589bc..c3803189 100644 --- a/seeds/01_sites.js +++ b/seeds/01_sites.js @@ -2097,6 +2097,14 @@ const sites = [ parameters: { native: true }, network: 'mindgeek', }, + { + slug: 'trueamateurs', + name: 'True Amateurs', + url: 'https://www.trueamateurs.com', + description: 'TrueAmateurs.com is the best homemade porn from real amateurs. Watch these real hot couples in our exclusive scenes.', + parameters: { native: true }, + network: 'mindgeek', + }, // MIKE ADRIANO { slug: 'trueanal', diff --git a/src/actors.js b/src/actors.js index 8bd677ba..112fa3f5 100644 --- a/src/actors.js +++ b/src/actors.js @@ -457,22 +457,20 @@ async function scrapeBasicActors() { } async function associateActors(mappedActors, releases) { - const actorMap = Object.keys(mappedActors).reduce((acc, actorName) => ({ ...acc, [actorName]: slugify(actorName) }), {}); - const [existingActorEntries, existingAssociationEntries] = await Promise.all([ knex('actors') - .whereIn('name', Object.keys(actorMap)) - .orWhereIn('slug', Object.values(actorMap)), + .whereIn('name', Object.values(mappedActors).map(actor => actor.name)) + .orWhereIn('slug', Object.keys(mappedActors)), knex('releases_actors').whereIn('release_id', releases.map(release => release.id)), ]); - const associations = await Promise.map(Object.entries(mappedActors), async ([actorName, releaseIds]) => { + const associations = await Promise.map(Object.entries(mappedActors), async ([actorSlug, actor]) => { try { - const actorEntry = existingActorEntries.find(actor => actor.slug === actorMap[actorName]) - || await storeActor({ name: actorName }); + const actorEntry = existingActorEntries.find(actorX => actorX.slug === actorSlug) + || await storeActor(actor); // if a scene - return Array.from(releaseIds) + return Array.from(actor.releaseIds) .map(releaseId => ({ release_id: releaseId, actor_id: actorEntry.id, @@ -482,7 +480,7 @@ async function associateActors(mappedActors, releases) { .some(associationEntry => associationEntry.actor_id === association.actor_id && associationEntry.release_id === association.release_id)); } catch (error) { - logger.error(actorName, error); + logger.error(actor.name, error); return null; } }); diff --git a/src/releases.js b/src/releases.js index 40a6527c..1306e9cc 100644 --- a/src/releases.js +++ b/src/releases.js @@ -289,9 +289,18 @@ function accumulateActors(releases) { release.actors.forEach((actor) => { const actorName = actor.name ? actor.name.trim() : actor.trim(); + const actorSlug = slugify(actorName); - if (!acc[actorName]) acc[actorName] = new Set(); - acc[actorName].add(release.id); + if (!acc[actorSlug]) { + acc[actorSlug] = { + name: actorName, + slug: actorSlug, + releaseIds: new Set(), + }; + } + + if (actor.name) acc[actorSlug] = { ...acc[actorSlug], ...actor }; // actor input contains profile info + acc[actorSlug].releaseIds.add(release.id); }); return acc; diff --git a/src/scrapers/bang.js b/src/scrapers/bang.js index e8a8d3fa..c1c43fb6 100644 --- a/src/scrapers/bang.js +++ b/src/scrapers/bang.js @@ -7,6 +7,11 @@ const slugify = require('../utils/slugify'); const clusterId = '617fb597b659459bafe6472470d9073a'; const authKey = 'YmFuZy1yZWFkOktqVDN0RzJacmQ1TFNRazI='; +const genderMap = { + M: 'male', + F: 'female', +}; + function getScreenUrl(item, scene) { return `https://i.bang.com/screenshots/${scene.dvd.id}/movie/${scene.order}/${item.screenId}.jpg`; } @@ -37,7 +42,6 @@ function scrapeScene(scene, site) { entryId: scene.id, title: scene.name, description: scene.description, - actors: scene.actors.map(actor => actor.name), tags: scene.genres.concat(scene.actions).map(genre => genre.name), duration: scene.duration, }; @@ -48,6 +52,8 @@ function scrapeScene(scene, site) { const date = new Date(scene.releaseDate); release.date = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate())); + release.actors = scene.actors.map(actor => ({ name: actor.name, gender: genderMap[actor.gender] })); + if (scene.is4k) release.tags.push('4k'); if (scene.gay) release.tags.push('gay'); diff --git a/src/scrapers/gamma.js b/src/scrapers/gamma.js index 05862ce4..17978e46 100644 --- a/src/scrapers/gamma.js +++ b/src/scrapers/gamma.js @@ -106,7 +106,7 @@ async function scrapeApiReleases(json, site) { else if (site.parameters?.scene !== false) release.url = `${site.url}/en/video${release.path}`; release.date = moment.utc(scene.release_date, 'YYYY-MM-DD').toDate(); - release.actors = scene.actors.map(({ name }) => name); + release.actors = scene.actors.map(actor => ({ name: actor.name, gender: actor.gender })); release.director = scene.directors[0]?.name || null; release.tags = scene.master_categories @@ -198,15 +198,21 @@ async function scrapeScene(html, url, site, scrapedRelease) { if (data.director?.[0]?.name) release.director = data.director[0].name; else if (data2?.director?.[0]?.name) release.director = data2.director[0].name; - const actors = data?.actor || data2?.actor || []; - release.actors = actors.map(actor => actor.name); - const stars = (data.aggregateRating.ratingValue / data.aggregateRating.bestRating) * 5; if (stars) release.rating = { stars }; release.duration = moment.duration(data.duration.slice(2)).asSeconds(); } + const actors = data?.actor || data2?.actor; + + if (actors) { + release.actors = actors.map(actor => ({ + name: actor.name, + gender: actor.gender, + })); + } + const hasTrans = release.actors.some(actor => actor.gender === 'shemale'); const rawTags = data?.keywords?.split(', ') || data2?.keywords?.split(', '); release.tags = hasTrans ? [...rawTags, 'transsexual'] : rawTags; @@ -440,7 +446,7 @@ async function fetchUpcoming(site) { } function getDeepUrl(url, site, release) { - const pathname = release.path || new URL(url).pathname; + const pathname = release?.path || new URL(url).pathname; if (site.parameters?.deep === 'network') { return `${site.network.url}${pathname}`; diff --git a/src/scrapers/mindgeek.js b/src/scrapers/mindgeek.js index 5cfa4e77..1fd8526d 100644 --- a/src/scrapers/mindgeek.js +++ b/src/scrapers/mindgeek.js @@ -40,7 +40,7 @@ function scrapeLatestX(data, site) { const hostname = site.parameters?.native ? site.url : site.network.url; const url = `${hostname}/scene/${entryId}/`; const date = new Date(data.dateReleased); - const actors = data.actors.map(actor => actor.name); + const actors = data.actors.map(actor => ({ name: actor.name, gender: actor.gender })); const tags = data.tags.map(tag => tag.name); @@ -83,7 +83,7 @@ function scrapeScene(data, url, _site, networkName) { release.description = description; release.date = new Date(data.dateReleased); - release.actors = data.actors.map(actor => actor.name); + release.actors = data.actors.map(actor => ({ name: actor.name, gender: actor.gender })); release.tags = data.tags.map(tag => tag.name); diff --git a/src/scrapers/realitykings.js b/src/scrapers/realitykings.js index c1b552a2..0b98badc 100644 --- a/src/scrapers/realitykings.js +++ b/src/scrapers/realitykings.js @@ -34,7 +34,7 @@ async function fetchClassic(site, page) { } async function fetchLatestWrap(site, page = 1) { - if (site.parameters && site.parameters.classic) { + if (site.parameters?.classic) { return fetchClassic(site, page); }