Added rudimentary movie relations.
This commit is contained in:
@@ -135,10 +135,10 @@ function getEntryId(html) {
|
||||
}
|
||||
|
||||
function scrapeAll(scenes, site) {
|
||||
return scenes.map(({ qu }) => {
|
||||
return scenes.map(({ el, qu }) => {
|
||||
const release = {};
|
||||
|
||||
release.entryId = qu.el.dataset.setid || qu.q('.rating_box')?.dataset.id;
|
||||
release.entryId = el.dataset.setid || qu.q('.rating_box')?.dataset.id;
|
||||
|
||||
release.url = qu.url('.update_title, .dvd_info > a, a ~ a');
|
||||
release.title = qu.q('.update_title, .dvd_info > a, a ~ a', true);
|
||||
@@ -160,7 +160,7 @@ function scrapeAll(scenes, site) {
|
||||
} : null;
|
||||
}).filter(Boolean);
|
||||
|
||||
const teaserScript = qu.content('script');
|
||||
const teaserScript = qu.html('script');
|
||||
if (teaserScript) {
|
||||
const src = teaserScript.slice(teaserScript.indexOf('http'), teaserScript.indexOf('.mp4') + 4);
|
||||
if (src) release.teaser = { src };
|
||||
@@ -220,17 +220,19 @@ function scrapeUpcoming(html, site) {
|
||||
});
|
||||
}
|
||||
|
||||
async function scrapeScene({ qu }, url, site) {
|
||||
async function scrapeScene({ html, qu }, url, site, include) {
|
||||
const release = { url, site };
|
||||
|
||||
release.entryId = getEntryId(qu.html);
|
||||
release.entryId = getEntryId(html);
|
||||
release.title = qu.q('.title_bar_hilite', true);
|
||||
release.description = qu.q('.update_description', true);
|
||||
|
||||
release.date = qu.date('.update_date', 'MM/DD/YYYY', null, 'innerHTML');
|
||||
release.actors = qu.all('.backgroundcolor_info > .update_models a, .item .update_models a', true);
|
||||
|
||||
const posterPath = qu.html.match(/useimage = "(.*)"/)?.[1];
|
||||
release.actors = qu.all('.backgroundcolor_info > .update_models a, .item .update_models a', true);
|
||||
release.tags = qu.all('.update_tags a', true);
|
||||
|
||||
const posterPath = html.match(/useimage = "(.*)"/)?.[1];
|
||||
|
||||
if (posterPath) {
|
||||
const poster = /^http/.test(posterPath) ? posterPath : `${site.url}${posterPath}`;
|
||||
@@ -243,8 +245,8 @@ async function scrapeScene({ qu }, url, site) {
|
||||
}
|
||||
}
|
||||
|
||||
if (site.slug !== 'manuelferrara') {
|
||||
const trailerLines = qu.html.split('\n').filter(line => /movie\["trailer\w*"\]\[/i.test(line));
|
||||
if (include.trailer && site.slug !== 'manuelferrara') {
|
||||
const trailerLines = html.split('\n').filter(line => /movie\["trailer\w*"\]\[/i.test(line));
|
||||
|
||||
if (trailerLines.length) {
|
||||
release.trailer = trailerLines.map((trailerLine) => {
|
||||
@@ -259,8 +261,7 @@ async function scrapeScene({ qu }, url, site) {
|
||||
}
|
||||
}
|
||||
|
||||
release.photos = await getPhotos(release.entryId, site);
|
||||
release.tags = qu.all('.update_tags a', true);
|
||||
if (include.photos) release.photos = await getPhotos(release.entryId, site);
|
||||
|
||||
if (qu.exists('.update_dvds a')) {
|
||||
release.movie = {
|
||||
@@ -275,27 +276,27 @@ async function scrapeScene({ qu }, url, site) {
|
||||
return release;
|
||||
}
|
||||
|
||||
function scrapeMovie({ el, q, qus }, url, site) {
|
||||
function scrapeMovie({ el, qu }, url, site) {
|
||||
const movie = { url, site };
|
||||
|
||||
movie.entryId = q('.dvd_details_overview .rating_box').dataset.id;
|
||||
movie.title = q('.title_bar span', true);
|
||||
movie.covers = qus('#dvd-cover-flip > a');
|
||||
movie.channel = q('.update_date a', true);
|
||||
movie.entryId = qu.q('.dvd_details_overview .rating_box').dataset.id;
|
||||
movie.title = qu.q('.title_bar span', true);
|
||||
movie.covers = qu.urls('#dvd-cover-flip > a');
|
||||
movie.channel = qu.q('.update_date a', true);
|
||||
|
||||
// movie.releases = Array.from(document.querySelectorAll('.cell.dvd_info > a'), el => el.href);
|
||||
const sceneQs = ctxa(el, '.dvd_details');
|
||||
const scenes = scrapeAll(sceneQs, site);
|
||||
const sceneQus = ctxa(el, '.dvd_details');
|
||||
const scenes = scrapeAll(sceneQus, site);
|
||||
|
||||
const curatedScenes = scenes
|
||||
.map(scene => ({ ...scene, movie }))
|
||||
?.map(scene => ({ ...scene, movie }))
|
||||
.sort((sceneA, sceneB) => sceneA.date - sceneB.date);
|
||||
|
||||
movie.date = curatedScenes[0].date;
|
||||
movie.date = curatedScenes?.[0].date;
|
||||
|
||||
return {
|
||||
...movie,
|
||||
scenes: curatedScenes,
|
||||
...(curatedScenes && { scenes: curatedScenes }),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -358,10 +359,10 @@ async function fetchUpcoming(site) {
|
||||
return res.statusCode;
|
||||
}
|
||||
|
||||
async function fetchScene(url, site) {
|
||||
async function fetchScene(url, site, baseRelease, preflight, include) {
|
||||
const res = await get(url);
|
||||
|
||||
return res.ok ? scrapeScene(res.item, url, site) : res.status;
|
||||
return res.ok ? scrapeScene(res.item, url, site, include) : res.status;
|
||||
}
|
||||
|
||||
async function fetchMovie(url, site) {
|
||||
|
||||
Reference in New Issue
Block a user