Added Pinky XXX, changed ethnicity tags.
This commit is contained in:
112
src/scrapers/pinkyxxx.js
Normal file
112
src/scrapers/pinkyxxx.js
Normal file
@@ -0,0 +1,112 @@
|
||||
'use strict';
|
||||
|
||||
const qu = require('../utils/qu');
|
||||
const http = require('../utils/http');
|
||||
|
||||
async function getTrailer(entryId, channel) {
|
||||
const videoLinksRes = await http.post('https://pinkyxxx.com/wp-admin/admin-ajax.php', {
|
||||
action: 'vidplay',
|
||||
vid: entryId,
|
||||
type: 'promo',
|
||||
}, {
|
||||
encodeJSON: false,
|
||||
decodeJSON: true,
|
||||
});
|
||||
|
||||
if (!videoLinksRes.ok || !videoLinksRes.body.size1) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const scriptUrl = qu.extract(videoLinksRes.body.size1)?.query.url('script', 'src', { origin: channel.url });
|
||||
const videoScriptRes = await http.get(scriptUrl);
|
||||
|
||||
if (!videoScriptRes.ok) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const videoDataString = videoScriptRes.body.match(/"clip":({.*"})/)?.[1];
|
||||
const videoData = videoDataString && JSON.parse(videoDataString);
|
||||
|
||||
const posterUrlString = videoScriptRes.body.match(/src="(.*poster.*?)"/)?.[1];
|
||||
const posterUrlEl = videoScriptRes.document.createElement('span');
|
||||
|
||||
posterUrlEl.innerHTML = posterUrlString;
|
||||
|
||||
return {
|
||||
trailer: videoData?.url || null,
|
||||
poster: posterUrlEl.textContent || null,
|
||||
};
|
||||
}
|
||||
|
||||
function scrapeAll(scenes) {
|
||||
return scenes.map((scene) => {
|
||||
const release = {};
|
||||
|
||||
release.entryId = scene.ID;
|
||||
release.url = scene.permalink;
|
||||
|
||||
release.title = scene.title;
|
||||
release.description = scene.description;
|
||||
|
||||
release.date = qu.extractDate(scene.info?.post_date, 'YYYY-MM-DD HH:mm:ss') || qu.extractDate(scene.date, 'MMMM D, YYYY'); // eslint-disable-line camelcase
|
||||
|
||||
release.poster = scene.poster[0];
|
||||
release.photos = Object.entries(scene).reduce((acc, [key, data]) => {
|
||||
if (/thumb/.test(key)) {
|
||||
return [...acc, data.url];
|
||||
}
|
||||
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
return release;
|
||||
});
|
||||
}
|
||||
|
||||
async function scrapeScene({ query }, channel) {
|
||||
const release = {};
|
||||
|
||||
release.title = query.cnt('.title');
|
||||
release.description = query.cnt('.description');
|
||||
|
||||
release.entryId = query.q('body', 'class').match(/postid-(\d+)/)?.[1];
|
||||
|
||||
const { poster, trailer } = await getTrailer(release.entryId, channel) || {};
|
||||
|
||||
release.poster = poster;
|
||||
release.trailer = trailer;
|
||||
|
||||
return release;
|
||||
}
|
||||
|
||||
async function fetchLatest(channel, page) {
|
||||
const res = await http.post('https://pinkyxxx.com/wp-admin/admin-ajax.php', {
|
||||
action: 'vls',
|
||||
limit: 10,
|
||||
offset: (page - 1) * 10,
|
||||
}, {
|
||||
encodeJSON: false,
|
||||
decodeJSON: true,
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
return scrapeAll(res.body.listings);
|
||||
}
|
||||
|
||||
return res.status;
|
||||
}
|
||||
|
||||
async function fetchScene(url, channel) {
|
||||
const res = await qu.get(url);
|
||||
|
||||
if (res.ok) {
|
||||
return scrapeScene(res.item, channel);
|
||||
}
|
||||
|
||||
return res.status;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
fetchLatest,
|
||||
fetchScene,
|
||||
};
|
||||
@@ -56,6 +56,7 @@ const pervcity = require('./pervcity');
|
||||
const porncz = require('./porncz');
|
||||
const pornhub = require('./pornhub');
|
||||
const pascalssubsluts = require('./pascalssubsluts'); // reserved keyword
|
||||
const pinkyxxx = require('./pinkyxxx');
|
||||
const privateNetwork = require('./private'); // reserved keyword
|
||||
const puretaboo = require('./puretaboo');
|
||||
const realitykings = require('./realitykings');
|
||||
@@ -146,6 +147,7 @@ const scrapers = {
|
||||
perfectgonzo,
|
||||
pervcity,
|
||||
pimpxxx: cherrypimps,
|
||||
pinkyxxx,
|
||||
porncz,
|
||||
pornpros: whalemember,
|
||||
private: privateNetwork,
|
||||
|
||||
Reference in New Issue
Block a user