Compare commits
3 Commits
15810333b9
...
af7fa56e02
Author | SHA1 | Date |
---|---|---|
|
af7fa56e02 | |
|
1d3ec96e8d | |
|
99a7bfeb4c |
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.138.2",
|
"version": "1.138.3",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -4527,6 +4527,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"faker": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/faker/-/faker-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-RrWKFSSA/aNLP0g3o2WW1Zez7/MnMr7xkiZmoCfAGZmdkDQZ6l2KtuXHN5XjdvpRjDl8+3vf+Rrtl06Z352+Mw=="
|
||||||
|
},
|
||||||
"fast-deep-equal": {
|
"fast-deep-equal": {
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.138.2",
|
"version": "1.138.3",
|
||||||
"description": "All the latest porn releases in one place",
|
"description": "All the latest porn releases in one place",
|
||||||
"main": "src/app.js",
|
"main": "src/app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -90,6 +90,7 @@
|
||||||
"express-promise-router": "^3.0.3",
|
"express-promise-router": "^3.0.3",
|
||||||
"express-react-views": "^0.11.0",
|
"express-react-views": "^0.11.0",
|
||||||
"face-api.js": "^0.21.0",
|
"face-api.js": "^0.21.0",
|
||||||
|
"faker": "^5.1.0",
|
||||||
"file-type": "^14.1.4",
|
"file-type": "^14.1.4",
|
||||||
"fluent-ffmpeg": "^2.1.2",
|
"fluent-ffmpeg": "^2.1.2",
|
||||||
"fs-extra": "^7.0.1",
|
"fs-extra": "^7.0.1",
|
||||||
|
|
After Width: | Height: | Size: 7.0 KiB |
After Width: | Height: | Size: 693 B |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 14 KiB |
|
@ -0,0 +1,95 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
|
||||||
|
sodipodi:docname="logo.svg"
|
||||||
|
id="svg8"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 69.132355 14.439899"
|
||||||
|
height="14.439899mm"
|
||||||
|
width="69.132355mm">
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
fit-margin-bottom="0"
|
||||||
|
fit-margin-right="0"
|
||||||
|
fit-margin-left="0"
|
||||||
|
fit-margin-top="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:window-y="932"
|
||||||
|
inkscape:window-x="1182"
|
||||||
|
inkscape:window-height="1024"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
showguides="false"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
inkscape:current-layer="text835"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:cy="41.103987"
|
||||||
|
inkscape:cx="128.82469"
|
||||||
|
inkscape:zoom="2.8"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
borderopacity="1.0"
|
||||||
|
bordercolor="#666666"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
id="base">
|
||||||
|
<sodipodi:guide
|
||||||
|
id="guide837"
|
||||||
|
orientation="0.70710678,-0.70710678"
|
||||||
|
position="-151.83279,131.09395" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata5">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
transform="translate(-31.294238,-94.737942)"
|
||||||
|
id="layer1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
inkscape:label="Layer 1">
|
||||||
|
<g
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.05px;line-height:1.25;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';letter-spacing:0px;word-spacing:0px;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
id="text835"
|
||||||
|
aria-label="traxxx">
|
||||||
|
<path
|
||||||
|
id="path839"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.05px;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#ff6c88;fill-opacity:1"
|
||||||
|
d="m 33.923138,109.17784 q -1.08585,0 -1.8669,-0.762 -0.762,-0.78105 -0.762,-1.8669 V 94.737942 h 2.49555 v 3.3909 h 4.3053 v 2.495548 h -4.3053 v 5.39115 q 0,0.5334 0.05715,0.6096 0.0762,0.0571 0.6096,0.0571 h 3.63855 v 2.49555 z" />
|
||||||
|
<path
|
||||||
|
id="path841"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.05px;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#ff6c88;fill-opacity:1"
|
||||||
|
d="m 39.752431,109.17784 v -8.4201 q 0,-1.085848 0.762,-1.847848 0.78105,-0.78105 1.8669,-0.78105 h 6.1341 v 2.495548 h -5.6007 q -0.5334,0 -0.6096,0.0762 -0.05715,0.0571 -0.05715,0.59055 v 7.8867 z" />
|
||||||
|
<path
|
||||||
|
id="path843"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.05px;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#ff6c88;fill-opacity:1"
|
||||||
|
d="m 52.592118,109.17784 q -1.08585,0 -1.8669,-0.762 -0.762,-0.78105 -0.762,-1.8669 v -4.1529 h 8.7249 v -1.1049 q 0,-0.5334 -0.0762,-0.59055 -0.05715,-0.0762 -0.59055,-0.0762 h -8.05815 v -2.495548 h 8.59155 q 1.08585,0 1.84785,0.78105 0.78105,0.762 0.78105,1.847848 v 8.4201 z m 0.5334,-2.49555 h 5.5626 v -2.03835 h -6.22935 v 1.3716 q 0,0.5334 0.05715,0.6096 0.0762,0.0571 0.6096,0.0571 z" />
|
||||||
|
<path
|
||||||
|
id="path845"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.05px;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#ff6c88;fill-opacity:1"
|
||||||
|
d="m 62.707616,109.17784 v -0.66675 l 4.05765,-4.953 -4.05765,-4.762498 v -0.66675 h 2.7051 l 2.9718,3.505198 2.9718,-3.505198 h 2.7051 v 0.66675 l -4.05765,4.762498 4.05765,4.953 v 0.66675 h -2.68605 l -2.99085,-3.6576 -2.9718,3.6576 z" />
|
||||||
|
<path
|
||||||
|
id="path847"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.05px;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#ff6c88;fill-opacity:1"
|
||||||
|
d="m 75.890205,109.17784 v -0.66675 l 4.057649,-4.953 -4.057649,-4.762498 v -0.66675 h 2.705099 l 2.9718,3.505198 2.9718,-3.505198 h 2.7051 v 0.66675 l -4.05765,4.762498 4.05765,4.953 v 0.66675 h -2.68605 l -2.99085,-3.6576 -2.9718,3.6576 z" />
|
||||||
|
<path
|
||||||
|
id="path849"
|
||||||
|
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:19.05px;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#ff6c88;fill-opacity:1"
|
||||||
|
d="m 89.072791,109.17784 v -0.66675 l 4.05765,-4.953 -4.05765,-4.762498 v -0.66675 h 2.7051 l 2.9718,3.505198 2.9718,-3.505198 h 2.705099 v 0.66675 l -4.057649,4.762498 4.057649,4.953 v 0.66675 h -2.686049 l -2.99085,-3.6576 -2.9718,3.6576 z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 7.5 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 2.1 MiB |
After Width: | Height: | Size: 8.7 KiB |
After Width: | Height: | Size: 36 KiB |
|
@ -453,6 +453,11 @@ const networks = [
|
||||||
tags: ['transsexual'],
|
tags: ['transsexual'],
|
||||||
parent: 'porndoe',
|
parent: 'porndoe',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
slug: 'traxxx',
|
||||||
|
name: 'traxxx',
|
||||||
|
url: 'https://traxxx.me',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
slug: 'twistys',
|
slug: 'twistys',
|
||||||
name: 'Twistys',
|
name: 'Twistys',
|
||||||
|
|
|
@ -8547,6 +8547,30 @@ const sites = [
|
||||||
tags: ['transsexual'],
|
tags: ['transsexual'],
|
||||||
parent: 'transbella',
|
parent: 'transbella',
|
||||||
},
|
},
|
||||||
|
// TRAXXX
|
||||||
|
{
|
||||||
|
name: 'dp.me',
|
||||||
|
slug: 'dpme',
|
||||||
|
parent: 'traxxx',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'throat.me',
|
||||||
|
slug: 'throatme',
|
||||||
|
parent: 'traxxx',
|
||||||
|
tags: ['blowjob', 'facefucking', 'deepthroat'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'glaze.me',
|
||||||
|
slug: 'glazeme',
|
||||||
|
parent: 'traxxx',
|
||||||
|
tags: ['bukkake', 'facial'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'tie.me',
|
||||||
|
slug: 'tieme',
|
||||||
|
parent: 'traxxx',
|
||||||
|
tags: ['bondage', 'bdsm'],
|
||||||
|
},
|
||||||
// TWISTYS
|
// TWISTYS
|
||||||
{
|
{
|
||||||
name: 'Twistys',
|
name: 'Twistys',
|
||||||
|
|
|
@ -675,6 +675,7 @@ const tagPhotos = [
|
||||||
['69', 2, 'Abigail Mac and Kissa Sins in "Lesbian Anal Workout" for HardX'],
|
['69', 2, 'Abigail Mac and Kissa Sins in "Lesbian Anal Workout" for HardX'],
|
||||||
['airtight', 6, 'Remy Lacroix in "Ass Worship 14" for Jules Jordan'],
|
['airtight', 6, 'Remy Lacroix in "Ass Worship 14" for Jules Jordan'],
|
||||||
['airtight', 2, 'Dakota Skye in "Dakota Goes Nuts" for ArchAngel'],
|
['airtight', 2, 'Dakota Skye in "Dakota Goes Nuts" for ArchAngel'],
|
||||||
|
['airtight', 8, 'Veronica Leal in LegalPorno SZ2520'],
|
||||||
['airtight', 5, 'Chloe Amour in "DP Masters 4" for Jules Jordan'],
|
['airtight', 5, 'Chloe Amour in "DP Masters 4" for Jules Jordan'],
|
||||||
['airtight', 1, 'Jynx Maze in "Pump My Ass Full of Cum 3" for Jules Jordan'],
|
['airtight', 1, 'Jynx Maze in "Pump My Ass Full of Cum 3" for Jules Jordan'],
|
||||||
['airtight', 3, 'Anita Bellini in "Triple Dick Gangbang" for Hands On Hardcore (DDF Network)'],
|
['airtight', 3, 'Anita Bellini in "Triple Dick Gangbang" for Hands On Hardcore (DDF Network)'],
|
||||||
|
|
|
@ -761,7 +761,7 @@ async function flushOrphanedMedia() {
|
||||||
knex('releases_teasers').select('media_id'),
|
knex('releases_teasers').select('media_id'),
|
||||||
knex('movies_covers').select('media_id'),
|
knex('movies_covers').select('media_id'),
|
||||||
knex('movies_trailers').select('media_id'),
|
knex('movies_trailers').select('media_id'),
|
||||||
knex('actors_avatars').select('media_id'),
|
knex('actors_profiles').select('avatar_media_id').as('media_id'),
|
||||||
knex('actors_photos').select('media_id'),
|
knex('actors_photos').select('media_id'),
|
||||||
knex('clips_photos').select('media_id'),
|
knex('clips_photos').select('media_id'),
|
||||||
knex('clips_posters').select('media_id'),
|
knex('clips_posters').select('media_id'),
|
||||||
|
|
|
@ -64,6 +64,7 @@ const sextury = require('./21sextury');
|
||||||
const teamskeet = require('./teamskeet');
|
const teamskeet = require('./teamskeet');
|
||||||
const teencoreclub = require('./teencoreclub');
|
const teencoreclub = require('./teencoreclub');
|
||||||
const transangels = require('./transangels');
|
const transangels = require('./transangels');
|
||||||
|
const traxxx = require('./traxxx');
|
||||||
const twistys = require('./twistys');
|
const twistys = require('./twistys');
|
||||||
const vivid = require('./vivid');
|
const vivid = require('./vivid');
|
||||||
const vixen = require('./vixen');
|
const vixen = require('./vixen');
|
||||||
|
@ -152,6 +153,7 @@ module.exports = {
|
||||||
teencoreclub,
|
teencoreclub,
|
||||||
teamskeet,
|
teamskeet,
|
||||||
transbella: porndoe,
|
transbella: porndoe,
|
||||||
|
traxxx,
|
||||||
twistys,
|
twistys,
|
||||||
vipsexvault: porndoe,
|
vipsexvault: porndoe,
|
||||||
vivid,
|
vivid,
|
||||||
|
|
|
@ -1,12 +1,261 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
async function fetchLatest() {
|
/* eslint-disable no-unused-vars */
|
||||||
return [
|
|
||||||
{
|
const config = require('config');
|
||||||
title: 'Hot chick arse fucked',
|
const faker = require('faker');
|
||||||
date: new Date(),
|
const nanoid = require('nanoid');
|
||||||
},
|
const moment = require('moment');
|
||||||
];
|
|
||||||
|
const knex = require('../knex');
|
||||||
|
const capitalize = require('../utils/capitalize');
|
||||||
|
|
||||||
|
function random(array) {
|
||||||
|
return array[Math.floor(Math.random() * array.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
function femaleAdjective() {
|
||||||
|
return random([
|
||||||
|
'hot',
|
||||||
|
'young',
|
||||||
|
'new',
|
||||||
|
'busty',
|
||||||
|
'insatiable',
|
||||||
|
'depraved',
|
||||||
|
'horny',
|
||||||
|
'flexible',
|
||||||
|
'bubble butt',
|
||||||
|
'voluptuous',
|
||||||
|
'curvy',
|
||||||
|
'skinny',
|
||||||
|
'nerdy',
|
||||||
|
'oiled',
|
||||||
|
'tied up',
|
||||||
|
'bound',
|
||||||
|
'Asian',
|
||||||
|
'Russian',
|
||||||
|
'Latina',
|
||||||
|
'ebony',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function maleAdjective() {
|
||||||
|
return random([
|
||||||
|
'toned',
|
||||||
|
'nerdy',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sceneAdjective() {
|
||||||
|
return random([
|
||||||
|
'first',
|
||||||
|
'hottest',
|
||||||
|
'wildest',
|
||||||
|
'deepest',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function groupSceneAdjective() {
|
||||||
|
return random([
|
||||||
|
'biggest',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function dickAdjective() {
|
||||||
|
return random([
|
||||||
|
'big',
|
||||||
|
'giant',
|
||||||
|
'throbbing',
|
||||||
|
'thick',
|
||||||
|
'long',
|
||||||
|
'monster',
|
||||||
|
`${Math.floor(Math.random() * 12) + 9} inch`,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function femaleNoun() {
|
||||||
|
return random([
|
||||||
|
'MILF',
|
||||||
|
'teen',
|
||||||
|
'spinner',
|
||||||
|
'coed',
|
||||||
|
'redhead',
|
||||||
|
'beauty',
|
||||||
|
'blonde',
|
||||||
|
'nympho',
|
||||||
|
'brunette',
|
||||||
|
'maid',
|
||||||
|
'student',
|
||||||
|
'dominatrix',
|
||||||
|
'stepsister',
|
||||||
|
'schoolgirl',
|
||||||
|
'nurse',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function maleNoun() {
|
||||||
|
return random([
|
||||||
|
'guy',
|
||||||
|
'stud',
|
||||||
|
'man',
|
||||||
|
'boyfriend',
|
||||||
|
'stranger',
|
||||||
|
'stepbrother',
|
||||||
|
'stepdad',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function sceneNoun() {
|
||||||
|
return random([
|
||||||
|
'anal',
|
||||||
|
'sex',
|
||||||
|
'pounding',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function groupSceneNoun() {
|
||||||
|
return random([
|
||||||
|
'double penetration',
|
||||||
|
'gangbang',
|
||||||
|
'airtight',
|
||||||
|
'orgy',
|
||||||
|
'bukkake',
|
||||||
|
'double anal',
|
||||||
|
'triple anal',
|
||||||
|
'triple penetration',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function bodyNoun() {
|
||||||
|
return random([
|
||||||
|
'ass',
|
||||||
|
'asshole',
|
||||||
|
'gaping asshole',
|
||||||
|
'squirting pussy',
|
||||||
|
'pussy',
|
||||||
|
'cunt',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function dickNoun() {
|
||||||
|
return random([
|
||||||
|
'dick',
|
||||||
|
'cock',
|
||||||
|
'BBC',
|
||||||
|
'BWC',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function verb() {
|
||||||
|
return random([
|
||||||
|
'fucked',
|
||||||
|
'fingered',
|
||||||
|
'fisted',
|
||||||
|
'titty-fucked',
|
||||||
|
'creampied',
|
||||||
|
'facialized',
|
||||||
|
'plowed',
|
||||||
|
'creamed',
|
||||||
|
'gaped',
|
||||||
|
'dicked',
|
||||||
|
'pounded',
|
||||||
|
'manhandled',
|
||||||
|
'facefucked',
|
||||||
|
'ass-fucked',
|
||||||
|
'analized',
|
||||||
|
'banged',
|
||||||
|
'sodomized',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function groupVerb() {
|
||||||
|
return random([
|
||||||
|
'gangbanged',
|
||||||
|
'DP\'d',
|
||||||
|
'double dicked',
|
||||||
|
'double penetrated',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function title(release) {
|
||||||
|
if (release.actors.length > 3) {
|
||||||
|
// group scene
|
||||||
|
return capitalize(random([
|
||||||
|
`${femaleAdjective()} ${femaleNoun()} gets ${groupVerb()} by ${release.actors.length - 1} ${maleNoun()}s`,
|
||||||
|
`${femaleNoun()} does her ${groupSceneAdjective()} ${groupSceneNoun()}`,
|
||||||
|
`${femaleNoun()} in ${sceneAdjective()} ${groupSceneNoun()}`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()}'s ${groupSceneNoun()} with ${release.actors.length - 1} ${dickNoun()}s`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()}'s ${release.actors.length - 1}-${dickNoun()} ${groupSceneNoun()}`,
|
||||||
|
`${sceneAdjective()} ${groupSceneNoun()} for ${femaleAdjective()} ${femaleNoun()}`,
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
|
||||||
|
return capitalize(random([
|
||||||
|
`${femaleAdjective()} ${femaleNoun()} gets ${verb()} by ${dickAdjective()} ${dickNoun()}`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()} gets her ${bodyNoun()} ${verb()}`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()} in her ${sceneAdjective()} ${sceneNoun()} scene`,
|
||||||
|
`${sceneAdjective()} ${sceneNoun()} for ${femaleAdjective()} ${femaleNoun()}`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()}'s ${sceneAdjective()} ${sceneNoun()} scene`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()} ${verb()} in her ${bodyNoun()}`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()}'s ${bodyNoun()} ${verb()}`,
|
||||||
|
`${femaleAdjective()} ${femaleNoun()} does ${sceneAdjective()} ${sceneNoun()} with ${dickAdjective()} ${dickNoun()}`,
|
||||||
|
]));
|
||||||
|
}
|
||||||
|
|
||||||
|
function gender() {
|
||||||
|
return random([
|
||||||
|
'female',
|
||||||
|
'female',
|
||||||
|
'female',
|
||||||
|
'female',
|
||||||
|
'female',
|
||||||
|
'male',
|
||||||
|
'male',
|
||||||
|
'male',
|
||||||
|
'transsexual',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function actors(release) {
|
||||||
|
const length = release.tags.some(tag => ['dp', 'dap', 'gangbang'].includes(tag))
|
||||||
|
? Math.floor(Math.random() * 6) + 3
|
||||||
|
: Math.floor(Math.random() * 3) + 2;
|
||||||
|
|
||||||
|
return Array.from({ length }, () => ({
|
||||||
|
name: faker.name.findName(),
|
||||||
|
gender: gender(),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchLatest(entity) {
|
||||||
|
return Promise.all(Array.from({ length: 100 }, async (value, index) => {
|
||||||
|
const release = {};
|
||||||
|
|
||||||
|
release.entryId = nanoid();
|
||||||
|
release.date = moment().subtract(Math.floor(Math.random() * index), 'days').toDate();
|
||||||
|
|
||||||
|
const [poster, ...photos] = await knex('media')
|
||||||
|
.select('path')
|
||||||
|
.where('is_sfw', true)
|
||||||
|
.pluck('path')
|
||||||
|
.orderByRaw('random()')
|
||||||
|
.limit(Math.floor(Math.random() * 10) + 1);
|
||||||
|
|
||||||
|
release.poster = `http://${config.web.host}:${config.web.port}/img/${poster}?id=${nanoid()}`; // ensure source is unique
|
||||||
|
release.photos = photos.map(photo => `http://${config.web.host}:${config.web.port}/img/${photo}?id=${nanoid()}`);
|
||||||
|
|
||||||
|
release.tags = await knex('tags')
|
||||||
|
.select('name')
|
||||||
|
.where('priority', '>', 5)
|
||||||
|
.orderByRaw('random()')
|
||||||
|
.limit(faker.random.number({ min: 2, max: 15 }))
|
||||||
|
.pluck('name');
|
||||||
|
|
||||||
|
release.actors = actors(release);
|
||||||
|
release.title = title(release);
|
||||||
|
|
||||||
|
return release;
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|