Compare commits
No commits in common. "2783de52728bdce7ccdd96fb03ef0be5c12ab3de" and "f009c90e5dffca182abdaf307a851008d529802c" have entirely different histories.
2783de5272
...
f009c90e5d
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.228.33",
|
"version": "1.228.32",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.228.33",
|
"version": "1.228.32",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@casl/ability": "^5.2.2",
|
"@casl/ability": "^5.2.2",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.228.33",
|
"version": "1.228.32",
|
||||||
"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": {
|
||||||
|
|
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 133 KiB |
Before Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 119 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 25 KiB |
|
@ -5681,15 +5681,6 @@ const sites = [
|
||||||
tags: ['latina'],
|
tags: ['latina'],
|
||||||
parent: 'mamacitaz',
|
parent: 'mamacitaz',
|
||||||
},
|
},
|
||||||
// MARISKA X
|
|
||||||
{
|
|
||||||
name: 'MariskaX',
|
|
||||||
slug: 'mariskax',
|
|
||||||
url: 'https://tour.mariskax.com',
|
|
||||||
parameters: {
|
|
||||||
latest: 'https://tour.mariskax.com/scenes?page={page}',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
// METRO HD
|
// METRO HD
|
||||||
{
|
{
|
||||||
slug: 'devianthardcore',
|
slug: 'devianthardcore',
|
||||||
|
|
|
@ -32,8 +32,6 @@ function scrapeAll(scenes, site) {
|
||||||
|
|
||||||
release.entryId = `${formatDate(release.date, 'YYYY-MM-DD')}-${slugify(release.title)}`;
|
release.entryId = `${formatDate(release.date, 'YYYY-MM-DD')}-${slugify(release.title)}`;
|
||||||
|
|
||||||
console.log(release);
|
|
||||||
|
|
||||||
return release;
|
return release;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,10 +101,11 @@ function scrapeUpcoming(scenes, channel) {
|
||||||
}));
|
}));
|
||||||
|
|
||||||
release.poster = query.img('img') || query.img('img', { attribute: 'src0_1x' });
|
release.poster = query.img('img') || query.img('img', { attribute: 'src0_1x' });
|
||||||
release.teaser = html.match(/src=['"](https:\/\/.*\.mp4)['"]/)?.[1];
|
|
||||||
|
|
||||||
release.entryId = channel.parameters?.entryIdFromTitle ? slugify(release.title) : getEntryId(html);
|
release.entryId = channel.parameters?.entryIdFromTitle ? slugify(release.title) : getEntryId(html);
|
||||||
|
|
||||||
|
// TODO: teaser
|
||||||
|
|
||||||
return release;
|
return release;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,96 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const unprint = require('unprint');
|
|
||||||
|
|
||||||
const slugify = require('../utils/slugify');
|
|
||||||
|
|
||||||
function scrapeLatest(scenes) {
|
|
||||||
return scenes.map(({ query }) => {
|
|
||||||
const release = {};
|
|
||||||
|
|
||||||
release.title = query.content('.title a');
|
|
||||||
release.url = query.url('.title a') || query.url('.thumb-wrap a');
|
|
||||||
|
|
||||||
release.entryId = new URL(release.url).pathname.match(/view\/(\d+)\//)[1];
|
|
||||||
|
|
||||||
release.date = query.date('time', 'Do MMM YYYY', { match: /\d+\w+ \w+ \d{4}/ });
|
|
||||||
release.duration = query.duration('.total-time');
|
|
||||||
|
|
||||||
release.actors = query.all('.models a').map((el) => ({
|
|
||||||
name: unprint.query.content(el),
|
|
||||||
url: unprint.query.url(el, null),
|
|
||||||
}));
|
|
||||||
|
|
||||||
[release.poster, ...release.photos] = query.json('.thumb-wrap a', { attribute: 'data-images' });
|
|
||||||
|
|
||||||
release.photoCount = query.number('.total-photos');
|
|
||||||
|
|
||||||
return release;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
async function fetchLatest(channel, page) {
|
|
||||||
const res = await unprint.get(`https://tour.mariskax.com/scenes?page=${page}`, {
|
|
||||||
selectAll: '.content-item',
|
|
||||||
timeout: 30000, // slow site
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res.ok) {
|
|
||||||
return scrapeLatest(res.context);
|
|
||||||
}
|
|
||||||
|
|
||||||
return res.status;
|
|
||||||
}
|
|
||||||
|
|
||||||
function scrapeScene({ query }, { url }) {
|
|
||||||
const release = {};
|
|
||||||
|
|
||||||
release.title = query.content('.content-meta .title');
|
|
||||||
release.entryId = new URL(url).pathname.match(/view\/(\d+)\//)[1];
|
|
||||||
|
|
||||||
release.date = query.date('.post-date', 'Do MMM YYYY', { match: /\d+\w+ \w+ \d{4}/ });
|
|
||||||
|
|
||||||
release.actors = query.all('.content-meta .models a').map((el) => ({
|
|
||||||
name: unprint.query.content(el),
|
|
||||||
url: unprint.query.url(el, null),
|
|
||||||
}));
|
|
||||||
|
|
||||||
release.poster = query.poster('.trailer-wrap video');
|
|
||||||
release.trailer = query.video('.trailer-wrap source') || query.video('.download-trailer-wrap a', { attribute: 'href' });
|
|
||||||
|
|
||||||
return release;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function fetchProfile(actor) {
|
|
||||||
const res = await unprint.post('https://tour.mariskax.com/search-preview-mrx', `q=${slugify(actor.name, '+')}`, {
|
|
||||||
headers: {
|
|
||||||
'Accept-Language': 'en-US,en', // necessary for some reason
|
|
||||||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res.ok) {
|
|
||||||
const model = res.data.find((result) => result.type === 'model' && slugify(result.title) === actor.slug);
|
|
||||||
|
|
||||||
if (model) {
|
|
||||||
const curatedModel = {
|
|
||||||
entryId: model.url?.match(/model\/(\d+)\//)?.[1],
|
|
||||||
url: model.url,
|
|
||||||
avatar: model.thumb,
|
|
||||||
};
|
|
||||||
|
|
||||||
return curatedModel;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
fetchLatest,
|
|
||||||
scrapeScene: {
|
|
||||||
scraper: scrapeScene,
|
|
||||||
unprint: true,
|
|
||||||
},
|
|
||||||
fetchProfile,
|
|
||||||
};
|
|
|
@ -34,7 +34,6 @@ const karups = require('./karups');
|
||||||
const kellymadison = require('./kellymadison');
|
const kellymadison = require('./kellymadison');
|
||||||
const killergram = require('./killergram');
|
const killergram = require('./killergram');
|
||||||
const kink = require('./kink');
|
const kink = require('./kink');
|
||||||
const mariskax = require('./mariskax');
|
|
||||||
const analvids = require('./analvids');
|
const analvids = require('./analvids');
|
||||||
const littlecapricedreams = require('./littlecapricedreams');
|
const littlecapricedreams = require('./littlecapricedreams');
|
||||||
const loveherfilms = require('./loveherfilms');
|
const loveherfilms = require('./loveherfilms');
|
||||||
|
@ -86,7 +85,6 @@ const scrapers = {
|
||||||
bamvisions,
|
bamvisions,
|
||||||
bang,
|
bang,
|
||||||
bangbros,
|
bangbros,
|
||||||
bluedonkeymedia,
|
|
||||||
bradmontana,
|
bradmontana,
|
||||||
brazzers: mindgeek,
|
brazzers: mindgeek,
|
||||||
cherrypimps,
|
cherrypimps,
|
||||||
|
@ -124,7 +122,7 @@ const scrapers = {
|
||||||
littlecapricedreams,
|
littlecapricedreams,
|
||||||
loveherfilms,
|
loveherfilms,
|
||||||
mamacitaz: porndoe,
|
mamacitaz: porndoe,
|
||||||
mariskax,
|
bluedonkeymedia,
|
||||||
mikeadriano,
|
mikeadriano,
|
||||||
mindgeek,
|
mindgeek,
|
||||||
mylf: teamskeet,
|
mylf: teamskeet,
|
||||||
|
@ -244,7 +242,6 @@ const scrapers = {
|
||||||
littlecapricedreams,
|
littlecapricedreams,
|
||||||
mamacitaz: porndoe,
|
mamacitaz: porndoe,
|
||||||
men: mindgeek,
|
men: mindgeek,
|
||||||
mariskax,
|
|
||||||
metrohd: mindgeek,
|
metrohd: mindgeek,
|
||||||
milehighmedia: mindgeek,
|
milehighmedia: mindgeek,
|
||||||
milfvr: wankzvr,
|
milfvr: wankzvr,
|
||||||
|
|