diff --git a/public/img/logos/metrohd/devianthardcore.png b/public/img/logos/metrohd/devianthardcore.png new file mode 100644 index 00000000..f95ec806 Binary files /dev/null and b/public/img/logos/metrohd/devianthardcore.png differ diff --git a/public/img/logos/metrohd/familyhookups.png b/public/img/logos/metrohd/familyhookups.png new file mode 100644 index 00000000..9d613b3f Binary files /dev/null and b/public/img/logos/metrohd/familyhookups.png differ diff --git a/public/img/logos/metrohd/favicon.png b/public/img/logos/metrohd/favicon.png new file mode 100644 index 00000000..d8bcc708 Binary files /dev/null and b/public/img/logos/metrohd/favicon.png differ diff --git a/public/img/logos/metrohd/girlgrind.png b/public/img/logos/metrohd/girlgrind.png new file mode 100644 index 00000000..1f576327 Binary files /dev/null and b/public/img/logos/metrohd/girlgrind.png differ diff --git a/public/img/logos/metrohd/kinkyspa.png b/public/img/logos/metrohd/kinkyspa.png new file mode 100644 index 00000000..e86fa525 Binary files /dev/null and b/public/img/logos/metrohd/kinkyspa.png differ diff --git a/public/img/logos/metrohd/network.png b/public/img/logos/metrohd/network.png new file mode 100644 index 00000000..bb6d628e Binary files /dev/null and b/public/img/logos/metrohd/network.png differ diff --git a/public/img/logos/metrohd/shewillcheat.png b/public/img/logos/metrohd/shewillcheat.png new file mode 100644 index 00000000..04622f9b Binary files /dev/null and b/public/img/logos/metrohd/shewillcheat.png differ diff --git a/public/img/tags/facefucking/0.jpeg b/public/img/tags/facefucking/0.jpeg new file mode 100644 index 00000000..d2cffae8 Binary files /dev/null and b/public/img/tags/facefucking/0.jpeg differ diff --git a/public/img/tags/facefucking/0_thumb.jpeg b/public/img/tags/facefucking/0_thumb.jpeg new file mode 100644 index 00000000..c628ce69 Binary files /dev/null and b/public/img/tags/facefucking/0_thumb.jpeg differ diff --git a/public/img/tags/facefucking/1.jpeg b/public/img/tags/facefucking/1.jpeg new file mode 100644 index 00000000..e3920916 Binary files /dev/null and b/public/img/tags/facefucking/1.jpeg differ diff --git a/public/img/tags/facefucking/1_thumb.jpeg b/public/img/tags/facefucking/1_thumb.jpeg new file mode 100644 index 00000000..30ecc6da Binary files /dev/null and b/public/img/tags/facefucking/1_thumb.jpeg differ diff --git a/seeds/00_networks.js b/seeds/00_networks.js index f46962c2..9fb4f863 100644 --- a/seeds/00_networks.js +++ b/seeds/00_networks.js @@ -48,6 +48,12 @@ const networks = [ url: 'https://www.digitalplayground.com', description: 'DigitalPlayground.com is the leader in high quality adult blockbuster movies and award winning sex parodies that feature the most exclusive pornstars online! Adult Film Database of adult movies.', }, + { + slug: 'metrohd', + name: 'Metro HD', + url: 'https://www.metrohd.com', + description: 'Checkout MetroHD official pornsite featuring top rated pornstars and XXX videos.', + }, { slug: 'dogfartnetwork', name: 'Dogfart Network', diff --git a/seeds/01_sites.js b/seeds/01_sites.js index 34ca401d..4bf4e951 100644 --- a/seeds/01_sites.js +++ b/seeds/01_sites.js @@ -1602,6 +1602,48 @@ function getSites(networksMap) { parameters: JSON.stringify({ independent: true }), network_id: networksMap.legalporno, }, + // METRO HD + { + slug: 'devianthardcore', + name: 'Deviant Hardcore', + url: 'https://www.devianthardcore.com', + description: '', + parameters: JSON.stringify({ siteId: 305 }), + network_id: networksMap.metrohd, + }, + { + slug: 'shewillcheat', + name: 'She Will Cheat', + url: 'https://www.shewillcheat.com', + description: '', + parameters: JSON.stringify({ siteId: 306 }), + network_id: networksMap.metrohd, + }, + { + slug: 'familyhookups', + name: 'Family Hookups', + url: 'https://www.familyhookups.com', + description: '', + parameters: JSON.stringify({ siteId: 307 }), + network_id: networksMap.metrohd, + }, + { + slug: 'kinkyspa', + name: 'Kinky Spa', + url: 'https://www.kinkyspa.com', + description: '', + parameters: JSON.stringify({ siteId: 308 }), + network_id: networksMap.metrohd, + }, + { + slug: 'girlgrind', + name: 'Girl Grind', + url: 'https://www.girlgrind.com', + description: '', + parameters: JSON.stringify({ siteId: 309 }), + network_id: networksMap.metrohd, + }, + // MIKE ADRIANO { slug: 'trueanal', name: 'True Anal', diff --git a/seeds/03_tags.js b/seeds/03_tags.js index 32d83749..e1952e4c 100644 --- a/seeds/03_tags.js +++ b/seeds/03_tags.js @@ -138,7 +138,7 @@ function getTags(groupsMap) { name: 'ass to mouth', slug: 'ass-to-mouth', priority: 6, - description: 'Sucking off a cock right after anal, giving your own or someone else`s asshole a second hand taste.', + description: 'Sucking off a cock right after anal, giving your own or someone else\'s asshole a second hand taste.', alias_for: null, group_id: groupsMap.oral, }, @@ -1617,12 +1617,16 @@ function getSiteTags() { cum4k: ['fake-cum', 'creampie', '4k'], darkx: ['interracial'], deepthroatlove: ['blowjob', 'deepthroat'], + devianthardcore: ['bdsm'], divinebitches: ['femdom'], dpparodies: ['parody'], eighteenyearsold: ['teen'], exotic4k: ['4k'], + familyhookups: ['family'], familystrokes: ['family'], givemepink: ['solo', 'masturbation'], + girlgrind: ['lesbian'], + kinkyspa: ['massage'], lesbianx: ['lesbian'], lubed: ['oil'], massagecreep: ['massage'], diff --git a/seeds/04_media.js b/seeds/04_media.js index 0a866468..d229b451 100644 --- a/seeds/04_media.js +++ b/seeds/04_media.js @@ -19,8 +19,9 @@ const tagPosters = Object.entries({ creampie: ['poster'], ebony: [1, 'Sarah Banks for Brazzers'], facial: ['poster'], + facefucking: ['1', 'Carrie for Young Throats'], gangbang: ['poster', 'Kristen Scott in "Interracial Gangbang!" for Jules Jordan'], - gaping: ['poster', 'Paulina in "Anal Buffet 4" for Evil Angel'], + gaping: [0, 'McKenzee Miles in "Anal Buffet 4" for Evil Angel'], interracial: ['poster'], latina: ['poster'], mff: ['poster'], @@ -54,11 +55,11 @@ const tagPhotos = [ ['double-penetration', 0], ['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'], ['gangbang', 0, '"4 On 1 Gangbangs" for Doghouse Digital'], ['gangbang', 1, 'Ginger Lynn in "Gangbang Mystique", a photoset shot by Suze Randall for Puritan No. 10, 1984. This photo pushed the boundaries of pornography at the time, as depicting a woman \'fully occupied\' was unheard of.'], ['gangbang', 2, 'Riley Reid\'s double anal in "The Gangbang of Riley Reid" for Jules Jordan'], - ['gaping', 3, 'Kelsi Monroe in "Brazzers House 2, Day 2" for Brazzers'], - ['gaping', 0, 'McKenzee Miles in "Anal Buffet 4" for Evil Angel'], + ['gaping', 'poster', 'Paulina in "Anal Buffet 4" for Evil Angel'], ['trainbang', 0, 'Nicole Black in GIO971 for LegalPorno'], ['triple-anal', 1, 'Natasha Teen in SZ2098 for LegalPorno'], ['triple-anal', 2, 'Kira Thorn in GIO1018 for LegalPorno'], diff --git a/src/scrapers/metrohd.js b/src/scrapers/metrohd.js new file mode 100644 index 00000000..4fa60928 --- /dev/null +++ b/src/scrapers/metrohd.js @@ -0,0 +1,13 @@ +'use strict'; + +const { fetchScene, fetchLatest, fetchProfile } = require('./mindgeek'); + +async function networkFetchProfile(actorName) { + return fetchProfile(actorName, 'devianthardcore'); +} + +module.exports = { + fetchLatest, + fetchProfile: networkFetchProfile, + fetchScene, +}; diff --git a/src/scrapers/mindgeek.js b/src/scrapers/mindgeek.js index 92d3a93f..0d092ca3 100644 --- a/src/scrapers/mindgeek.js +++ b/src/scrapers/mindgeek.js @@ -138,11 +138,11 @@ function scrapeProfile(data, html) { if (data.height) profile.height = inchesToCm(data.height); if (data.weight) profile.weight = lbsToKg(data.weight); - profile.avatar = data.images.card_main_rect[0].xl?.url - || data.images.card_main_rect[0].lg?.url - || data.images.card_main_rect[0].md?.url - || data.images.card_main_rect[0].sm?.url - || data.images.card_main_rect[0].xs?.url; + profile.avatar = data.images.card_main_rect?.[0].xl?.url + || data.images.card_main_rect?.[0].lg?.url + || data.images.card_main_rect?.[0].md?.url + || data.images.card_main_rect?.[0].sm?.url + || data.images.card_main_rect?.[0].xs?.url; const birthdate = qa('li').find(el => /Date of Birth/.test(el.textContent)); if (birthdate) profile.birthdate = qd(birthdate, 'span', 'MMMM Do, YYYY'); diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index 1183292e..e82bb279 100644 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -25,6 +25,7 @@ const vogov = require('./vogov'); const blowpass = require('./blowpass'); const brazzers = require('./brazzers'); const ddfnetwork = require('./ddfnetwork'); +const metrohd = require('./metrohd'); const evilangel = require('./evilangel'); const julesjordan = require('./julesjordan'); const kellymadison = require('./kellymadison'); @@ -48,6 +49,7 @@ module.exports = { blowpass, brazzers, ddfnetwork, + metrohd, digitalplayground, dogfart, dogfartnetwork: dogfart, @@ -83,6 +85,7 @@ module.exports = { digitalplayground, fakehub, babes, + metrohd, milehighmedia, julesjordan, brazzers,