Fixed suffix + cover
This commit is contained in:
parent
c2cd6f451e
commit
64c5df4772
@ -97,7 +97,8 @@ class ConvertService(
|
||||
),
|
||||
data = ConvertedData(
|
||||
language = taskData.language,
|
||||
outputFiles = outputFiles
|
||||
outputFiles = outputFiles,
|
||||
baseName = taskData.storeFileName
|
||||
)
|
||||
))
|
||||
onClearTask()
|
||||
|
||||
@ -166,7 +166,7 @@ class CompletedTaskListener : CoordinatorEventListener() {
|
||||
ContentSubtitleStore.storeSubtitles(
|
||||
collection = usableCollection,
|
||||
language = it.language,
|
||||
destinationFile = it.destination
|
||||
destinationFile = File(it.destination)
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -183,7 +183,10 @@ class CompletedTaskListener : CoordinatorEventListener() {
|
||||
onProduceEvent(MediaProcessCompletedEvent(
|
||||
metadata = event.makeDerivedEventInfo(EventStatus.Success, getProducerName()),
|
||||
data = CompletedEventData(
|
||||
events.map { it.eventId() }
|
||||
eventIdsCollected = events.map { it.eventId() },
|
||||
coverMoved = newCoverPath?.let { c -> CoverMoved(c.first, c.second) },
|
||||
videoMoved = newVideoPath?.let { v -> VideoMoved(v.first, v.second) },
|
||||
subtitlesMoved = newSubtitles?.map { s -> SubtitlesMoved(s.source, s.destination) } ?: emptyList()
|
||||
)
|
||||
))
|
||||
}
|
||||
|
||||
@ -64,11 +64,13 @@ class ConvertWorkTaskListener: WorkTaskListener() {
|
||||
}
|
||||
|
||||
var language: String? = null
|
||||
var storeAsFile: String? = null
|
||||
|
||||
|
||||
val file = if (event.eventType == Events.EventWorkExtractPerformed) {
|
||||
val foundEvent = event.az<ExtractWorkPerformedEvent>()?.data
|
||||
language = foundEvent?.language
|
||||
storeAsFile = foundEvent?.storeFileName
|
||||
foundEvent?.outputFile
|
||||
} else if (event.eventType == Events.EventMediaProcessStarted) {
|
||||
val startEvent = event.az<MediaProcessStartEvent>()?.data
|
||||
@ -101,6 +103,7 @@ class ConvertWorkTaskListener: WorkTaskListener() {
|
||||
language = language ?: "unk",
|
||||
inputFile = convertFile.absolutePath,
|
||||
outputFileName = convertFile.nameWithoutExtension,
|
||||
storeFileName = storeAsFile ?: convertFile.nameWithoutExtension,
|
||||
outputDirectory = convertFile.parentFile.absolutePath,
|
||||
allowOverwrite = true
|
||||
)
|
||||
|
||||
@ -57,7 +57,8 @@ class CoverDownloadTaskListener : CoordinatorEventListener() {
|
||||
client.getOutFile()
|
||||
}
|
||||
|
||||
val coversInDifferentFormats = SharedConfig.cachedContent.listFiles { it -> it.isFile && it.extension.lowercase() in client.contentTypeToExtension().values } ?: emptyArray()
|
||||
val coversInDifferentFormats = SharedConfig.cachedContent.listFiles { it -> it.isFile && it.extension.lowercase() in client.contentTypeToExtension().values }
|
||||
?.filter { it.nameWithoutExtension.contains(data.outFileBaseName, ignoreCase = true) } ?: emptyList()
|
||||
|
||||
val result = if (outFile?.exists() == true) {
|
||||
outFile
|
||||
|
||||
@ -20,7 +20,8 @@ class ExtractWorkArgumentsMapping(
|
||||
inputFile = inputFile,
|
||||
language = it.language,
|
||||
arguments = it.codecParameters + it.optionalParameters + listOf("-map", "0:s:${it.index}"),
|
||||
outputFileName = "${outFileFullName}.${it.language}.${it.format}"
|
||||
outputFileName = "${outFileFullName}.${it.language}.${it.format}",
|
||||
storeFileName = "${outFileFullName}.${it.format}"
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -60,20 +60,42 @@ class ContentCompletionMover(val collection: String, val events: List<Event>) {
|
||||
}
|
||||
|
||||
|
||||
fun getMovableSubtitles(): Map<String, List<File>> {
|
||||
|
||||
data class MovableSubtitle(
|
||||
val language: String,
|
||||
val cachedFile: File,
|
||||
val storeFile: String
|
||||
)
|
||||
|
||||
fun getMovableSubtitles(): List<MovableSubtitle> {
|
||||
val extracted =
|
||||
events.filter { it.eventType == Events.EventWorkExtractPerformed }.mapNotNull { it.dataAs<ExtractedData>() }
|
||||
val converted =
|
||||
events.filter { it.eventType == Events.EventWorkConvertPerformed }.mapNotNull { it.dataAs<ConvertedData>() }
|
||||
|
||||
return extracted.groupBy { it.language }.mapValues { v -> v.value.map { File(it.outputFile) } } +
|
||||
converted.groupBy { it.language }.mapValues { v -> v.value.flatMap { it.outputFiles }.map { File(it) } }
|
||||
val items = mutableListOf<MovableSubtitle>()
|
||||
|
||||
extracted.map { MovableSubtitle(
|
||||
language = it.language,
|
||||
cachedFile = File(it.outputFile),
|
||||
storeFile = it.storeFileName
|
||||
) }.also { items.addAll(it) }
|
||||
|
||||
converted.flatMap { it.outputFiles.map { outFile ->
|
||||
MovableSubtitle(
|
||||
language = it.language,
|
||||
cachedFile = File(outFile),
|
||||
storeFile = it.baseName
|
||||
)
|
||||
} }.also { items.addAll(it) }
|
||||
|
||||
return items
|
||||
}
|
||||
|
||||
data class MovedSubtitle(
|
||||
val language: String,
|
||||
val source: File,
|
||||
val destination: File
|
||||
val source: String,
|
||||
val destination: String
|
||||
)
|
||||
|
||||
fun moveSubtitles(): List<MovedSubtitle>? {
|
||||
@ -81,24 +103,22 @@ class ContentCompletionMover(val collection: String, val events: List<Event>) {
|
||||
val moved: MutableList<MovedSubtitle> = mutableListOf()
|
||||
|
||||
val subtitles = getMovableSubtitles()
|
||||
if (subtitles.isEmpty() || subtitles.values.isEmpty()) {
|
||||
if (subtitles.isEmpty()) {
|
||||
return null
|
||||
}
|
||||
for ((lang, files) in subtitles) {
|
||||
val languageFolder = subtitleFolder.using(lang).also {
|
||||
for (movable in subtitles) {
|
||||
val languageFolder = subtitleFolder.using(movable.language).also {
|
||||
if (it.notExist()) {
|
||||
it.mkdirs()
|
||||
}
|
||||
}
|
||||
for (file in files) {
|
||||
val storeFile = languageFolder.using(file.name)
|
||||
val success = file.moveTo(storeFile)
|
||||
val storeFile = languageFolder.using(movable.storeFile)
|
||||
val success = movable.cachedFile.moveTo(storeFile)
|
||||
if (success) {
|
||||
moved.add(MovedSubtitle(lang, file, storeFile))
|
||||
moved.add(MovedSubtitle(movable.language, movable.cachedFile.absolutePath, storeFile.absolutePath))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return moved
|
||||
}
|
||||
|
||||
|
||||
@ -120,8 +120,9 @@ class ExtractService(
|
||||
source = getProducerName()
|
||||
),
|
||||
data = ExtractedData(
|
||||
taskData.language,
|
||||
outputFile
|
||||
language = taskData.language,
|
||||
outputFile = outputFile,
|
||||
storeFileName = taskData.storeFileName
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@ -17,6 +17,7 @@ data class ConvertData(
|
||||
val language: String,
|
||||
val outputDirectory: String,
|
||||
val outputFileName: String,
|
||||
val storeFileName: String,
|
||||
val formats: List<SubtitleFormats> = emptyList(),
|
||||
val allowOverwrite: Boolean
|
||||
): TaskData()
|
||||
@ -13,5 +13,6 @@ class ConvertWorkPerformed(
|
||||
|
||||
data class ConvertedData(
|
||||
val language: String,
|
||||
val baseName: String,
|
||||
val outputFiles: List<String>
|
||||
)
|
||||
|
||||
@ -14,6 +14,7 @@ data class ExtractArgumentCreatedEvent(
|
||||
data class ExtractArgumentData(
|
||||
val arguments: List<String>,
|
||||
val language: String,
|
||||
val storeFileName: String,
|
||||
val outputFileName: String,
|
||||
override val inputFile: String
|
||||
): TaskData()
|
||||
@ -13,5 +13,6 @@ data class ExtractWorkPerformedEvent(
|
||||
|
||||
data class ExtractedData(
|
||||
val language: String,
|
||||
val storeFileName: String,
|
||||
val outputFile: String
|
||||
)
|
||||
@ -10,5 +10,23 @@ data class MediaProcessCompletedEvent(
|
||||
): Event()
|
||||
|
||||
data class CompletedEventData(
|
||||
val eventIdsCollected: List<String>
|
||||
val eventIdsCollected: List<String>,
|
||||
val videoMoved: VideoMoved?,
|
||||
val coverMoved: CoverMoved?,
|
||||
val subtitlesMoved: List<SubtitlesMoved>
|
||||
)
|
||||
|
||||
data class SubtitlesMoved(
|
||||
val source: String,
|
||||
val destination: String
|
||||
)
|
||||
|
||||
data class CoverMoved(
|
||||
val source: String,
|
||||
val destination: String
|
||||
)
|
||||
|
||||
data class VideoMoved(
|
||||
val source: String,
|
||||
val destination: String
|
||||
)
|
||||
Loading…
Reference in New Issue
Block a user