diff --git a/src/actors.js b/src/actors.js index 7af1d6fe..6f021b8a 100755 --- a/src/actors.js +++ b/src/actors.js @@ -33,6 +33,7 @@ const capitalize = require('./utils/capitalize'); const resolvePlace = require('./utils/resolve-place'); const { resolveLayoutScraper } = require('./scrapers/resolve'); const getRecursiveParameters = require('./utils/get-recursive-parameters'); +const dayjs = require('dayjs'); const hairColors = { 'jet-black': 'black', @@ -334,6 +335,32 @@ function curateProfileEntry(profile) { return curatedProfileEntry; } +/** + * @param {Date} birthDate + */ +function isAdult(birthDate) { + return dayjs(birthDate).diff(new Date(), "years") >= 18; +} + +/** + * Tries to parse gender from string, or null if not found + * + * @param {String} text + * @returns {String | null} + */ +function tryParseGender(text) { + if (/female/i.test(profile.gender)) { + return 'female'; + } + else if (/shemale|trans/i.test(profile.gender)) { + return 'transsexual'; + } + else if (/male/i.test(profile.gender)) { + return 'male'; + } + return null; +} + async function curateProfile(profile, actor) { if (!profile) { return null; @@ -367,15 +394,12 @@ async function curateProfile(profile, actor) { curatedProfile.tattoos = profile.tattoos?.trim() || null; curatedProfile.piercings = profile.piercings?.trim() || null; - curatedProfile.gender = (/female/i.test(profile.gender) && 'female') - || (/shemale|trans/i.test(profile.gender) && 'transsexual') - || (/male/i.test(profile.gender) && 'male') - || null; + curatedProfile.gender = tryParseGender(profile.gender); const dateOfBirth = profile.dateOfBirth || profile.birthdate; curatedProfile.dateOfBirth = (!Number.isNaN(Number(dateOfBirth)) // possibly valid date - && new Date() - dateOfBirth > 567648000000 // over 18 + && isAdult(dateOfBirth) // over 18 && dateOfBirth) || null;