Allowing release scrapers to return actor details. Added True Amateurs.

This commit is contained in:
2020-02-09 23:25:54 +01:00
parent 739d2de297
commit 139f0ce7cb
62 changed files with 47 additions and 20 deletions

View File

@@ -457,22 +457,20 @@ async function scrapeBasicActors() {
}
async function associateActors(mappedActors, releases) {
const actorMap = Object.keys(mappedActors).reduce((acc, actorName) => ({ ...acc, [actorName]: slugify(actorName) }), {});
const [existingActorEntries, existingAssociationEntries] = await Promise.all([
knex('actors')
.whereIn('name', Object.keys(actorMap))
.orWhereIn('slug', Object.values(actorMap)),
.whereIn('name', Object.values(mappedActors).map(actor => actor.name))
.orWhereIn('slug', Object.keys(mappedActors)),
knex('releases_actors').whereIn('release_id', releases.map(release => release.id)),
]);
const associations = await Promise.map(Object.entries(mappedActors), async ([actorName, releaseIds]) => {
const associations = await Promise.map(Object.entries(mappedActors), async ([actorSlug, actor]) => {
try {
const actorEntry = existingActorEntries.find(actor => actor.slug === actorMap[actorName])
|| await storeActor({ name: actorName });
const actorEntry = existingActorEntries.find(actorX => actorX.slug === actorSlug)
|| await storeActor(actor);
// if a scene
return Array.from(releaseIds)
return Array.from(actor.releaseIds)
.map(releaseId => ({
release_id: releaseId,
actor_id: actorEntry.id,
@@ -482,7 +480,7 @@ async function associateActors(mappedActors, releases) {
.some(associationEntry => associationEntry.actor_id === association.actor_id
&& associationEntry.release_id === association.release_id));
} catch (error) {
logger.error(actorName, error);
logger.error(actor.name, error);
return null;
}
});