Added Snow Valley (Sperm Mania) scraper.
This commit is contained in:
@@ -28,7 +28,7 @@ function getEntryId(html) {
|
||||
function getEntryIdFromTitle(release) {
|
||||
// return slugify([release.title, release.date && unprint.formatDate(release.date, 'YYYY-MM-DD')]); // date not shown on updates page
|
||||
// return slugify(release.title);
|
||||
return slugify([release.title, ...(release.actors?.map((actor) => actor.name).toSorted() || [])]);
|
||||
return slugify([release.title, ...(release.actors?.map((actor) => actor.name || actor).toSorted() || [])]);
|
||||
}
|
||||
|
||||
function scrapeAll(scenes, site, entryIdFromTitle) {
|
||||
@@ -226,13 +226,13 @@ async function scrapeScene({ html, query }, context) {
|
||||
})));
|
||||
}
|
||||
|
||||
if (query.exists('.update_dvds a')) {
|
||||
if (query.exists('.player-scene-description a[href*="/dvd"]')) {
|
||||
release.movie = {
|
||||
url: query.url('.update_dvds a'),
|
||||
title: query.cnt('.update_dvds a'),
|
||||
url: query.url('.player-scene-description a[href*="/dvd"]'),
|
||||
title: query.content('.player-scene-description a[href*="/dvd"]'),
|
||||
};
|
||||
|
||||
release.movie.entryId = new URL(release.movie.url).pathname.split('/').slice(-1)[0]?.replace('.html', '');
|
||||
release.movie.entryId = new URL(release.movie.url).pathname.split('/').slice(-1)[0]?.replace('.html', '').toLowerCase();
|
||||
}
|
||||
|
||||
release.stars = query.number('.avg_rating');
|
||||
@@ -244,28 +244,40 @@ async function scrapeScene({ html, query }, context) {
|
||||
return release;
|
||||
}
|
||||
|
||||
function scrapeMovie({ el, query }, url, site) {
|
||||
const movie = { url, site };
|
||||
function scrapeMovie({ query }, { url }) {
|
||||
const movie = {};
|
||||
|
||||
movie.entryId = new URL(url).pathname.split('/').slice(-1)[0]?.replace('.html', '').toLowerCase();
|
||||
movie.title = query.cnt('.title_bar span');
|
||||
movie.covers = query.urls('#dvd-cover-flip > a');
|
||||
movie.channel = slugify(query.q('.update_date a', true), '');
|
||||
movie.title = query.attribute('meta[property="og:title"]', 'content');
|
||||
|
||||
// movie.releases = Array.from(document.querySelectorAll('.cell.dvd_info > a'), el => el.href);
|
||||
const sceneQus = qu.initAll(el, '.dvd_details');
|
||||
const scenes = scrapeAll(sceneQus, site);
|
||||
movie.covers = [query.img('img.dvd_box')]; // -2x etc is likely upscaled
|
||||
|
||||
const curatedScenes = scenes
|
||||
?.map((scene) => ({ ...scene, movie }))
|
||||
.sort((sceneA, sceneB) => sceneA.date - sceneB.date);
|
||||
const sceneTitles = query.contents('.title-heading-content-black-dvd');
|
||||
|
||||
movie.date = curatedScenes?.[0]?.date;
|
||||
const scenes = query.all('.grid-container-scene').map((sceneEl, index) => {
|
||||
const scene = {};
|
||||
|
||||
return {
|
||||
...movie,
|
||||
...(curatedScenes && { scenes: curatedScenes }),
|
||||
};
|
||||
scene.url = unprint.query.url(sceneEl, 'a[href*="/scenes"]');
|
||||
scene.title = sceneTitles[index];
|
||||
|
||||
scene.date = unprint.query.date(sceneEl, '//span[contains(@class, "dvd-scene-description") and span[contains(text(), "Date")]]', 'MM/DD/YYYY');
|
||||
scene.actors = unprint.query.contents(sceneEl, '.update_models a');
|
||||
|
||||
scene.entryId = getEntryIdFromTitle(scene);
|
||||
|
||||
console.log(scene);
|
||||
|
||||
return scene;
|
||||
});
|
||||
|
||||
movie.scenes = scenes?.sort((sceneA, sceneB) => sceneA.date - sceneB.date);
|
||||
|
||||
movie.date = movie.scenes?.[0]?.date;
|
||||
movie.datePrecision = 'month';
|
||||
|
||||
console.log('jj movie', movie);
|
||||
|
||||
return movie;
|
||||
}
|
||||
|
||||
function scrapeProfile({ query }, url, name, entity) {
|
||||
@@ -325,12 +337,6 @@ async function fetchUpcoming(site) {
|
||||
return res.status;
|
||||
}
|
||||
|
||||
async function fetchMovie(url, site) {
|
||||
const res = await qu.get(url);
|
||||
|
||||
return res.ok ? scrapeMovie(res.item, url, site) : res.status;
|
||||
}
|
||||
|
||||
async function fetchProfile({ name: actorName, url }, entity) {
|
||||
const actorSlugA = slugify(actorName, '');
|
||||
const actorSlugB = slugify(actorName, '-');
|
||||
@@ -364,8 +370,8 @@ async function fetchProfile({ name: actorName, url }, entity) {
|
||||
|
||||
module.exports = {
|
||||
fetchLatest,
|
||||
fetchMovie,
|
||||
fetchProfile,
|
||||
fetchUpcoming,
|
||||
scrapeScene,
|
||||
scrapeMovie,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user