Sharing title filter function between manticore update module and sync tool, fixing sync tool title filter word boundaries.
This commit is contained in:
@@ -6,6 +6,7 @@ const args = require('yargs').argv;
|
|||||||
const { format } = require('date-fns');
|
const { format } = require('date-fns');
|
||||||
|
|
||||||
const knex = require('../knex');
|
const knex = require('../knex');
|
||||||
|
const filterTitle = require('../utils/filter-title');
|
||||||
|
|
||||||
const mantiClient = new manticore.ApiClient();
|
const mantiClient = new manticore.ApiClient();
|
||||||
|
|
||||||
@@ -116,7 +117,7 @@ async function init() {
|
|||||||
const docs = scenes.map((scene) => {
|
const docs = scenes.map((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 = scene.title && [...flatActors, ...flatTags].reduce((accTitle, tag) => accTitle.replace(new RegExp(tag.replace(/[^\w\s]+/g, ''), 'i'), ''), scene.title).trim().replace(/\s{2,}/, ' ');
|
const filteredTitle = filterTitle(scene.title, [...flatActors, ...flatTags]);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
replace: {
|
replace: {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ const knex = require('./knex');
|
|||||||
const logger = require('./logger')(__filename);
|
const logger = require('./logger')(__filename);
|
||||||
const bulkInsert = require('./utils/bulk-insert');
|
const bulkInsert = require('./utils/bulk-insert');
|
||||||
const chunk = require('./utils/chunk');
|
const chunk = require('./utils/chunk');
|
||||||
|
const filterTitle = require('./utils/filter-title');
|
||||||
|
|
||||||
const mantiClient = new manticore.ApiClient();
|
const mantiClient = new manticore.ApiClient();
|
||||||
const indexApi = new manticore.IndexApi(mantiClient);
|
const indexApi = new manticore.IndexApi(mantiClient);
|
||||||
@@ -123,7 +124,7 @@ async function updateManticoreSceneSearch(releaseIds) {
|
|||||||
const docs = scenes.rows.map((scene) => {
|
const docs = scenes.rows.map((scene) => {
|
||||||
const flatActors = scene.actors.flatMap((actor) => actor.f2.split(' '));
|
const flatActors = scene.actors.flatMap((actor) => actor.f2.split(' '));
|
||||||
const flatTags = scene.tags.filter((tag) => tag.f3 > 6).flatMap((tag) => [tag.f2].concat(tag.f4)).filter(Boolean); // only make top tags searchable to minimize cluttered results
|
const flatTags = scene.tags.filter((tag) => tag.f3 > 6).flatMap((tag) => [tag.f2].concat(tag.f4)).filter(Boolean); // only make top tags searchable to minimize cluttered results
|
||||||
const filteredTitle = scene.title && [...flatActors, ...flatTags].reduce((accTitle, tag) => accTitle.replace(new RegExp(`\\b${tag.replace(/[^\w\s]+/g, '')}\\b`, 'gi'), ''), scene.title).trim().replace(/\s{2,}/, ' ');
|
const filteredTitle = filterTitle(scene.title, [...flatActors, ...flatTags]);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
replace: {
|
replace: {
|
||||||
|
|||||||
9
src/utils/filter-title.js
Normal file
9
src/utils/filter-title.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function filterTitle(title, keys) {
|
||||||
|
if (!title) {
|
||||||
|
return title;
|
||||||
|
}
|
||||||
|
|
||||||
|
return keys.reduce((accTitle, tag) => accTitle.replace(new RegExp(`\\b${tag.replace(/[^\w\s]+/g, '')}\\b`, 'gi'), ''), title).trim().replace(/\s{2,}/, ' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = filterTitle;
|
||||||
Reference in New Issue
Block a user