From a04c7dda37434cb51089f444690a26d09f0b3515 Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Mon, 8 Feb 2021 04:29:12 +0100 Subject: [PATCH] Added log to give insight about media insert failures. --- src/media.js | 14 ++++++++++---- src/scrapers/traxxx.js | 14 +++----------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/media.js b/src/media.js index f864e31a..06105463 100644 --- a/src/media.js +++ b/src/media.js @@ -688,11 +688,16 @@ async function storeMedias(baseMedias, options) { const newMediaWithEntries = savedMedias.filter(Boolean).map((media, index) => curateMediaEntry(media, index)); const newMediaEntries = newMediaWithEntries.filter(media => media.newEntry).map(media => media.entry); - // TODO: path duplicates disappear in DO NOTHING query, causing association error. source duplicate detection not working? use scene generator - // await bulkInsert('media', newMediaEntries, false); - await bulkInsert('media', newMediaEntries); + try { + // TODO: path duplicates disappear in DO NOTHING query, causing association error. source duplicate detection not working? use scene generator + // UPDATE: cannot replicate when using the same poster and photo source in scene generator + // await bulkInsert('media', newMediaEntries, false); + await bulkInsert('media', newMediaEntries); - return [...newMediaWithEntries, ...existingHashMedias]; + return [...newMediaWithEntries, ...existingHashMedias]; + } catch (error) { + throw Object.assign(error, { entries: newMediaEntries }); + } } async function associateReleaseMedia(releases, type = 'release') { @@ -757,6 +762,7 @@ async function associateReleaseMedia(releases, type = 'release') { await bulkInsert(`${type}s_${role}`, associations, false); } } catch (error) { + logger.error(util.inspect(error.entries, null, null, { color: true })); logger.error(`Failed to store ${type} ${role}: ${error.message}`); } }, Promise.resolve()); diff --git a/src/scrapers/traxxx.js b/src/scrapers/traxxx.js index 38a5c8a9..76d51060 100644 --- a/src/scrapers/traxxx.js +++ b/src/scrapers/traxxx.js @@ -240,23 +240,15 @@ async function fetchLatest(entity, page, options) { release.photos = Array.from({ length: Math.floor(Math.random() * 10) + 1 }, () => `${options.source}?id=${nanoid()}`); // ensure source is unique } else { // select from local SFW database - const [/* poster */, ...photos] = await knex('media') + const [poster, ...photos] = await knex('media') .select('path') .where('is_sfw', true) .pluck('path') .orderByRaw('random()') .limit(Math.floor(Math.random() * 10) + 1); - const [poster] = await knex('media') - .select('path') - .where('is_sfw', true) - .pluck('path') - .limit(1); - - // release.poster = `http://${config.web.host}:${config.web.port}/img/${poster}?id=${nanoid()}`; // ensure source is unique - release.poster = `http://${config.web.host}:${config.web.port}/img/${poster}`; // ensure source is unique - // release.photos = photos.map(photo => `http://${config.web.host}:${config.web.port}/img/${photo}?id=${nanoid()}`); - release.photos = [release.poster]; + release.poster = `http://${config.web.host}:${config.web.port}/img/${poster}?id=${nanoid()}`; // ensure source is unique + release.photos = photos.map(photo => `http://${config.web.host}:${config.web.port}/img/${photo}?id=${nanoid()}`); } release.tags = await knex('tags')