Compare commits

...

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian fc6bb2feda 1.240.1 2024-08-21 01:03:55 +02:00
DebaucheryLibrarian 8aeee8eea6 Added Cliff Media (Vanessa Cliff). 2024-08-21 01:03:53 +02:00
6 changed files with 81 additions and 15 deletions

4
package-lock.json generated
View File

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

View File

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

View File

@ -2548,6 +2548,13 @@ const sites = [
extract: true,
},
},
// CLIFF MEDIA / VANESSA CLIFF
{
name: 'Cliff Media',
slug: 'cliffmedia',
alias: ['vanessa cliff'],
url: 'https://www.vanessacliff.com',
},
// CZECHAV
{
name: 'Czech Streets',

View File

@ -0,0 +1,67 @@
'use strict';
const unprint = require('unprint');
function scrapeAll(scenes) {
return scenes.map(({ query }) => {
const release = {};
release.url = query.url('.image-container a');
release.entryId = new URL(release.url).pathname.match(/\/video-preview\/(\w+)/)[1];
release.title = query.content('.caption-title');
release.poster = query.img('.image-container img');
return release;
});
}
function scrapeScene({ query }, { url }) {
const release = {};
release.entryId = new URL(url).pathname.match(/\/video-preview\/(\w+)/)[1];
release.title = query.content('#dm_content .dmNewParagraph[data-diy-text]');
release.poster = query.poster('#dm_content video');
release.trailer = query.video('#dm_content video source');
return release;
}
async function fetchScene(url) {
const res = await unprint.get(url, {
headers: {
Accept: '*/*', // seems to respond with JSON otherwise
},
});
if (res.ok) {
return scrapeScene(res.context, { url });
}
return res.status;
}
async function fetchLatest(channel) {
const url = `${channel.url}/free-video`; // no pagination at this time
const res = await unprint.get(url, {
selectAll: '.gallery .photoGalleryThumbs',
headers: {
Accept: '*/*', // seems to respond with JSON otherwise
},
});
if (res.ok) {
return scrapeAll(res.context, channel);
}
return res.status;
}
module.exports = {
fetchLatest,
fetchScene,
};

View File

@ -12,6 +12,7 @@ const bang = require('./bang');
const bangbros = require('./bangbros');
const bradmontana = require('./bradmontana');
const cherrypimps = require('./cherrypimps');
const cliffmedia = require('./cliffmedia');
const cumlouder = require('./cumlouder');
const czechav = require('./czechav');
const ddfnetwork = require('./ddfnetwork');
@ -96,6 +97,7 @@ const scrapers = {
bradmontana,
brazzers: aylo,
cherrypimps,
cliffmedia,
cumlouder,
czechav,
pornworld: ddfnetwork,

View File

@ -28,7 +28,7 @@ function scrapeAll(scenes) {
});
}
function scrapeScene({ query }, url) {
function scrapeScene({ query }, { url }) {
const release = {};
release.entryId = new URL(url).pathname.match(/\/scene\/(\d+)/)[1];
@ -70,16 +70,6 @@ async function fetchLatest(channel, page = 1) {
return res.status;
}
async function fetchScene(url, channel) {
const res = await unprint.get(url);
if (res.ok) {
return scrapeScene(res.context, url, channel);
}
return res.status;
}
async function fetchProfile({ name: actorName }, entity, include) {
const url = `${entity.url}/actors/${slugify(actorName, '_')}`;
const res = await unprint.get(url);
@ -93,6 +83,6 @@ async function fetchProfile({ name: actorName }, entity, include) {
module.exports = {
fetchLatest,
fetchScene,
fetchProfile,
scrapeScene,
};