Storing directors.

This commit is contained in:
DebaucheryLibrarian
2021-03-07 00:01:02 +01:00
parent 9ae113ab92
commit 17e6f5a5da
17 changed files with 102 additions and 27 deletions

View File

@@ -760,8 +760,6 @@ async function scrapeActors(argNames) {
const actorNames = await getActorNames(argNames);
const baseActors = toBaseActors(actorNames);
console.log(baseActors);
logger.info(`Scraping profiles for ${actorNames.length} actors`);
const sources = argv.profileSources || config.profiles || Object.keys(scrapers.actors);
@@ -898,13 +896,17 @@ async function getOrCreateActors(baseActors, batchId) {
return existingActors;
}
async function associateActors(releases, batchId) {
async function associatePeople(releases, batchId, type = 'actor') {
try {
const baseActorsByReleaseId = releases.reduce((acc, release) => {
if (release.actors) {
if (type === 'actors' && release.actors) {
acc[release.id] = toBaseActors(release.actors, release);
}
if (type === 'directors' && release.director) {
acc[release.id] = toBaseActors([release.director], release);
}
return acc;
}, {});
@@ -922,6 +924,11 @@ async function associateActors(releases, batchId) {
const uniqueBaseActors = Object.values(baseActorsBySlug);
const actors = await getOrCreateActors(uniqueBaseActors, batchId);
const personKey = ({
actors: 'actor_id',
directors: 'director_id',
})[type];
const actorIdsByEntityIdEntryIdAndSlug = actors.reduce((acc, actor) => ({
...acc,
[actor.entity_id]: {
@@ -929,7 +936,7 @@ async function associateActors(releases, batchId) {
[actor.entry_id]: {
...acc[actor.entity_id]?.[actor.entry_id],
[actor.slug]: {
actor_id: actor.alias_for || actor.id,
[personKey]: actor.alias_for || actor.id,
alias_id: actor.alias_for ? actor.id : null,
},
},
@@ -944,15 +951,15 @@ async function associateActors(releases, batchId) {
})))
.flat();
const validReleaseActorAssociations = releaseActorAssociations.filter(association => association.release_id && association.actor_id);
const validReleaseActorAssociations = releaseActorAssociations.filter(association => association.release_id && association[personKey]);
if (releaseActorAssociations.length > validReleaseActorAssociations.length) {
const invalidReleaseActorAssociations = releaseActorAssociations.filter(association => !association.release_id || !association.actor_id);
const invalidReleaseActorAssociations = releaseActorAssociations.filter(association => !association.release_id || !association[personKey]);
logger.error(invalidReleaseActorAssociations);
}
await bulkInsert('releases_actors', validReleaseActorAssociations, false);
await bulkInsert(`releases_${type}`, validReleaseActorAssociations, false);
logger.verbose(`Associated ${releaseActorAssociations.length} actors to ${releases.length} scenes`);
@@ -964,6 +971,14 @@ async function associateActors(releases, batchId) {
}
}
async function associateActors(releases, batchId) {
return associatePeople(releases, batchId, 'actors');
}
async function associateDirectors(releases, batchId) {
return associatePeople(releases, batchId, 'directors');
}
async function fetchActor(actorId) {
const actor = await knex('actors')
.select(knex.raw(`
@@ -1081,6 +1096,7 @@ async function flushActors() {
module.exports = {
associateActors,
associateDirectors,
deleteActors,
fetchActor,
flushActors,