Added oil tag. Removed Fame Digital from profile config.

This commit is contained in:
ThePendulum 2020-05-18 04:28:38 +02:00
parent 003e07491d
commit 4826ae8571
17 changed files with 1865 additions and 1845 deletions

View File

@ -57,6 +57,14 @@
><Icon icon="arrow-up3" /></span>
<ul class="bio nolist">
<li
v-if="actor.realName"
class="bio-item"
>
<dfn class="bio-label"><Icon icon="vcard" />Real name</dfn>
<span class="bio-value">{{ actor.realName }}</span>
</li>
<li
v-if="actor.dateOfBirth"
class="bio-item"

View File

@ -1,58 +1,58 @@
<template>
<div
v-if="tag"
class="content"
>
<FilterBar :fetch-releases="fetchReleases" />
<div
v-if="tag"
class="content"
>
<FilterBar :fetch-releases="fetchReleases" />
<div
class="tag"
:class="{ nomedia: !hasMedia }"
>
<div class="header">
<h2 class="title">
<Icon icon="price-tag4" />
{{ tag.name }}
</h2>
<div
class="tag"
:class="{ nomedia: !hasMedia }"
>
<div class="header">
<h2 class="title">
<Icon icon="price-tag4" />
{{ tag.name }}
</h2>
<p
v-if="description"
class="description header-description"
v-html="description"
/>
</div>
<p
v-if="description"
class="description header-description"
v-html="description"
/>
</div>
<div class="sidebar">
<h2 class="title">
<Icon icon="price-tag4" />
{{ tag.name }}
</h2>
<div class="sidebar">
<h2 class="title">
<Icon icon="price-tag4" />
{{ tag.name }}
</h2>
<div class="sidebar-content">
<p
v-if="description"
class="description"
v-html="description"
/>
<div class="sidebar-content">
<p
v-if="description"
class="description"
v-html="description"
/>
<Photos
v-if="hasMedia"
:tag="tag"
/>
</div>
</div>
<Photos
v-if="hasMedia"
:tag="tag"
/>
</div>
</div>
<div class="content-inner">
<Photos
v-if="hasMedia"
:tag="tag"
class="compact"
/>
<div class="content-inner">
<Photos
v-if="hasMedia"
:tag="tag"
class="compact"
/>
<Releases :releases="tag.releases" />
</div>
</div>
</div>
<Releases :releases="tag.releases" />
</div>
</div>
</div>
</template>
<script>
@ -68,46 +68,46 @@ import Releases from '../releases/releases.vue';
const converter = new Converter();
async function fetchReleases() {
this.tag = await this.$store.dispatch('fetchTagBySlug', {
tagSlug: this.$route.params.tagSlug,
range: this.$route.params.range,
});
this.tag = await this.$store.dispatch('fetchTagBySlug', {
tagSlug: this.$route.params.tagSlug,
range: this.$route.params.range,
});
this.hasMedia = this.tag.poster || this.tag.photos.length > 0;
this.description = this.tag.description && converter.makeHtml(escapeHtml(this.tag.description));
this.hasMedia = this.tag.poster || this.tag.photos.length > 0;
this.description = this.tag.description && converter.makeHtml(escapeHtml(this.tag.description));
}
async function route() {
await this.fetchReleases();
await this.fetchReleases();
}
async function mounted() {
await this.fetchReleases();
this.pageTitle = this.tag.name;
await this.fetchReleases();
this.pageTitle = this.tag.name;
}
export default {
components: {
FilterBar,
Photos,
Releases,
},
data() {
return {
tag: null,
description: null,
releases: null,
pageTitle: null,
hasMedia: false,
};
},
watch: {
$route: route,
},
mounted,
methods: {
fetchReleases,
},
components: {
FilterBar,
Photos,
Releases,
},
data() {
return {
tag: null,
description: null,
releases: null,
pageTitle: null,
hasMedia: false,
};
},
watch: {
$route: route,
},
mounted,
methods: {
fetchReleases,
},
};
</script>

View File

@ -1,125 +1,126 @@
<template>
<div class="tags">
<div
v-for="(tags, category) in categories"
:key="category"
>
<h3 class="heading">{{ category }}</h3>
<div class="tags">
<div
v-for="(tags, category) in categories"
:key="category"
>
<h3 class="heading">{{ category }}</h3>
<div
:key="sfw"
v-lazy-container
class="tiles"
>
<Tag
v-for="tag in tags"
:key="`tag-${tag.id}`"
:tag="tag"
:lazy="true"
/>
</div>
</div>
</div>
<div
:key="sfw"
v-lazy-container
class="tiles"
>
<Tag
v-for="tag in tags"
:key="`tag-${tag.id}`"
:tag="tag"
:lazy="true"
/>
</div>
</div>
</div>
</template>
<script>
import Tag from '../tile/tag.vue';
function sfw() {
return this.$store.state.ui.sfw;
return this.$store.state.ui.sfw;
}
async function mounted() {
const tagSlugsByCategory = {
popular: [
'anal',
'lesbian',
'interracial',
'mff',
'mfm',
'natural-boobs',
'fake-boobs',
'teen',
'milf',
'blowjob',
'orgy',
'gangbang',
'double-penetration',
'facial',
'creampie',
],
oral: [
'deepthroat',
'facefucking',
'double-blowjob',
'blowbang',
'pussy-eating',
'ass-eating',
'ass-to-mouth',
],
appearance: [
'asian',
'ebony',
'latina',
'caucasian',
'blonde',
'brunette',
'redhead',
],
extreme: [
'airtight',
'double-anal',
'double-vaginal',
'da-tp',
'dv-tp',
'triple-anal',
],
cumshot: [
'facial',
'bukkake',
'creampie',
'anal-creampie',
'cum-in-mouth',
],
roleplay: [
'family',
'schoolgirl',
'nurse',
'maid',
],
tricks: [
'gaping',
],
};
const tagSlugsByCategory = {
popular: [
'anal',
'lesbian',
'interracial',
'mff',
'mfm',
'natural-boobs',
'fake-boobs',
'teen',
'milf',
'blowjob',
'orgy',
'gangbang',
'double-penetration',
'facial',
'creampie',
],
oral: [
'deepthroat',
'facefucking',
'double-blowjob',
'blowbang',
'pussy-eating',
'ass-eating',
'ass-to-mouth',
],
appearance: [
'asian',
'ebony',
'latina',
'caucasian',
'blonde',
'brunette',
'redhead',
],
extreme: [
'airtight',
'double-anal',
'double-vaginal',
'da-tp',
'dv-tp',
'triple-anal',
],
cumshot: [
'facial',
'bukkake',
'creampie',
'anal-creampie',
'cum-in-mouth',
],
roleplay: [
'family',
'schoolgirl',
'nurse',
'maid',
],
misc: [
'gaping',
'oil',
],
};
const tags = await this.$store.dispatch('fetchTags', {
slugs: Object.values(tagSlugsByCategory).flat(),
});
const tags = await this.$store.dispatch('fetchTags', {
slugs: Object.values(tagSlugsByCategory).flat(),
});
const tagsBySlug = tags.reduce((acc, tag) => ({ ...acc, [tag.slug]: tag }), {});
const tagsBySlug = tags.reduce((acc, tag) => ({ ...acc, [tag.slug]: tag }), {});
this.categories = Object.entries(tagSlugsByCategory).reduce((acc, [category, tagSlugs]) => ({
...acc,
[category]: tagSlugs.map(tagSlug => tagsBySlug[tagSlug]),
}), {});
this.categories = Object.entries(tagSlugsByCategory).reduce((acc, [category, tagSlugs]) => ({
...acc,
[category]: tagSlugs.map(tagSlug => tagsBySlug[tagSlug]),
}), {});
this.pageTitle = 'Tags';
this.pageTitle = 'Tags';
}
export default {
components: {
Tag,
},
data() {
return {
categories: {},
pageTitle: null,
};
},
computed: {
sfw,
},
mounted,
components: {
Tag,
},
data() {
return {
categories: {},
pageTitle: null,
};
},
computed: {
sfw,
},
mounted,
};
</script>

View File

@ -31,6 +31,7 @@ function initActorActions(store, _router) {
id
name
slug
realName
gender
dateOfBirth
dateOfDeath

View File

@ -67,6 +67,8 @@ module.exports = {
[
'evilangel',
'famedigital',
'devilsfilm',
'roccosiffredi',
],
[
// Gamma; Evil Angel + Devil's Film, Pure Taboo (unavailable), (sometimes) Burning Angel and Wicked have their own assets
@ -91,10 +93,6 @@ module.exports = {
'burningangel',
'brazzers',
'milehighmedia',
[
'devilsfilm',
'roccosiffredi',
],
[
'vixen',
'tushy',

View File

@ -264,7 +264,10 @@ exports.up = knex => Promise.resolve()
table.string('name')
.notNullable();
table.string('slug', 32);
table.string('slug', 32)
.notNullable();
table.string('real_name');
table.integer('network_id', 12)
.references('id')
@ -342,6 +345,8 @@ exports.up = knex => Promise.resolve()
table.unique(['actor_id', 'network_id', 'site_id']);
table.string('real_name');
table.date('date_of_birth');
table.date('date_of_death');

View File

@ -21,14 +21,14 @@
"seed-make": "knex seed:make",
"seed": "knex seed:run",
"flush": "cli-confirm \"This completely purges the database, are you sure?\" && knex-migrate down --to 0 && knex-migrate up && knex seed:run",
"thumbs-tag": "mogrify -path \"public/img/tags/$TAG/thumbs\" -resize x240 -quality 90% \"public/img/tags/$TAG/*.jpeg\"",
"thumbs-tags": "for dir in public/img/tags/*; do mogrify -path \"$dir/thumbs\" -resize x240 -quality 90% \"$dir/*.jpeg\"; done",
"thumbs-logo": "mogrify -path \"public/img/logos/$LOGO/thumbs\" -resize x80 \"public/img/logos/$LOGO/*.png\"",
"thumbs-logos": "for dir in public/img/logos/*; do mogrify -path \"$dir/thumbs\" -resize x80 \"$dir/*.png\"; done",
"lazy-tag": "mogrify -path \"public/img/tags/$TAG/lazy\" -resize x90 -quality 90% \"public/img/tags/$TAG/*.jpeg\"",
"lazy-tags": "for dir in public/img/tags/*; do mogrify -path \"$dir/lazy\" -resize x90 -quality 90% \"$dir/*.jpeg\"; done",
"lazy-logo": "mogrify -path \"public/img/logos/$LOGO/lazy\" -resize x25 \"public/img/logos/$LOGO/*.png\"",
"lazy-logos": "for dir in public/img/logos/*; do mogrify -path \"$dir/lazy\" -resize x25 \"$dir/*.png\"; done"
"thumbs-tag": "mkdir -p \"public/img/tags/$TAG/thumbs\"; mogrify -path \"public/img/tags/$TAG/thumbs\" -resize x240 -quality 90% \"public/img/tags/$TAG/*.jpeg\"",
"thumbs-tags": "for dir in public/img/tags/*; do mkdir -p \"$dir/thumbs\"; mogrify -path \"$dir/thumbs\" -resize x240 -quality 90% \"$dir/*.jpeg\"; done",
"thumbs-logo": "mkdir -p \"public/img/logos/$LOGO/thumbs\"; mogrify -path \"public/img/logos/$LOGO/thumbs\" -resize x80 \"public/img/logos/$LOGO/*.png\"",
"thumbs-logos": "for dir in public/img/logos/*; do mkdir -p \"$dir/thumbs\"; mogrify -path \"$dir/thumbs\" -resize x80 \"$dir/*.png\"; done",
"lazy-tag": "mkdir -p \"public/img/tags/$TAG/lazy\"; mogrify -path \"public/img/tags/$TAG/lazy\" -resize x90 -quality 90% \"public/img/tags/$TAG/*.jpeg\"",
"lazy-tags": "for dir in public/img/tags/*; do mkdir -p \"$dir/lazy\"; mogrify -path \"$dir/lazy\" -resize x90 -quality 90% \"$dir/*.jpeg\"; done",
"lazy-logo": "mkdir -p \"public/img/logos/$LOGO/lazy\"; mogrify -path \"public/img/logos/$LOGO/lazy\" -resize x25 \"public/img/logos/$LOGO/*.png\"",
"lazy-logos": "for dir in public/img/logos/*; do mkdir -p \"$dir/lazy\"; mogrify -path \"$dir/lazy\" -resize x25 \"$dir/*.png\"; done"
},
"repository": {
"type": "git",

BIN
public/img/tags/oil/0.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

BIN
public/img/tags/oil/1.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because it is too large Load Diff

View File

@ -42,6 +42,7 @@ const tagPosters = [
['mfm', 5, 'Vina Sky in "Slut Puppies 15" for Jules Jordan'],
['natural-boobs', 0, 'Autumn Falls in "Manuel Ferrara\'s Ripe 7" for Jules Jordan'],
['nurse', 0, 'Sarah Vandella in "Cum For Nurse Sarah" for Brazzers'],
['oil', 0, 'Jada Stevens in "Jada Stevens Anal Ass Oiled Up For James Deen\'s Cock" for Jules Jordan'],
['orgy', 1, 'Megan Rain (DP), Morgan Lee (anal), Jessa Rhodes, Melissa Moore and Kimmy Granger in "Orgy Masters 8" for Jules Jordan'],
['pussy-eating', 0, 'Kali Roses licking Emily Willis\' pussy in "Peeping On My Neighbor" for Girl Girl'],
['redhead', 0, 'Penny Pax in "The Submission of Emma Marx: Boundaries" for New Sensations'],
@ -110,6 +111,7 @@ const tagPhotos = [
['latina', 0, 'Abby Lee Brazil for Bang Bros'],
// ['mfm', 0, 'Vina Sky in "Jules Jordan\'s Three Ways" for Jules Jordan'],
['mfm', 1, 'Jynx Maze in "Don\'t Make Me Beg 4" for Evil Angel'],
['oil', 1, 'Emily Willis in "Emily Willis Has A Squirting Anal Orgasm" for Jules Jordan'],
['orgy', 'poster', 'Zoey Mornoe (DP), Jillian Janson (sex), Frida Sante, Katerina Kay and Natasha Starr in "Orgy Masters 6" for Jules Jordan'],
['trainbang', 0, 'Nicole Black in GIO971 for LegalPorno'],
['triple-anal', 1, 'Natasha Teen in SZ2098 for LegalPorno'],

View File

@ -130,6 +130,10 @@ async function scrapeRelease(baseRelease, sites, type = 'scene') {
site,
};
if (!mergedRelease.entryId) {
throw new Error('No entry ID supplied');
}
if (scrapedRelease && baseRelease?.tags) {
// accumulate all available tags
mergedRelease.tags = baseRelease.tags.concat(scrapedRelease.tags);

View File

@ -119,6 +119,7 @@ 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) {
@ -128,7 +129,7 @@ function getEntryId(html) {
const setIdIndex = html.indexOf('setid:"');
if (setIdIndex) {
return html.slice(setIdIndex, html.indexOf(',', setIdIndex)).match(/\d+/)[0];
return html.slice(setIdIndex, html.indexOf(',', setIdIndex)).match(/\d+/)?.[0];
}
return null;