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> ><Icon icon="arrow-up3" /></span>
<ul class="bio nolist"> <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 <li
v-if="actor.dateOfBirth" v-if="actor.dateOfBirth"
class="bio-item" class="bio-item"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -21,14 +21,14 @@
"seed-make": "knex seed:make", "seed-make": "knex seed:make",
"seed": "knex seed:run", "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", "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-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 mogrify -path \"$dir/thumbs\" -resize x240 -quality 90% \"$dir/*.jpeg\"; done", "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": "mogrify -path \"public/img/logos/$LOGO/thumbs\" -resize x80 \"public/img/logos/$LOGO/*.png\"", "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 mogrify -path \"$dir/thumbs\" -resize x80 \"$dir/*.png\"; done", "thumbs-logos": "for dir in public/img/logos/*; do mkdir -p \"$dir/thumbs\"; 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-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 mogrify -path \"$dir/lazy\" -resize x90 -quality 90% \"$dir/*.jpeg\"; done", "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": "mogrify -path \"public/img/logos/$LOGO/lazy\" -resize x25 \"public/img/logos/$LOGO/*.png\"", "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 mogrify -path \"$dir/lazy\" -resize x25 \"$dir/*.png\"; done" "lazy-logos": "for dir in public/img/logos/*; do mkdir -p \"$dir/lazy\"; mogrify -path \"$dir/lazy\" -resize x25 \"$dir/*.png\"; done"
}, },
"repository": { "repository": {
"type": "git", "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'], ['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'], ['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'], ['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'], ['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'], ['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'], ['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'], ['latina', 0, 'Abby Lee Brazil for Bang Bros'],
// ['mfm', 0, 'Vina Sky in "Jules Jordan\'s Three Ways" for Jules Jordan'], // ['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'], ['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'], ['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'], ['trainbang', 0, 'Nicole Black in GIO971 for LegalPorno'],
['triple-anal', 1, 'Natasha Teen in SZ2098 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, site,
}; };
if (!mergedRelease.entryId) {
throw new Error('No entry ID supplied');
}
if (scrapedRelease && baseRelease?.tags) { if (scrapedRelease && baseRelease?.tags) {
// accumulate all available tags // accumulate all available tags
mergedRelease.tags = baseRelease.tags.concat(scrapedRelease.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) { 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+)\)/); const entryId = html.match(/showtagform\((\d+)\)/);
if (entryId) { if (entryId) {
@ -128,7 +129,7 @@ function getEntryId(html) {
const setIdIndex = html.indexOf('setid:"'); const setIdIndex = html.indexOf('setid:"');
if (setIdIndex) { if (setIdIndex) {
return html.slice(setIdIndex, html.indexOf(',', setIdIndex)).match(/\d+/)[0]; return html.slice(setIdIndex, html.indexOf(',', setIdIndex)).match(/\d+/)?.[0];
} }
return null; return null;