Compare commits

..

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian a989bcb169 1.239.1 2024-08-17 02:34:02 +02:00
DebaucheryLibrarian 596597e0e3 Added MissaX. 2024-08-17 02:33:59 +02:00
7 changed files with 120 additions and 3 deletions

View File

@ -253,6 +253,7 @@ module.exports = {
'porncz', 'porncz',
'czechav', 'czechav',
'littlecapricedreams', 'littlecapricedreams',
'missyx',
'gangbangcreampie', 'gangbangcreampie',
'gloryholesecrets', 'gloryholesecrets',
'aziani', 'aziani',

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "traxxx", "name": "traxxx",
"version": "1.239.0", "version": "1.239.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "traxxx", "name": "traxxx",
"version": "1.239.0", "version": "1.239.1",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.458.0", "@aws-sdk/client-s3": "^3.458.0",

View File

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

@ -511,6 +511,11 @@ const networks = [
parentSession: false, parentSession: false,
}, },
}, },
{
slug: 'missax',
name: 'MissaX',
url: 'https://missax.com',
},
{ {
slug: 'modelmedia', slug: 'modelmedia',
name: 'Model Media', name: 'Model Media',

View File

@ -6275,6 +6275,19 @@ const sites = [
}, },
parent: 'milehighmedia', parent: 'milehighmedia',
}, },
// MISSA X
{
slug: 'missax',
name: 'MissaX',
url: 'https://missax.com',
parent: 'missax',
},
{
slug: 'allherluv',
name: 'All Her Luv',
url: 'https://allherluv.com',
parent: 'missax',
},
// MODEL MEDIA // MODEL MEDIA
{ {
slug: 'delphine', slug: 'delphine',

94
src/scrapers/missax.js Normal file
View File

@ -0,0 +1,94 @@
'use strict';
const unprint = require('unprint');
const slugify = require('../utils/slugify');
function scrapeAll(scenes) {
return scenes.map(({ query }) => {
const release = {};
release.url = query.url('.photo-thumb_body > a');
release.entryId = new URL(release.url).pathname.match(/\/trailers\/([\w-]+).html/)[1].toLowerCase();
release.title = query.content('.thumb-title');
release.actors = query.all('.model-name a').map((actorEl) => ({
name: unprint.query.content(actorEl),
url: unprint.query.url(actorEl, null),
}));
release.poster = Array.from({ length: 4 }, (item, index) => query.img('img.mainThumb', { attribute: `src0_${4 - index}x` }));
return release;
});
}
function scrapeScene({ query, html }, { url, entity }) {
const release = {};
release.entryId = new URL(url).pathname.match(/\/trailers\/([\w-]+).html/)[1].toLowerCase();
release.title = query.content('.raiting-section__title');
release.description = query.contents('p.text, p.text ~ p').map((p) => p.trim()).join('\n\n');
release.date = query.date('.dvd-scenes__data', 'MM/DD/YYYY');
release.duration = query.duration('.dvd-scenes__data');
release.actors = query.all('.dvd-scenes__data a[href*="/models"]').map((actorEl) => ({
name: unprint.query.content(actorEl),
url: unprint.query.url(actorEl, null),
}));
release.tags = query.contents('.dvd-scenes__data a[href*="/categories"]');
release.poster = Array.from({ length: 4 }, (item, index) => query.img('img.update_thumb', { attribute: `src0_${4 - index}x` }));
release.trailer = unprint.prefixUrl(html.match(/src="(\/trailers\/\w+\.mp4)"/)?.[1], entity.url);
return release;
}
function scrapeProfile({ query }) {
const profile = {};
profile.description = query.contents('p.text, p.text ~ p')?.map((p) => p.trim()).join('\n\n');
profile.avatar = Array.from({ length: 3 }, (item, index) => query.img('.bio-img img', { attribute: `src0_${3 - index}x` }));
return profile;
}
async function fetchLatest(channel, page = 1) {
const url = `${channel.url}/tour/categories/movies_${page}_d.html`;
const res = await unprint.get(url, { selectAll: '.tab-content .video-thumb' });
if (res.ok) {
return scrapeAll(res.context, channel);
}
return res.status;
}
async function fetchProfile({ name }, entity) {
const res = await unprint.get(`${entity.url}/tour/models/${name.replace(/\s+/, '')}.html`);
if (res.ok) {
return scrapeProfile(res.context, entity);
}
const slugRes = await unprint.get(`${entity.url}/tour/models/${slugify(name, '-')}.html`);
if (slugRes.ok) {
return scrapeProfile(slugRes.context, entity);
}
return slugRes.status;
}
module.exports = {
fetchLatest,
fetchProfile,
scrapeScene: {
scraper: scrapeScene,
unprint: true,
},
};

View File

@ -43,6 +43,7 @@ const loveherfilms = require('./loveherfilms');
const bluedonkeymedia = require('./bluedonkeymedia'); const bluedonkeymedia = require('./bluedonkeymedia');
const mikeadriano = require('./mikeadriano'); const mikeadriano = require('./mikeadriano');
const aylo = require('./aylo'); const aylo = require('./aylo');
const missax = require('./missax');
const naughtyamerica = require('./naughtyamerica'); const naughtyamerica = require('./naughtyamerica');
const newsensations = require('./newsensations'); const newsensations = require('./newsensations');
const nubiles = require('./nubiles'); const nubiles = require('./nubiles');
@ -134,6 +135,7 @@ const scrapers = {
mamacitaz: porndoe, mamacitaz: porndoe,
mariskax, mariskax,
mikeadriano, mikeadriano,
missax,
aylo, aylo,
mylf: teamskeet, mylf: teamskeet,
naughtyamerica, naughtyamerica,
@ -179,6 +181,7 @@ const scrapers = {
'21sextury': gamma, '21sextury': gamma,
adultempire, adultempire,
allanal: mikeadriano, allanal: mikeadriano,
allherluv: missax,
amateureuro: porndoe, amateureuro: porndoe,
americanpornstar, americanpornstar,
analbbc: fullpornnetwork, analbbc: fullpornnetwork,
@ -264,6 +267,7 @@ const scrapers = {
milehighmedia: aylo, milehighmedia: aylo,
milfy: vixen, milfy: vixen,
milfvr: wankzvr, milfvr: wankzvr,
missax,
mofos: aylo, mofos: aylo,
mylf: teamskeet, mylf: teamskeet,
mugfucked: fullpornnetwork, mugfucked: fullpornnetwork,