diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameParser.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameParser.kt index 32a6c226..820e94a0 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameParser.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameParser.kt @@ -5,12 +5,15 @@ class FileNameParser(val fileName: String) { private set init { - cleanedFileName = fileName - .let { removeBracketedText(it) } - .let { removeParenthesizedText(it) } - .let { removeResolutionAndTags(it) } - .let { removeInBetweenCharacters(it) } - .let { removeExtraWhiteSpace(it) } + cleanedFileName = removeBracketedText(fileName) + cleanedFileName = removeParenthesizedText(cleanedFileName) + cleanedFileName = removeResolutionAndTrailing(cleanedFileName) + cleanedFileName = removeResolutionAndTags(cleanedFileName) + cleanedFileName = removeParenthesizedText(cleanedFileName) + cleanedFileName = removeYearAndTrailing(cleanedFileName) + cleanedFileName = removeDot(cleanedFileName) + cleanedFileName = removeExtraWhiteSpace(cleanedFileName) + cleanedFileName = removeTrailingAndLeadingCharacters(cleanedFileName).trim() } @@ -68,6 +71,14 @@ class FileNameParser(val fileName: String) { return Regex("\\(.*?\\)").replace(text, " ") } + fun removeResolutionAndTrailing(text: String): String { + return Regex("[0-9]+[pP].*").replace(text, "") + } + + fun removeTrailingAndLeadingCharacters(text: String): String { + return Regex("^[^a-zA-Z0-9!,]+|[^a-zA-Z0-9!~,]+\$").replace(text, " ") + } + /** * */ @@ -75,6 +86,19 @@ class FileNameParser(val fileName: String) { return Regex("(.*?)(?=\\d+[pk]\\b)").replace(text, " ") } + + fun removeYearAndTrailing(text: String): String { + val match = Regex("\\b\\d{4}\\W").find(text, 0)?.value + if (match == null || text.indexOf(match) > 0) { + return Regex("\\b\\d{4}\\b(.*)").replace(text, " ") + } + return text + } + + fun removeDot(text: String): String { + return Regex("\\.(?