From 0c4628677fd3f23e8ce26d834c0c89497e167041 Mon Sep 17 00:00:00 2001 From: Niels Simenon Date: Tue, 19 May 2020 01:10:32 +0200 Subject: [PATCH] Fixed profile location interpolation. Generalizing ethnicity, hair color and eye color. --- assets/components/actors/actor.vue | 20 +- assets/components/search/search.vue | 42 +- assets/img/icons/haircut.svg | 6 + assets/js/actors/actions.js | 2 + migrations/20190325001339_releases.js | 3 + .../logos/penthouse/misc/penthouse_basic.png | Bin 0 -> 12832 bytes .../penthouse/misc/penthouse_basic_dark.png | Bin 0 -> 19705 bytes .../penthouse/misc/penthouse_basic_red.png | Bin 0 -> 12880 bytes .../penthouse_light.png} | Bin .../logos/penthouse/misc/penthouse_red.png | Bin 0 -> 21995 bytes public/img/logos/penthouse/network.png | Bin 0 -> 15050 bytes seeds/05_countries.js | 3562 ++++++++--------- src/actors.js | 198 +- src/scrapers/julesjordan.js | 1 - src/scrapers/legalporno.js | 2 +- src/utils/slugify.js | 2 +- 16 files changed, 1976 insertions(+), 1862 deletions(-) create mode 100644 assets/img/icons/haircut.svg create mode 100644 public/img/logos/penthouse/misc/penthouse_basic.png create mode 100644 public/img/logos/penthouse/misc/penthouse_basic_dark.png create mode 100644 public/img/logos/penthouse/misc/penthouse_basic_red.png rename public/img/logos/penthouse/{penthouse.png => misc/penthouse_light.png} (100%) create mode 100644 public/img/logos/penthouse/misc/penthouse_red.png create mode 100644 public/img/logos/penthouse/network.png diff --git a/assets/components/actors/actor.vue b/assets/components/actors/actor.vue index 4225a419..90555cec 100644 --- a/assets/components/actors/actor.vue +++ b/assets/components/actors/actor.vue @@ -190,6 +190,22 @@ +
  • + Eyes + {{ actor.eyes }} +
  • + +
  • + Hair + {{ actor.hair }} +
  • +
  • Searching... -
    - Found {{ actors.length }} actors for '{{ query }}' + Found {{ actors.length }} actors for '{{ query }}' -
    - -
    +
    +
    -
    - Found {{ releases.length }} releases for '{{ query }}' + Found {{ releases.length }} releases for '{{ query }}' - -
    +
    diff --git a/assets/img/icons/haircut.svg b/assets/img/icons/haircut.svg new file mode 100644 index 00000000..08ec1060 --- /dev/null +++ b/assets/img/icons/haircut.svg @@ -0,0 +1,6 @@ + + +haircut + + + diff --git a/assets/js/actors/actions.js b/assets/js/actors/actions.js index ad73bef1..917626d4 100644 --- a/assets/js/actors/actions.js +++ b/assets/js/actors/actions.js @@ -47,6 +47,8 @@ function initActorActions(store, _router) { heightImperial: height(units:IMPERIAL) weightMetric: weight(units:METRIC) weightImperial: weight(units:IMPERIAL) + hair + eyes hasTattoos hasPiercings tattoos diff --git a/migrations/20190325001339_releases.js b/migrations/20190325001339_releases.js index fc059840..1d7fd38f 100644 --- a/migrations/20190325001339_releases.js +++ b/migrations/20190325001339_releases.js @@ -14,6 +14,7 @@ exports.up = knex => Promise.resolve() table.integer('code', 3); table.string('nationality'); + table.integer('priority', 2) .defaultTo(0); })) @@ -344,6 +345,8 @@ exports.up = knex => Promise.resolve() .inTable('sites'); table.unique(['actor_id', 'network_id', 'site_id']); + table.integer('priority', 4) + .defaultTo(1); table.string('real_name'); diff --git a/public/img/logos/penthouse/misc/penthouse_basic.png b/public/img/logos/penthouse/misc/penthouse_basic.png new file mode 100644 index 0000000000000000000000000000000000000000..82b2302ed35e997e4ee9c427f9e80d0b893a2a5e GIT binary patch literal 12832 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 lDP+J!^*fx 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 literal 0 HcmV?d00001 diff --git a/public/img/logos/penthouse/misc/penthouse_basic_red.png b/public/img/logos/penthouse/misc/penthouse_basic_red.png new file mode 100644 index 0000000000000000000000000000000000000000..282444fbf0c14bd9b93095a2395dfb6138c6463e GIT binary patch literal 12880 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 literal 0 HcmV?d00001 diff --git a/public/img/logos/penthouse/penthouse.png b/public/img/logos/penthouse/misc/penthouse_light.png similarity index 100% rename from public/img/logos/penthouse/penthouse.png rename to public/img/logos/penthouse/misc/penthouse_light.png diff --git a/public/img/logos/penthouse/misc/penthouse_red.png b/public/img/logos/penthouse/misc/penthouse_red.png new file mode 100644 index 0000000000000000000000000000000000000000..899b0597070548d559df1b325b165787a27ebba2 GIT binary patch literal 21995 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 literal 0 HcmV?d00001 diff --git a/public/img/logos/penthouse/network.png b/public/img/logos/penthouse/network.png new file mode 100644 index 0000000000000000000000000000000000000000..b4427e0a4e2f885ad8eaf19ea8ea9926ea0cfeb6 GIT binary patch literal 15050 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 E9|^{+eE knex('countries') - .then(async () => upsert('countries', countries, 'alpha2', knex)); + .then(async () => upsert('countries', countries, 'alpha2', knex)); diff --git a/src/actors.js b/src/actors.js index b5fe37b7..508dac36 100644 --- a/src/actors.js +++ b/src/actors.js @@ -20,11 +20,56 @@ const slugify = require('./utils/slugify'); const capitalize = require('./utils/capitalize'); const resolvePlace = require('./utils/resolve-place'); +const hairColors = { + 'jet-black': 'black', + 'red-head': 'red', + 'soft-black': 'black', + black: 'black', + blonde: 'blonde', + blondie: 'blonde', + brown: 'brown', + brunette: 'brown', + fair: 'blonde', + raven: 'black', + red: 'red', + redhead: 'red', +}; + +const eyeColors = { + blue: 'blue', + brown: 'brown', + dark: 'brown', + gray: 'gray', + green: 'green', + grey: 'gray', + hazel: 'hazel', +}; + +const ethnicities = { + 'african american': 'black', + 'african-american': 'black', + 'native american': 'native american', + african: 'black', + aravic: 'arabic', + asian: 'asian', + black: 'black', + caucasian: 'white', + european: 'white', + hispanic: 'latina', + indian: 'indian', + japanese: 'japanese', + latina: 'latina', + latino: 'latino', + white: 'white', +}; + function getMostFrequent(items) { const { mostFrequent } = items.reduce((acc, item) => { - acc.counts[item] = (acc.counts[item] || 0) + 1; + const slug = slugify(item); - if (!acc.mostFrequent || acc.counts[item] > acc.counts[acc.mostFrequent]) { + acc.counts[slug] = (acc.counts[slug] || 0) + 1; + + if (!acc.mostFrequent || acc.counts[slug] > acc.counts[slugify(acc.mostFrequent)]) { acc.mostFrequent = item; } @@ -144,9 +189,11 @@ async function curateProfile(profile) { curatedProfile.description = profile.description?.trim() || null; curatedProfile.nationality = profile.nationality?.trim() || null; // used to derive country when country not available - curatedProfile.ethnicity = profile.ethnicity?.trim() || null; - curatedProfile.hair = profile.hair?.trim() || null; - curatedProfile.eyes = profile.eyes?.trim() || null; + + curatedProfile.ethnicity = ethnicities[profile.ethnicity?.trim().toLowerCase()] || null; + curatedProfile.hair = hairColors[profile.hair?.trim().toLowerCase()] || null; + curatedProfile.eyes = eyeColors[profile.eyes?.trim().toLowerCase()] || null; + curatedProfile.tattoos = profile.tattoos?.trim() || null; curatedProfile.piercings = profile.piercings?.trim() || null; @@ -211,6 +258,10 @@ async function curateProfile(profile) { curatedProfile.releases = toBaseReleases(profile.releases); + if (profile.ethnicity && !curatedProfile.ethnicity) logger.warn(`Unrecognized ethnicity returned by '${profile.site?.name || profile.network?.slug}' scraper: ${profile.ethnicity}`); + if (profile.hair && !curatedProfile.hair) logger.warn(`Unrecognized hair color returned by '${profile.site?.name || profile.network?.slug}' scraper: ${profile.hair}`); + if (profile.eyes && !curatedProfile.eyes) logger.warn(`Unrecognized eye color returned by '${profile.site?.name || profile.network?.slug}' scraper: ${profile.eyes}`); + return curatedProfile; } catch (error) { logger.error(`Failed to curate '${profile.name}': ${error.message}`); @@ -234,15 +285,28 @@ async function interpolateProfiles(actors) { }), {}); const interpolatedProfiles = Object.entries(profilesByActorId).map(([actorId, actorProfiles]) => { + // group values from each profile const valuesByProperty = actorProfiles.reduce((acc, profile) => Object .entries(profile) .reduce((profileAcc, [property, value]) => ({ ...profileAcc, [property]: [ ...(acc[property] || []), - ...(value === null ? [] : [value]), + ...(value === null ? [] : Array.from({ length: profile.priority }, () => value)), // multiply by priority, increasing the odds of being the most frequent value ], - }), {}), {}); + }), { + // bundle location values so they can be assessed together, to ensure the most frequent city is in the most frequent state is in most frequent country + origin: [...acc.origin || [], { + ...(profile.birth_country_alpha2 && { country: profile.birth_country_alpha2 }), + ...(profile.birth_state && { state: profile.birth_state }), + ...(profile.birth_city && { city: profile.birth_city }), + }].filter(location => Object.keys(location).length > 0), + residence: [...acc.residence || [], { + ...(profile.residence_country_alpha2 && { country: profile.residence_country_alpha2 }), + ...(profile.residence_state && { state: profile.residence_state }), + ...(profile.residence_city && { city: profile.residence_city }), + }].filter(location => Object.keys(location).length > 0), + }), {}); const avatars = actorProfiles.map(profile => profile.avatar_media_id && ({ id: profile.avatar_media_id, @@ -251,39 +315,50 @@ async function interpolateProfiles(actors) { size: profile.avatar_size, })).filter(Boolean); + const mostFrequentValues = [ + 'gender', + 'ethnicity', + 'cup', + 'bust', + 'waist', + 'hip', + 'natural_boobs', + 'height', + 'hair', + 'eyes', + 'has_tattoos', + 'has_piercings', + ].reduce((acc, property) => ({ + ...acc, + [property]: getMostFrequent(valuesByProperty[property]), + }), {}); + const profile = { id: actorId, + ...mostFrequentValues, }; - profile.gender = getMostFrequent(valuesByProperty.gender); - profile.ethnicity = getMostFrequent(valuesByProperty.ethnicity.map(ethnicity => ethnicity.toLowerCase())); - profile.date_of_birth = getMostFrequentDate(valuesByProperty.date_of_birth); profile.date_of_death = getMostFrequentDate(valuesByProperty.date_of_death); - // TODO: fix city, state and country not matching - profile.birth_city = getMostFrequent(valuesByProperty.birth_city); - profile.birth_state = getMostFrequent(valuesByProperty.birth_state); - profile.birth_country_alpha2 = getMostFrequent(valuesByProperty.birth_country_alpha2); + // ensure most frequent country, city and state match up + profile.birth_country_alpha2 = getMostFrequent(valuesByProperty.origin.map(location => location.country)); + const remainingOriginCountries = valuesByProperty.origin.filter(location => location.country === profile.birth_country_alpha2); - profile.residence_city = getMostFrequent(valuesByProperty.residence_city); - profile.residence_state = getMostFrequent(valuesByProperty.residence_state); - profile.residence_country_alpha2 = getMostFrequent(valuesByProperty.residence_country_alpha2); + profile.birth_state = getMostFrequent(remainingOriginCountries.map(location => location.state)); + const remainingOriginStates = remainingOriginCountries.filter(location => !profile.birth_state || location.state === profile.birth_state); - profile.cup = getMostFrequent(valuesByProperty.cup); - profile.bust = getMostFrequent(valuesByProperty.bust); - profile.waist = getMostFrequent(valuesByProperty.waist); - profile.hip = getMostFrequent(valuesByProperty.hip); - profile.natural_boobs = getMostFrequent(valuesByProperty.natural_boobs); + profile.birth_city = getMostFrequent(remainingOriginStates.map(location => location.city)); - profile.hair = getMostFrequent(valuesByProperty.hair.map(hair => hair.toLowerCase())); - profile.eyes = getMostFrequent(valuesByProperty.eyes.map(eyes => eyes.toLowerCase())); + profile.residence_country_alpha2 = getMostFrequent(valuesByProperty.residence.map(location => location.country)); + const remainingResidenceCountries = valuesByProperty.residence.filter(location => location.country === profile.residence_country_alpha2); + + profile.residence_state = getMostFrequent(remainingResidenceCountries.map(location => location.state)); + const remainingResidenceStates = remainingResidenceCountries.filter(location => !profile.residence_state || location.state === profile.residence_state); + + profile.residence_city = getMostFrequent(remainingResidenceStates.map(location => location.city)); profile.weight = getAverage(valuesByProperty.weight); - profile.height = getMostFrequent(valuesByProperty.height); - - profile.has_tattoos = getMostFrequent(valuesByProperty.has_tattoos); - profile.has_piercings = getMostFrequent(valuesByProperty.has_piercings); profile.tattoos = getLongest(valuesByProperty.tattoos); profile.piercings = getLongest(valuesByProperty.piercings); @@ -366,38 +441,47 @@ async function upsertProfiles(profiles) { async function scrapeProfiles(actor, sources, networksBySlug, sitesBySlug) { const profiles = Promise.map(sources, async (source) => { try { + // config may group sources to try until success return await [].concat(source).reduce(async (outcome, scraperSlug) => outcome.catch(async () => { - const scraper = scrapers[scraperSlug]; - const context = { - site: sitesBySlug[scraperSlug] || null, - network: networksBySlug[scraperSlug] || sitesBySlug[scraperSlug]?.network || null, - scraper: scraperSlug, - }; + try { + const scraper = scrapers[scraperSlug]; + const context = { + site: sitesBySlug[scraperSlug] || null, + network: networksBySlug[scraperSlug] || sitesBySlug[scraperSlug]?.network || null, + scraper: scraperSlug, + }; - if (!scraper?.fetchProfile) { - logger.warn(`No profile profile scraper available for ${scraperSlug}`); - throw new Error(`No profile profile scraper available for ${scraperSlug}`); + if (!scraper?.fetchProfile) { + logger.warn(`No profile profile scraper available for ${scraperSlug}`); + throw new Error(`No profile profile scraper available for ${scraperSlug}`); + } + + if (!context.site && !context.network) { + logger.warn(`No site or network found for ${scraperSlug}`); + throw new Error(`No site or network found for ${scraperSlug}`); + } + + logger.verbose(`Searching profile for '${actor.name}' on '${scraperSlug}'`); + + const profile = await scraper.fetchProfile(actor.name, context, include); + + if (!profile || typeof profile === 'number') { // scraper returns HTTP code on request failure + logger.verbose(`Profile for '${actor.name}' not available on ${context.site?.name || context.network?.name || context.scraper}, scraper returned ${profile}`); + throw Object.assign(new Error(`Profile for '${actor.name}' not available on ${context.site?.name || context.network?.name || context.scraper}`), { code: 'PROFILE_NOT_AVAILABLE' }); + } + + return { + ...actor, + ...profile, + ...context, + }; + } catch (error) { + if (error.code !== 'PROFILE_NOT_AVAILABLE') { + logger.error(`Failed to fetch profile for '${actor.name}' from '${scraperSlug}': ${error.message}`); + } + + throw error; } - - if (!context.site && !context.network) { - logger.warn(`No site or network found for ${scraperSlug}`); - throw new Error(`No site or network found for ${scraperSlug}`); - } - - logger.verbose(`Searching profile for '${actor.name}' on '${scraperSlug}'`); - - const profile = await scraper.fetchProfile(actor.name, context, include); - - if (!profile || typeof profile === 'number') { // scraper returns HTTP code on request failure - logger.verbose(`Profile for '${actor.name}' not available on ${scraperSlug}, scraper returned ${profile}`); - throw Object.assign(new Error(`Profile for '${actor.name}' not available on ${scraperSlug}`), { code: 'PROFILE_NOT_AVAILABLE' }); - } - - return { - ...actor, - ...profile, - ...context, - }; }), Promise.reject(new Error())); } catch (error) { if (error.code !== 'PROFILE_NOT_AVAILABLE') { diff --git a/src/scrapers/julesjordan.js b/src/scrapers/julesjordan.js index 90b66cf2..fbb33af4 100644 --- a/src/scrapers/julesjordan.js +++ b/src/scrapers/julesjordan.js @@ -119,7 +119,6 @@ async function getPhotos(entryId, site, type = 'highres', page = 1) { } function getEntryId(html) { - // TODO: not working for https://www.julesjordan.com/members/scenes/jada-stevens-anal-ass-gets-oiled-up-for-james-deens-cock_vids.html const entryId = html.match(/showtagform\((\d+)\)/); if (entryId) { diff --git a/src/scrapers/legalporno.js b/src/scrapers/legalporno.js index eafe2481..acc2b24f 100644 --- a/src/scrapers/legalporno.js +++ b/src/scrapers/legalporno.js @@ -9,7 +9,7 @@ const slugify = require('../utils/slugify'); function extractTitle(originalTitle) { const titleComponents = originalTitle.split(' '); - const sceneIdMatch = titleComponents.slice(-1)[0].match(/(AB|AF|GP|SZ|IV|GIO|RS|TW|MA|FM|SAL|NR|AA|GL|BZ|FS|KS|OT)\d+/); // detect studio prefixes + const sceneIdMatch = titleComponents.slice(-1)[0].match(/(AB|AF|GP|SZ|IV|GIO|RS|TW|MA|FM|SAL|NR|AA|GL|BZ|FS|KS|OTS)\d+/); // detect studio prefixes const shootId = sceneIdMatch ? sceneIdMatch[0] : null; const title = sceneIdMatch ? titleComponents.slice(0, -1).join(' ') : originalTitle; diff --git a/src/utils/slugify.js b/src/utils/slugify.js index a14c76c5..c1e2f5c3 100644 --- a/src/utils/slugify.js +++ b/src/utils/slugify.js @@ -4,7 +4,7 @@ function slugify(string, delimiter = '-', { encode = false, limit = 1000, } = {}) { - if (!string) { + if (!string || typeof string !== 'string') { return string; }