Added oil tag. Removed Fame Digital from profile config.
This commit is contained in:
parent
003e07491d
commit
4826ae8571
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ function initActorActions(store, _router) {
|
|||
id
|
||||
name
|
||||
slug
|
||||
realName
|
||||
gender
|
||||
dateOfBirth
|
||||
dateOfDeath
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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');
|
||||
|
||||
|
|
16
package.json
16
package.json
|
@ -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",
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 395 KiB |
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 |
3300
seeds/00_tags.js
3300
seeds/00_tags.js
File diff suppressed because it is too large
Load Diff
|
@ -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'],
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue