Added stand-alone Spizoo sites.
This commit is contained in:
@@ -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, '')
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user