diff --git a/public/img/tags/double-vaginal/0.jpeg b/public/img/tags/double-vaginal/0.jpeg new file mode 100644 index 00000000..c65c685a Binary files /dev/null and b/public/img/tags/double-vaginal/0.jpeg differ diff --git a/public/img/tags/double-vaginal/0_thumb.jpeg b/public/img/tags/double-vaginal/0_thumb.jpeg new file mode 100644 index 00000000..9f4281d0 Binary files /dev/null and b/public/img/tags/double-vaginal/0_thumb.jpeg differ diff --git a/seeds/04_media.js b/seeds/04_media.js index 1d462816..04771dfe 100644 --- a/seeds/04_media.js +++ b/seeds/04_media.js @@ -6,7 +6,7 @@ const tagPosters = Object.entries({ 'da-tp': [0, 'Natasha Teen in LegalPorno SZ2164'], 'double-anal': [2, 'Lana Rhoades in "Gangbang Me 3" for HardX'], 'double-penetration': ['poster', 'Mia Malkova in "DP!" for HardX'], - 'double-vaginal': ['poster'], + 'double-vaginal': [0, 'Aaliyah Hadid in "Squirting From Double Penetration With Anal" for Bang Bros'], 'dv-tp': ['poster', 'Juelz Ventura in "Gangbanged 5" for Elegant Angel'], 'oral-creampie': [1, 'Keisha Grey in Brazzers House'], 'triple-anal': ['poster', 'Kristy Black in SZ1986 for LegalPorno'], @@ -54,6 +54,7 @@ const tagPhotos = [ ['double-anal', 0, 'Nicole Black doing double anal during a gangbang in GIO971 for LegalPorno'], ['double-anal', 1, 'Ria Sunn in SZ1801 for LegalPorno'], ['double-penetration', 0], + ['double-vaginal', 'poster', 'Riley Reid in "Pizza That Ass" for Reid My Lips'], ['dv-tp', 1, 'Adriana Chechik in "Adriana\'s Triple Anal Penetration!"'], ['dv-tp', 0, 'Luna Rival in LegalPorno SZ1490'], ['facefucking', '0', 'Brea for Young Throats'], diff --git a/src/argv.js b/src/argv.js index 43eecf0c..b6981767 100644 --- a/src/argv.js +++ b/src/argv.js @@ -32,6 +32,7 @@ const { argv } = yargs .option('with-releases', { describe: 'Fetch all releases for an actor', type: 'boolean', + alias: 'with-scenes', default: false, }) .option('scene', { diff --git a/src/scrapers/naughtyamerica.js b/src/scrapers/naughtyamerica.js index 6fcb8ec6..fbc088c1 100644 --- a/src/scrapers/naughtyamerica.js +++ b/src/scrapers/naughtyamerica.js @@ -5,6 +5,9 @@ const bhttp = require('bhttp'); const cheerio = require('cheerio'); const moment = require('moment'); +const slugify = require('../utils/slugify'); +const { ex } = require('../utils/q'); + function titleExtractor(pathname) { const components = pathname.split('/')[2].split('-'); const entryId = components.slice(-1)[0]; @@ -48,7 +51,7 @@ function scrapeLatest(html, site) { }); } -async function scrapeScene(html, url, site) { +function scrapeScene(html, url, site) { const $ = cheerio.load(html, { normalizeWhitespace: true }); const sceneElement = $('.scene-info'); @@ -97,6 +100,20 @@ async function scrapeScene(html, url, site) { }; } +function scrapeProfile(html) { + const { q, qu } = ex(html); + const profile = {}; + + profile.description = q('.bio_about_text', true); + + const avatar = q('img.performer-pic', 'src'); + if (avatar) profile.avatar = `https:${avatar}`; + + profile.releases = qu('.scene-item > a:first-child'); + + return profile; +} + async function fetchLatest(site, page = 1) { const res = await bhttp.get(`${site.url}?page=${page}`); @@ -109,7 +126,20 @@ async function fetchScene(url, site) { return scrapeScene(res.body.toString(), url, site); } +async function fetchProfile(actorName) { + const actorSlug = slugify(actorName); + + const res = await bhttp.get(`https://www.naughtyamerica.com/pornstar/${actorSlug}`); + + if (res.statusCode === 200) { + return scrapeProfile(res.body.toString()); + } + + return null; +} + module.exports = { fetchLatest, fetchScene, + fetchProfile, }; diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index 14618356..055ba436 100644 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -17,7 +17,6 @@ const pornpros = require('./pornpros'); const privateNetwork = require('./private'); // reserved keyword const puretaboo = require('./puretaboo'); const mindgeek = require('./mindgeek'); -const naughtyamerica = require('./naughtyamerica'); const realitykings = require('./realitykings'); const teamskeet = require('./teamskeet'); const vixen = require('./vixen'); @@ -34,6 +33,7 @@ const legalporno = require('./legalporno'); const men = require('./men'); const metrohd = require('./metrohd'); const mofos = require('./mofos'); +const naughtyamerica = require('./naughtyamerica'); const twentyonesextury = require('./21sextury'); const xempire = require('./xempire'); @@ -89,6 +89,7 @@ module.exports = { mofos, realitykings, digitalplayground, + brazzers, fakehub, babes, metrohd, @@ -99,7 +100,7 @@ module.exports = { xempire, blowpass, julesjordan, - brazzers, + naughtyamerica, boobpedia, legalporno, kellymadison,