'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, }, };