Added stand-alone Spizoo sites.

This commit is contained in:
DebaucheryLibrarian
2022-02-07 21:58:27 +01:00
parent 5630b16e99
commit fffe9080f3
52 changed files with 127 additions and 17 deletions

View File

@@ -91,7 +91,7 @@ async function scrapeScene(scene, entity, options) {
}
}
release.trailer = `https://i.bang.com/v/${scene.dvd.id}/${scene.identifier}/preview.mp4`;
release.teaser = `https://i.bang.com/v/${scene.dvd.id}/${scene.identifier}/preview.mp4`;
release.channel = scene.series.name
.replace(/[! .]/g, '')

View File

@@ -14,13 +14,16 @@ function scrapeAll(scenes) {
release.url = query.url('a');
release.entryId = getEntryId(release.url);
release.title = query.cnt('.title-label a');
release.actors = query.all('.update_models a').map((el) => ({
release.title = query.cnt('.title-label a, .thumb-title a, .p-7, .text h3');
release.date = query.date('.date-label', 'MM/DD/YYYY');
release.actors = query.all(['.update_models a', '.tour_update_models a', '.pornstar-label span']).map((el) => ({
name: query.cnt(el),
url: query.url(el, null),
}));
release.poster = query.img('a img');
release.teaser = query.video('.leVideo source');
return release;
});
@@ -30,21 +33,21 @@ function scrapeScene({ query }, url) {
const release = {};
release.entryId = getEntryId(url);
release.title = query.cnt('#media-holder .title');
release.title = query.cnt(['#media-holder .title', '.content-holder h1', '#scene h1', 'h2.titular', 'title'])?.replace(/\s+-$/, '');
release.date = query.date('#sceneInfo .date', 'YYYY-MM-DD');
release.duration = query.duration('#sceneInfo .data-others', /\d+:\d+/);
release.date = query.date('#sceneInfo .date, #trailer-data .date', 'YYYY-MM-DD');
release.duration = query.duration('#sceneInfo .data-others, #trailer-data', /\d+:\d+/);
release.description = query.cnt('#sceneInfo .description');
release.description = query.cnt('#sceneInfo .description, #trailer-data > div:first-child p');
release.actors = query.all('#sceneInfo .data-others a[href*="/models"]').map((el) => ({
release.actors = query.all('#sceneInfo .data-others a[href*="/models"], #trailer-data a[href*="/models"]').map((el) => ({
name: query.el(el, null, 'title'),
url: query.url(el, null),
}));
release.tags = query.cnts('.categories-holder a');
release.tags = query.cnts('.categories-holder a, #sceneInfo a[href*="/categories"], #trailer-data a[href*="/categories"]');
const poster = query.img('#video-holder .update_thumb') || query.poster('#trailervideo');
const poster = query.img(['#video-holder .update_thumb', '#noMore .update_thumb', '#hpromo .update_thumb', '.trailer-thumb']) || query.poster('#trailervideo');
const posterPathname = poster && new URL(poster)?.pathname;
release.poster = [poster, poster?.replace(/imgw=\w+/, 'imgw=680')];
@@ -56,7 +59,8 @@ function scrapeScene({ query }, url) {
src,
]);
release.trailer = query.video('#trailervideo source');
release.trailer = query.video('#trailervideo source[type="video/mp4"], #FulsSizeVideo source[type="video/mp4"]'); // sic
release.teaser = query.video('#trailer-video source[src*="/videothumbs"]');
return release;
}
@@ -127,7 +131,7 @@ function scrapeProfile({ query, el }) {
}
async function fetchLatest(channel, page) {
const res = await qu.getAll(`${channel.url}/categories/movies_${page}_d.html`, '.thumb-big');
const res = await qu.getAll(`${channel.url}/categories/movies_${page}_d.html`, '.thumb-big, .thumb-video, .thumbnail, .thumbnail-popular, .full-thumbnail');
if (res.ok) {
return scrapeAll(res.items, channel);

View File

@@ -117,13 +117,13 @@ function getElements(context, selector, first = false) {
return Array.from(context.querySelectorAll(selector));
}
function q(context, selector, attrArg, applyTrim = true) {
if (!selector && context.nodeName === '#document') {
function q(context, selectors, attrArg, applyTrim = true) {
if (!selectors && context.nodeName === '#document') {
return null;
}
const attr = attrArg === true ? 'textContent' : attrArg;
const element = getElements(context, selector, true);
const element = [].concat(selectors).reduce((acc, selector) => acc || getElements(context, selector, true), null);
if (!element) {
return null;
@@ -138,9 +138,9 @@ function q(context, selector, attrArg, applyTrim = true) {
return element;
}
function all(context, selector, attrArg, applyTrim = true) {
function all(context, selectors, attrArg, applyTrim = true) {
const attr = attrArg === true ? 'textContent' : attrArg;
const elements = getElements(context, selector);
const elements = [].concat(selectors).reduce((acc, selector) => acc || getElements(context, selector), null);
if (attr) {
return elements.map((el) => q(el, null, attr, applyTrim));