Updated
This commit is contained in:
parent
22c0c0335c
commit
892aef3942
@ -40,7 +40,9 @@ class MetadataAndBaseInfoToCoverTask(@Autowired override var coordinator: Coordi
|
||||
val baseInfo = events.findLast { it.data is BaseInfoPerformed }?.data as BaseInfoPerformed
|
||||
val meta = events.findLast { it.data is MetadataPerformed }?.data as MetadataPerformed? ?: return null
|
||||
val fileOut = events.findLast { it.data is VideoInfoPerformed }?.data as VideoInfoPerformed? ?: return null
|
||||
val videoInfo = fileOut.toValueObject()
|
||||
|
||||
val coverTitle = videoInfo?.title ?: meta.data?.title ?: baseInfo.title
|
||||
val coverUrl = meta.data?.cover
|
||||
return if (coverUrl.isNullOrBlank()) {
|
||||
log.warn { "No cover available for ${baseInfo.title}" }
|
||||
@ -49,7 +51,7 @@ class MetadataAndBaseInfoToCoverTask(@Autowired override var coordinator: Coordi
|
||||
CoverInfoPerformed(
|
||||
status = Status.COMPLETED,
|
||||
url = coverUrl,
|
||||
outFileBaseName = meta.data?.title ?: baseInfo.title,
|
||||
outFileBaseName = coverTitle,
|
||||
outDir = fileOut.outDirectory,
|
||||
derivedFromEventId = event.eventId
|
||||
)
|
||||
|
||||
@ -9,6 +9,7 @@ import no.iktdev.mediaprocessing.shared.common.SharedConfig
|
||||
import no.iktdev.mediaprocessing.shared.common.datasource.toEpochSeconds
|
||||
import no.iktdev.mediaprocessing.shared.common.lastOrSuccessOf
|
||||
import no.iktdev.mediaprocessing.shared.common.parsing.FileNameDeterminate
|
||||
import no.iktdev.mediaprocessing.shared.common.parsing.Regexes
|
||||
import no.iktdev.mediaprocessing.shared.common.persistance.PersistentMessage
|
||||
import no.iktdev.mediaprocessing.shared.kafka.core.KafkaEnv
|
||||
import no.iktdev.mediaprocessing.shared.kafka.core.KafkaEvents
|
||||
@ -116,7 +117,8 @@ class MetadataAndBaseInfoToFileOut(@Autowired override var coordinator: Coordina
|
||||
}
|
||||
|
||||
fun getTitle(): String {
|
||||
return getAlreadyUsedForCollectionOrTitle()?: metadata?.data?.title ?: baseInfo.title
|
||||
val title = getAlreadyUsedForCollectionOrTitle()?: metadata?.data?.title ?: baseInfo.title
|
||||
return Regexes.illegalCharacters.replace(title, "-")
|
||||
}
|
||||
|
||||
fun getVideoPayload(): JsonObject? {
|
||||
|
||||
@ -58,7 +58,7 @@ class FileNameDeterminate(val title: String, val sanitizedName: String, val ctyp
|
||||
}
|
||||
} else title
|
||||
val fullName = "${useTitle.trim()} - $seasonEpisodeCombined ${if (episodeTitle.isNullOrEmpty()) "" else "- $episodeTitle"}".trim()
|
||||
return EpisodeInfo(title = title, episode = episodeNumber.toInt(), season = seasonNumber.toInt(), episodeTitle = episodeTitle, fullName = fullName)
|
||||
return EpisodeInfo(title = title, episode = episodeNumber.toInt(), season = seasonNumber.toInt(), episodeTitle = episodeTitle, fullName = cleanup(fullName))
|
||||
}
|
||||
|
||||
private fun determineUndefinedFileName(): VideoInfo? {
|
||||
@ -73,8 +73,10 @@ class FileNameDeterminate(val title: String, val sanitizedName: String, val ctyp
|
||||
}
|
||||
|
||||
private fun cleanup(input: String): String {
|
||||
val cleaned = Regex("(?<=\\w)[_.](?=\\w)").replace(input, " ")
|
||||
return Regex("\\s{2,}").replace(cleaned, " ")
|
||||
var cleaned = Regex("(?<=\\w)[_.](?=\\w)").replace(input, " ")
|
||||
cleaned = Regexes.illegalCharacters.replace(cleaned, " - ")
|
||||
cleaned = Regexes.trimWhiteSpaces.replace(cleaned, " ")
|
||||
return cleaned
|
||||
}
|
||||
|
||||
open internal class Base(val title: String, val sanitizedName: String) {
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package no.iktdev.mediaprocessing.shared.common.parsing
|
||||
|
||||
object Regexes {
|
||||
val illegalCharacters = Regex("""[\\\\\\/\\:\\*\\?\\\"\\<\\>|!`()\[\]]""")
|
||||
val trimWhiteSpaces = Regex("\\s{2,}")
|
||||
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)
|
||||
}
|
||||
@ -1,7 +1,6 @@
|
||||
package no.iktdev.mediaprocessing.shared.common.parsing
|
||||
|
||||
import no.iktdev.mediaprocessing.shared.kafka.dto.events_result.EpisodeInfo
|
||||
import org.assertj.core.api.Assertions
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.Assertions.*
|
||||
import org.junit.jupiter.api.Test
|
||||
@ -21,4 +20,14 @@ class FileNameDeterminateTest {
|
||||
assertThat(ei.episode).isEqualTo(1)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun serieWithTitleFroMMetadata() {
|
||||
val given = "Fancy Name Test 99: Watashi wa Testo desu ga deta"
|
||||
|
||||
val fnd = FileNameDeterminate(given, "Fancy Name Test 99 - 01", FileNameDeterminate.ContentType.SERIE)
|
||||
val data = fnd.getDeterminedVideoInfo()
|
||||
|
||||
assertThat(data?.title).isEqualTo(given)
|
||||
assertThat(data?.fullName).isEqualTo("Fancy Name Test 99 - Watashi wa Testo desu ga deta - S01E01")
|
||||
}
|
||||
}
|
||||
@ -23,4 +23,6 @@ class FileNameParserTest {
|
||||
assertThat(parser.guessDesiredFileName()).isEqualTo("Fancy Name Test 99 - 01")
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user