Compare commits

...

3 Commits

Author SHA1 Message Date
DebaucheryLibrarian 8902654c4e 1.167.6 2021-02-05 01:54:16 +01:00
DebaucheryLibrarian 15cc970ee2 Added tags to release channels. Labeling DDF Network VR trailers as VR. 2021-02-05 01:54:06 +01:00
DebaucheryLibrarian 8af562e284 Showing courtesy comments on actor album photos. 2021-02-05 01:41:53 +01:00
8 changed files with 32 additions and 10 deletions

View File

@ -317,9 +317,10 @@
<Album
v-if="showAlbum"
:items="actor.photos"
:items="[actor.avatar, ...actor.photos]"
:title="actor.name"
:portrait="true"
:comments="true"
@close="$router.go(-1)"
/>

View File

@ -16,7 +16,7 @@
:class="{ portrait }"
>
<div
v-for="item in items"
v-for="item in albumItems"
:key="item.id"
class="item-container"
>
@ -27,15 +27,15 @@
>
<img
:src="`${path}/${item.thumbnail}`"
:title="item.comment"
:title="item.title"
loading="lazy"
class="item image"
>
<span
v-if="comments && item.comment"
v-if="comments && item.title"
class="item-comment"
>{{ item.comment }}</span>
>{{ item.title }}</span>
</a>
</div>
</div>
@ -44,6 +44,13 @@
</template>
<script>
function albumItems() {
return this.items.map(item => ({
...item,
title: item.comment || (item.credit && `© ${item.credit}`) || (item.entity && `© ${item.entity.name}`),
}));
}
export default {
props: {
items: {
@ -67,6 +74,9 @@ export default {
default: true,
},
},
computed: {
albumItems,
},
emits: ['close'],
};
</script>

View File

@ -255,7 +255,7 @@ module.exports = {
thumbnailQuality: 100,
lazySize: 90,
lazyQuality: 90,
trailerQuality: [480, 540, 360, 720, 1080, 320, 1440, 1600, 1920, 2160, 270, 240, 180],
trailerQuality: [480, 540, 360, 720, 960, 1080, 320, 1440, 1600, 1920, 2160, 270, 240, 180],
limit: 25, // max number of photos per release
streamConcurrency: 2, // max number of video streams (m3u8 etc.) to fetch and process at once
},

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "traxxx",
"version": "1.167.5",
"version": "1.167.6",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "traxxx",
"version": "1.167.5",
"version": "1.167.6",
"description": "All the latest porn releases in one place",
"main": "src/app.js",
"scripts": {

View File

@ -1963,6 +1963,7 @@ const sites = [
url: 'https://ddfnetworkvr.com',
description: 'VR Porn Videos shot Exclusively in 180 3D 4K Virtual Reality featuring the Hottest European & American VR Pornstar Babes',
parent: 'pornworld',
tags: ['vr'],
parameters: {
latest: 'https://ddfnetworkvr.com/home/tagfiltered/keywords/-/',
},

View File

@ -184,9 +184,18 @@ async function fetchEntitiesBySlug(entitySlugs, sort = 'asc') {
FROM entity_tree
JOIN entities ON entity_tree.parent_id = entities.id
)
SELECT jsonb_set(entity, '{children}', to_jsonb(COALESCE(json_agg(children) FILTER (WHERE children.id IS NOT NULL), '[]'))) entity
SELECT jsonb_set(
jsonb_set(
entity,
'{children}',
to_jsonb(COALESCE(json_agg(children) FILTER (WHERE children.id IS NOT NULL), '[]'))),
'{tags}',
to_jsonb(COALESCE(json_agg(tags) FILTER (WHERE tags.id IS NOT NULL), '[]'))
) entity
FROM entity_tree
LEFT JOIN entities AS children ON children.parent_id = (entity->>'id')::int
LEFT JOIN entities_tags ON entities_tags.entity_id = (entity->>'id')::int
LEFT JOIN tags ON tags.id = entities_tags.tag_id
WHERE entity_tree.parent_id IS NULL
GROUP BY entity_tree.entity
ORDER BY entity->'type' :sort;

View File

@ -27,7 +27,7 @@ function scrapeAll(scenes, site, origin) {
});
}
async function scrapeScene({ query }, url, _site) {
async function scrapeScene({ query }, url, channel) {
const release = {};
release.entryId = url.match(/\/(\d+)$/)[1];
@ -55,6 +55,7 @@ async function scrapeScene({ query }, url, _site) {
release.trailer = query.all('source[type="video/mp4"]').map(trailer => ({
src: trailer.src,
quality: Number(trailer.attributes.res?.value || trailer.attributes.quality?.value.slice(0, -1)) || null,
vr: channel.tags?.some(tag => tag.slug === 'vr'),
}));
return release;