Adjustments

This commit is contained in:
bskjon 2024-04-14 02:02:27 +02:00
parent 66f35401bc
commit af8a1d9b9b
4 changed files with 31 additions and 7 deletions

View File

@ -1,3 +1,4 @@
import logging
from dataclasses import dataclass
from typing import List, Optional
from .result import Metadata, DataResult
@ -6,6 +7,7 @@ from .imdb import metadata as ImdbMetadata
from .mal import metadata as MalMetadata
from fuzzywuzzy import fuzz
logger = logging.getLogger(__name__)
@dataclass
class WeightedData:
@ -33,7 +35,7 @@ class UseSource():
if (imdb is not None) and (imdb.status == "COMPLETED" and imdb.data is not None):
imdb_weight = 1
if (imdb.data.title == title):
imdb_weight = 6
imdb_weight = 7
result.append(WeightedData(imdb, imdb_weight))
if (mal is not None) and (mal.status == "COMPLETED" and mal.data is not None):
result.append(WeightedData(mal, 8))
@ -59,6 +61,15 @@ class UseSource():
scored = self.__calculate_score(title=self.title, weightData=weightResult)
scored.sort(key=lambda x: x.score, reverse=True)
try:
titles: List[str] = []
for wd in weightResult:
titles.append(wd.result.data.title)
titles.extend(wd.result.data.altTitle)
logger.info(f"Title {self.title} gave the result: {"\n\t".join(titles)} \nWith used: {scored[0].result.data.title}\n")
except:
pass
# Return the result with the highest score (most likely result)
return scored[0].result if scored else None

View File

@ -44,9 +44,8 @@ class FileNameParser(val fileName: String) {
fun guessDesiredTitle(): String {
val desiredFileName = guessDesiredFileName()
val seasonRegex = Regex("\\sS[0-9]+(\\s- [0-9]+|\\s[0-9]+)", RegexOption.IGNORE_CASE)
if (seasonRegex.containsMatchIn(desiredFileName)) {
return seasonRegex.replace(desiredFileName, "").trim()
if (Regexes.season.containsMatchIn(desiredFileName)) {
return Regexes.season.split(desiredFileName).firstOrNull()?.trim() ?: desiredFileName
} else {
val result = if (desiredFileName.contains(" - ")) {
return desiredFileName.split(" - ").firstOrNull() ?: desiredFileName

View File

@ -0,0 +1,6 @@
package no.iktdev.mediaprocessing.shared.common.parsing
object Regexes {
val seasonAndEpisode = Regex("""(?i)\b(?:S|Season)\s*(\d+).*?(?:E|Episode)?\s*(\d+)\b""", RegexOption.IGNORE_CASE)
val season = Regex("""(?i)\b(?:S|Season)\s*-?\s*(\d+)""", RegexOption.IGNORE_CASE)
}

View File

@ -2,17 +2,25 @@ package no.iktdev.mediaprocessing.shared.common.parsing
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertDoesNotThrow
import java.io.File
class FileNameParserTest {
@Test
fun testParsing() {
val file = File("/src/input/Fancy.Thomas.S03.1080p.AMAZING.WEB-VALUE.DDP5AN.1.H.264/Fancy.Thomas.S03E03.Enemy.1080p.AMAZING.WEB-VALUE.DDP5AN.1.H.264.mkv")
val fnp = FileNameParser(file.nameWithoutExtension)
assertThat(fnp.guessDesiredTitle()).isEqualTo("Fancy Thomas")
assertThat(fnp.guessDesiredFileName()).isEqualTo("Fancy Thomas S03E03 Enemy")
}
@Test
fun serieNameWithNumbers() {
val name = "[TST] Fancy Name Test 99 - 01 [Nans][#00A8E6]"
val parser = FileNameParser(name)
val result = parser.guessDesiredTitle()
assertThat(result).isEqualTo("Fancy Name Test 99")
assertThat(parser.guessDesiredFileName()).isEqualTo("Fancy Name Test 99 - 01") }
assertThat(parser.guessDesiredFileName()).isEqualTo("Fancy Name Test 99 - 01")
}
}