Compare commits

..

No commits in common. "e095d8317bf96e299df800cb22374d478e3b8a3f" and "a45c5f8f37182a68c65a5ad4b6f507dfc0191cae" have entirely different histories.

8 changed files with 19 additions and 39 deletions

View File

@ -268,7 +268,7 @@ const releaseFragment = `
${releaseTrailerFragment}
${releaseTeaserFragment}
${siteFragment}
chapters(orderBy: TIME_ASC) {
chapters {
id
index
time

4
package-lock.json generated
View File

@ -1,11 +1,11 @@
{
"name": "traxxx",
"version": "1.177.1",
"version": "1.177.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "1.177.1",
"version": "1.177.0",
"license": "ISC",
"dependencies": {
"@graphile-contrib/pg-order-by-related": "^1.0.0-beta.6",

View File

@ -1,6 +1,6 @@
{
"name": "traxxx",
"version": "1.177.1",
"version": "1.177.0",
"description": "All the latest porn releases in one place",
"main": "src/app.js",
"scripts": {

View File

@ -116,9 +116,9 @@ async function scrapeRelease(baseRelease, entitiesBySlug, type = 'scene') {
? await fetchScene(layoutScraper, baseRelease.url, entity, baseRelease, options, null)
: await layoutScraper.fetchMovie(baseRelease.url, entity, baseRelease, options, null);
if (!scrapedRelease || typeof scrapedRelease !== 'object' || Array.isArray(scrapedRelease)) {
if (typeof scrapedRelease !== 'object' || Array.isArray(scrapedRelease)) {
// scraper is unable to fetch the releases and returned a HTTP code or null
throw new Error(`Scraper returned '${scrapedRelease}' when fetching latest from '${entity.name}' (${entity.parent?.name})`);
throw new Error(`Scraper returned ${scrapedRelease} when fetching latest from '${entity.name}' (${entity.parent?.name})`);
}
// object-merge-advance will use null as explicit false on hard merged keys, even when null as explicit falls is disabled

View File

@ -487,10 +487,6 @@ async function storeFile(media, options) {
throw new Error(`Media for '${media.role}' must be an image, but '${media.meta.mimetype}' was detected`);
}
if (['teasers', 'trailers'].includes(media.role) && media.meta.type !== 'video') {
throw new Error(`Media for '${media.role}' must be a video, but '${media.meta.mimetype}' was detected in ${media.src}`);
}
const [stat] = await Promise.all([
fsPromises.stat(media.file.path),
fsPromises.mkdir(path.join(config.media.path, filedir), { recursive: true }),

View File

@ -45,7 +45,7 @@ const releaseFields = `
slug
}
}
chapters(orderBy: TIME_ASC) @include(if: $full) {
chapters @include (if: $full) {
id
index
time

View File

@ -84,12 +84,6 @@ function scrapeLatestX(data, site, filterChannel) {
if (teaser) release.teaser = teaser;
if (trailer) release.trailer = trailer;
release.chapters = data.timeTags?.map(chapter => ({
time: chapter.startTime,
duration: chapter.endTime - chapter.startTime,
tags: [chapter.name],
}));
return release;
}
@ -120,12 +114,6 @@ function scrapeScene(data, url, _site, networkName) {
if (teaser) release.teaser = teaser;
if (trailer) release.trailer = trailer;
release.chapters = data.timeTags?.map(chapter => ({
time: chapter.startTime,
duration: chapter.endTime - chapter.startTime,
tags: [chapter.name],
}));
const siteName = data.collections[0]?.name || data.brand;
release.channel = slugify(siteName, '');
@ -291,7 +279,7 @@ async function fetchScene(url, site, baseScene, options) {
return baseScene;
}
const entryId = new URL(url).pathname.match(/\/(\d+)/)?.[1];
const entryId = url.match(/\d+/)[0];
const { session, instanceToken } = await getSession(site, options.parameters);
const res = await http.get(`https://site-api.project1service.com/v2/releases/${entryId}`, {

View File

@ -250,21 +250,17 @@ async function updateReleasesSearch(releaseIds) {
}
async function storeChapters(releases) {
const chapters = releases
.map(release => release.chapters?.map((chapter, index) => ({
releaseId: release.id,
index: index + 1,
time: chapter.time,
duration: chapter.duration,
title: chapter.title,
description: chapter.description,
poster: chapter.poster,
photos: chapter.photos,
tags: chapter.tags,
})))
.flat()
.filter(Boolean)
.sort((chapterA, chapterB) => chapterA.time - chapterB.time);
const chapters = releases.map(release => release.chapters?.map((chapter, index) => ({
releaseId: release.id,
index: index + 1,
time: chapter.time,
duration: chapter.duration,
title: chapter.title,
description: chapter.description,
poster: chapter.poster,
photos: chapter.photos,
tags: chapter.tags,
}))).flat().filter(Boolean);
const curatedChapterEntries = chapters.map(chapter => ({
index: chapter.index,