Catching media store fail unlink error to prevent batch failure.

This commit is contained in:
DebaucheryLibrarian 2023-08-28 02:53:35 +02:00
parent 430d7a8cdd
commit eeb947d311
3 changed files with 22 additions and 7 deletions

View File

@ -172,6 +172,7 @@ function photos() {
const photosWithClipPosters = (this.release.photos || []).concat(this.release.caps || []).concat(this.release.scenesPhotos || []).concat(uniqueClipPosters); const photosWithClipPosters = (this.release.photos || []).concat(this.release.caps || []).concat(this.release.scenesPhotos || []).concat(uniqueClipPosters);
if (this.release.trailer || (this.release.teaser && this.release.teaser.mime !== 'image/gif')) { if (this.release.trailer || (this.release.teaser && this.release.teaser.mime !== 'image/gif')) {
// if (this.release.trailer) {
// poster will be on trailer video // poster will be on trailer video
return photosWithClipPosters; return photosWithClipPosters;
} }

View File

@ -426,11 +426,11 @@ async function writeImage(image, media, info, filepath, isProcessed) {
async function writeThumbnail(image, thumbpath) { async function writeThumbnail(image, thumbpath) {
return image return image
.jpeg({ quality: config.media.thumbnailQuality })
.resize({ .resize({
height: config.media.thumbnailSize, height: config.media.thumbnailSize,
withoutEnlargement: true, withoutEnlargement: true,
}) })
.jpeg({ quality: config.media.thumbnailQuality })
.rotate() .rotate()
.toFile(path.join(config.media.path, thumbpath)); .toFile(path.join(config.media.path, thumbpath));
} }
@ -463,7 +463,7 @@ async function storeImageFile(media, hashDir, hashSubDir, filename, filedir, fil
fsPromises.mkdir(path.join(config.media.path, lazydir), { recursive: true }), fsPromises.mkdir(path.join(config.media.path, lazydir), { recursive: true }),
]); ]);
const image = sharp(media.file.path, { pages: -1 }); const image = sharp(media.file.path, { pages: ['trailer', 'teaser'].includes(media.role) ? -1 : 1 }); // don't store posters as animation
const isProcessed = media.meta.subtype !== 'jpeg' || media.process; const isProcessed = media.meta.subtype !== 'jpeg' || media.process;
const [info, stats] = await Promise.all([ const [info, stats] = await Promise.all([
@ -490,8 +490,8 @@ async function storeImageFile(media, hashDir, hashSubDir, filename, filedir, fil
await writeImage(image, media, info, filepath, isProcessed); await writeImage(image, media, info, filepath, isProcessed);
await Promise.all([ await Promise.all([
writeThumbnail(image, thumbpath), writeThumbnail(image, thumbpath, info),
writeLazy(image, lazypath), writeLazy(image, lazypath, info),
]); ]);
/* /*
@ -603,7 +603,11 @@ async function storeFile(media, options) {
} catch (error) { } catch (error) {
logger.warn(`Failed to store ${media.src}: ${error.message}`); logger.warn(`Failed to store ${media.src}: ${error.message}`);
try {
await fsPromises.unlink(media.file.path); await fsPromises.unlink(media.file.path);
} catch (unlinkError) {
logger.warn(`Failed to unlink ${media.file.path} from ${media.src}: ${unlinkError.message}`);
}
return null; return null;
} }

View File

@ -1,13 +1,14 @@
'use strict'; 'use strict';
const unprint = require('unprint'); const unprint = require('unprint');
const mime = require('mime');
const http = require('../utils/http'); const http = require('../utils/http');
const qu = require('../utils/qu'); const qu = require('../utils/qu');
const slugify = require('../utils/slugify'); const slugify = require('../utils/slugify');
const { lbsToKg, feetInchesToCm } = require('../utils/convert'); const { lbsToKg, feetInchesToCm } = require('../utils/convert');
const teaserOrder = ['large', 'small', 'mobile']; const teaserOrder = ['large', 'small', 'mobile', 'mp4', 'jpg'];
function scrapeSceneMetadata(data, channel) { function scrapeSceneMetadata(data, channel) {
const release = {}; const release = {};
@ -71,7 +72,16 @@ function scrapeSceneApi(data, channel, parameters) {
avatar: actor.thumb, avatar: actor.thumb,
})) || data.models; })) || data.models;
release.poster = data.trailer_screencap || data.thumb; release.poster = data.trailer_screencap;
if (mime.getType(data.thumb) !== 'image/gif') {
release.teaser = data.thumb;
} else {
release.poster = [
release.poster,
data.thumb,
];
}
release.photos = [ release.photos = [
...data.previews?.full || [], ...data.previews?.full || [],