From fde02425ab7396ac5093173cae3fccf580025a7d Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Wed, 13 May 2020 17:32:39 +1000 Subject: [PATCH] Make auto tagger matching more flexible (#534) --- pkg/manager/task_autotag.go | 4 +--- pkg/manager/task_autotag_test.go | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/pkg/manager/task_autotag.go b/pkg/manager/task_autotag.go index 4e6e150cc..78f37ce69 100644 --- a/pkg/manager/task_autotag.go +++ b/pkg/manager/task_autotag.go @@ -24,12 +24,10 @@ func (t *AutoTagPerformerTask) Start(wg *sync.WaitGroup) { func getQueryRegex(name string) string { const separatorChars = `.\-_ ` // handle path separators - const endSeparatorChars = separatorChars + `\\/` const separator = `[` + separatorChars + `]` - const endSeparator = `[` + endSeparatorChars + `]` ret := strings.Replace(name, " ", separator+"*", -1) - ret = "(?:^|" + endSeparator + "+)" + ret + "(?:$|" + endSeparator + "+)" + ret = `(?:^|_|[^\w\d])` + ret + `(?:$|_|[^\w\d])` return ret } diff --git a/pkg/manager/task_autotag_test.go b/pkg/manager/task_autotag_test.go index 05221e399..1b302a94e 100644 --- a/pkg/manager/task_autotag_test.go +++ b/pkg/manager/task_autotag_test.go @@ -36,7 +36,15 @@ var testSeparators = []string{ " ", } -func generateNamePatterns(name string, separator string) []string { +var testEndSeparators = []string{ + "{", + "}", + "(", + ")", + ",", +} + +func generateNamePatterns(name, separator string) []string { var ret []string ret = append(ret, fmt.Sprintf("%s%saaa"+testExtension, name, separator)) ret = append(ret, fmt.Sprintf("aaa%s%s"+testExtension, separator, name)) @@ -152,13 +160,20 @@ func createScenes(tx *sqlx.Tx) error { // create the scenes var scenePatterns []string var falseScenePatterns []string - for _, separator := range testSeparators { + + separators := append(testSeparators, testEndSeparators...) + + for _, separator := range separators { scenePatterns = append(scenePatterns, generateNamePatterns(testName, separator)...) scenePatterns = append(scenePatterns, generateNamePatterns(strings.ToLower(testName), separator)...) + falseScenePatterns = append(falseScenePatterns, generateFalseNamePattern(testName, separator)) + } + + // add test cases for intra-name separators + for _, separator := range testSeparators { if separator != " " { scenePatterns = append(scenePatterns, generateNamePatterns(strings.Replace(testName, " ", separator, -1), separator)...) } - falseScenePatterns = append(falseScenePatterns, generateFalseNamePattern(testName, separator)) } for _, fn := range scenePatterns {