Added Top Web Models framework.

This commit is contained in:
DebaucheryLibrarian 2021-01-14 01:37:50 +01:00
parent dbdf0fcc0b
commit 12c3f0d7b9
9 changed files with 101 additions and 10 deletions

View File

@ -83,7 +83,7 @@
v-if="entity.children.length > 0"
v-slot="scroll"
:expanded="expanded"
class="scroll-dark"
class="scroll-light"
@expand="(state) => expanded = state"
>
<Children

View File

@ -34,15 +34,15 @@ export default {
padding: .5rem;
.icon {
fill: var(--shadow);
fill: var(--lighten);
}
&:hover {
cursor: pointer;
background: var(--shadow-hint);
background: var(--lighten-hint);
.icon {
fill: var(--text);
fill: var(--text-light);
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1104,7 +1104,7 @@ const aliases = [
for: 'titty-fucking',
},
{
name: 'behind the scenes',
name: 'bts',
for: 'bts',
secondary: true,
},

View File

@ -464,6 +464,11 @@ const networks = [
name: 'Teen Core Club',
url: 'https://teencoreclub.com',
},
{
slug: 'topwebmodels',
name: 'Top Web Models',
url: 'https://tour.topwebmodels.com',
},
{
slug: 'transbella',
name: 'Trans Bella',

View File

@ -8704,6 +8704,79 @@ const sites = [
parameters: {},
},
*/
// TOP WEB MODELS
{
name: '2 Girls 1 Camera',
slug: '2girls1camera',
url: 'https://tour.2girls1camera.com',
tags: ['mff'],
parent: 'topwebmodels',
},
{
name: 'Big Gulp Girls',
slug: 'biggulpgirls',
url: 'https://tour.biggulpgirls.com',
parent: 'topwebmodels',
},
{
name: 'Cougar Season',
slug: 'cougarseason',
url: 'https://tour.cougarseason.com',
tags: ['milf'],
parent: 'topwebmodels',
},
{
name: 'Deepthroat Sirens',
slug: 'deepthroatsirens',
url: 'https://tour.deepthroatsirens.com',
tags: ['blowjob', 'deepthroat'],
parent: 'topwebmodels',
},
{
name: 'Facials Forever',
slug: 'facialsforever',
url: 'https://tour.facialsforever.com',
tags: ['facial'],
parent: 'topwebmodels',
},
{
name: 'Pounded Petite',
slug: 'poundedpetite',
url: 'https://tour.poundedpetite.com',
parent: 'topwebmodels',
},
{
name: 'She\'s Brand New',
slug: 'shesbrandnew',
url: 'https://tour.shesbrandnew.com',
parent: 'topwebmodels',
},
{
name: 'TWM Classics',
slug: 'twmclassics',
url: 'https://tour.topwebmodels.com/sites/twmclassics',
parent: 'topwebmodels',
},
{
name: 'TWM Interviews',
slug: 'twminterviews',
url: 'https://tour.topwebmodels.com/sites/topwebmodels-interviews',
tags: ['bts'],
parent: 'topwebmodels',
hasLogo: false,
parameters: {
slug: 'topwebmodels-interviews',
},
},
{
name: 'TWM Porn Vault',
slug: 'twmpornvault',
url: 'https://tour.topwebmodels.com/sites/twm-porn-vault',
parent: 'topwebmodels',
parameters: {
slug: 'twm-porn-vault',
},
},
// TRANS BELLA
{
name: 'Trans Bella',
@ -9273,7 +9346,7 @@ exports.seed = knex => Promise.resolve()
const networksMap = networks.reduce((acc, { id, slug }) => ({ ...acc, [slug]: id }), {});
const tags = await knex('tags').select('*').where('alias_for', null);
const tags = await knex('tags').select('*').whereNull('alias_for');
const tagsMap = tags.reduce((acc, { id, slug }) => ({ ...acc, [slug]: id }), {});
const sitesWithNetworks = sites.map(site => ({

View File

@ -66,6 +66,7 @@ const sextreme = require('./21sextreme');
const sextury = require('./21sextury');
const teamskeet = require('./teamskeet');
const teencoreclub = require('./teencoreclub');
const topwebmodels = require('./topwebmodels');
const transangels = require('./transangels');
const traxxx = require('./traxxx');
const twistys = require('./twistys');
@ -160,6 +161,7 @@ const scrapers = {
swallowsalon: julesjordan,
teencoreclub,
teamskeet,
topwebmodels,
transbella: porndoe,
traxxx,
twistys,

View File

@ -40,6 +40,18 @@ function formatDate(dateValue, format, inputFormat) {
return moment(dateValue).format(format);
}
function durationToSeconds(durationString, match) {
const durationMatch = durationString.match(match || /(\d+:)?\d+:\d+/);
if (durationMatch) {
const segments = ['00'].concat(durationMatch[0].split(/[:hm]/)).slice(-3);
return moment.duration(segments.join(':')).asSeconds();
}
return null;
}
function prefixUrl(urlValue, origin, protocol = 'https') {
if (!urlValue) {
return null;
@ -316,12 +328,10 @@ function duration(context, selector, match, attr = 'textContent') {
const durationString = q(context, selector, attr);
if (!durationString) return null;
const durationMatch = durationString.match(match || /(\d+:)?\d+:\d+/);
const durationMatch = durationToSeconds(durationString, match);
if (durationMatch) {
const segments = ['00'].concat(durationMatch[0].split(/[:hm]/)).slice(-3);
return moment.duration(segments.join(':')).asSeconds();
return durationMatch;
}
const timestampMatch = durationString.match(/(\d+H)?\s*(\d+M)?\s*\d+S?/i);
@ -526,6 +536,7 @@ module.exports = {
extractDate,
extract,
extractAll,
durationToSeconds,
init,
initAll,
formatDate,