Adjustments
This commit is contained in:
parent
66f35401bc
commit
af8a1d9b9b
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
}
|
||||
@ -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")
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user