Updated Hentaied, added new sites.
This commit is contained in:
@@ -1,78 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
const unprint = require('unprint');
|
||||
|
||||
function scrapeAll(scenes) {
|
||||
return scenes.map(({ query }) => {
|
||||
if (query.exists('.crowdfunding-post')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const release = {};
|
||||
|
||||
release.url = query.url('a');
|
||||
release.entryId = new URL(release.url).pathname.split('/')[1];
|
||||
|
||||
release.title = query.content('.allvideostitle p, .allvideostitle h2');
|
||||
|
||||
release.actors = query.contents('.tagsmodels a');
|
||||
|
||||
release.poster = query.sourceSet('.vidcont .attachment-thumbnail');
|
||||
release.teaser = query.video('.vidcont video', { attribute: 'data-src' });
|
||||
|
||||
return release;
|
||||
}).filter(Boolean);
|
||||
}
|
||||
|
||||
function scrapeScene({ query }, { url }) {
|
||||
const release = {};
|
||||
|
||||
release.entryId = new URL(url).pathname.split('/')[1];
|
||||
|
||||
release.title = query.content('.title-fav h1');
|
||||
release.description = query.contents('.description #fullstory, .title-fav .cont > p').join(' ');
|
||||
|
||||
release.date = query.date('.datesingle', 'MMMM D, YYYY');
|
||||
release.duration = query.duration('.cont .duration');
|
||||
|
||||
release.actors = query.contents('.cont .tagsmodels:not(.director) a');
|
||||
release.director = query.content('.cont .director a');
|
||||
|
||||
release.poster = [
|
||||
query.img('.preview .attachment-full'),
|
||||
query.img('meta[property="og:image"]', { attribute: 'content' }),
|
||||
];
|
||||
|
||||
release.caps = query.all('.gallery a').map((photoEl) => [
|
||||
unprint.query.url(photoEl, null),
|
||||
unprint.query.img(photoEl, 'img'),
|
||||
]);
|
||||
|
||||
release.trailer = {
|
||||
src: query.video('.preview video'),
|
||||
referer: url,
|
||||
expectType: {
|
||||
'binary/octet-stream': 'video/mp4',
|
||||
},
|
||||
};
|
||||
|
||||
release.tags = query.contents('.post-categories a');
|
||||
|
||||
return release;
|
||||
}
|
||||
|
||||
async function fetchLatest(channel, page = 1) {
|
||||
const url = `${channel.url}/all-videos/page/${page}/`;
|
||||
const res = await unprint.get(url, { selectAll: '.catposts > div:not(.clearfix):not(.flexcont)' });
|
||||
|
||||
if (res.ok) {
|
||||
return scrapeAll(res.context, channel);
|
||||
}
|
||||
|
||||
return res.status;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
fetchLatest,
|
||||
scrapeScene,
|
||||
};
|
||||
103
src/scrapers/hentaied.js
Normal file
103
src/scrapers/hentaied.js
Normal file
@@ -0,0 +1,103 @@
|
||||
'use strict';
|
||||
|
||||
const unprint = require('unprint');
|
||||
|
||||
function scrapeAll(scenes) {
|
||||
return scenes.map(({ query }) => {
|
||||
if (query.exists('.crowdfunding-post')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const release = {};
|
||||
|
||||
release.url = query.url('a');
|
||||
release.entryId = new URL(release.url).pathname.split('/')[1];
|
||||
|
||||
release.title = query.content('.allvideostitle p, .allvideostitle h2');
|
||||
|
||||
release.actors = query.all('.tagsmodels a').map((actorEl) => ({
|
||||
name: unprint.query.content(actorEl),
|
||||
url: unprint.query.url(actorEl, null),
|
||||
}));
|
||||
|
||||
release.poster = query.sourceSet('.vidcont .attachment-thumbnail')
|
||||
|| query.sourceSet('.vidcont .attachment-thumbnail', 'nitro-lazy-srcset');
|
||||
|
||||
release.teaser = query.video('.vidcont video', { attribute: 'data-src' });
|
||||
|
||||
console.log(release);
|
||||
|
||||
return release;
|
||||
}).filter(Boolean);
|
||||
}
|
||||
|
||||
async function fetchLatest(channel, page = 1) {
|
||||
const url = new URL(channel.url).pathname.includes('/projects')
|
||||
? `${channel.url}/page/${page}/`
|
||||
: `${channel.url}/all-videos/page/${page}/`;
|
||||
// const res = await unprint.get(url, { selectAll: '.catposts > div:not(.clearfix):not(.flexcont)' });
|
||||
const res = await unprint.get(url, { selectAll: '.catposts div[class*="post-id"], .catposts .half' });
|
||||
|
||||
if (res.ok) {
|
||||
return scrapeAll(res.context, channel);
|
||||
}
|
||||
|
||||
return res.status;
|
||||
}
|
||||
|
||||
function scrapeScene({ query }, { url }) {
|
||||
const release = {};
|
||||
|
||||
release.entryId = new URL(url).pathname.split('/')[1];
|
||||
|
||||
release.title = query.content('.title-fav h1');
|
||||
release.description = query.contents('.description #fullstory, .title-fav .cont > p').join(' ')
|
||||
|| query.attribute('meta[property="og:description"]', 'content')?.replace('[…]', '').replace(/\s*read more.*/i, '...'); // html description difficult to extract
|
||||
|
||||
release.date = query.date('.datesingle', 'MMMM D, YYYY')
|
||||
|| query.date('meta[property="article:published_time"]', 'YYYY-MM-DDTHH:mm:ss', { attribute: 'content' });
|
||||
|
||||
release.duration = query.duration('.cont .duration, .durationandtime .duration');
|
||||
|
||||
release.actors = query.all('.cont .tagsmodels:not(.director) a, .title-fav .tagsmodels:not(.director) a').map((actorEl) => ({
|
||||
name: unprint.query.content(actorEl),
|
||||
url: unprint.query.url(actorEl, null),
|
||||
}));
|
||||
|
||||
release.directors = query.contents('.cont .director a');
|
||||
|
||||
release.tags = query.contents('.post-categories a');
|
||||
|
||||
release.poster = [
|
||||
query.img('.preview .attachment-full'),
|
||||
query.img('meta[property="og:image"]', { attribute: 'content' }),
|
||||
].filter(Boolean);
|
||||
|
||||
release.caps = query.all('.gallery a').map((photoEl) => Array.from(new Set([
|
||||
unprint.query.url(photoEl, null),
|
||||
unprint.query.img(photoEl),
|
||||
...unprint.query.sourceSet(photoEl, 'img') || [],
|
||||
...unprint.query.sourceSet(photoEl, 'img', 'nitro-lazy-srcset') || [],
|
||||
])).filter(Boolean));
|
||||
|
||||
const trailer = query.video('.preview video');
|
||||
|
||||
if (trailer) {
|
||||
release.trailer = {
|
||||
src: trailer,
|
||||
referer: url,
|
||||
expectType: {
|
||||
'binary/octet-stream': 'video/mp4',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
console.log(release);
|
||||
|
||||
return release;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
fetchLatest,
|
||||
scrapeScene,
|
||||
};
|
||||
@@ -5,7 +5,7 @@ const angelogodshackoriginal = require('./angelogodshackoriginal');
|
||||
// const archangel = require('./archangel');
|
||||
const assylum = require('./assylum');
|
||||
const americanpornstar = require('./americanpornstar');
|
||||
const amnesiac = require('./amnesiac');
|
||||
const hentaied = require('./hentaied');
|
||||
const aziani = require('./aziani');
|
||||
const badoink = require('./badoink');
|
||||
const bamvisions = require('./bamvisions');
|
||||
@@ -105,7 +105,7 @@ module.exports = {
|
||||
amateurallure: julesjordan,
|
||||
americanpornstar,
|
||||
amateureuro: porndoe,
|
||||
amnesiac,
|
||||
hentaied,
|
||||
angelogodshackoriginal,
|
||||
modelmediaasia: modelmedia,
|
||||
assylum,
|
||||
|
||||
Reference in New Issue
Block a user