Skip to content

Commit

Permalink
Fixed suffix + cover
Browse files Browse the repository at this point in the history
  • Loading branch information
bskjon committed Jan 5, 2025
1 parent c2cd6f4 commit 64c5df4
Show file tree
Hide file tree
Showing 12 changed files with 75 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ class ConvertService(
),
data = ConvertedData(
language = taskData.language,
outputFiles = outputFiles
outputFiles = outputFiles,
baseName = taskData.storeFileName
)
))
onClearTask()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ class CompletedTaskListener : CoordinatorEventListener() {
ContentSubtitleStore.storeSubtitles(
collection = usableCollection,
language = it.language,
destinationFile = it.destination
destinationFile = File(it.destination)
)
}
}
Expand All @@ -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()
)
))
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}"
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,45 +60,65 @@ 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>? {
val subtitleFolder = storeFolder.using("sub")
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)
if (success) {
moved.add(MovedSubtitle(lang, file, storeFile))
}
val storeFile = languageFolder.using(movable.storeFile)
val success = movable.cachedFile.moveTo(storeFile)
if (success) {
moved.add(MovedSubtitle(movable.language, movable.cachedFile.absolutePath, storeFile.absolutePath))
}

}

return moved
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,9 @@ class ExtractService(
source = getProducerName()
),
data = ExtractedData(
taskData.language,
outputFile
language = taskData.language,
outputFile = outputFile,
storeFileName = taskData.storeFileName
)
)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ class ConvertWorkPerformed(

data class ConvertedData(
val language: String,
val baseName: String,
val outputFiles: List<String>
)
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ data class ExtractWorkPerformedEvent(

data class ExtractedData(
val language: String,
val storeFileName: String,
val outputFile: String
)
Original file line number Diff line number Diff line change
Expand Up @@ -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
)

0 comments on commit 64c5df4

Please sign in to comment.