Compare commits

...

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian 28455ecd5d 1.231.17 2023-08-04 21:43:58 +02:00
DebaucheryLibrarian 54dbea659a Added missing image fallbacks to legacy Aziani scraper. 2023-08-04 21:43:57 +02:00
7 changed files with 129 additions and 9 deletions

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.231.16", "version": "1.231.17",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "traxxx", "name": "traxxx",
"version": "1.231.16", "version": "1.231.17",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@casl/ability": "^5.2.2", "@casl/ability": "^5.2.2",

View File

@ -1,6 +1,6 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.231.16", "version": "1.231.17",
"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": {

View File

@ -2317,6 +2317,90 @@ const aliases = [
name: 'sm', name: 'sm',
for: 'bdsm', for: 'bdsm',
}, },
{
name: 'bem dotado',
for: 'big-dick',
},
{
name: 'boquetes',
for: 'blowjob',
},
{
name: 'boquete',
for: 'blowjob',
},
{
name: 'bunda grande',
for: 'big-butt',
},
{
name: 'loiras',
for: 'blonde',
},
{
name: 'loira',
for: 'blonde',
},
{
name: 'suruba',
for: 'orgy',
},
{
name: 'amador',
for: 'amateur',
},
{
name: 'amadores',
for: 'amateur',
},
{
name: 'dupla penetração',
for: 'dp',
},
{
name: 'incesto',
for: 'family',
},
{
name: 'morenas',
for: 'brunette',
},
{
name: 'morena',
for: 'brunette',
},
{
name: 'ruivas',
for: 'redhead',
},
{
name: 'ruiva',
for: 'redhead',
},
{
name: 'tatuadas',
for: 'tattoos',
},
{
name: 'travestis',
for: 'transsexual',
},
{
name: 'travesti',
for: 'transsexual',
},
{
name: 'ninfetas',
for: 'teen',
},
{
name: 'coroa',
for: 'milf',
},
{
name: 'coroas',
for: 'milf',
},
]; ];
const priorities = [ // higher index is higher priority const priorities = [ // higher index is higher priority

View File

@ -11111,6 +11111,12 @@ const sites = [
siteId: 20, siteId: 20,
}, },
}, },
// TESTE DE FUDELIDADE
{
name: 'Teste de Fudelidade',
slug: 'testedefudelidade',
url: 'https://testedefudelidade.com',
},
// TOKYO HOT // TOKYO HOT
{ {
name: 'Tokyo Hot', name: 'Tokyo Hot',

View File

@ -5204,6 +5204,30 @@ const studios = [
parent: 'analvids', parent: 'analvids',
description: 'Producing raw amateur porn leaded by Bluff, the creator, filmmaker and photographer. The models are from a circle of friends that creates and share all together. Through webcam nights, professionally made productions or from spontaneous projects, the general desire always was to produce high quality amateur porn. A wide variety of content is offered. *No custom video request *all models are 18+ and consented to appear in the photos/videos.', description: 'Producing raw amateur porn leaded by Bluff, the creator, filmmaker and photographer. The models are from a circle of friends that creates and share all together. Through webcam nights, professionally made productions or from spontaneous projects, the general desire always was to produce high quality amateur porn. A wide variety of content is offered. *No custom video request *all models are 18+ and consented to appear in the photos/videos.',
}, },
// TESTE DE FUDELIDADE
{
name: 'Teste de Fudelidade Exclusivo',
slug: 'testedefudelidadeexclusivo',
parent: 'testedefudelidade',
},
{
name: 'Teste de Fudelidade - Produção Exclusiva',
slug: 'testedefudelidadeproducaoexclusiva',
parent: 'testedefudelidade',
showcased: true,
},
{
name: 'Gostosas Video',
slug: 'gostosasvideo',
parent: 'testedefudelidade',
showcased: true,
},
{
name: 'Brad Montana',
slug: 'bradmontana',
parent: 'testedefudelidade',
showcased: true,
},
].map((studio) => (studio.parent === 'analvids' && studio.showcased !== true ].map((studio) => (studio.parent === 'analvids' && studio.showcased !== true
? { ? {
...studio, ...studio,
@ -5215,6 +5239,7 @@ const studios = [
exports.seed = (knex) => Promise.resolve() exports.seed = (knex) => Promise.resolve()
.then(async () => { .then(async () => {
const networks = await knex('entities') const networks = await knex('entities')
.whereIn('type', ['network', 'channel'])
.whereIn('slug', studios.map((studio) => studio.parent)); .whereIn('slug', studios.map((studio) => studio.parent));
const networksMap = networks.reduce((acc, { id, slug }) => ({ ...acc, [slug]: id }), {}); const networksMap = networks.reduce((acc, { id, slug }) => ({ ...acc, [slug]: id }), {});
@ -5226,7 +5251,7 @@ exports.seed = (knex) => Promise.resolve()
type: 'studio', type: 'studio',
parent_id: networksMap[studio.parent], parent_id: networksMap[studio.parent],
has_logo: studio.hasLogo || false, has_logo: studio.hasLogo || false,
showcased: studio.showcased, showcased: typeof studio.showcased === 'boolean' ? studio.showcased : true,
})); }));
return upsert('entities', studiosWithNetwork, ['slug', 'type'], knex); return upsert('entities', studiosWithNetwork, ['slug', 'type'], knex);

View File

@ -24,17 +24,19 @@ function scrapeAll(scenes, site) {
return scenes.map(({ qu }) => { return scenes.map(({ qu }) => {
const release = {}; const release = {};
release.entryId = qu.q('.stdimage', 'id', true).match(/set-target-(\d+)/)[1];
release.url = qu.url('a'); release.url = qu.url('a');
release.title = qu.q('h5 a', true); release.title = qu.q('h5 a', true);
release.date = qu.date('.icon-calendar + strong', 'MM/DD/YYYY'); release.date = qu.date('.icon-calendar + strong', 'MM/DD/YYYY');
release.actors = qu.q('h3', true).replace(/featuring:\s?/i, '').split(', '); release.entryId = qu.q('.stdimage', 'id', true)?.match(/set-target-(\d+)/)?.[1] || new URL(release.url).pathname.match(/trailers\/(.*).html/)?.[1];
release.actors = qu.q('h3', true).replace(/featuring:\s?/i, '').split(', ').filter(Boolean);
const photoCount = qu.q('.stdimage', 'cnt'); const photoCount = qu.q('.stdimage', 'cnt');
[release.poster, ...release.photos] = Array.from({ length: Number(photoCount) }, (value, index) => { [release.poster, ...release.photos] = Array.from({ length: Number(photoCount) }, (value, index) => {
const source = qu.img('.stdimage', `src${index}_1x`, site.url); const source = qu.img('.stdimage', `src${index}_1x`, { origin: site.url });
return getFallbacks(source); return getFallbacks(source);
}); });
@ -46,7 +48,7 @@ function scrapeAll(scenes, site) {
function scrapeScene({ html, qu }, url, channel) { function scrapeScene({ html, qu }, url, channel) {
const release = { url }; const release = { url };
release.entryId = qu.q('.stdimage', 'id', true).match(/set-target-(\d+)/)[1]; release.entryId = qu.q('.stdimage', 'id', true)?.match(/set-target-(\d+)/)?.[1] || new URL(url).pathname.match(/trailers\/(.*).html/)?.[1];
release.title = qu.q('h2', true); release.title = qu.q('h2', true);
release.description = qu.q('p', true); release.description = qu.q('p', true);
@ -63,7 +65,7 @@ function scrapeScene({ html, qu }, url, channel) {
release.duration = qu.dur('.video_categories + p'); release.duration = qu.dur('.video_categories + p');
release.poster = getFallbacks(qu.img('a img')) || getFallbacks(qu.img('#preview video', 'poster', { origin: channel.url })); release.poster = getFallbacks(qu.img('a img')) || getFallbacks(qu.img('#preview video', 'poster', { origin: channel.url }));
release.caps = qu.imgs('.featured-video img', 'src0_1x', { origin: channel.url }).map((source) => getFallbacks(source)); release.caps = qu.imgs('.featured-video img', 'src0_1x', { origin: channel.url }).map((source) => getFallbacks(source)).filter(Boolean);
release.trailer = qu.video('#preview source'); release.trailer = qu.video('#preview source');

View File

@ -62,6 +62,7 @@ const spizoo = require('./spizoo');
const teamskeet = require('./teamskeet'); const teamskeet = require('./teamskeet');
const teencoreclub = require('./teencoreclub'); const teencoreclub = require('./teencoreclub');
const teenmegaworld = require('./teenmegaworld'); const teenmegaworld = require('./teenmegaworld');
const testedefudelidade = require('./testedefudelidade');
const tokyohot = require('./tokyohot'); const tokyohot = require('./tokyohot');
const topwebmodels = require('./topwebmodels'); const topwebmodels = require('./topwebmodels');
const traxxx = require('./traxxx'); const traxxx = require('./traxxx');
@ -156,6 +157,7 @@ const scrapers = {
teencoreclub, teencoreclub,
teenmegaworld, teenmegaworld,
teamskeet, teamskeet,
testedefudelidade,
tokyohot, tokyohot,
topwebmodels, topwebmodels,
transbella: porndoe, transbella: porndoe,
@ -296,6 +298,7 @@ const scrapers = {
teamskeet, teamskeet,
teencoreclub, teencoreclub,
teenmegaworld, teenmegaworld,
testedefudelidade,
thatsitcomshow: nubiles, thatsitcomshow: nubiles,
tokyohot, tokyohot,
topwebmodels, topwebmodels,