This commit is contained in:
Brage Skjønborg 2026-02-01 23:29:33 +01:00
parent 3339f9a2ce
commit dcad56a4b4
16 changed files with 32 additions and 23 deletions

View File

@ -30,7 +30,7 @@ class MediaCreateMetadataSearchTaskListener: EventListener() {
val startedEvent = history.filterIsInstance<StartProcessingEvent>().firstOrNull() ?: return null val startedEvent = history.filterIsInstance<StartProcessingEvent>().firstOrNull() ?: return null
if (startedEvent.data.operation.isNotEmpty()) { if (startedEvent.data.operation.isNotEmpty()) {
if (!startedEvent.data.operation.contains(OperationType.Metadata)) if (!startedEvent.data.operation.contains(OperationType.MetadataSearch))
return null return null
} }

View File

@ -23,7 +23,7 @@ class StartedListener : EventListener() {
OperationType.ExtractSubtitles, OperationType.ExtractSubtitles,
OperationType.ConvertSubtitles, OperationType.ConvertSubtitles,
OperationType.Encode, OperationType.Encode,
OperationType.Metadata OperationType.MetadataSearch
) )
) )
) )

View File

@ -46,7 +46,7 @@ open class TestBase {
fun defaultStartEvent(): StartProcessingEvent { fun defaultStartEvent(): StartProcessingEvent {
val start = StartProcessingEvent( val start = StartProcessingEvent(
data = StartData( data = StartData(
operation = setOf(OperationType.Encode, OperationType.ExtractSubtitles, OperationType.ConvertSubtitles, OperationType.Metadata), operation = setOf(OperationType.Encode, OperationType.ExtractSubtitles, OperationType.ConvertSubtitles, OperationType.MetadataSearch),
fileUri = "file:///unit/${UUID.randomUUID()}.mkv" fileUri = "file:///unit/${UUID.randomUUID()}.mkv"
) )
).apply { newReferenceId() } ).apply { newReferenceId() }

View File

@ -78,7 +78,7 @@ class CollectEventsListenerTest : TestBase() {
ev.copy( ev.copy(
data = ev.data.copy( data = ev.data.copy(
operation = setOf( operation = setOf(
OperationType.Metadata, OperationType.MetadataSearch,
OperationType.Encode, OperationType.Encode,
OperationType.ExtractSubtitles OperationType.ExtractSubtitles
) )
@ -123,7 +123,7 @@ class CollectEventsListenerTest : TestBase() {
ev.copy( ev.copy(
data = ev.data.copy( data = ev.data.copy(
operation = setOf( operation = setOf(
OperationType.Metadata, OperationType.MetadataSearch,
OperationType.ConvertSubtitles OperationType.ConvertSubtitles
) )
) )

View File

@ -1,16 +1,19 @@
package no.iktdev.mediaprocessing.processer package no.iktdev.mediaprocessing.processer.config
import no.iktdev.exfl.using import no.iktdev.exfl.using
import no.iktdev.mediaprocessing.processer.config.DirectoryProperties
import no.iktdev.mediaprocessing.shared.common.configs.MediaPaths import no.iktdev.mediaprocessing.shared.common.configs.MediaPaths
import org.springframework.stereotype.Component import org.springframework.stereotype.Component
import java.io.File import java.io.File
@Suppress("SENSELESS_COMPARISON")
@Component @Component
class FileUtil( class FileUtil(
private val dirs: DirectoryProperties, private val dirs: DirectoryProperties,
private val mediaPaths: MediaPaths private val mediaPaths: MediaPaths
) { ) {
init {
assert(dirs.logs != null)
}
fun getTemporaryStoreFile(fileName: String): File = fun getTemporaryStoreFile(fileName: String): File =
File(mediaPaths.cache).using(fileName) File(mediaPaths.cache).using(fileName)

View File

@ -9,7 +9,7 @@ import no.iktdev.eventi.tasks.TaskType
import no.iktdev.exfl.using import no.iktdev.exfl.using
import no.iktdev.mediaprocessing.ffmpeg.FFmpeg import no.iktdev.mediaprocessing.ffmpeg.FFmpeg
import no.iktdev.mediaprocessing.ffmpeg.arguments.MpegArgument import no.iktdev.mediaprocessing.ffmpeg.arguments.MpegArgument
import no.iktdev.mediaprocessing.processer.FileUtil import no.iktdev.mediaprocessing.processer.config.FileUtil
import no.iktdev.mediaprocessing.processer.config.ExecutablesConfig import no.iktdev.mediaprocessing.processer.config.ExecutablesConfig
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.ProcesserExtractResultEvent import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.ProcesserExtractResultEvent
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleTask import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.ExtractSubtitleTask

View File

@ -11,7 +11,7 @@ import no.iktdev.mediaprocessing.ffmpeg.FFmpeg
import no.iktdev.mediaprocessing.ffmpeg.arguments.MpegArgument import no.iktdev.mediaprocessing.ffmpeg.arguments.MpegArgument
import no.iktdev.mediaprocessing.ffmpeg.decoder.FfmpegDecodedProgress import no.iktdev.mediaprocessing.ffmpeg.decoder.FfmpegDecodedProgress
import no.iktdev.mediaprocessing.processer.CoordinatorClient import no.iktdev.mediaprocessing.processer.CoordinatorClient
import no.iktdev.mediaprocessing.processer.FileUtil import no.iktdev.mediaprocessing.processer.config.FileUtil
import no.iktdev.mediaprocessing.processer.LocalProgressCache import no.iktdev.mediaprocessing.processer.LocalProgressCache
import no.iktdev.mediaprocessing.processer.config.ExecutablesConfig import no.iktdev.mediaprocessing.processer.config.ExecutablesConfig
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.ProcesserEncodeResultEvent import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.ProcesserEncodeResultEvent

View File

@ -26,17 +26,17 @@ logging:
media: media:
cache: ${DIRECTORY_CONTENT_CACHE:/src/cache} cache: /src/cache
outgoing: /src/output outgoing: /src/output
incoming: /src/input incoming: /src/input
processer: processer:
coordinator-url: ${COORDINATOR_URL:http://coordinator:8080} coordinator-url: http://coordinator:8080
coordinator-ping-on-startup: true coordinator-ping-on-startup: true
allow-overwrite: ${ALLOW_OVERWRITE:false} allow-overwrite: false
executables: executables:
ffmpeg: ${SUPPORTING_EXECUTABLE_FFMPEG:ffmpeg} ffmpeg: ffmpeg
directories: directories:
logs: ${LOG_DIR:/data/logs} logs: /data/logs

View File

@ -4,6 +4,7 @@ import no.iktdev.eventi.models.Event
import no.iktdev.eventi.models.Task import no.iktdev.eventi.models.Task
import no.iktdev.mediaprocessing.processer.config.DirectoryProperties import no.iktdev.mediaprocessing.processer.config.DirectoryProperties
import no.iktdev.mediaprocessing.processer.config.ExecutablesConfig import no.iktdev.mediaprocessing.processer.config.ExecutablesConfig
import no.iktdev.mediaprocessing.processer.config.FileUtil
import no.iktdev.mediaprocessing.shared.common.configs.MediaPaths import no.iktdev.mediaprocessing.shared.common.configs.MediaPaths
import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertEquals

View File

@ -41,9 +41,9 @@ executables:
ffmpeg: ffmpeg ffmpeg: ffmpeg
processer: processer:
coordinator-url: ${COORDINATOR_URL:http://coordinator:8080} coordinator-url: http://coordinator:8080
coordinator-ping-on-startup: false coordinator-ping-on-startup: false
allow-overwrite: ${ALLOW_OVERWRITE:false} allow-overwrite: false
directories: directories:
logs: build/test-logs logs: build/test-logs

View File

@ -50,6 +50,7 @@ enum class MediaActionType(val label: String) {
Encode("Encode"), Encode("Encode"),
ExtractSubtitles("Extract Subtitles"), ExtractSubtitles("Extract Subtitles"),
ConvertSubtitle("Convert Subtitle"), ConvertSubtitle("Convert Subtitle"),
MetadataSearch("Search for metadata"),
} }
enum class FileActionType(val label: String) { enum class FileActionType(val label: String) {

View File

@ -178,11 +178,13 @@ class CoordinatorClient(
MediaActionType.All -> setOf( MediaActionType.All -> setOf(
OperationType.Encode, OperationType.Encode,
OperationType.ExtractSubtitles, OperationType.ExtractSubtitles,
OperationType.ConvertSubtitles OperationType.ConvertSubtitles,
OperationType.MetadataSearch
) )
MediaActionType.Encode -> setOf(OperationType.Encode) MediaActionType.Encode -> setOf(OperationType.Encode)
MediaActionType.ExtractSubtitles -> setOf(OperationType.ExtractSubtitles) MediaActionType.ExtractSubtitles -> setOf(OperationType.ExtractSubtitles)
MediaActionType.ConvertSubtitle -> setOf(OperationType.ConvertSubtitles) MediaActionType.ConvertSubtitle -> setOf(OperationType.ConvertSubtitles)
MediaActionType.MetadataSearch -> setOf(OperationType.MetadataSearch)
} }

View File

@ -73,7 +73,8 @@ class ExplorerService(
return listOf( return listOf(
MediaAction(MediaActionType.All), MediaAction(MediaActionType.All),
MediaAction(MediaActionType.Encode), MediaAction(MediaActionType.Encode),
MediaAction(MediaActionType.ExtractSubtitles) MediaAction(MediaActionType.ExtractSubtitles),
MediaAction(MediaActionType.MetadataSearch),
) )
} }

View File

@ -9,6 +9,7 @@ export type MediaActionType =
| "Encode" | "Encode"
| "ExtractSubtitles" | "ExtractSubtitles"
| "ConvertSubtitle" | "ConvertSubtitle"
|
export interface MediaAction { export interface MediaAction {
id: MediaActionType id: MediaActionType

View File

@ -23,5 +23,5 @@ enum class OperationType {
ExtractSubtitles, ExtractSubtitles,
Encode, Encode,
ConvertSubtitles, ConvertSubtitles,
Metadata MetadataSearch
} }

View File

@ -56,7 +56,7 @@ class CollectProjection(val events: List<Event>) {
OperationType.Encode to encodeTaskStatus, OperationType.Encode to encodeTaskStatus,
OperationType.ExtractSubtitles to extreactTaskStatus, OperationType.ExtractSubtitles to extreactTaskStatus,
OperationType.ConvertSubtitles to convertTaskStatus, OperationType.ConvertSubtitles to convertTaskStatus,
OperationType.Metadata to metadataTaskStatus, OperationType.MetadataSearch to metadataTaskStatus,
) )
return required.map { statusMap[it] ?: TaskStatus.NotInitiated } return required.map { statusMap[it] ?: TaskStatus.NotInitiated }