diff --git a/assets/components/entities/entity.vue b/assets/components/entities/entity.vue index 2b251485..49193987 100644 --- a/assets/components/entities/entity.vue +++ b/assets/components/entities/entity.vue @@ -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" > 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 => ({ diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js index e62ee6ec..786a2f1f 100644 --- a/src/scrapers/scrapers.js +++ b/src/scrapers/scrapers.js @@ -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, diff --git a/src/utils/qu.js b/src/utils/qu.js index b49c0c89..e566f9ac 100644 --- a/src/utils/qu.js +++ b/src/utils/qu.js @@ -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,