Adjustments
This commit is contained in:
parent
66f35401bc
commit
af8a1d9b9b
@ -1,3 +1,4 @@
|
|||||||
|
import logging
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
from .result import Metadata, DataResult
|
from .result import Metadata, DataResult
|
||||||
@ -6,6 +7,7 @@ from .imdb import metadata as ImdbMetadata
|
|||||||
from .mal import metadata as MalMetadata
|
from .mal import metadata as MalMetadata
|
||||||
from fuzzywuzzy import fuzz
|
from fuzzywuzzy import fuzz
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class WeightedData:
|
class WeightedData:
|
||||||
@ -33,7 +35,7 @@ class UseSource():
|
|||||||
if (imdb is not None) and (imdb.status == "COMPLETED" and imdb.data is not None):
|
if (imdb is not None) and (imdb.status == "COMPLETED" and imdb.data is not None):
|
||||||
imdb_weight = 1
|
imdb_weight = 1
|
||||||
if (imdb.data.title == title):
|
if (imdb.data.title == title):
|
||||||
imdb_weight = 6
|
imdb_weight = 7
|
||||||
result.append(WeightedData(imdb, imdb_weight))
|
result.append(WeightedData(imdb, imdb_weight))
|
||||||
if (mal is not None) and (mal.status == "COMPLETED" and mal.data is not None):
|
if (mal is not None) and (mal.status == "COMPLETED" and mal.data is not None):
|
||||||
result.append(WeightedData(mal, 8))
|
result.append(WeightedData(mal, 8))
|
||||||
@ -59,6 +61,15 @@ class UseSource():
|
|||||||
scored = self.__calculate_score(title=self.title, weightData=weightResult)
|
scored = self.__calculate_score(title=self.title, weightData=weightResult)
|
||||||
scored.sort(key=lambda x: x.score, reverse=True)
|
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 the result with the highest score (most likely result)
|
||||||
return scored[0].result if scored else None
|
return scored[0].result if scored else None
|
||||||
|
|
||||||
|
|||||||
@ -44,9 +44,8 @@ class FileNameParser(val fileName: String) {
|
|||||||
|
|
||||||
fun guessDesiredTitle(): String {
|
fun guessDesiredTitle(): String {
|
||||||
val desiredFileName = guessDesiredFileName()
|
val desiredFileName = guessDesiredFileName()
|
||||||
val seasonRegex = Regex("\\sS[0-9]+(\\s- [0-9]+|\\s[0-9]+)", RegexOption.IGNORE_CASE)
|
if (Regexes.season.containsMatchIn(desiredFileName)) {
|
||||||
if (seasonRegex.containsMatchIn(desiredFileName)) {
|
return Regexes.season.split(desiredFileName).firstOrNull()?.trim() ?: desiredFileName
|
||||||
return seasonRegex.replace(desiredFileName, "").trim()
|
|
||||||
} else {
|
} else {
|
||||||
val result = if (desiredFileName.contains(" - ")) {
|
val result = if (desiredFileName.contains(" - ")) {
|
||||||
return desiredFileName.split(" - ").firstOrNull() ?: desiredFileName
|
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.assertj.core.api.Assertions.assertThat
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.junit.jupiter.api.assertDoesNotThrow
|
import java.io.File
|
||||||
|
|
||||||
|
|
||||||
class FileNameParserTest {
|
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
|
@Test
|
||||||
fun serieNameWithNumbers() {
|
fun serieNameWithNumbers() {
|
||||||
val name = "[TST] Fancy Name Test 99 - 01 [Nans][#00A8E6]"
|
val name = "[TST] Fancy Name Test 99 - 01 [Nans][#00A8E6]"
|
||||||
val parser = FileNameParser(name)
|
val parser = FileNameParser(name)
|
||||||
val result = parser.guessDesiredTitle()
|
val result = parser.guessDesiredTitle()
|
||||||
assertThat(result).isEqualTo("Fancy Name Test 99")
|
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