forked from DebaucheryLibrarian/traxxx
138 lines
3.5 KiB
JavaScript
138 lines
3.5 KiB
JavaScript
'use strict';
|
|
|
|
const unprint = require('unprint');
|
|
|
|
const slugify = require('../utils/slugify');
|
|
|
|
function scrapeLatest(scenes) {
|
|
return scenes.map(({ query }) => {
|
|
const release = {};
|
|
|
|
release.entryId = query.dataset('a[data-movie]', 'movie');
|
|
release.shootId = release.entryId;
|
|
|
|
release.title = query.content('.vidtitle p:first-child');
|
|
release.description = query.text('.collapse p');
|
|
|
|
release.date = query.date('.vidtitle p:last-child', 'MMMM Do, YYYY');
|
|
release.poster = query.img('.vidthumb img');
|
|
|
|
release.forceDeep = true;
|
|
|
|
return release;
|
|
});
|
|
}
|
|
|
|
async function fetchLatest(channel, page) {
|
|
const res = await unprint.get(`https://www.sicflics.com/cinema/12-chronological-order/page${page}.html`, { selectAll: '.update-wrap' });
|
|
|
|
if (res.ok) {
|
|
return scrapeLatest(res.context, channel);
|
|
}
|
|
|
|
return res.status;
|
|
}
|
|
|
|
function scrapeLatestMobile(scenes) {
|
|
return scenes.map(({ query }) => {
|
|
const release = {};
|
|
|
|
release.url = query.url('a[href*="movie/"]');
|
|
|
|
release.entryId = new URL(release.url).pathname.match(/\/movie\/c\/(\d+)/)?.[1];
|
|
release.shootId = release.entryId;
|
|
|
|
release.title = query.content('.titlebg h4');
|
|
release.date = query.date('.date span', 'MMMM Do, YYYY');
|
|
|
|
release.poster = query.img('a img.thumb');
|
|
|
|
return release;
|
|
});
|
|
}
|
|
|
|
async function fetchLatestMobile(channel, page) {
|
|
const res = await unprint.get(`https://m.sicflics.com/cinema/12-chronological-order/page${page}.html`, { selectAll: '.episode-box' });
|
|
|
|
if (res.ok) {
|
|
return scrapeLatestMobile(res.context, channel);
|
|
}
|
|
|
|
return res.status;
|
|
}
|
|
|
|
function scrapeScene({ query }, entryId, parameters) {
|
|
const release = { entryId };
|
|
|
|
release.title = query.content('h4');
|
|
release.date = query.date('span[title="Date Added"]', 'MMMM Do, YYYY');
|
|
|
|
const tags = query.contents('.vidwrap a[href="#"]').map((tag) => tag.replace('#', ''));
|
|
|
|
if (parameters?.actorTags) {
|
|
release.actors = tags.map((tag) => parameters.actorTags[slugify(tag, '_')]).filter(Boolean);
|
|
release.tags = tags.filter((tag) => !parameters.actorTags[slugify(tag, '_')]);
|
|
} else {
|
|
release.tags = tags;
|
|
}
|
|
|
|
return release;
|
|
}
|
|
|
|
async function fetchScene(_url, _channel, baseRelease, { parameters }) {
|
|
if (!baseRelease?.entryId) {
|
|
return null;
|
|
}
|
|
|
|
const res = await unprint.get(`https://www2.sicflics.com/v6/v6.pop.php?id=${baseRelease.entryId}`);
|
|
|
|
if (res.ok) {
|
|
return scrapeScene(res.context, baseRelease.entryId, parameters);
|
|
}
|
|
|
|
return res.status;
|
|
}
|
|
|
|
function scrapeSceneMobile({ query }, url, parameters) {
|
|
const release = {};
|
|
|
|
release.entryId = new URL(url).pathname.match(/\/movie\/c\/(\d+)/)?.[1];
|
|
|
|
release.title = query.content('.single-title');
|
|
release.description = query.text('.moviedesc');
|
|
|
|
release.date = query.date('//strong[contains(text(), "Uploaded on")]/following-sibling::text()', 'MMMM Do, YYYY');
|
|
|
|
const tags = query.contents('.player-block a[href*="/tag"]').map((tag) => tag.replace('#', ''));
|
|
|
|
if (parameters?.actorTags) {
|
|
release.actors = tags.map((tag) => parameters.actorTags[slugify(tag, '_')]).filter(Boolean);
|
|
release.tags = tags.filter((tag) => !parameters.actorTags[slugify(tag, '_')]);
|
|
} else {
|
|
release.tags = tags;
|
|
}
|
|
|
|
release.poster = query.img('.thumb-pad img');
|
|
|
|
return release;
|
|
}
|
|
|
|
async function fetchSceneMobile(url, _channel, _baseRelease, { parameters }) {
|
|
const res = await unprint.get(url, { select: '.player-block' });
|
|
|
|
if (res.ok) {
|
|
return scrapeSceneMobile(res.context, url, parameters);
|
|
}
|
|
|
|
return res.status;
|
|
}
|
|
|
|
module.exports = {
|
|
fetchLatest,
|
|
fetchScene,
|
|
mobile: {
|
|
fetchLatest: fetchLatestMobile,
|
|
fetchScene: fetchSceneMobile,
|
|
},
|
|
};
|