forked from DebaucheryLibrarian/traxxx
Refactored media module. Returning 320p and 720p videos from MindGeek as teasers instead of trailers.
This commit is contained in:
@@ -47,7 +47,7 @@ function scrapeLatest(html, site) {
|
||||
const actors = title.split(/[,&]|\band\b/).map(actor => actor.trim());
|
||||
|
||||
const poster = `https:${element.querySelector('img').src}`;
|
||||
const trailer = sceneLinkElement.dataset.preview_clip_url;
|
||||
const teaser = sceneLinkElement.dataset.preview_clip_url;
|
||||
|
||||
return [
|
||||
...acc,
|
||||
@@ -57,8 +57,8 @@ function scrapeLatest(html, site) {
|
||||
title,
|
||||
actors,
|
||||
poster,
|
||||
trailer: {
|
||||
src: trailer,
|
||||
teaser: {
|
||||
src: teaser,
|
||||
},
|
||||
site,
|
||||
},
|
||||
@@ -99,7 +99,7 @@ async function scrapeScene(html, url, site) {
|
||||
const lastPhotosUrl = Array.from(document.querySelectorAll('.pagination a')).slice(-1)[0].href;
|
||||
const photos = await getPhotos(`${origin}${pathname}${lastPhotosUrl}`, site, url);
|
||||
|
||||
const stars = Math.floor(Number(document.querySelector('span[itemprop="average"]').textContent) / 2);
|
||||
const stars = Math.floor(Number(document.querySelector('span[itemprop="average"]')?.textContent || document.querySelector('span[itemprop="ratingValue"]')?.textContent) / 2);
|
||||
const tags = Array.from(document.querySelectorAll('.scene-details .categories a')).map(({ textContent }) => textContent);
|
||||
|
||||
return {
|
||||
|
||||
@@ -36,35 +36,33 @@ function scrapeLatestX(data, site) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const { id: entryId, title, description } = data;
|
||||
const hostname = site.parameters?.native ? site.url : site.network.url;
|
||||
const url = `${hostname}/scene/${entryId}/`;
|
||||
const date = new Date(data.dateReleased);
|
||||
const actors = data.actors.map(actor => ({ name: actor.name, gender: actor.gender }));
|
||||
|
||||
const tags = data.tags.map(tag => tag.name);
|
||||
|
||||
const [poster, ...photos] = getThumbs(data);
|
||||
const trailer = data.videos.mediabook && (data.videos.mediabook.files['720p'] || data.videos.mediabook.files['320p']);
|
||||
const duration = data.videos.mediabook && data.videos.mediabook.length;
|
||||
|
||||
return {
|
||||
url,
|
||||
entryId,
|
||||
title,
|
||||
description,
|
||||
actors,
|
||||
tags,
|
||||
duration,
|
||||
poster,
|
||||
photos,
|
||||
trailer: trailer && {
|
||||
src: trailer.urls.view,
|
||||
quality: parseInt(trailer.format, 10),
|
||||
},
|
||||
date,
|
||||
site,
|
||||
const release = {
|
||||
entryId: data.id,
|
||||
title: data.title,
|
||||
description: data.description,
|
||||
};
|
||||
|
||||
const hostname = site.parameters?.native ? site.url : site.network.url;
|
||||
|
||||
release.url = `${hostname}/scene/${release.entryId}/`;
|
||||
release.date = new Date(data.dateReleased);
|
||||
release.actors = data.actors.map(actor => ({ name: actor.name, gender: actor.gender }));
|
||||
|
||||
release.tags = data.tags.map(tag => tag.name);
|
||||
|
||||
release.duration = data.videos.mediabook?.length;
|
||||
[release.poster, ...release.photos] = getThumbs(data);
|
||||
|
||||
const teaserSources = data.videos.mediabook?.files;
|
||||
|
||||
if (teaserSources) {
|
||||
release.teaser = Object.values(teaserSources).map(teaser => ({
|
||||
src: teaser.urls.view,
|
||||
quality: parseInt(teaser.format, 10),
|
||||
}));
|
||||
}
|
||||
|
||||
return release;
|
||||
}
|
||||
|
||||
async function scrapeLatest(items, site) {
|
||||
@@ -89,12 +87,13 @@ function scrapeScene(data, url, _site, networkName) {
|
||||
|
||||
[release.poster, ...release.photos] = getThumbs(data);
|
||||
|
||||
const trailer = data.videos.mediabook && (data.videos.mediabook.files['720p'] || data.videos.mediabook.files['320p']);
|
||||
if (trailer) {
|
||||
release.trailer = {
|
||||
src: trailer.urls.view,
|
||||
quality: parseInt(trailer.format, 10),
|
||||
};
|
||||
const teaserSources = data.videos.mediabook?.files;
|
||||
|
||||
if (teaserSources) {
|
||||
release.teaser = Object.values(teaserSources).map(teaser => ({
|
||||
src: teaser.urls.view,
|
||||
quality: parseInt(teaser.format, 10),
|
||||
}));
|
||||
}
|
||||
|
||||
const siteName = data.collections[0]?.name || data.brand;
|
||||
|
||||
Reference in New Issue
Block a user