Added scene tags table to manticore scenes tool.
This commit is contained in:
@@ -41,7 +41,7 @@ async function fetchScenes() {
|
|||||||
studios.name as studio_name,
|
studios.name as studio_name,
|
||||||
grandparents.id as parent_network_id,
|
grandparents.id as parent_network_id,
|
||||||
COALESCE(JSON_AGG(DISTINCT (actors.id, actors.name)) FILTER (WHERE actors.id IS NOT NULL), '[]') as actors,
|
COALESCE(JSON_AGG(DISTINCT (actors.id, actors.name)) FILTER (WHERE actors.id IS NOT NULL), '[]') as actors,
|
||||||
COALESCE(JSON_AGG(DISTINCT (tags.id, tags.name, tags.priority, tags_aliases.name)) FILTER (WHERE tags.id IS NOT NULL), '[]') as tags,
|
COALESCE(JSON_AGG(DISTINCT (tags.id, tags.name, tags.priority, tags_aliases.name, local_tags.actor_id)) FILTER (WHERE tags.id IS NOT NULL), '[]') as tags,
|
||||||
COALESCE(JSON_AGG(DISTINCT (movies.id, movies.title)) FILTER (WHERE movies.id IS NOT NULL), '[]') as movies,
|
COALESCE(JSON_AGG(DISTINCT (movies.id, movies.title)) FILTER (WHERE movies.id IS NOT NULL), '[]') as movies,
|
||||||
COALESCE(JSON_AGG(DISTINCT (series.id, series.title)) FILTER (WHERE series.id IS NOT NULL), '[]') as series,
|
COALESCE(JSON_AGG(DISTINCT (series.id, series.title)) FILTER (WHERE series.id IS NOT NULL), '[]') as series,
|
||||||
COALESCE(JSON_AGG(DISTINCT (releases_fingerprints.hash)) FILTER (WHERE releases_fingerprints.hash IS NOT NULL), '[]') as fingerprints,
|
COALESCE(JSON_AGG(DISTINCT (releases_fingerprints.hash)) FILTER (WHERE releases_fingerprints.hash IS NOT NULL), '[]') as fingerprints,
|
||||||
@@ -136,6 +136,14 @@ async function init() {
|
|||||||
dupe_index int
|
dupe_index int
|
||||||
)`);
|
)`);
|
||||||
|
|
||||||
|
await utilsApi.sql('drop table if exists scenes_tags');
|
||||||
|
await utilsApi.sql(`create table scenes_tags (
|
||||||
|
id int,
|
||||||
|
scene_id int,
|
||||||
|
tag_id int,
|
||||||
|
actor_id int
|
||||||
|
)`);
|
||||||
|
|
||||||
console.log('Recreated scenes table');
|
console.log('Recreated scenes table');
|
||||||
console.log('Fetching scenes from primary database');
|
console.log('Fetching scenes from primary database');
|
||||||
|
|
||||||
@@ -143,12 +151,13 @@ async function init() {
|
|||||||
|
|
||||||
console.log('Fetched scenes from primary database');
|
console.log('Fetched scenes from primary database');
|
||||||
|
|
||||||
const docs = scenes.map((scene) => {
|
const docs = scenes.flatMap((scene) => {
|
||||||
const flatActors = scene.actors.flatMap((actor) => actor.f2.match(/[\w']+/g)); // match word characters to filter out brackets etc.
|
const flatActors = scene.actors.flatMap((actor) => actor.f2.match(/[\w']+/g)); // match word characters to filter out brackets etc.
|
||||||
const flatTags = scene.tags.filter((tag) => tag.f3 > 6).flatMap((tag) => (tag.f4 ? `${tag.f2} ${tag.f4}` : tag.f2).match(/[\w']+/g)); // only make top tags searchable to minimize cluttered results
|
const flatTags = scene.tags.filter((tag) => tag.f3 > 6).flatMap((tag) => (tag.f4 ? `${tag.f2} ${tag.f4}` : tag.f2).match(/[\w']+/g)); // only make top tags searchable to minimize cluttered results
|
||||||
const filteredTitle = filterTitle(scene.title, [...flatActors, ...flatTags]);
|
const filteredTitle = filterTitle(scene.title, [...flatActors, ...flatTags]);
|
||||||
|
|
||||||
return {
|
return [
|
||||||
|
{
|
||||||
replace: {
|
replace: {
|
||||||
index: 'scenes',
|
index: 'scenes',
|
||||||
id: scene.id,
|
id: scene.id,
|
||||||
@@ -185,7 +194,19 @@ async function init() {
|
|||||||
dupe_index: scene.dupe_index || 0,
|
dupe_index: scene.dupe_index || 0,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
},
|
||||||
|
...scene.tags.map((tag) => ({
|
||||||
|
replace: {
|
||||||
|
index: 'scenes_tags',
|
||||||
|
// id: scene.id,
|
||||||
|
doc: {
|
||||||
|
scene_id: scene.id,
|
||||||
|
tag_id: tag.f1,
|
||||||
|
actor_id: tag.f5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})),
|
||||||
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
// const accData = chunk(docs, 10000).reduce(async (chain, docsChunk, index, array) => {
|
// const accData = chunk(docs, 10000).reduce(async (chain, docsChunk, index, array) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user