forked from DebaucheryLibrarian/traxxx
Queueing and batching media HTTP requests for improved reliability.
This commit is contained in:
@@ -330,6 +330,10 @@ function accumulateMovies(releases) {
|
||||
}
|
||||
|
||||
async function storeReleaseAssets(releases) {
|
||||
if (!argv.media) {
|
||||
return;
|
||||
}
|
||||
|
||||
const releasePostersById = releases.reduce((acc, release) => ({ ...acc, [release.id]: [release.poster] }), {});
|
||||
const releaseCoversById = releases.reduce((acc, release) => ({ ...acc, [release.id]: release.covers }), {});
|
||||
const releaseTrailersById = releases.reduce((acc, release) => ({ ...acc, [release.id]: [release.trailer] }), {});
|
||||
@@ -340,28 +344,30 @@ async function storeReleaseAssets(releases) {
|
||||
}), {});
|
||||
|
||||
const [posters, covers] = await Promise.all([
|
||||
storeMedia(Object.values(releasePostersById).flat(), 'release', 'poster'),
|
||||
storeMedia(Object.values(releaseCoversById).flat(), 'release', 'cover'),
|
||||
argv.posters && storeMedia(Object.values(releasePostersById).flat(), 'release', 'poster'),
|
||||
argv.covers && storeMedia(Object.values(releaseCoversById).flat(), 'release', 'cover'),
|
||||
]);
|
||||
|
||||
// ensure posters are available before fetching supplementary media
|
||||
await Promise.all([
|
||||
(posters && associateMedia(releasePostersById, posters, 'release', 'poster')),
|
||||
(covers && associateMedia(releaseCoversById, covers, 'release', 'cover')),
|
||||
posters && associateMedia(releasePostersById, posters, 'release', 'poster'),
|
||||
covers && associateMedia(releaseCoversById, covers, 'release', 'cover'),
|
||||
]);
|
||||
|
||||
const photos = await storeMedia(Object.values(releasePhotosById).flat(), 'release', 'photo');
|
||||
if (photos) await associateMedia(releasePhotosById, photos, 'release', 'photo');
|
||||
if (argv.photos) {
|
||||
const photos = await storeMedia(Object.values(releasePhotosById).flat(), 'release', 'photo');
|
||||
if (photos) await associateMedia(releasePhotosById, photos, 'release', 'photo');
|
||||
}
|
||||
|
||||
// videos take a long time, fetch last
|
||||
const [trailers, teasers] = await Promise.all([
|
||||
storeMedia(Object.values(releaseTrailersById).flat(), 'release', 'trailer'),
|
||||
storeMedia(Object.values(releaseTeasersById).flat(), 'release', 'teaser'),
|
||||
argv.trailers && storeMedia(Object.values(releaseTrailersById).flat(), 'release', 'trailer'),
|
||||
argv.teasers && storeMedia(Object.values(releaseTeasersById).flat(), 'release', 'teaser'),
|
||||
]);
|
||||
|
||||
await Promise.all([
|
||||
(trailers && associateMedia(releaseTrailersById, trailers, 'release', 'trailer')),
|
||||
(teasers && associateMedia(releaseTeasersById, teasers, 'release', 'teaser')),
|
||||
trailers && associateMedia(releaseTrailersById, trailers, 'release', 'trailer'),
|
||||
teasers && associateMedia(releaseTeasersById, teasers, 'release', 'teaser'),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user