2024-07-08 02:59:28 +00:00
|
|
|
'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');
|
2024-07-10 22:02:37 +00:00
|
|
|
release.duration = query.duration('.cont .duration');
|
2024-07-08 02:59:28 +00:00
|
|
|
|
2024-07-10 22:02:37 +00:00
|
|
|
release.actors = query.contents('.cont .tagsmodels:not(.director) a');
|
|
|
|
release.director = query.content('.cont .director a');
|
2024-07-08 02:59:28 +00:00
|
|
|
|
|
|
|
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) {
|
2024-07-08 22:30:53 +00:00
|
|
|
const url = `${channel.url}/all-videos/page/${page}/`;
|
2024-07-08 02:59:28 +00:00
|
|
|
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,
|
2024-08-20 00:33:42 +00:00
|
|
|
scrapeScene,
|
2024-07-08 02:59:28 +00:00
|
|
|
};
|