Expanded new media module. Added network to channel site to fix actor glitch.

This commit is contained in:
2020-03-30 03:01:08 +02:00
parent a5d859471d
commit 4eaacf5697
6 changed files with 263 additions and 40 deletions

View File

@@ -7,10 +7,11 @@ const knex = require('./knex');
const slugify = require('./utils/slugify');
const { associateActors } = require('./actors');
const { associateReleaseTags } = require('./tags');
const { curateSite } = require('./sites');
const { associateReleaseMedia } = require('./media');
function curateReleaseEntry(release, batchId, existingRelease) {
const slug = slugify(release.title, '-', {
const slug = slugify(release.title || release.actors?.join('-') || null, '-', {
encode: true,
limit: config.titleSlugLength,
});
@@ -46,29 +47,34 @@ function curateReleaseEntry(release, batchId, existingRelease) {
async function attachChannelSites(releases) {
const releasesWithoutSite = releases.filter(release => release.channel && (!release.site || release.site.isFallback));
const channelSites = await knex('sites').whereIn('slug', releasesWithoutSite.map(release => release.channel));
const channelSites = await knex('sites')
.leftJoin('networks', 'networks.id', 'sites.network_id')
.select('sites.*', 'networks.name as network_name', 'networks.slug as network_slug', 'networks.url as network_url', 'networks.parameters as network_parameters', 'networks.description as network_description')
.whereIn('sites.slug', releasesWithoutSite.map(release => release.channel));
const channelSitesBySlug = channelSites.reduce((acc, site) => ({ ...acc, [site.slug]: site }), {});
const releasesWithChannelSite = releases
.map((release) => {
const releasesWithChannelSite = await Promise.all(releases
.map(async (release) => {
if (release.site && !release.site.isFallback) {
return release;
}
if (release.channel && channelSitesBySlug[release.channel]) {
const curatedSite = await curateSite(channelSitesBySlug[release.channel]);
return {
...release,
site: channelSitesBySlug[release.channel],
site: curatedSite,
};
}
logger.error(`Unable to match channel '${release.channel?.slug || release.channel}' from generic URL ${release.url}`);
return null;
})
.filter(Boolean);
}));
return releasesWithChannelSite;
return releasesWithChannelSite.filter(Boolean);
}
async function attachStudios(releases) {
@@ -201,8 +207,6 @@ async function storeReleases(releases) {
const curatedNewReleaseEntries = uniqueReleases.map(release => curateReleaseEntry(release, batchId));
// console.log(curatedNewReleaseEntries);
const storedReleases = await knex('releases').insert(curatedNewReleaseEntries).returning('*');
// TODO: update duplicate releases