Regarding layout parameters from parent and grandparent entities. Removed Evil Angel and Fantasy Massage scraper wrappers.
|
@ -115,11 +115,11 @@ export default {
|
||||||
|
|
||||||
.item-link {
|
.item-link {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
margin: 0 0 1rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0 0 1rem 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media(max-width: $breakpoint-kilo) {
|
@media(max-width: $breakpoint-kilo) {
|
||||||
|
|
|
@ -78,7 +78,9 @@ async function fetchReleases() {
|
||||||
this.hasMedia = this.tag.poster || this.tag.photos.length > 0;
|
this.hasMedia = this.tag.poster || this.tag.photos.length > 0;
|
||||||
this.description = this.tag.description && converter.makeHtml(escapeHtml(this.tag.description));
|
this.description = this.tag.description && converter.makeHtml(escapeHtml(this.tag.description));
|
||||||
|
|
||||||
this.$refs.filter.$el.scrollIntoView();
|
if (this.$refs.filter) {
|
||||||
|
this.$refs.filter.$el.scrollIntoView();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function mounted() {
|
async function mounted() {
|
||||||
|
|
After Width: | Height: | Size: 993 KiB |
After Width: | Height: | Size: 8.4 MiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 7.2 MiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 9.6 MiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 8.8 MiB |
After Width: | Height: | Size: 38 KiB |
|
@ -200,6 +200,9 @@ const networks = [
|
||||||
url: 'https://www.evilangel.com',
|
url: 'https://www.evilangel.com',
|
||||||
description: 'Welcome to the award winning Evil Angel website, home to the most popular pornstars of today, yesterday and tomorrow in their most extreme and hardcore porn scenes to date. We feature almost 30 years of rough sex videos and hardcore anal porn like you\'ve never seen before, and have won countless AVN and XBiz awards including \'Best Site\' and \'Best Studio\'.',
|
description: 'Welcome to the award winning Evil Angel website, home to the most popular pornstars of today, yesterday and tomorrow in their most extreme and hardcore porn scenes to date. We feature almost 30 years of rough sex videos and hardcore anal porn like you\'ve never seen before, and have won countless AVN and XBiz awards including \'Best Site\' and \'Best Studio\'.',
|
||||||
parent: 'gamma',
|
parent: 'gamma',
|
||||||
|
parameters: {
|
||||||
|
layout: 'api',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
slug: 'fantasymassage',
|
slug: 'fantasymassage',
|
||||||
|
|
|
@ -786,6 +786,7 @@ const tagPhotos = [
|
||||||
['double-dildo-kiss', 2, 'Adriana Chechik and Vicki Chase in "Anal Savages" for Jules Jordan'],
|
['double-dildo-kiss', 2, 'Adriana Chechik and Vicki Chase in "Anal Savages" for Jules Jordan'],
|
||||||
['double-dildo-dp', 0, 'u/LacyCrow "Sometimes you have to do it yourself"'],
|
['double-dildo-dp', 0, 'u/LacyCrow "Sometimes you have to do it yourself"'],
|
||||||
['double-dildo-dp', 1, 'Brooklyn Chase and Ana Foxxx for Zebra Girls'],
|
['double-dildo-dp', 1, 'Brooklyn Chase and Ana Foxxx for Zebra Girls'],
|
||||||
|
['dp', 7, 'Chloe Lamour in "DP Masters 7" for Jules Jordan'],
|
||||||
['dp', 5, 'Lana Rhoades in "Gangbang Me 3" for HardX'],
|
['dp', 5, 'Lana Rhoades in "Gangbang Me 3" for HardX'],
|
||||||
['dp', 6, 'Kira Noir for HardX'],
|
['dp', 6, 'Kira Noir for HardX'],
|
||||||
['dp', 2, 'Megan Rain in "DP Masters 4" for Jules Jordan'],
|
['dp', 2, 'Megan Rain in "DP Masters 4" for Jules Jordan'],
|
||||||
|
@ -850,8 +851,9 @@ const tagPhotos = [
|
||||||
['milf', 2, 'Shalina Devine for Anal Mom'],
|
['milf', 2, 'Shalina Devine for Anal Mom'],
|
||||||
// ['milf', 0, 'Olivia Austin in "Dredd 3" for Jules Jordan'],
|
// ['milf', 0, 'Olivia Austin in "Dredd 3" for Jules Jordan'],
|
||||||
['mff', 0, 'Madison Ivy, Adriana Chechik and Keiran Lee in "Day With A Pornstar" for Brazzers'],
|
['mff', 0, 'Madison Ivy, Adriana Chechik and Keiran Lee in "Day With A Pornstar" for Brazzers'],
|
||||||
['mfm', 7, 'Rose Valerie for Euro Sex Parties'],
|
['mfm', 8, 'Ariana Marie in "DP Masters 7" for Jules Jordan'],
|
||||||
['mfm', 1, 'Lana Rhoades in "Gangbang Me 3" for HardX'],
|
['mfm', 1, 'Lana Rhoades in "Gangbang Me 3" for HardX'],
|
||||||
|
['mfm', 7, 'Rose Valerie for Euro Sex Parties'],
|
||||||
['mfm', 6, 'Honey Gold in "Slut Puppies 12" for Jules Jordan'],
|
['mfm', 6, 'Honey Gold in "Slut Puppies 12" for Jules Jordan'],
|
||||||
['natural-boobs', 4, 'Miela (Marry Queen) in "Pure" for FemJoy'],
|
['natural-boobs', 4, 'Miela (Marry Queen) in "Pure" for FemJoy'],
|
||||||
['natural-boobs', 3, 'Violet Starr in "Violet Starr 1st Lesbian Anal" for LesbianX'],
|
['natural-boobs', 3, 'Violet Starr in "Violet Starr 1st Lesbian Anal" for LesbianX'],
|
||||||
|
|
|
@ -622,7 +622,7 @@ async function scrapeProfiles(actor, sources, entitiesBySlug, existingProfilesBy
|
||||||
const entity = entitiesBySlug[scraperSlug] || null;
|
const entity = entitiesBySlug[scraperSlug] || null;
|
||||||
|
|
||||||
const scraper = scrapers[scraperSlug];
|
const scraper = scrapers[scraperSlug];
|
||||||
const layoutScraper = scraper?.[entity.parameters?.layout] || scraper;
|
const layoutScraper = scraper?.[entity.parameters?.layout] || scraper?.[entity.parent?.parameters?.layout] || scraper?.[entity.parent?.parent?.parameters?.layout] || scraper;
|
||||||
|
|
||||||
const context = {
|
const context = {
|
||||||
...entity,
|
...entity,
|
||||||
|
|
|
@ -121,8 +121,8 @@ async function scrapeRelease(baseRelease, entities, type = 'scene') {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const scraper = scrapers.releases[entity.slug] || scrapers.releases[entity.parent?.slug];
|
const scraper = scrapers.releases[entity.slug] || scrapers.releases[entity.parent?.slug] || scrapers.releases[entity.parent?.parent?.slug];
|
||||||
const layoutScraper = scraper[entity.parameters?.layout] || scraper;
|
const layoutScraper = scraper?.[entity.parameters?.layout] || scraper?.[entity.parent?.parameters?.layout] || scraper?.[entity.parent?.parent?.parameters?.layout] || scraper;
|
||||||
|
|
||||||
if (!layoutScraper) {
|
if (!layoutScraper) {
|
||||||
logger.warn(`Could not find scraper for ${baseRelease.url}`);
|
logger.warn(`Could not find scraper for ${baseRelease.url}`);
|
||||||
|
|
|
@ -118,6 +118,7 @@ async function fetchIncludedEntities() {
|
||||||
SELECT
|
SELECT
|
||||||
parents.*,
|
parents.*,
|
||||||
json_agg(included_entities ORDER BY included_entities.id) included_children,
|
json_agg(included_entities ORDER BY included_entities.id) included_children,
|
||||||
|
row_to_json(grandparents) AS parent,
|
||||||
(SELECT json_agg(children)
|
(SELECT json_agg(children)
|
||||||
FROM entities AS children
|
FROM entities AS children
|
||||||
WHERE children.parent_id = parents.id) children
|
WHERE children.parent_id = parents.id) children
|
||||||
|
@ -125,10 +126,12 @@ async function fetchIncludedEntities() {
|
||||||
included_entities
|
included_entities
|
||||||
LEFT JOIN
|
LEFT JOIN
|
||||||
entities AS parents ON parents.id = included_entities.parent_id
|
entities AS parents ON parents.id = included_entities.parent_id
|
||||||
|
LEFT JOIN
|
||||||
|
entities AS grandparents ON grandparents.id = parents.parent_id
|
||||||
WHERE
|
WHERE
|
||||||
included_entities.type = 'channel'
|
included_entities.type = 'channel'
|
||||||
GROUP BY
|
GROUP BY
|
||||||
parents.id;
|
parents.id, grandparents.id;
|
||||||
`, include);
|
`, include);
|
||||||
|
|
||||||
const curatedNetworks = rawNetworks.rows.map(entity => curateEntity(entity, true));
|
const curatedNetworks = rawNetworks.rows.map(entity => curateEntity(entity, true));
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const { fetchApiLatest, fetchApiUpcoming, fetchScene, fetchMovie, fetchApiProfile } = require('./gamma');
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
fetchLatest: fetchApiLatest,
|
|
||||||
fetchProfile: fetchApiProfile,
|
|
||||||
fetchScene,
|
|
||||||
fetchMovie,
|
|
||||||
fetchUpcoming: fetchApiUpcoming,
|
|
||||||
};
|
|
|
@ -1,9 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const { fetchLatest, fetchUpcoming, fetchScene } = require('./gamma');
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
fetchLatest,
|
|
||||||
fetchScene,
|
|
||||||
fetchUpcoming,
|
|
||||||
};
|
|
|
@ -735,6 +735,13 @@ module.exports = {
|
||||||
fetchProfile,
|
fetchProfile,
|
||||||
fetchScene,
|
fetchScene,
|
||||||
fetchUpcoming,
|
fetchUpcoming,
|
||||||
|
api: {
|
||||||
|
fetchLatest: fetchApiLatest,
|
||||||
|
fetchUpcoming: fetchApiUpcoming,
|
||||||
|
fetchProfile: fetchApiProfile,
|
||||||
|
fetchScene,
|
||||||
|
fetchMovie,
|
||||||
|
},
|
||||||
getPhotos,
|
getPhotos,
|
||||||
scrapeApiProfile,
|
scrapeApiProfile,
|
||||||
scrapeApiReleases,
|
scrapeApiReleases,
|
||||||
|
|
|
@ -18,13 +18,12 @@ const digitalplayground = require('./digitalplayground');
|
||||||
const dogfart = require('./dogfart');
|
const dogfart = require('./dogfart');
|
||||||
const dorcel = require('./dorcel');
|
const dorcel = require('./dorcel');
|
||||||
const elegantangel = require('./elegantangel');
|
const elegantangel = require('./elegantangel');
|
||||||
const evilangel = require('./evilangel');
|
|
||||||
const fakehub = require('./fakehub');
|
const fakehub = require('./fakehub');
|
||||||
const famedigital = require('./famedigital');
|
const famedigital = require('./famedigital');
|
||||||
const fantasymassage = require('./fantasymassage');
|
|
||||||
const firstanalquest = require('./firstanalquest');
|
const firstanalquest = require('./firstanalquest');
|
||||||
const fcuk = require('./fcuk');
|
const fcuk = require('./fcuk');
|
||||||
const fullpornnetwork = require('./fullpornnetwork');
|
const fullpornnetwork = require('./fullpornnetwork');
|
||||||
|
const gamma = require('./gamma');
|
||||||
const girlsway = require('./girlsway');
|
const girlsway = require('./girlsway');
|
||||||
const hitzefrei = require('./hitzefrei');
|
const hitzefrei = require('./hitzefrei');
|
||||||
const hookuphotshot = require('./hookuphotshot');
|
const hookuphotshot = require('./hookuphotshot');
|
||||||
|
@ -110,14 +109,13 @@ const scrapers = {
|
||||||
dogfartnetwork: dogfart,
|
dogfartnetwork: dogfart,
|
||||||
dorcel,
|
dorcel,
|
||||||
elegantangel,
|
elegantangel,
|
||||||
evilangel,
|
|
||||||
fakehub,
|
fakehub,
|
||||||
famedigital,
|
famedigital,
|
||||||
fantasymassage,
|
|
||||||
fcuk,
|
fcuk,
|
||||||
firstanalquest,
|
firstanalquest,
|
||||||
forbondage: porndoe,
|
forbondage: porndoe,
|
||||||
fullpornnetwork,
|
fullpornnetwork,
|
||||||
|
gamma,
|
||||||
gaywire: bangbros,
|
gaywire: bangbros,
|
||||||
girlsway,
|
girlsway,
|
||||||
girlgirl: julesjordan,
|
girlgirl: julesjordan,
|
||||||
|
@ -210,7 +208,7 @@ const scrapers = {
|
||||||
dorcelclub: dorcel,
|
dorcelclub: dorcel,
|
||||||
doubleviewcasting: firstanalquest,
|
doubleviewcasting: firstanalquest,
|
||||||
elegantangel,
|
elegantangel,
|
||||||
evilangel,
|
evilangel: gamma,
|
||||||
eyeontheguy: hush,
|
eyeontheguy: hush,
|
||||||
fakehub,
|
fakehub,
|
||||||
exploitedcollegegirls: fcuk,
|
exploitedcollegegirls: fcuk,
|
||||||
|
|
|
@ -209,7 +209,7 @@ async function scrapeChannel(channelEntity, accNetworkReleases) {
|
||||||
|| scrapers.releases[channelEntity.parent?.slug]
|
|| scrapers.releases[channelEntity.parent?.slug]
|
||||||
|| scrapers.releases[channelEntity.parent?.parent?.slug];
|
|| scrapers.releases[channelEntity.parent?.parent?.slug];
|
||||||
|
|
||||||
const layoutScraper = scraper?.[channelEntity.parameters?.layout] || scraper;
|
const layoutScraper = scraper?.[channelEntity.parameters?.layout] || scraper?.[channelEntity.parent?.parameters?.layout] || scraper?.[channelEntity.parent?.parent?.parameters?.layout] || scraper;
|
||||||
|
|
||||||
if (!layoutScraper) {
|
if (!layoutScraper) {
|
||||||
logger.warn(`No scraper found for '${channelEntity.name}' (${channelEntity.parent?.name})`);
|
logger.warn(`No scraper found for '${channelEntity.name}' (${channelEntity.parent?.name})`);
|
||||||
|
|