forked from DebaucheryLibrarian/traxxx
Added Black for Wife to JayRock. Switched parameters field to JSON type.
This commit is contained in:
@@ -100,13 +100,14 @@ async function scrapeApiReleases(json, site) {
|
||||
dislikes: scene.ratings_down,
|
||||
};
|
||||
|
||||
release.url = site.parameters?.scene
|
||||
? `${site.parameters.scene}/${scene.url_title}/${release.entryId}`
|
||||
: `${site.url}/en/video/${scene.url_title}/${release.entryId}`;
|
||||
release.path = `/${scene.url_title}/${release.entryId}`;
|
||||
|
||||
if (site.parameters?.scene) release.url = `${site.parameters.scene}${release.path}`;
|
||||
else if (site.parameters?.scene !== false) release.url = `${site.url}/en/video${release.path}`;
|
||||
|
||||
release.date = moment.utc(scene.release_date, 'YYYY-MM-DD').toDate();
|
||||
release.actors = scene.actors.map(({ name }) => name);
|
||||
release.director = scene.directors[0].name;
|
||||
release.director = scene.directors[0]?.name || null;
|
||||
|
||||
release.tags = scene.master_categories
|
||||
.concat(scene.categories?.map(category => category.name))
|
||||
@@ -171,9 +172,9 @@ function scrapeAll(html, site, networkUrl, hasTeaser = true) {
|
||||
});
|
||||
}
|
||||
|
||||
async function scrapeScene(html, url, site) {
|
||||
async function scrapeScene(html, url, site, scrapedRelease) {
|
||||
const $ = cheerio.load(html, { normalizeWhitespace: true });
|
||||
const release = { $, url };
|
||||
const release = { $ };
|
||||
|
||||
const json = $('script[type="application/ld+json"]').html();
|
||||
const videoJson = $('script:contains("window.ScenePlayerOptions")').html();
|
||||
@@ -181,7 +182,7 @@ async function scrapeScene(html, url, site) {
|
||||
const [data, data2] = json ? JSON.parse(json) : [];
|
||||
const videoData = JSON.parse(videoJson.slice(videoJson.indexOf('{'), videoJson.indexOf('};') + 1));
|
||||
|
||||
[release.entryId] = new URL(url).pathname.split('/').slice(-1);
|
||||
[release.entryId] = (scrapedRelease?.path || new URL(url).pathname).split('/').slice(-1);
|
||||
release.title = videoData?.playerOptions?.sceneInfos.sceneTitle || data?.name;
|
||||
|
||||
// date in data object is not the release date of the scene, but the date the entry was added; only use as fallback
|
||||
@@ -194,7 +195,8 @@ async function scrapeScene(html, url, site) {
|
||||
|
||||
if (data) {
|
||||
release.description = data.description;
|
||||
release.director = data.director?.[0].name || data2?.director?.[0].name;
|
||||
if (data.director?.[0]?.name) release.director = data.director[0].name;
|
||||
else if (data2?.director?.[0]?.name) release.director = data2.director[0].name;
|
||||
|
||||
const actors = data?.actor || data2?.actor || [];
|
||||
release.actors = actors.map(actor => actor.name);
|
||||
@@ -437,8 +439,8 @@ async function fetchUpcoming(site) {
|
||||
return scrapeAll(res.body.toString(), site);
|
||||
}
|
||||
|
||||
function getDeepUrl(url, site) {
|
||||
const { pathname } = new URL(url);
|
||||
function getDeepUrl(url, site, release) {
|
||||
const pathname = release.path || new URL(url).pathname;
|
||||
|
||||
if (site.parameters?.deep === 'network') {
|
||||
return `${site.network.url}${pathname}`;
|
||||
@@ -456,11 +458,11 @@ async function fetchScene(url, site, release) {
|
||||
return release;
|
||||
}
|
||||
|
||||
const deepUrl = getDeepUrl(url, site);
|
||||
const deepUrl = getDeepUrl(url, site, release);
|
||||
const res = await bhttp.get(deepUrl);
|
||||
|
||||
if (res.statusCode === 200) {
|
||||
return scrapeScene(res.body.toString(), url, site, deepUrl);
|
||||
return scrapeScene(res.body.toString(), url, site, release);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user