diff --git a/apps/converter/build.gradle.kts b/apps/converter/build.gradle.kts index 48293995..1452bb24 100644 --- a/apps/converter/build.gradle.kts +++ b/apps/converter/build.gradle.kts @@ -57,7 +57,6 @@ dependencies { implementation("com.github.pgreze:kotlin-process:1.4.1") implementation(project(mapOf("path" to ":shared:eventi"))) - implementation(project(mapOf("path" to ":shared:contract"))) implementation(project(mapOf("path" to ":shared:common"))) diff --git a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/ConverterApplication.kt b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/ConverterApplication.kt index dbe87bbf..b6ccc64b 100644 --- a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/ConverterApplication.kt +++ b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/ConverterApplication.kt @@ -6,8 +6,11 @@ import no.iktdev.exfl.coroutines.CoroutinesIO import no.iktdev.exfl.observable.Observables import no.iktdev.mediaprocessing.shared.common.DatabaseEnvConfig import no.iktdev.eventi.database.MySqlDataSource +import no.iktdev.mediaprocessing.shared.common.database.cal.RunnerManager +import no.iktdev.mediaprocessing.shared.common.database.cal.TasksManager +import no.iktdev.mediaprocessing.shared.common.database.tables.runners +import no.iktdev.mediaprocessing.shared.common.database.tables.tasks import no.iktdev.mediaprocessing.shared.common.getAppVersion -import no.iktdev.mediaprocessing.shared.common.persistance.* import no.iktdev.mediaprocessing.shared.common.toEventsDatabase import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.runApplication diff --git a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/TaskCoordinator.kt b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/TaskCoordinator.kt index aa843315..0862730f 100644 --- a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/TaskCoordinator.kt +++ b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/TaskCoordinator.kt @@ -2,11 +2,10 @@ package no.iktdev.mediaprocessing.converter import mu.KotlinLogging import no.iktdev.mediaprocessing.shared.common.* -import no.iktdev.mediaprocessing.shared.common.persistance.ActiveMode -import no.iktdev.mediaprocessing.shared.common.persistance.RunnerManager +import no.iktdev.mediaprocessing.shared.common.database.cal.ActiveMode +import no.iktdev.mediaprocessing.shared.common.database.cal.RunnerManager import no.iktdev.mediaprocessing.shared.common.task.TaskType -import no.iktdev.mediaprocessing.shared.contract.data.Event -import org.springframework.beans.factory.annotation.Value +import no.iktdev.mediaprocessing.shared.common.contract.data.Event import org.springframework.scheduling.annotation.EnableScheduling import org.springframework.stereotype.Service diff --git a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/convert/Converter2.kt b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/convert/Converter2.kt index aa0a8404..5a28b093 100644 --- a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/convert/Converter2.kt +++ b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/convert/Converter2.kt @@ -8,8 +8,8 @@ import no.iktdev.library.subtitle.export.Export import no.iktdev.library.subtitle.reader.BaseReader import no.iktdev.library.subtitle.reader.Reader import no.iktdev.mediaprocessing.converter.ConverterEnv -import no.iktdev.mediaprocessing.shared.contract.data.ConvertData -import no.iktdev.mediaprocessing.shared.contract.dto.SubtitleFormats +import no.iktdev.mediaprocessing.shared.common.contract.data.ConvertData +import no.iktdev.mediaprocessing.shared.common.contract.dto.SubtitleFormats import java.io.File import kotlin.jvm.Throws diff --git a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/tasks/ConvertService.kt b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/tasks/ConvertService.kt index aca85a02..27dcc244 100644 --- a/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/tasks/ConvertService.kt +++ b/apps/converter/src/main/kotlin/no/iktdev/mediaprocessing/converter/tasks/ConvertService.kt @@ -8,12 +8,12 @@ import no.iktdev.eventi.data.EventStatus import no.iktdev.mediaprocessing.converter.* import no.iktdev.mediaprocessing.converter.convert.ConvertListener import no.iktdev.mediaprocessing.converter.convert.Converter2 -import no.iktdev.mediaprocessing.shared.common.persistance.Status +import no.iktdev.mediaprocessing.shared.common.database.cal.Status import no.iktdev.mediaprocessing.shared.common.services.TaskService import no.iktdev.mediaprocessing.shared.common.task.Task -import no.iktdev.mediaprocessing.shared.contract.data.ConvertData -import no.iktdev.mediaprocessing.shared.contract.data.ConvertWorkPerformed -import no.iktdev.mediaprocessing.shared.contract.data.ConvertedData +import no.iktdev.mediaprocessing.shared.common.contract.data.ConvertData +import no.iktdev.mediaprocessing.shared.common.contract.data.ConvertWorkPerformed +import no.iktdev.mediaprocessing.shared.common.contract.data.ConvertedData import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service diff --git a/apps/coordinator/build.gradle.kts b/apps/coordinator/build.gradle.kts index a4caa61f..d4352d8b 100644 --- a/apps/coordinator/build.gradle.kts +++ b/apps/coordinator/build.gradle.kts @@ -46,7 +46,6 @@ dependencies { //implementation(project(mapOf("path" to ":shared"))) implementation(project(mapOf("path" to ":shared:eventi"))) - implementation(project(mapOf("path" to ":shared:contract"))) implementation(project(mapOf("path" to ":shared:common"))) implementation("org.jetbrains.exposed:exposed-core:$exposedVersion") diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorApplication.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorApplication.kt index 206c90da..9313ca4d 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorApplication.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorApplication.kt @@ -7,7 +7,8 @@ import no.iktdev.exfl.coroutines.CoroutinesIO import no.iktdev.exfl.observable.Observables import no.iktdev.mediaprocessing.shared.common.* import no.iktdev.eventi.database.MySqlDataSource -import no.iktdev.mediaprocessing.shared.common.persistance.* +import no.iktdev.mediaprocessing.shared.common.database.cal.RunnerManager +import no.iktdev.mediaprocessing.shared.common.database.cal.TasksManager import no.iktdev.streamit.library.db.tables.* import no.iktdev.streamit.library.db.tables.helper.cast_errors import no.iktdev.streamit.library.db.tables.helper.data_audio diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventCoordinator.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventCoordinator.kt index c8e00720..9108ba48 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventCoordinator.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventCoordinator.kt @@ -5,13 +5,13 @@ import no.iktdev.eventi.data.EventStatus import no.iktdev.eventi.data.eventId import no.iktdev.eventi.implementations.ActiveMode import no.iktdev.eventi.implementations.EventCoordinator -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.ProcessType -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.data.MediaProcessStartEvent -import no.iktdev.mediaprocessing.shared.contract.data.PermitWorkCreationEvent -import no.iktdev.mediaprocessing.shared.contract.data.StartEventData -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.ProcessType +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaProcessStartEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.PermitWorkCreationEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.StartEventData +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.ApplicationContext import org.springframework.stereotype.Component @@ -73,15 +73,17 @@ class Coordinator( } - produceNewEvent(PermitWorkCreationEvent( - metadata = EventMetadata( - referenceId = referenceId, - derivedFromEventId = eventToAttachTo.eventId(), - status = EventStatus.Success, - source = getProducerName() - ), - data = message - )) + produceNewEvent( + no.iktdev.mediaprocessing.shared.common.contract.data.PermitWorkCreationEvent( + metadata = EventMetadata( + referenceId = referenceId, + derivedFromEventId = eventToAttachTo.eventId(), + status = EventStatus.Success, + source = getProducerName() + ), + data = message + ) + ) } override fun getActiveTaskMode(): ActiveMode { diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventListener.kt index 85c6fb43..3015d72e 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/CoordinatorEventListener.kt @@ -1,7 +1,7 @@ package no.iktdev.mediaprocessing.coordinator -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsListenerContract +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsListenerContract abstract class CoordinatorEventListener(): EventsListenerContract() { abstract override val produceEvent: Events diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsDatabase.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsDatabase.kt index 18bcdb2c..4ca631e1 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsDatabase.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsDatabase.kt @@ -1,10 +1,10 @@ package no.iktdev.mediaprocessing.coordinator import no.iktdev.mediaprocessing.shared.common.DatabaseEnvConfig -import no.iktdev.mediaprocessing.shared.common.persistance.allEvents -import no.iktdev.mediaprocessing.shared.common.persistance.events -import no.iktdev.mediaprocessing.shared.common.persistance.runners -import no.iktdev.mediaprocessing.shared.common.persistance.tasks +import no.iktdev.mediaprocessing.shared.common.database.tables.allEvents +import no.iktdev.mediaprocessing.shared.common.database.tables.events +import no.iktdev.mediaprocessing.shared.common.database.tables.runners +import no.iktdev.mediaprocessing.shared.common.database.tables.tasks import no.iktdev.mediaprocessing.shared.common.toEventsDatabase class EventsDatabase() { diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsManager.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsManager.kt index ea228a8d..f30240bf 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsManager.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/EventsManager.kt @@ -1,18 +1,18 @@ package no.iktdev.mediaprocessing.coordinator import no.iktdev.eventi.core.PersistentMessageHelper -import no.iktdev.eventi.data.derivedFromEventId import no.iktdev.eventi.data.eventId import no.iktdev.eventi.data.referenceId import no.iktdev.eventi.data.toJson import no.iktdev.eventi.database.DataSource import no.iktdev.eventi.database.isCausedByDuplicateError import no.iktdev.eventi.database.isExposedSqlException -import no.iktdev.mediaprocessing.shared.common.persistance.* -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.fromJsonWithDeserializer +import no.iktdev.mediaprocessing.shared.common.database.tables.allEvents +import no.iktdev.mediaprocessing.shared.common.database.tables.events +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.fromJsonWithDeserializer import org.jetbrains.exposed.exceptions.ExposedSQLException import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/ActionEventController.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/ActionEventController.kt index 4708f081..eeb4eca4 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/ActionEventController.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/ActionEventController.kt @@ -3,7 +3,7 @@ package no.iktdev.mediaprocessing.coordinator.controller import com.google.gson.Gson import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.EventsManager -import no.iktdev.mediaprocessing.shared.contract.dto.RequestWorkProceed +import no.iktdev.mediaprocessing.shared.common.contract.dto.RequestWorkProceed import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/RequestEventController.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/RequestEventController.kt index 6f9bfd3b..2487da2d 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/RequestEventController.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/RequestEventController.kt @@ -2,9 +2,9 @@ package no.iktdev.mediaprocessing.coordinator.controller import com.google.gson.Gson import no.iktdev.mediaprocessing.coordinator.Coordinator -import no.iktdev.mediaprocessing.shared.contract.ProcessType -import no.iktdev.mediaprocessing.shared.contract.dto.EventRequest -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.ProcessType +import no.iktdev.mediaprocessing.shared.common.contract.dto.EventRequest +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpStatus import org.springframework.http.ResponseEntity diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/MetadataMapping.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/MetadataMapping.kt deleted file mode 100644 index aab6b0e1..00000000 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/MetadataMapping.kt +++ /dev/null @@ -1,63 +0,0 @@ -package no.iktdev.mediaprocessing.coordinator.mapping - -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.reader.MetadataDto -import no.iktdev.mediaprocessing.shared.contract.reader.SummaryInfo -import java.io.File - - -class MetadataMapping(val events: List) { - //var collection: String? - init { - // collection = findCollection() - } - - - /* fun map(): MetadataDto? { - val baseInfo = events.find { it.data is BaseInfoPerformed }?.data as BaseInfoPerformed? - val mediaReadOut = events.find { it.data is VideoInfoPerformed }?.data as VideoInfoPerformed? - val meta = events.find { it.data is MetadataPerformed }?.data as MetadataPerformed? - - val coverDownloadTask = events.find { it.data is CoverInfoPerformed }?.data as CoverInfoPerformed? - val cover = events.find { it.data is CoverDownloadWorkPerformed }?.data as CoverDownloadWorkPerformed? - - if (!baseInfo.isSuccess()) { - return null - } - - val videoInfo = mediaReadOut?.toValueObject() - - - val mediaCover = if (coverDownloadTask != null || cover != null) { - val coverFile = cover?.coverFile?.let { File(it) } - MetadataCoverDto( - cover = coverFile?.name, - coverFile = cover?.coverFile, - coverUrl = coverDownloadTask?.url - ) - } else null - - return if (meta != null || videoInfo != null) { - - MetadataDto( - title = videoInfo?.title ?: baseInfo?.title ?: meta?.data?.title ?: return null, - collection = collection ?: return null, - cover = mediaCover, - type = meta?.data?.type ?: videoInfo?.type ?: return null, - summary = meta?.data?.summary?.filter {it.summary != null }?.map { SummaryInfo(language = it.language, summary = it.summary!! ) } ?: emptyList(), - genres = meta?.data?.genres ?: emptyList(), - titles = (meta?.data?.altTitle ?: emptyList()) + listOfNotNull(videoInfo?.title, baseInfo?.title) - ) - } else null - } - - private fun findCollection(): String? { - val mediaReadOut = events.find { it.data is VideoInfoPerformed }?.data as VideoInfoPerformed? - val baseInfo = events.find { it.data is BaseInfoPerformed }?.data as BaseInfoPerformed? - if (!baseInfo.isSuccess()) { - return null - } - return mediaReadOut?.outDirectory?.let { File(it).name } ?: baseInfo?.title - }*/ - -} \ No newline at end of file diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/OutputFilesMapping.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/OutputFilesMapping.kt deleted file mode 100644 index ad7a55e9..00000000 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/OutputFilesMapping.kt +++ /dev/null @@ -1,37 +0,0 @@ -package no.iktdev.mediaprocessing.coordinator.mapping - -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.reader.OutputFilesDto - -class OutputFilesMapping(val events: List) { - - /*fun mapTo(): OutputFilesDto { - - val videoResult = events.filter { it.data is ProcesserEncodeWorkPerformed } - .map { it.data as ProcesserEncodeWorkPerformed } - - val subtitleResult = events.filter { it.data is ProcesserExtractWorkPerformed && it.isSuccess() }.map { it.data as ProcesserExtractWorkPerformed }.filter { !it.outFile.isNullOrBlank() } - val convertedSubtitleResult = events.filter { it.data is ConvertWorkPerformed && it.isSuccess() }.map { it.data as ConvertWorkPerformed } - - val referenceId = events.firstOrNull()?.referenceId ?: throw RuntimeException("No Id") - val subtitles = try { - toSubtitleList(subtitleResult, convertedSubtitleResult) - } catch (e: Exception) { - System.err.println("Exception of $referenceId") - System.err.print("EventIds:\n" + events.joinToString("\n") { it.eventId } + "\n") - e.printStackTrace() - throw e - } - - return OutputFilesDto( - video = videoResult.lastOrNull { it.isSuccess() }?.outFile, - subtitles = subtitles - ) - } - - private fun toSubtitleList(extracted: List, converted: List): List { - val sub1 = extracted.mapNotNull { it.outFile } - val sub2 = converted.flatMap { it.outFiles } - return sub1 + sub2 - }*/ -} \ No newline at end of file diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/ProcessMapping.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/ProcessMapping.kt deleted file mode 100644 index b852dc96..00000000 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/ProcessMapping.kt +++ /dev/null @@ -1,68 +0,0 @@ -package no.iktdev.mediaprocessing.coordinator.mapping - -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.reader.MediaProcessedDto - -class ProcessMapping(val events: List) { - - /* fun map(): MediaProcessedDto? { - val referenceId = events.firstOrNull()?.referenceId ?: return null - val processStarted = getProcessStarted() - val meta = MetadataMapping(events) - return MediaProcessedDto( - referenceId = referenceId, - process = processStarted?.type, - inputFile = processStarted?.file, - collection = meta.collection, - metadata = meta.map(), - videoDetails = VideoDetailsMapper(events).mapTo(), - outputFiles = OutputFilesMapping(events).mapTo() - ) - } - - fun getProcessStarted(): MediaProcessStarted? { - return events.lastOrNull { it.data is MediaProcessStarted }?.data as MediaProcessStarted? - } - - - fun waitsForEncode(): Boolean { - val arguments = events.filter { it.event == KafkaEvents.EventMediaParameterEncodeCreated } - val created = events.filter { it.event == KafkaEvents.EventWorkEncodeCreated} - - val performedEvents = events.filter { it.event == KafkaEvents.EventWorkEncodePerformed } - - val performed = performedEvents.filter { it.isSuccess() } - val isSkipped = performedEvents.filter { it.isSkipped() } - - return (arguments.isNotEmpty() && created.isEmpty()) || created.size > performed.size + isSkipped.size - } - - fun waitsForExtract(): Boolean { - // Check if message is declared as skipped with statis - val arguments = events.filter { it.event == KafkaEvents.EventMediaParameterExtractCreated }.filter { it.data.isSuccess() } - val created = events.filter { it.event == KafkaEvents.EventWorkExtractCreated } - - val performedEvents = events.filter { it.event == KafkaEvents.EventWorkExtractPerformed } - - val performed = performedEvents.filter { it.isSuccess() } - val isSkipped = performedEvents.filter { it.isSkipped() } - - - return (arguments.isNotEmpty() && created.isEmpty()) || created.size > performed.size + isSkipped.size - } - - fun waitsForConvert(): Boolean { - val created = events.filter { it.event == KafkaEvents.EventWorkConvertCreated } - val performedEvents = events.filter { it.event == KafkaEvents.EventWorkConvertPerformed } - - val performed = performedEvents.filter { it.isSuccess() } - val isSkipped = performedEvents.filter { it.isSkipped() } - - return created.size > performed.size + isSkipped.size - } - - fun canCollect(): Boolean { - return (!waitsForEncode() && !waitsForExtract() && !waitsForConvert()) - }*/ - -} \ No newline at end of file diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/VideoDetailsMapper.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/VideoDetailsMapper.kt deleted file mode 100644 index cbe23ebd..00000000 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/mapping/VideoDetailsMapper.kt +++ /dev/null @@ -1,25 +0,0 @@ -package no.iktdev.mediaprocessing.coordinator.mapping - -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.reader.SerieInfo -import no.iktdev.mediaprocessing.shared.contract.reader.VideoDetails - -class VideoDetailsMapper(val events: List) { - - /* fun mapTo(): VideoDetails? { - val mediaReadOut = events.lastOrNull { it.data is VideoInfoPerformed }?.data as VideoInfoPerformed? - val proper = mediaReadOut?.toValueObject() ?: return null - - val details = VideoDetails( - type = proper.type, - fullName = proper.fullName, - serieInfo = if (proper !is EpisodeInfo) null else SerieInfo( - episodeTitle = proper.episodeTitle, - episodeNumber = proper.episode, - seasonNumber = proper.season, - title = proper.title - ) - ) - return details - }*/ -} \ No newline at end of file diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/CollectAndStoreTask.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/CollectAndStoreTask.kt deleted file mode 100644 index 123530c7..00000000 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/CollectAndStoreTask.kt +++ /dev/null @@ -1,157 +0,0 @@ -package no.iktdev.mediaprocessing.coordinator.tasks.event - -/* -@Service -class CollectAndStoreTask() { - val log = KotlinLogging.logger {} - - - val producesEvent: KafkaEvents = KafkaEvents.EventCollectAndStore - - val requiredEvents: List = listOf( - EventMediaProcessStarted, - EventMediaProcessCompleted - ) - val listensForEvents: List = KafkaEvents.entries - - - - fun onProcessEvents(event: PersistentMessage, events: List): MessageDataWrapper? { - - log.info { "${event.referenceId} triggered by ${event.event}" } - - val started = events.lastOrSuccessOf(EventMediaProcessStarted) ?: return null - val completed = events.lastOrSuccessOf(EventMediaProcessCompleted) ?: return null - if (!started.data.isSuccess() || !completed.data.isSuccess()) { - return null - } - val mapped = ProcessMapping(events).map() ?: return null - val collection = mapped.metadata?.collection ?: mapped.collection ?: return null - - val subtitlesStored = mapped.outputFiles?.subtitles?.let { - storeSubtitles(collection = collection, subtitles = it) - } ?: false - - val videoFile = mapped.outputFiles?.video?.let { File(it).name } - val videoInfo = mapped.videoDetails - - - val genres = mapped.metadata?.genres?.let { - storeAndGetGenres(it) - } - - val catalogId = mapped.metadata?.let { meta -> - if (videoInfo == null || videoFile == null) - null - else - storeCatalog(metadata = meta,genres = genres, videoFile = videoFile, videoDetails = videoInfo) - } ?: return SimpleMessageData(Status.ERROR, "Unable to store catalog when metadata is null", event.eventId) - - mapped.metadata?.let { - storeMetadata(catalogId = catalogId, metadata = it) - storeTitles(it.collection, it.title, contentTitles = it.titles) - } - - return SimpleMessageData(Status.COMPLETED, derivedFromEventId = event.eventId) - } - - private fun storeSubtitles(collection: String, subtitles: List): Boolean { - val result = subtitles.map { subtitle -> - val subtitleFile = File(subtitle) - val language = subtitleFile.parentFile.name - subtitle to executeWithStatus(getStoreDatabase()) { - SubtitleQuery( - collection = collection, - associatedWithVideo = subtitleFile.nameWithoutExtension, - language = language, - format = subtitleFile.extension.uppercase(), - file = subtitleFile.name - ).insert() - } - } - return result.none { !it.second } - } - - private fun storeMetadata(catalogId: Int, metadata: MetadataDto) { - metadata.summary.forEach { - withTransaction(getStoreDatabase()) { - SummaryQuery( - cid = catalogId, - language = it.language, - description = it.summary - ).insert() - } - } - } - - private fun storeTitles(collection: String, usedTitle: String, contentTitles: List) { - try { - withTransaction(getStoreDatabase()) { - titles.insertIgnore { - it[titles.masterTitle] = collection - it[titles.title] = NameHelper.normalize(usedTitle) - it[titles.type] = 1 - } - titles.insertIgnore { - it[titles.masterTitle] = usedTitle - it[titles.title] = NameHelper.normalize(usedTitle) - it[titles.type] = 2 - } - contentTitles.forEach { title -> - titles.insertIgnore { - it[titles.masterTitle] = usedTitle - it[titles.title] = title - } - } - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - private fun storeAndGetGenres(genres: List): String? { - return withTransaction(getStoreDatabase()) { - val gq = GenreQuery( *genres.toTypedArray() ) - gq.insertAndGetIds() - gq.getIds().joinToString(",") - } - } - - private fun storeCatalog(metadata: MetadataDto, videoDetails: VideoDetails, videoFile: String, genres: String?): Int? { - val precreatedCatalogQuery = CatalogQuery( - title = NameHelper.normalize(metadata.title), - cover = metadata.cover?.cover, - type = metadata.type, - collection = metadata.collection, - genres = genres - ) - - val result = when (videoDetails.type) { - "serie" -> { - val serieInfo = videoDetails.serieInfo ?: throw RuntimeException("SerieInfo missing in VideoDetails for Serie! $videoFile") - executeOrException { - precreatedCatalogQuery.insertWithSerie( - episodeTitle = serieInfo.episodeTitle ?: "", - videoFile = videoFile, - episode = serieInfo.episodeNumber, - season = serieInfo.seasonNumber - ) - } - } - "movie" -> { - executeOrException { - precreatedCatalogQuery.insertWithMovie(videoFile) - } - } - else -> throw RuntimeException("${videoDetails.type} is not supported!") - } - val ignoreException = result?.cause is SQLIntegrityConstraintViolationException && (result as ExposedSQLException).errorCode == 1062 - return if (result == null || ignoreException ) { - return withTransaction(getStoreDatabase()) { - precreatedCatalogQuery.getId() - } - } else null - } - - -}*/ \ No newline at end of file diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/implementations/WorkTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/implementations/WorkTaskListener.kt index b0969ea7..1bf254a5 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/implementations/WorkTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/implementations/WorkTaskListener.kt @@ -2,12 +2,11 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.implementations import mu.KotlinLogging import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsListenerContract -import no.iktdev.mediaprocessing.shared.contract.ProcessType -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.data.MediaProcessStartEvent -import no.iktdev.mediaprocessing.shared.contract.data.az +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.ProcessType +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaProcessStartEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.az abstract class WorkTaskListener: CoordinatorEventListener() { private val log = KotlinLogging.logger {} diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/BaseInfoFromFileTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/BaseInfoFromFileTaskListener.kt index 86858a5d..486c5c21 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/BaseInfoFromFileTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/BaseInfoFromFileTaskListener.kt @@ -7,11 +7,11 @@ import no.iktdev.eventi.data.EventStatus import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.shared.common.parsing.FileNameParser -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.data.BaseInfo -import no.iktdev.mediaprocessing.shared.contract.data.BaseInfoEvent -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.data.StartEventData +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.data.BaseInfo +import no.iktdev.mediaprocessing.shared.common.contract.data.BaseInfoEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.StartEventData import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CompletedTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CompletedTaskListener.kt index 1cee6429..a4c84f36 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CompletedTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CompletedTaskListener.kt @@ -10,11 +10,11 @@ import no.iktdev.eventi.database.executeOrException import no.iktdev.eventi.database.executeWithStatus import no.iktdev.eventi.database.withTransaction import no.iktdev.mediaprocessing.shared.common.parsing.NameHelper -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.data.* -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents -import no.iktdev.mediaprocessing.shared.contract.dto.SubtitleFormats -import no.iktdev.mediaprocessing.shared.contract.reader.* +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.dto.SubtitleFormats +import no.iktdev.mediaprocessing.shared.common.contract.reader.* import no.iktdev.streamit.library.db.query.CatalogQuery import no.iktdev.streamit.library.db.query.GenreQuery import no.iktdev.streamit.library.db.query.SubtitleQuery diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ConvertWorkTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ConvertWorkTaskListener.kt index e4180ac9..38648fc0 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ConvertWorkTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ConvertWorkTaskListener.kt @@ -11,11 +11,11 @@ import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.coordinator.taskManager import no.iktdev.mediaprocessing.coordinator.tasksV2.implementations.WorkTaskListener import no.iktdev.mediaprocessing.shared.common.task.TaskType -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.* -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents -import no.iktdev.mediaprocessing.shared.contract.dto.isOnly +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.dto.isOnly import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverDownloadTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverDownloadTaskListener.kt index b37b502d..f5231a55 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverDownloadTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverDownloadTaskListener.kt @@ -9,10 +9,10 @@ import no.iktdev.eventi.implementations.EventCoordinator import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.shared.common.DownloadClient -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsListenerContract -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsListenerContract +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.* import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverFromMetadataTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverFromMetadataTaskListener.kt index a94265fb..ab0b0e49 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverFromMetadataTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/CoverFromMetadataTaskListener.kt @@ -9,8 +9,8 @@ import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.shared.common.parsing.NameHelper import no.iktdev.mediaprocessing.shared.common.parsing.Regexes -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.data.* import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkArgumentsTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkArgumentsTaskListener.kt index e4ef3858..05e8cac1 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkArgumentsTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkArgumentsTaskListener.kt @@ -9,11 +9,11 @@ import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.EncodeWorkArgumentsMapping import no.iktdev.mediaprocessing.shared.common.Preference -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsListenerContract -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.* -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsListenerContract +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkTaskListener.kt index 46bad07b..c5009c59 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/EncodeWorkTaskListener.kt @@ -12,9 +12,9 @@ import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.taskManager import no.iktdev.mediaprocessing.coordinator.tasksV2.implementations.WorkTaskListener import no.iktdev.mediaprocessing.shared.common.task.TaskType -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.* import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkArgumentsTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkArgumentsTaskListener.kt index 4e59d55d..67e7932b 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkArgumentsTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkArgumentsTaskListener.kt @@ -8,11 +8,11 @@ import no.iktdev.eventi.implementations.EventCoordinator import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.ExtractWorkArgumentsMapping -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsListenerContract -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.* -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsListenerContract +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkTaskListener.kt index c1dba2c3..ed7084af 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ExtractWorkTaskListener.kt @@ -12,9 +12,9 @@ import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.taskManager import no.iktdev.mediaprocessing.coordinator.tasksV2.implementations.WorkTaskListener import no.iktdev.mediaprocessing.shared.common.task.TaskType -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.* import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MediaOutInformationTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MediaOutInformationTaskListener.kt index 135789ea..2225b22d 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MediaOutInformationTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MediaOutInformationTaskListener.kt @@ -13,11 +13,11 @@ import no.iktdev.mediaprocessing.shared.common.parsing.FileNameDeterminate import no.iktdev.mediaprocessing.shared.common.parsing.NameHelper import no.iktdev.mediaprocessing.shared.common.parsing.Regexes import no.iktdev.mediaprocessing.shared.common.parsing.isCharOnlyUpperCase -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.data.* -import no.iktdev.mediaprocessing.shared.contract.data.EpisodeInfo -import no.iktdev.mediaprocessing.shared.contract.data.MovieInfo -import no.iktdev.mediaprocessing.shared.contract.data.pyMetadata +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.data.EpisodeInfo +import no.iktdev.mediaprocessing.shared.common.contract.data.MovieInfo +import no.iktdev.mediaprocessing.shared.common.contract.data.pyMetadata import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.FileFilter diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MetadataWaitOrDefaultTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MetadataWaitOrDefaultTaskListener.kt index 85e4a8bd..e08f01a8 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MetadataWaitOrDefaultTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/MetadataWaitOrDefaultTaskListener.kt @@ -9,11 +9,11 @@ import no.iktdev.eventi.data.isSuccessful import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.eventi.database.toEpochSeconds -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.data.BaseInfoEvent -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.data.MediaMetadataReceivedEvent -import no.iktdev.mediaprocessing.shared.contract.data.az +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.data.BaseInfoEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaMetadataReceivedEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.az import org.springframework.beans.factory.annotation.Autowired import org.springframework.scheduling.annotation.EnableScheduling import org.springframework.scheduling.annotation.Scheduled diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ParseMediaFileStreamsTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ParseMediaFileStreamsTaskListener.kt index a2803c9e..ec2fe8f7 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ParseMediaFileStreamsTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ParseMediaFileStreamsTaskListener.kt @@ -10,16 +10,16 @@ import no.iktdev.eventi.data.dataAs import no.iktdev.eventi.implementations.EventCoordinator import no.iktdev.mediaprocessing.coordinator.Coordinator import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsListenerContract -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.data.MediaFileStreamsParsedEvent -import no.iktdev.mediaprocessing.shared.contract.data.MediaFileStreamsReadEvent -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioStream -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.ParsedMediaStreams -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.SubtitleStream -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.VideoStream +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsListenerContract +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaFileStreamsParsedEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaFileStreamsReadEvent +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.SubtitleStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.VideoStream import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ReadMediaFileStreamsTaskListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ReadMediaFileStreamsTaskListener.kt index 1ccc9df6..e4c1784f 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ReadMediaFileStreamsTaskListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ReadMediaFileStreamsTaskListener.kt @@ -14,13 +14,13 @@ import no.iktdev.mediaprocessing.coordinator.CoordinatorEventListener import no.iktdev.mediaprocessing.shared.common.SharedConfig import no.iktdev.mediaprocessing.shared.common.runner.CodeToOutput import no.iktdev.mediaprocessing.shared.common.runner.getOutputUsing -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.EventsListenerContract -import no.iktdev.mediaprocessing.shared.contract.EventsManagerContract -import no.iktdev.mediaprocessing.shared.contract.data.Event -import no.iktdev.mediaprocessing.shared.contract.data.MediaFileStreamsReadEvent -import no.iktdev.mediaprocessing.shared.contract.data.StartEventData -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsListenerContract +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaFileStreamsReadEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.StartEventData +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/EncodeWorkArgumentsMapping.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/EncodeWorkArgumentsMapping.kt index c715766f..6ecf2b5b 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/EncodeWorkArgumentsMapping.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/EncodeWorkArgumentsMapping.kt @@ -3,11 +3,11 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping import no.iktdev.exfl.using import no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams.AudioArguments import no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams.VideoArguments -import no.iktdev.mediaprocessing.shared.contract.data.EncodeArgumentData -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioStream -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.EncodingPreference -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.ParsedMediaStreams -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.VideoStream +import no.iktdev.mediaprocessing.shared.common.contract.data.EncodeArgumentData +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.EncodingPreference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.VideoStream import java.io.File class EncodeWorkArgumentsMapping( diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/ExtractWorkArgumentsMapping.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/ExtractWorkArgumentsMapping.kt index cd0c3ca8..13895a66 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/ExtractWorkArgumentsMapping.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/ExtractWorkArgumentsMapping.kt @@ -2,8 +2,8 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping import no.iktdev.exfl.using import no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams.SubtitleArguments -import no.iktdev.mediaprocessing.shared.contract.data.ExtractArgumentData -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.data.ExtractArgumentData +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams import java.io.File class ExtractWorkArgumentsMapping( diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/FFmpegBase.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/FFmpegBase.kt index 6b8525e3..0ad1c988 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/FFmpegBase.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/FFmpegBase.kt @@ -1,7 +1,7 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioArgumentsDto -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.VideoArgumentsDto +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioArgumentsDto +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.VideoArgumentsDto fun toFfmpegWorkerArguments( videoArguments: VideoArgumentsDto?, diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/AudioArguments.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/AudioArguments.kt index 9a089a96..6a84f2a7 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/AudioArguments.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/AudioArguments.kt @@ -1,9 +1,9 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioArgumentsDto -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioPreference -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioStream -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioArgumentsDto +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioPreference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams class AudioArguments( val audioStream: AudioStream, @@ -12,42 +12,70 @@ class AudioArguments( ) { fun isAudioCodecEqual() = audioStream.codec_name.lowercase() == preference.codec.lowercase() - fun isSurroundButNotEAC3(): Boolean { - return audioStream.channels > 2 && audioStream.codec_name.lowercase() != "eac3" + /** + * Checks whether its ac3 or eac3, as google cast supports this and most other devices. + */ + fun isOfSupportedSurroundCodec(): Boolean { + return audioStream.codec_name.lowercase() in listOf("eac3", "ac3") } - fun isSurroundAndEAC3(): Boolean { - return audioStream.channels > 2 && audioStream.codec_name.lowercase() == "eac3" - } fun isSurround(): Boolean { return audioStream.channels > 2 } - private fun shouldUseEAC3(): Boolean { - return (preference.defaultToEAC3OnSurroundDetected && audioStream.channels > 2 && audioStream.codec_name.lowercase() != "eac3") - } fun getAudioArguments(): AudioArgumentsDto { val optionalParams = mutableListOf() - val codecParams = if (isAudioCodecEqual() || isSurroundAndEAC3()) { - listOf("-acodec", "copy") - } else if (!isSurroundButNotEAC3() && shouldUseEAC3()) { - listOf("-c:a", "eac3") - } else { - val codecSwap = mutableListOf("-c:a", preference.codec) - if (audioStream.channels > 2 && !preference.preserveChannels) { - codecSwap.addAll(listOf("-ac", "2")) + if (!isSurround()) { + return if (isAudioCodecEqual()) { + asPassthrough() + } else { + asStereo() + } + } else { + if (preference.forceStereo) { + return asStereo() + } + if (preference.passthroughOnGenerallySupportedSurroundSound && isOfSupportedSurroundCodec()) { + return asPassthrough() + } else if (preference.passthroughOnGenerallySupportedSurroundSound && !isOfSupportedSurroundCodec()) { + return asSurround() + } + if (preference.convertToEac3OnUnsupportedSurround ) { + return asSurround() } - codecSwap - } - return AudioArgumentsDto( - index = allStreams.audioStream.indexOf(audioStream), - codecParameters = codecParams, - optionalParameters = optionalParams - ) + + return asStereo() + } } + fun index(): Int { + return allStreams.audioStream.indexOf(audioStream) + } + + fun asPassthrough(): AudioArgumentsDto { + return AudioArgumentsDto( + index = index() + ) + } + fun asStereo(): AudioArgumentsDto { + return AudioArgumentsDto( + index = index(), + codecParameters = listOf( + "-c:a", preference.codec, + "-ac", "2" + ), optionalParameters = emptyList() + ) + } + fun asSurround(): AudioArgumentsDto { + return AudioArgumentsDto( + index = index(), + codecParameters = listOf( + "-c:a", "eac3" + ), optionalParameters = emptyList() + ) + } } \ No newline at end of file diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/SubtitleArguments.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/SubtitleArguments.kt index e49c6220..84d6670f 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/SubtitleArguments.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/SubtitleArguments.kt @@ -1,7 +1,7 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.SubtitleArgumentsDto -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.SubtitleStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.SubtitleArgumentsDto +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.SubtitleStream class SubtitleArguments(val subtitleStreams: List) { /** diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/VideoArguments.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/VideoArguments.kt index d35734d9..8b06fc04 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/VideoArguments.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/VideoArguments.kt @@ -1,9 +1,9 @@ package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.ParsedMediaStreams -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.VideoArgumentsDto -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.VideoPreference -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.VideoStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.VideoArgumentsDto +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.VideoPreference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.VideoStream class VideoArguments( val videoStream: VideoStream, diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/utils/TasksUtil.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/utils/TasksUtil.kt index e2f7d446..2c62640b 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/utils/TasksUtil.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/utils/TasksUtil.kt @@ -3,7 +3,7 @@ package no.iktdev.mediaprocessing.coordinator.utils import mu.KotlinLogging import no.iktdev.mediaprocessing.shared.common.persistance.* import no.iktdev.mediaprocessing.shared.common.task.TaskType -import no.iktdev.mediaprocessing.shared.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.Event val log = KotlinLogging.logger {} diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/watcher/InputDirectoryWatcher.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/watcher/InputDirectoryWatcher.kt index a4256c86..3b90c117 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/watcher/InputDirectoryWatcher.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/watcher/InputDirectoryWatcher.kt @@ -10,7 +10,7 @@ import mu.KotlinLogging import no.iktdev.mediaprocessing.coordinator.* import no.iktdev.mediaprocessing.shared.common.SharedConfig import no.iktdev.mediaprocessing.shared.common.extended.isSupportedVideoFile -import no.iktdev.mediaprocessing.shared.contract.ProcessType +import no.iktdev.mediaprocessing.shared.common.contract.ProcessType import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.ApplicationContext import org.springframework.stereotype.Service diff --git a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/reader/BaseInfoFromFileTest.kt b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/reader/BaseInfoFromFileTest.kt index 2e94927c..13fea9a5 100644 --- a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/reader/BaseInfoFromFileTest.kt +++ b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/reader/BaseInfoFromFileTest.kt @@ -2,7 +2,7 @@ package no.iktdev.mediaprocessing.coordinator.reader /* import com.google.gson.Gson import no.iktdev.mediaprocessing.shared.kafka.core.CoordinatorProducer -import no.iktdev.mediaprocessing.shared.contract.ProcessType +import no.iktdev.mediaprocessing.shared.common.contract.ProcessType import no.iktdev.mediaprocessing.shared.kafka.dto.events_result.BaseInfoPerformed import no.iktdev.mediaprocessing.shared.kafka.dto.events_result.ProcessStarted import no.iktdev.mediaprocessing.shared.kafka.dto.Status diff --git a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTaskTest.kt b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTaskTest.kt index a5f52b26..2cf883f6 100644 --- a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTaskTest.kt +++ b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasks/event/ffmpeg/EncodeArgumentCreatorTaskTest.kt @@ -3,9 +3,9 @@ package no.iktdev.mediaprocessing.coordinator.tasks.event.ffmpeg import com.google.gson.Gson import com.google.gson.reflect.TypeToken import no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams.AudioArguments -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioPreference -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.AudioStream -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioPreference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test @@ -17,7 +17,7 @@ class EncodeArgumentCreatorTaskTest { val audio = AudioArguments( audioStream = audioStreamsEAC().first(), allStreams = ParsedMediaStreams(listOf(), audioStreamsEAC(), listOf()), - preference = AudioPreference(preserveChannels = true, forceStereo = false, defaultToEAC3OnSurroundDetected = true) + preference = AudioPreference(preserveChannels = true, forceStereo = false, convertToEac3OnUnsupportedSurround = true) ) val arguments = audio.getAudioArguments() assertThat(arguments.codecParameters).isEqualTo(listOf("-acodec", "copy")) @@ -75,4 +75,6 @@ class EncodeArgumentCreatorTaskTest { val type = object : TypeToken>() {}.type return Gson().fromJson>(streams, type) } + + } \ No newline at end of file diff --git a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ParseMediaFileStreamsTaskListenerTest.kt b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ParseMediaFileStreamsTaskListenerTest.kt new file mode 100644 index 00000000..4d74a462 --- /dev/null +++ b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/listeners/ParseMediaFileStreamsTaskListenerTest.kt @@ -0,0 +1,28 @@ +package no.iktdev.mediaprocessing.coordinator.tasksV2.listeners + +import com.google.gson.Gson +import com.google.gson.JsonObject +import no.iktdev.eventi.core.WGson +import no.iktdev.eventi.data.dataAs +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.fromJsonWithDeserializer +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.Test + +class ParseMediaFileStreamsTaskListenerTest { + + @Test + fun testParse() { + val event = data.fromJsonWithDeserializer(Events.EventMediaReadStreamPerformed).dataAs() + + val parser = ParseMediaFileStreamsTaskListener() + val result = parser.parseStreams(event) + assertThat(result.videoStream).hasSize(1) + } + +} + +val data = """ + {"metadata":{"derivedFromEventId":"c2dfe881-db0d-4f1f-a6a5-5e556ebbccaf","eventId":"308267f3-6eee-4250-9dc4-0f54edb1a120","referenceId":"d8be4d8f-64c2-4df1-aed1-e66cdc7163b4","status":"Success","created":"2024-07-19T18:45:31.048489577"},"data":{"streams":[{"index":0,"codec_name":"hevc","codec_long_name":"H.265 / HEVC (High Efficiency Video Coding)","profile":"Main 10","codec_type":"video","codec_time_base":"1001/24000","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","width":1920,"height":1080,"coded_width":1920,"coded_height":1080,"closed_captions":0,"has_b_frames":2,"sample_aspect_ratio":"1:1","display_aspect_ratio":"16:9","pix_fmt":"yuv420p10le","level":120,"color_range":"tv","color_space":"bt709","color_transfer":"bt709","color_primaries":"bt709","refs":1,"r_frame_rate":"24000/1001","avg_frame_rate":"24000/1001","time_base":"1/1000","start_pts":0,"start_time":"0.000000","disposition":{"default":1,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"title":"Presented By EMBER","BPS":"1288407","DURATION":"00:23:40.002000000","NUMBER_OF_FRAMES":"34046","NUMBER_OF_BYTES":"228692681","_STATISTICS_WRITING_APP":"mkvmerge v69.0.0 (\u0027Day And Age\u0027) 64-bit","_STATISTICS_WRITING_DATE_UTC":"2024-01-06 04:19:11","_STATISTICS_TAGS":"BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"}},{"index":1,"codec_name":"eac3","codec_long_name":"ATSC A/52B (AC-3, E-AC-3)","codec_type":"audio","codec_time_base":"1/48000","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","sample_fmt":"fltp","sample_rate":"48000","channels":2,"bits_per_sample":0,"dmix_mode":"-1","ltrt_cmixlev":"-1.000000","ltrt_surmixlev":"-1.000000","loro_cmixlev":"-1.000000","loro_surmixlev":"-1.000000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/1000","start_pts":12,"start_time":"0.012000","disposition":{"default":1,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"language":"jpn","BPS":"128000","DURATION":"00:23:41.088000000","NUMBER_OF_FRAMES":"44409","NUMBER_OF_BYTES":"22737408","_STATISTICS_WRITING_APP":"mkvmerge v69.0.0 (\u0027Day And Age\u0027) 64-bit","_STATISTICS_WRITING_DATE_UTC":"2024-01-06 04:19:11","_STATISTICS_TAGS":"BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"}},{"index":2,"codec_name":"ass","codec_long_name":"ASS (Advanced SSA) subtitle","codec_type":"subtitle","codec_time_base":"0/1","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/1000","start_pts":0,"start_time":"0.000000","duration_ts":1421100,"duration":"1421.100000","disposition":{"default":1,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"language":"eng","BPS":"110","DURATION":"00:21:01.710000000","NUMBER_OF_FRAMES":"255","NUMBER_OF_BYTES":"17392","_STATISTICS_WRITING_APP":"mkvmerge v69.0.0 (\u0027Day And Age\u0027) 64-bit","_STATISTICS_WRITING_DATE_UTC":"2024-01-06 04:19:11","_STATISTICS_TAGS":"BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"}},{"index":3,"codec_name":"mjpeg","codec_long_name":"Motion JPEG","profile":"Progressive","codec_type":"video","codec_time_base":"0/1","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","width":400,"height":567,"coded_width":400,"coded_height":567,"closed_captions":0,"has_b_frames":0,"sample_aspect_ratio":"1:1","display_aspect_ratio":"400:567","pix_fmt":"yuvj444p","level":-99,"color_range":"pc","color_space":"bt470bg","chroma_location":"center","refs":1,"r_frame_rate":"90000/1","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","bits_per_raw_sample":"8","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":1,"timed_thumbnails":0},"tags":{"filename":"cover.jpg","mimetype":"image/jpeg"}},{"index":4,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"Roboto-Medium.ttf","mimetype":"application/x-truetype-font"}},{"index":5,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"Roboto-MediumItalic.ttf","mimetype":"application/x-truetype-font"}},{"index":6,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"arial.ttf","mimetype":"application/x-truetype-font"}},{"index":7,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"arialbd.ttf","mimetype":"application/x-truetype-font"}},{"index":8,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"comic.ttf","mimetype":"application/x-truetype-font"}},{"index":9,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"comicbd.ttf","mimetype":"application/x-truetype-font"}},{"index":10,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"times.ttf","mimetype":"application/x-truetype-font"}},{"index":11,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"timesbd.ttf","mimetype":"application/x-truetype-font"}},{"index":12,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"trebuc.ttf","mimetype":"application/x-truetype-font"}},{"index":13,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"trebucbd.ttf","mimetype":"application/x-truetype-font"}},{"index":14,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"verdana.ttf","mimetype":"application/x-truetype-font"}},{"index":15,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"verdanab.ttf","mimetype":"application/x-truetype-font"}},{"index":16,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"CONSOLA.TTF","mimetype":"application/x-truetype-font"}},{"index":17,"codec_name":"ttf","codec_long_name":"TrueType font","codec_type":"attachment","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"filename":"CONSOLAB.TTF","mimetype":"application/x-truetype-font"}},{"index":18,"codec_name":"png","codec_long_name":"PNG (Portable Network Graphics) image","codec_type":"video","codec_time_base":"0/1","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","width":350,"height":197,"coded_width":350,"coded_height":197,"closed_captions":0,"has_b_frames":0,"sample_aspect_ratio":"1:1","display_aspect_ratio":"350:197","pix_fmt":"rgb24","level":-99,"color_range":"pc","refs":1,"r_frame_rate":"90000/1","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","duration_ts":127899000,"duration":"1421.100000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":1,"timed_thumbnails":0},"tags":{"filename":"cover.png","mimetype":"image/png"}}]},"eventType":"EventMediaReadStreamPerformed"} +""".trimIndent() \ No newline at end of file diff --git a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/EncodeWorkArgumentsMappingTest.kt b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/EncodeWorkArgumentsMappingTest.kt new file mode 100644 index 00000000..e4301fec --- /dev/null +++ b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/EncodeWorkArgumentsMappingTest.kt @@ -0,0 +1,35 @@ +package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping + +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaFileStreamsParsedEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.az +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioPreference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.EncodingPreference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.VideoPreference +import no.iktdev.mediaprocessing.shared.common.contract.fromJsonWithDeserializer +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.Test +import java.io.File + +class EncodeWorkArgumentsMappingTest { + + @Test + fun parse() { + val event = data.fromJsonWithDeserializer(Events.EventMediaParseStreamPerformed) + val parser = EncodeWorkArgumentsMapping( + "potato.mkv", + "potato.mp4", + File(".\\potato.mp4"), + event.az()!!.data!!, + EncodingPreference(VideoPreference(), AudioPreference()) + ) + val result = parser.getArguments() + } + + +} + +val data = """ + {"metadata":{"derivedFromEventId":"308267f3-6eee-4250-9dc4-0f54edb1a120","eventId":"51970dfb-790d-48e4-a37e-ae0915bb1b70","referenceId":"d8be4d8f-64c2-4df1-aed1-e66cdc7163b4","status":"Success","created":"2024-07-19T18:45:31.956816095"},"data":{"videoStream":[{"index":0,"codec_name":"hevc","codec_long_name":"H.265 / HEVC (High Efficiency Video Coding)","codec_type":"video","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"24000/1001","avg_frame_rate":"24000/1001","time_base":"1/1000","start_pts":0,"start_time":"0.000000","disposition":{"default":1,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"title":"Presented By EMBER","BPS":"1288407","DURATION":"00:23:40.002000000","NUMBER_OF_FRAMES":"34046","NUMBER_OF_BYTES":"228692681","_STATISTICS_WRITING_APP":"mkvmerge v69.0.0 (\u0027Day And Age\u0027) 64-bit","_STATISTICS_WRITING_DATE_UTC":"2024-01-06 04:19:11","_STATISTICS_TAGS":"BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"},"profile":"Main 10","width":1920,"height":1080,"coded_width":1920,"coded_height":1080,"closed_captions":0,"has_b_frames":2,"sample_aspect_ratio":"1:1","display_aspect_ratio":"16:9","pix_fmt":"yuv420p10le","level":120,"color_range":"tv","color_space":"bt709","color_transfer":"bt709","color_primaries":"bt709","refs":1},{"index":18,"codec_name":"png","codec_long_name":"PNG (Portable Network Graphics) image","codec_type":"video","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"90000/1","avg_frame_rate":"0/0","time_base":"1/90000","start_pts":0,"start_time":"0.000000","disposition":{"default":0,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":1,"timed_thumbnails":0},"tags":{"filename":"cover.png","mimetype":"image/png"},"duration":"1421.100000","duration_ts":127899000,"width":350,"height":197,"coded_width":350,"coded_height":197,"closed_captions":0,"has_b_frames":0,"sample_aspect_ratio":"1:1","display_aspect_ratio":"350:197","pix_fmt":"rgb24","level":-99,"color_range":"pc","refs":1}],"audioStream":[{"index":1,"codec_name":"eac3","codec_long_name":"ATSC A/52B (AC-3, E-AC-3)","codec_type":"audio","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/1000","start_pts":12,"start_time":"0.012000","disposition":{"default":1,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"BPS":"128000","DURATION":"00:23:41.088000000","NUMBER_OF_FRAMES":"44409","NUMBER_OF_BYTES":"22737408","_STATISTICS_WRITING_APP":"mkvmerge v69.0.0 (\u0027Day And Age\u0027) 64-bit","_STATISTICS_WRITING_DATE_UTC":"2024-01-06 04:19:11","_STATISTICS_TAGS":"BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES","language":"jpn"},"sample_fmt":"fltp","sample_rate":"48000","channels":2,"bits_per_sample":0}],"subtitleStream":[{"index":2,"codec_name":"ass","codec_long_name":"ASS (Advanced SSA) subtitle","codec_type":"subtitle","codec_tag_string":"[0][0][0][0]","codec_tag":"0x0000","r_frame_rate":"0/0","avg_frame_rate":"0/0","time_base":"1/1000","start_pts":0,"start_time":"0.000000","duration":"1421.100000","duration_ts":1421100,"disposition":{"default":1,"dub":0,"original":0,"comment":0,"lyrics":0,"karaoke":0,"forced":0,"hearing_impaired":0,"visual_impaired":0,"clean_effects":0,"attached_pic":0,"timed_thumbnails":0},"tags":{"BPS":"110","DURATION":"00:21:01.710000000","NUMBER_OF_FRAMES":"255","NUMBER_OF_BYTES":"17392","_STATISTICS_WRITING_APP":"mkvmerge v69.0.0 (\u0027Day And Age\u0027) 64-bit","_STATISTICS_WRITING_DATE_UTC":"2024-01-06 04:19:11","_STATISTICS_TAGS":"BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES","language":"eng"}}]},"eventType":"EventMediaParseStreamPerformed"} +""".trimIndent() \ No newline at end of file diff --git a/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/AudioArgumentsTest.kt b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/AudioArgumentsTest.kt new file mode 100644 index 00000000..19cef82e --- /dev/null +++ b/apps/coordinator/src/test/kotlin/no/iktdev/mediaprocessing/coordinator/tasksV2/mapping/streams/AudioArgumentsTest.kt @@ -0,0 +1,256 @@ +package no.iktdev.mediaprocessing.coordinator.tasksV2.mapping.streams + +import com.google.gson.Gson +import no.iktdev.mediaprocessing.shared.common.Preference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioPreference +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.AudioStream +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.Test + +class AudioArgumentsTest { + + @Test + fun validateChecks1() { + val data = Gson().fromJson(ac3AudioStreamJson, AudioStream::class.java) + val audioArguments = AudioArguments( + allStreams = ParsedMediaStreams( + audioStream = listOf(data), videoStream = emptyList(), subtitleStream = emptyList()), + preference = Preference.getPreference().encodePreference.audio, + audioStream = data + ) + assertThat(audioArguments.isAudioCodecEqual()).isFalse() + assertThat(audioArguments.isSurround()).isTrue() + + assertThat(audioArguments.getAudioArguments().codecParameters).isEqualTo(listOf("-acodec", "copy")) + } + + @Test + fun validateChecks2() { + val data = Gson().fromJson(eac3AudioStreamJson, AudioStream::class.java) + val audioArguments = AudioArguments( + allStreams = ParsedMediaStreams( + audioStream = listOf(data), videoStream = emptyList(), subtitleStream = emptyList()), + preference = Preference.getPreference().encodePreference.audio, + audioStream = data + ) + assertThat(audioArguments.isAudioCodecEqual()).isFalse() + assertThat(audioArguments.isSurround()).isTrue() + + assertThat(audioArguments.getAudioArguments().codecParameters).isEqualTo(listOf("-acodec", "copy")) + } + + @Test + fun validateChecks3() { + val data = Gson().fromJson(aacSurroundAudioStreamJson, AudioStream::class.java) + val audioArguments = AudioArguments( + allStreams = ParsedMediaStreams( + audioStream = listOf(data), videoStream = emptyList(), subtitleStream = emptyList()), + preference = Preference.getPreference().encodePreference.audio, + audioStream = data + ) + assertThat(audioArguments.isAudioCodecEqual()).isTrue() + assertThat(audioArguments.isSurround()).isTrue() + + assertThat(audioArguments.getAudioArguments().codecParameters).isEqualTo(listOf("-c:a", "eac3")) + } + + @Test + fun validateChecks4() { + val data = Gson().fromJson(aacStereoAudioStreamJson, AudioStream::class.java) + val audioArguments = AudioArguments( + allStreams = ParsedMediaStreams( + audioStream = listOf(data), videoStream = emptyList(), subtitleStream = emptyList()), + preference = Preference.getPreference().encodePreference.audio, + audioStream = data + ) + assertThat(audioArguments.isAudioCodecEqual()).isTrue() + assertThat(audioArguments.isSurround()).isFalse() + + assertThat(audioArguments.getAudioArguments().codecParameters).isEqualTo(listOf("-acodec", "copy")) + } + + + val ac3AudioStreamJson = """ + { + "index": 1, + "codec_name": "ac3", + "codec_long_name": "ATSC A/52A (AC-3)", + "codec_type": "audio", + "codec_tag_string": "[0][0][0][0]", + "codec_tag": "0x0000", + "sample_fmt": "fltp", + "sample_rate": "48000", + "channels": 6, + "channel_layout": "5.1(side)", + "bits_per_sample": 0, + "dmix_mode": "-1", + "ltrt_cmixlev": "-1.000000", + "ltrt_surmixlev": "-1.000000", + "loro_cmixlev": "-1.000000", + "loro_surmixlev": "-1.000000", + "r_frame_rate": "0/0", + "avg_frame_rate": "0/0", + "time_base": "1/1000", + "start_pts": -5, + "start_time": "-0.005000", + "bit_rate": "448000", + "disposition": { + "default": 1, + "dub": 0, + "original": 0, + "comment": 0, + "lyrics": 0, + "karaoke": 0, + "forced": 0, + "hearing_impaired": 0, + "visual_impaired": 0, + "clean_effects": 0, + "attached_pic": 0, + "timed_thumbnails": 0 + }, + "tags": { + "language": "eng", + "ENCODER": "Lavc60.31.102 ac3", + "DURATION": "01:05:13.024000000" + } + } + """.trimIndent() + val eac3AudioStreamJson = """ + { + "index": 1, + "codec_name": "eac3", + "codec_long_name": "E-AC3", + "codec_type": "audio", + "codec_tag_string": "[0][0][0][0]", + "codec_tag": "0x0000", + "sample_fmt": "fltp", + "sample_rate": "48000", + "channels": 6, + "channel_layout": "5.1(side)", + "bits_per_sample": 0, + "dmix_mode": "-1", + "ltrt_cmixlev": "-1.000000", + "ltrt_surmixlev": "-1.000000", + "loro_cmixlev": "-1.000000", + "loro_surmixlev": "-1.000000", + "r_frame_rate": "0/0", + "avg_frame_rate": "0/0", + "time_base": "1/1000", + "start_pts": -5, + "start_time": "-0.005000", + "bit_rate": "448000", + "disposition": { + "default": 1, + "dub": 0, + "original": 0, + "comment": 0, + "lyrics": 0, + "karaoke": 0, + "forced": 0, + "hearing_impaired": 0, + "visual_impaired": 0, + "clean_effects": 0, + "attached_pic": 0, + "timed_thumbnails": 0 + }, + "tags": { + "language": "eng", + "ENCODER": "Lavc60.31.102 ac3", + "DURATION": "01:05:13.024000000" + } + } + """.trimIndent() + val aacStereoAudioStreamJson = """ + { + "index": 1, + "codec_name": "aac", + "codec_long_name": "AAC (Advanced Audio Coding)", + "profile": "LC", + "codec_type": "audio", + "codec_tag_string": "mp4a", + "codec_tag": "0x6134706d", + "sample_fmt": "fltp", + "sample_rate": "48000", + "channels": 2, + "channel_layout": "2", + "bits_per_sample": 0, + "r_frame_rate": "0/0", + "avg_frame_rate": "0/0", + "time_base": "1/48000", + "start_pts": 0, + "start_time": "0.000000", + "duration_ts": 376210896, + "duration": "7837.727000", + "bit_rate": "224000", + "nb_frames": "367396", + "disposition": { + "default": 1, + "dub": 0, + "original": 0, + "comment": 0, + "lyrics": 0, + "karaoke": 0, + "forced": 0, + "hearing_impaired": 0, + "visual_impaired": 0, + "clean_effects": 0, + "attached_pic": 0, + "timed_thumbnails": 0 + }, + "tags": { + "creation_time": "2022-02-08T20:37:35.000000Z", + "language": "eng", + "handler_name": "SoundHandler", + "vendor_id": "[0][0][0][0]" + } + } + """.trimIndent() + + val aacSurroundAudioStreamJson = """ + { + "index": 1, + "codec_name": "aac", + "codec_long_name": "AAC (Advanced Audio Coding)", + "profile": "LC", + "codec_type": "audio", + "codec_tag_string": "mp4a", + "codec_tag": "0x6134706d", + "sample_fmt": "fltp", + "sample_rate": "48000", + "channels": 6, + "channel_layout": "5.1", + "bits_per_sample": 0, + "r_frame_rate": "0/0", + "avg_frame_rate": "0/0", + "time_base": "1/48000", + "start_pts": 0, + "start_time": "0.000000", + "duration_ts": 376210896, + "duration": "7837.727000", + "bit_rate": "224000", + "nb_frames": "367396", + "disposition": { + "default": 1, + "dub": 0, + "original": 0, + "comment": 0, + "lyrics": 0, + "karaoke": 0, + "forced": 0, + "hearing_impaired": 0, + "visual_impaired": 0, + "clean_effects": 0, + "attached_pic": 0, + "timed_thumbnails": 0 + }, + "tags": { + "creation_time": "2022-02-08T20:37:35.000000Z", + "language": "eng", + "handler_name": "SoundHandler", + "vendor_id": "[0][0][0][0]" + } + } + """.trimIndent() +} \ No newline at end of file diff --git a/apps/processer/build.gradle.kts b/apps/processer/build.gradle.kts index 99e4de5f..96b7b2a4 100644 --- a/apps/processer/build.gradle.kts +++ b/apps/processer/build.gradle.kts @@ -50,7 +50,6 @@ dependencies { //implementation(project(mapOf("path" to ":shared"))) implementation(project(mapOf("path" to ":shared:eventi"))) - implementation(project(mapOf("path" to ":shared:contract"))) implementation(project(mapOf("path" to ":shared:common"))) diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ProcesserApplication.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ProcesserApplication.kt index cecd05c7..ba8ebc30 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ProcesserApplication.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ProcesserApplication.kt @@ -6,8 +6,11 @@ import no.iktdev.exfl.coroutines.CoroutinesIO import no.iktdev.exfl.observable.Observables import no.iktdev.mediaprocessing.shared.common.DatabaseEnvConfig import no.iktdev.eventi.database.MySqlDataSource +import no.iktdev.mediaprocessing.shared.common.database.cal.RunnerManager +import no.iktdev.mediaprocessing.shared.common.database.cal.TasksManager +import no.iktdev.mediaprocessing.shared.common.database.tables.runners +import no.iktdev.mediaprocessing.shared.common.database.tables.tasks import no.iktdev.mediaprocessing.shared.common.getAppVersion -import no.iktdev.mediaprocessing.shared.common.persistance.* import no.iktdev.mediaprocessing.shared.common.toEventsDatabase import org.jetbrains.exposed.sql.transactions.TransactionManager import org.springframework.boot.autoconfigure.SpringBootApplication diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/Reporter.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/Reporter.kt index 82c3f07f..ba2acfc2 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/Reporter.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/Reporter.kt @@ -2,7 +2,7 @@ package no.iktdev.mediaprocessing.processer import mu.KotlinLogging import no.iktdev.mediaprocessing.shared.common.SharedConfig -import no.iktdev.mediaprocessing.shared.contract.dto.ProcesserEventInfo +import no.iktdev.mediaprocessing.shared.common.contract.dto.ProcesserEventInfo import org.springframework.beans.factory.annotation.Autowired import org.springframework.messaging.simp.SimpMessagingTemplate import org.springframework.stereotype.Service diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/TaskCoordinator.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/TaskCoordinator.kt index 55eb3b19..58642971 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/TaskCoordinator.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/TaskCoordinator.kt @@ -2,10 +2,10 @@ package no.iktdev.mediaprocessing.processer import mu.KotlinLogging import no.iktdev.mediaprocessing.shared.common.* -import no.iktdev.mediaprocessing.shared.common.persistance.ActiveMode -import no.iktdev.mediaprocessing.shared.common.persistance.RunnerManager +import no.iktdev.mediaprocessing.shared.common.database.cal.ActiveMode +import no.iktdev.mediaprocessing.shared.common.database.cal.RunnerManager import no.iktdev.mediaprocessing.shared.common.task.TaskType -import no.iktdev.mediaprocessing.shared.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.Event import org.springframework.scheduling.annotation.EnableScheduling import org.springframework.stereotype.Service diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ffmpeg/progress/FfmpegDecodedProgress.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ffmpeg/progress/FfmpegDecodedProgress.kt index 01f58a72..aa05f06f 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ffmpeg/progress/FfmpegDecodedProgress.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/ffmpeg/progress/FfmpegDecodedProgress.kt @@ -1,6 +1,6 @@ package no.iktdev.mediaprocessing.processer.ffmpeg.progress -import no.iktdev.mediaprocessing.shared.contract.dto.ProcesserProgress +import no.iktdev.mediaprocessing.shared.common.contract.dto.ProcesserProgress data class FfmpegDecodedProgress( val progress: Int = -1, diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/EncodeService.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/EncodeService.kt index b50f9db9..7a682ac5 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/EncodeService.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/EncodeService.kt @@ -13,13 +13,13 @@ import no.iktdev.mediaprocessing.processer.ffmpeg.FfmpegRunner import no.iktdev.mediaprocessing.processer.ffmpeg.FfmpegTaskService import no.iktdev.mediaprocessing.processer.ffmpeg.progress.FfmpegDecodedProgress import no.iktdev.mediaprocessing.processer.taskManager -import no.iktdev.mediaprocessing.shared.common.persistance.Status +import no.iktdev.mediaprocessing.shared.common.database.cal.Status import no.iktdev.mediaprocessing.shared.common.task.Task -import no.iktdev.mediaprocessing.shared.contract.data.EncodeArgumentData -import no.iktdev.mediaprocessing.shared.contract.data.EncodeWorkPerformedEvent -import no.iktdev.mediaprocessing.shared.contract.data.EncodedData -import no.iktdev.mediaprocessing.shared.contract.dto.ProcesserEventInfo -import no.iktdev.mediaprocessing.shared.contract.dto.WorkStatus +import no.iktdev.mediaprocessing.shared.common.contract.data.EncodeArgumentData +import no.iktdev.mediaprocessing.shared.common.contract.data.EncodeWorkPerformedEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.EncodedData +import no.iktdev.mediaprocessing.shared.common.contract.dto.ProcesserEventInfo +import no.iktdev.mediaprocessing.shared.common.contract.dto.WorkStatus import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/ExtractService.kt b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/ExtractService.kt index db20234f..d6ef246d 100644 --- a/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/ExtractService.kt +++ b/apps/processer/src/main/kotlin/no/iktdev/mediaprocessing/processer/services/ExtractService.kt @@ -12,13 +12,13 @@ import no.iktdev.mediaprocessing.processer.ffmpeg.FfmpegTaskService import no.iktdev.mediaprocessing.processer.ffmpeg.progress.FfmpegDecodedProgress import no.iktdev.mediaprocessing.processer.taskManager import no.iktdev.mediaprocessing.shared.common.limitedWhile -import no.iktdev.mediaprocessing.shared.common.persistance.Status +import no.iktdev.mediaprocessing.shared.common.database.cal.Status import no.iktdev.mediaprocessing.shared.common.task.Task -import no.iktdev.mediaprocessing.shared.contract.data.ExtractArgumentData -import no.iktdev.mediaprocessing.shared.contract.data.ExtractWorkPerformedEvent -import no.iktdev.mediaprocessing.shared.contract.data.ExtractedData -import no.iktdev.mediaprocessing.shared.contract.dto.ProcesserEventInfo -import no.iktdev.mediaprocessing.shared.contract.dto.WorkStatus +import no.iktdev.mediaprocessing.shared.common.contract.data.ExtractArgumentData +import no.iktdev.mediaprocessing.shared.common.contract.data.ExtractWorkPerformedEvent +import no.iktdev.mediaprocessing.shared.common.contract.data.ExtractedData +import no.iktdev.mediaprocessing.shared.common.contract.dto.ProcesserEventInfo +import no.iktdev.mediaprocessing.shared.common.contract.dto.WorkStatus import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import java.io.File diff --git a/settings.gradle.kts b/settings.gradle.kts index d9915fb5..a0e1f018 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -11,7 +11,6 @@ findProject(":apps:processer")?.name = "processer" findProject(":shared")?.name = "shared" findProject(":shared:eventi")?.name = "eventi" -findProject(":shared:contract")?.name = "contract" findProject(":shared:common")?.name = "common" include("apps") @@ -22,5 +21,4 @@ include("apps:processer") include("shared") include("shared:eventi") -include("shared:contract") include("shared:common") diff --git a/shared/common/build.gradle.kts b/shared/common/build.gradle.kts index 933b0747..b8a6220b 100644 --- a/shared/common/build.gradle.kts +++ b/shared/common/build.gradle.kts @@ -43,7 +43,6 @@ dependencies { implementation(project(mapOf("path" to ":shared:eventi"))) - implementation(project(mapOf("path" to ":shared:contract"))) testImplementation(platform("org.junit:junit-bom:5.9.1")) testImplementation("org.junit.jupiter:junit-jupiter") diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/Preference.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/Preference.kt index e5d21734..6eb02106 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/Preference.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/Preference.kt @@ -3,7 +3,7 @@ package no.iktdev.mediaprocessing.shared.common import com.google.gson.Gson import com.google.gson.GsonBuilder import mu.KotlinLogging -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.PreferenceDto +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.PreferenceDto private val log = KotlinLogging.logger {} class Preference { @@ -17,7 +17,7 @@ class Preference { log.info { "[Audio]: Language = " + preference.encodePreference.audio.language } log.info { "[Audio]: Channels = " + preference.encodePreference.audio.channels } log.info { "[Audio]: Sample rate = " + preference.encodePreference.audio.sample_rate } - log.info { "[Audio]: Use EAC3 for surround = " + preference.encodePreference.audio.defaultToEAC3OnSurroundDetected } + log.info { "[Audio]: Use EAC3 for surround = " + preference.encodePreference.audio.convertToEac3OnUnsupportedSurround } log.info { "[Video]: Codec = " + preference.encodePreference.video.codec } log.info { "[Video]: Pixel format = " + preference.encodePreference.video.pixelFormat } diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/TaskCoordinatorBase.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/TaskCoordinatorBase.kt index cf90672a..94b154bf 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/TaskCoordinatorBase.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/TaskCoordinatorBase.kt @@ -1,11 +1,10 @@ package no.iktdev.mediaprocessing.shared.common import mu.KotlinLogging -import no.iktdev.mediaprocessing.shared.common.persistance.ActiveMode +import no.iktdev.mediaprocessing.shared.common.database.cal.ActiveMode import no.iktdev.mediaprocessing.shared.common.task.Task import no.iktdev.mediaprocessing.shared.common.task.TaskType -import no.iktdev.mediaprocessing.shared.contract.data.Event -import org.springframework.beans.factory.annotation.Autowired +import no.iktdev.mediaprocessing.shared.common.contract.data.Event import org.springframework.scheduling.annotation.EnableScheduling import org.springframework.scheduling.annotation.Scheduled import javax.annotation.PostConstruct diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventToClazzTable.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventToClazzTable.kt similarity index 90% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventToClazzTable.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventToClazzTable.kt index 2181267b..32a066c0 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventToClazzTable.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventToClazzTable.kt @@ -1,9 +1,9 @@ -package no.iktdev.mediaprocessing.shared.contract +package no.iktdev.mediaprocessing.shared.common.contract import com.google.gson.reflect.TypeToken import mu.KotlinLogging import no.iktdev.eventi.core.WGson -import no.iktdev.mediaprocessing.shared.contract.data.* +import no.iktdev.mediaprocessing.shared.common.contract.data.* private val log = KotlinLogging.logger {} object EventToClazzTable { @@ -27,7 +27,7 @@ object EventToClazzTable { Events.EventMediaReadStreamPerformed to MediaFileStreamsReadEvent::class.java, Events.EventMediaMetadataSearchPerformed to MediaMetadataReceivedEvent::class.java, Events.EventMediaReadOutNameAndType to MediaOutInformationConstructedEvent::class.java, - Events.EventMediaWorkProceedPermitted to PermitWorkCreationEvent::class.java, + Events.EventMediaWorkProceedPermitted to no.iktdev.mediaprocessing.shared.common.contract.data.PermitWorkCreationEvent::class.java, Events.EventMediaProcessCompleted to MediaProcessCompletedEvent::class.java ) diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/Events.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/Events.kt similarity index 97% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/Events.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/Events.kt index cc6ad058..8be01d85 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/Events.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/Events.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract +package no.iktdev.mediaprocessing.shared.common.contract enum class Events(val event: String) { EventMediaProcessStarted ("event:media-process:started"), diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsListenerContract.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsListenerContract.kt similarity index 76% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsListenerContract.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsListenerContract.kt index b6ac9d0b..a87a5768 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsListenerContract.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsListenerContract.kt @@ -1,8 +1,8 @@ -package no.iktdev.mediaprocessing.shared.contract +package no.iktdev.mediaprocessing.shared.common.contract import no.iktdev.eventi.implementations.EventCoordinator import no.iktdev.eventi.implementations.EventListenerImpl -import no.iktdev.mediaprocessing.shared.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.Event abstract class EventsListenerContract>: EventListenerImpl() { abstract override val produceEvent: Events diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsManagerContract.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsManagerContract.kt similarity index 62% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsManagerContract.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsManagerContract.kt index 1202589c..c66ce5a2 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsManagerContract.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsManagerContract.kt @@ -1,8 +1,8 @@ -package no.iktdev.mediaprocessing.shared.contract +package no.iktdev.mediaprocessing.shared.common.contract import no.iktdev.eventi.implementations.EventsManagerImpl import no.iktdev.eventi.database.DataSource -import no.iktdev.mediaprocessing.shared.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.data.Event abstract class EventsManagerContract(dataSource: DataSource) : EventsManagerImpl(dataSource) { } \ No newline at end of file diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsUtil.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsUtil.kt similarity index 59% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsUtil.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsUtil.kt index fd49e524..b6ef0267 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/EventsUtil.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/EventsUtil.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract +package no.iktdev.mediaprocessing.shared.common.contract import no.iktdev.eventi.data.EventImpl import no.iktdev.eventi.data.isSuccessful @@ -7,12 +7,12 @@ fun List.lastOrSuccess(): EventImpl? { return this.lastOrNull { it.isSuccessful() } ?: this.lastOrNull() } -fun List.lastOrSuccessOf(event: Events): EventImpl? { +fun List.lastOrSuccessOf(event: no.iktdev.mediaprocessing.shared.common.contract.Events): EventImpl? { val validEvents = this.filter { it.eventType == event } return validEvents.lastOrNull { it.isSuccessful() } ?: validEvents.lastOrNull() } -fun List.lastOrSuccessOf(event: Events, predicate: (EventImpl) -> Boolean): EventImpl? { +fun List.lastOrSuccessOf(event: no.iktdev.mediaprocessing.shared.common.contract.Events, predicate: (EventImpl) -> Boolean): EventImpl? { val validEvents = this.filter { it.eventType == event && predicate(it) } return validEvents.lastOrNull() } \ No newline at end of file diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ProcessType.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ProcessType.kt new file mode 100644 index 00000000..1d5e38fb --- /dev/null +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ProcessType.kt @@ -0,0 +1,6 @@ +package no.iktdev.mediaprocessing.shared.common.contract + +enum class ProcessType { + FLOW, + MANUAL +} \ No newline at end of file diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/BaseInfoEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/BaseInfoEvent.kt similarity index 76% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/BaseInfoEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/BaseInfoEvent.kt index d4be71a8..210bbbcb 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/BaseInfoEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/BaseInfoEvent.kt @@ -1,8 +1,8 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventImpl import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class BaseInfoEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ConvertWorkCreatedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ConvertWorkCreatedEvent.kt similarity index 63% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ConvertWorkCreatedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ConvertWorkCreatedEvent.kt index a4d73f59..c0153abc 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ConvertWorkCreatedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ConvertWorkCreatedEvent.kt @@ -1,9 +1,9 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.dto.SubtitleFormats -import no.iktdev.mediaprocessing.shared.contract.dto.tasks.TaskData +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.dto.SubtitleFormats +import no.iktdev.mediaprocessing.shared.common.contract.dto.tasks.TaskData data class ConvertWorkCreatedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ConvertWorkPerformed.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ConvertWorkPerformed.kt similarity index 73% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ConvertWorkPerformed.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ConvertWorkPerformed.kt index 069cc884..35780415 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ConvertWorkPerformed.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ConvertWorkPerformed.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events class ConvertWorkPerformed( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeArgumentCreatedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeArgumentCreatedEvent.kt similarity index 67% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeArgumentCreatedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeArgumentCreatedEvent.kt index 2c8dfb55..72fed4e7 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeArgumentCreatedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeArgumentCreatedEvent.kt @@ -1,8 +1,8 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.dto.tasks.TaskData +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.dto.tasks.TaskData data class EncodeArgumentCreatedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeWorkCreatedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeWorkCreatedEvent.kt similarity index 66% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeWorkCreatedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeWorkCreatedEvent.kt index 18658bf6..c339a1a4 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeWorkCreatedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeWorkCreatedEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class EncodeWorkCreatedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeWorkPerformedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeWorkPerformedEvent.kt similarity index 73% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeWorkPerformedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeWorkPerformedEvent.kt index 1ac406a7..b639058a 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/EncodeWorkPerformedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/EncodeWorkPerformedEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class EncodeWorkPerformedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/Event.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/Event.kt similarity index 74% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/Event.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/Event.kt index e7af9339..d5526365 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/Event.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/Event.kt @@ -1,8 +1,8 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventImpl import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events abstract class Event: EventImpl() { abstract override val eventType: Events diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractArgumentCreatedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractArgumentCreatedEvent.kt similarity index 67% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractArgumentCreatedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractArgumentCreatedEvent.kt index f5c741c2..cc805907 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractArgumentCreatedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractArgumentCreatedEvent.kt @@ -1,8 +1,8 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.dto.tasks.TaskData +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.dto.tasks.TaskData data class ExtractArgumentCreatedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractWorkCreatedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractWorkCreatedEvent.kt similarity index 67% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractWorkCreatedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractWorkCreatedEvent.kt index f80b8dda..d72d75f5 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractWorkCreatedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractWorkCreatedEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class ExtractWorkCreatedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractWorkPerformedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractWorkPerformedEvent.kt similarity index 73% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractWorkPerformedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractWorkPerformedEvent.kt index 5f3368ce..51cf22e9 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/ExtractWorkPerformedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/ExtractWorkPerformedEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class ExtractWorkPerformedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaCoverDownloadedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaCoverDownloadedEvent.kt similarity index 72% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaCoverDownloadedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaCoverDownloadedEvent.kt index 12e0b46e..62a71871 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaCoverDownloadedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaCoverDownloadedEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class MediaCoverDownloadedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaCoverInfoReceivedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaCoverInfoReceivedEvent.kt similarity index 74% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaCoverInfoReceivedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaCoverInfoReceivedEvent.kt index b4c1af73..4d215503 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaCoverInfoReceivedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaCoverInfoReceivedEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class MediaCoverInfoReceivedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaFileStreamsParsedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaFileStreamsParsedEvent.kt similarity index 55% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaFileStreamsParsedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaFileStreamsParsedEvent.kt index e864ff99..ea57327f 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaFileStreamsParsedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaFileStreamsParsedEvent.kt @@ -1,8 +1,8 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.ffmpeg.ParsedMediaStreams +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.ffmpeg.ParsedMediaStreams class MediaFileStreamsParsedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaFileStreamsReadEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaFileStreamsReadEvent.kt similarity index 71% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaFileStreamsReadEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaFileStreamsReadEvent.kt index 39f2bb74..165b0154 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaFileStreamsReadEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaFileStreamsReadEvent.kt @@ -1,9 +1,9 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import com.google.gson.JsonObject import no.iktdev.eventi.data.EventImpl import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events class MediaFileStreamsReadEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaMetadataReceivedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaMetadataReceivedEvent.kt similarity index 82% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaMetadataReceivedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaMetadataReceivedEvent.kt index 62ce8628..8915a13e 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaMetadataReceivedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaMetadataReceivedEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class MediaMetadataReceivedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaOutInformationConstructedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaOutInformationConstructedEvent.kt similarity index 92% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaOutInformationConstructedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaOutInformationConstructedEvent.kt index b9f78835..7bbdeb39 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaOutInformationConstructedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaOutInformationConstructedEvent.kt @@ -1,9 +1,9 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import com.google.gson.Gson import com.google.gson.JsonObject import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class MediaOutInformationConstructedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaProcessCompletedEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaProcessCompletedEvent.kt similarity index 56% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaProcessCompletedEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaProcessCompletedEvent.kt index 923c86d6..bc2951a7 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaProcessCompletedEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaProcessCompletedEvent.kt @@ -1,9 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.ProcessType -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.Events data class MediaProcessCompletedEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaProcessStartEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaProcessStartEvent.kt similarity index 65% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaProcessStartEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaProcessStartEvent.kt index 863b4e77..8ddc4c7f 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/MediaProcessStartEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/MediaProcessStartEvent.kt @@ -1,9 +1,9 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events -import no.iktdev.mediaprocessing.shared.contract.ProcessType -import no.iktdev.mediaprocessing.shared.contract.dto.StartOperationEvents +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.ProcessType +import no.iktdev.mediaprocessing.shared.common.contract.dto.StartOperationEvents data class MediaProcessStartEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/PermitWorkCreationEvent.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/PermitWorkCreationEvent.kt similarity index 66% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/PermitWorkCreationEvent.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/PermitWorkCreationEvent.kt index f51bb1bd..51340bdf 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/data/PermitWorkCreationEvent.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/data/PermitWorkCreationEvent.kt @@ -1,7 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.data +package no.iktdev.mediaprocessing.shared.common.contract.data import no.iktdev.eventi.data.EventMetadata -import no.iktdev.mediaprocessing.shared.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.Events data class PermitWorkCreationEvent( override val metadata: EventMetadata, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/Enums.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/Enums.kt similarity index 86% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/Enums.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/Enums.kt index c55645e4..b9362b9d 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/Enums.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/Enums.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.dto +package no.iktdev.mediaprocessing.shared.common.contract.dto enum class WorkStatus { Pending, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/EventRequest.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/EventRequest.kt similarity index 63% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/EventRequest.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/EventRequest.kt index bc2d1002..d80aeb32 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/EventRequest.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/EventRequest.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.dto +package no.iktdev.mediaprocessing.shared.common.contract.dto data class EventRequest( val file: String, // FullPath diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/ProcesserEventInfo.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/ProcesserEventInfo.kt similarity index 87% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/ProcesserEventInfo.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/ProcesserEventInfo.kt index 2c5d92a3..7253caf6 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/ProcesserEventInfo.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/ProcesserEventInfo.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.dto +package no.iktdev.mediaprocessing.shared.common.contract.dto data class ProcesserEventInfo( val referenceId: String, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/RequestWorkProceed.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/RequestWorkProceed.kt similarity index 63% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/RequestWorkProceed.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/RequestWorkProceed.kt index 554ac47f..af847b60 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/RequestWorkProceed.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/RequestWorkProceed.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.dto +package no.iktdev.mediaprocessing.shared.common.contract.dto data class RequestWorkProceed( val referenceId: String, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/Requester.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/Requester.kt similarity index 50% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/Requester.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/Requester.kt index 9ad41197..179a8096 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/Requester.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/Requester.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.dto +package no.iktdev.mediaprocessing.shared.common.contract.dto abstract class Requester { abstract val source: String diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/tasks/TaskData.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/tasks/TaskData.kt similarity index 61% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/tasks/TaskData.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/tasks/TaskData.kt index 98f520f3..7f6566f2 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/dto/tasks/TaskData.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/dto/tasks/TaskData.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.dto.tasks +package no.iktdev.mediaprocessing.shared.common.contract.dto.tasks import java.io.Serializable diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/AudioArgumentsDto.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/AudioArgumentsDto.kt similarity index 72% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/AudioArgumentsDto.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/AudioArgumentsDto.kt index 8b739d48..662280e6 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/AudioArgumentsDto.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/AudioArgumentsDto.kt @@ -1,8 +1,7 @@ -package no.iktdev.mediaprocessing.shared.contract.ffmpeg +package no.iktdev.mediaprocessing.shared.common.contract.ffmpeg data class AudioArgumentsDto( val index: Int, val codecParameters: List = listOf("-acodec", "copy"), val optionalParameters: List = listOf() - ) \ No newline at end of file diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/MediaStreams.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/MediaStreams.kt similarity index 98% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/MediaStreams.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/MediaStreams.kt index 59fe8949..71970dcc 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/MediaStreams.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/MediaStreams.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.ffmpeg +package no.iktdev.mediaprocessing.shared.common.contract.ffmpeg data class ParsedMediaStreams( val videoStream: List = listOf(), diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/PreferenceDto.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/PreferenceDto.kt similarity index 84% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/PreferenceDto.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/PreferenceDto.kt index 86069c4f..66e63e93 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/PreferenceDto.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/PreferenceDto.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.ffmpeg +package no.iktdev.mediaprocessing.shared.common.contract.ffmpeg data class PreferenceDto( val encodePreference: EncodingPreference = EncodingPreference(video = VideoPreference(), audio = AudioPreference()), @@ -38,6 +38,7 @@ data class AudioPreference( val channels: Int? = null, val language: String = "eng", //ISO3 format val preserveChannels: Boolean = true, - val defaultToEAC3OnSurroundDetected: Boolean = true, + val passthroughOnGenerallySupportedSurroundSound: Boolean = true, + val convertToEac3OnUnsupportedSurround: Boolean = true, val forceStereo: Boolean = false ) diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/SubtitleArgumentsDto.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/SubtitleArgumentsDto.kt similarity index 79% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/SubtitleArgumentsDto.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/SubtitleArgumentsDto.kt index 1df684bc..c9e0491e 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/SubtitleArgumentsDto.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/SubtitleArgumentsDto.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.ffmpeg +package no.iktdev.mediaprocessing.shared.common.contract.ffmpeg data class SubtitleArgumentsDto( val index: Int, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/VideoAndAudioDto.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/VideoAndAudioDto.kt similarity index 69% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/VideoAndAudioDto.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/VideoAndAudioDto.kt index dc0d832d..3c8f4c12 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/VideoAndAudioDto.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/VideoAndAudioDto.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.ffmpeg +package no.iktdev.mediaprocessing.shared.common.contract.ffmpeg data class VideoAndAudioDto( diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/VideoArgumentsDto.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/VideoArgumentsDto.kt similarity index 72% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/VideoArgumentsDto.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/VideoArgumentsDto.kt index f98ec404..1e5b9354 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ffmpeg/VideoArgumentsDto.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/ffmpeg/VideoArgumentsDto.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.ffmpeg +package no.iktdev.mediaprocessing.shared.common.contract.ffmpeg data class VideoArgumentsDto( val index: Int, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/MetadataDto.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/MetadataDto.kt similarity index 83% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/MetadataDto.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/MetadataDto.kt index 65c99fb8..67dddc19 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/MetadataDto.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/MetadataDto.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.reader +package no.iktdev.mediaprocessing.shared.common.contract.reader data class MetadataDto( val title: String, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/SubtitlesDto.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/SubtitlesDto.kt similarity index 72% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/SubtitlesDto.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/SubtitlesDto.kt index aed0586e..d9659050 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/SubtitlesDto.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/SubtitlesDto.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.reader +package no.iktdev.mediaprocessing.shared.common.contract.reader data class SubtitlesDto( val collection: String, diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/VideoDetails.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/VideoDetails.kt similarity index 79% rename from shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/VideoDetails.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/VideoDetails.kt index 82e3b4f2..7d41b6b0 100644 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/VideoDetails.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/contract/reader/VideoDetails.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.contract.reader +package no.iktdev.mediaprocessing.shared.common.contract.reader data class VideoDetails( val serieInfo: SerieInfo? = null, diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/EventsManager.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/EventsManager.kt new file mode 100644 index 00000000..b5bb2e1f --- /dev/null +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/EventsManager.kt @@ -0,0 +1,181 @@ +package no.iktdev.mediaprocessing.shared.common.database.cal + +import mu.KotlinLogging +import no.iktdev.eventi.core.PersistentMessageHelper +import no.iktdev.eventi.data.eventId +import no.iktdev.eventi.data.referenceId +import no.iktdev.eventi.data.toJson +import no.iktdev.eventi.database.DataSource +import no.iktdev.eventi.database.isCausedByDuplicateError +import no.iktdev.eventi.database.isExposedSqlException +import no.iktdev.mediaprocessing.shared.common.database.tables.allEvents +import no.iktdev.mediaprocessing.shared.common.database.tables.events +import no.iktdev.mediaprocessing.shared.common.contract.Events +import no.iktdev.mediaprocessing.shared.common.contract.EventsManagerContract +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.contract.fromJsonWithDeserializer +import org.jetbrains.exposed.exceptions.ExposedSQLException +import org.jetbrains.exposed.sql.* +import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq + +open class EventsManager(dataSource: DataSource) : EventsManagerContract(dataSource) { + val log = KotlinLogging.logger {} + + + override fun storeEvent(event: Event): Boolean { + + no.iktdev.eventi.database.withTransaction(dataSource.database) { + allEvents.insert { + it[referenceId] = event.referenceId() + it[eventId] = event.eventId() + it[events.event] = event.eventType.event + it[data] = event.toJson() + } + } + + val existing = getEventsWith(event.referenceId()) + + val derivedId = event.metadata.derivedFromEventId + if (derivedId != null) { + val isNewEventOrphan = existing.none { it.eventId() == derivedId } + if (isNewEventOrphan) { + log.warn { "Message not saved! ${event.referenceId()} with eventId(${event.eventId()}) for event ${event.eventType} has derivedEventId($derivedId) which does not exist!" } + return false + } + } + + + val exception = no.iktdev.eventi.database.executeOrException(dataSource.database) { + events.insert { + it[referenceId] = event.referenceId() + it[eventId] = event.eventId() + it[events.event] = event.eventType.event + it[data] = event.toJson() + } + } + val success = if (exception != null) { + if (exception.isExposedSqlException()) { + if ((exception as ExposedSQLException).isCausedByDuplicateError()) { + log.debug { "Error is of SQLIntegrityConstraintViolationException" } + log.error { exception.message } + exception.printStackTrace() + } else { + log.debug { "Error code is: ${exception.errorCode}" } + log.error { exception.message } + exception.printStackTrace() + } + } else { + log.error { exception.message } + exception.printStackTrace() + } + false + } else { + true + } + if (success) { + //deleteSupersededEvents(referenceId = event.referenceId(), eventId = event.eventId(), event = event.eventType, derivedFromId = event.derivedFromEventId()) + } + return success + } + + + private val exemptedFromSingleEvent = listOf( + Events.EventWorkConvertCreated, + Events.EventWorkExtractCreated, + Events.EventWorkConvertPerformed, + Events.EventWorkExtractPerformed + ) + + private fun isExempted(event: Events): Boolean { + return event in exemptedFromSingleEvent + } + + + + override fun readAvailableEvents(): List> { + return no.iktdev.eventi.database.withTransaction(dataSource.database) { + events.selectAll() + .groupBy { it[events.referenceId] } + .mapNotNull { it.value.mapNotNull { v -> v.toEvent() } }.filter { it.none { e -> e.eventType == Events.EventMediaProcessCompleted } } + } ?: emptyList() + } + + override fun readAvailableEventsFor(referenceId: String): List { + val events = no.iktdev.eventi.database.withTransaction(dataSource.database) { + events.select { events.referenceId eq referenceId } + .mapNotNull { it.toEvent() } + } ?: emptyList() + return if (events.any { it.eventType == Events.EventMediaProcessCompleted }) emptyList() else events + } + + override fun getAllEvents(): List> { + val events = no.iktdev.eventi.database.withTransaction(dataSource.database) { + events.selectAll() + .groupBy { it[events.referenceId] } + .mapNotNull { it.value.mapNotNull { v -> v.toEvent() } } + } ?: emptyList() + return events.filter { it.none { it.eventType == Events.EventMediaProcessCompleted } } + } + + + override fun getEventsWith(referenceId: String): List { + return no.iktdev.eventi.database.withTransaction(dataSource.database) { + events.select { + (events.referenceId eq referenceId) + } + .orderBy(events.created, SortOrder.ASC) + .mapNotNull { it.toEvent() } + } ?: emptyList() + } + + + + /** + * @param referenceId Reference + * @param eventId Current eventId for the message, required to prevent deletion of itself + * @param event Current event for the message + */ + private fun deleteSupersededEvents(referenceId: String, eventId: String, event: Events, derivedFromId: String?) { + val forRemoval = mutableListOf() + + val present = getEventsWith(referenceId).filter { it.metadata.derivedFromEventId != null } + val helper = PersistentMessageHelper(present) + + val replaced = if (!isExempted(event)) present.find { it.eventId() != eventId && it.eventType == event } else null + val orphaned = replaced?.let { helper.getEventsRelatedTo(it.eventId()) }?.toMutableSet() ?: mutableSetOf() + //orphaned.addAll(helper.findOrphanedEvents()) + + forRemoval.addAll(orphaned) + + deleteSupersededEvents(forRemoval) + + } + + + /** + * Deletes the events + */ + private fun deleteSupersededEvents(superseded: List) { + no.iktdev.eventi.database.withTransaction(dataSource) { + superseded.forEach { duplicate -> + events.deleteWhere { + (referenceId eq duplicate.referenceId()) and + (eventId eq duplicate.eventId()) and + (event eq duplicate.eventType.event) + } + } + } + } + + + private fun ResultRow.toEvent(): Event? { + val kev = try { + Events.toEvent(this[events.event]) + } catch (e: IllegalArgumentException) { + e.printStackTrace() + return null + }?: return null + return this[events.data].fromJsonWithDeserializer(kev) + } + +} diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/RunnerManager.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/RunnerManager.kt similarity index 91% rename from shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/RunnerManager.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/RunnerManager.kt index 35ace7ae..bb545401 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/RunnerManager.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/RunnerManager.kt @@ -1,9 +1,10 @@ -package no.iktdev.mediaprocessing.shared.common.persistance +package no.iktdev.mediaprocessing.shared.common.database.cal import mu.KotlinLogging import no.iktdev.eventi.database.DataSource import no.iktdev.eventi.database.executeOrException import no.iktdev.eventi.database.withDirtyRead +import no.iktdev.mediaprocessing.shared.common.database.tables.runners import no.iktdev.mediaprocessing.shared.common.getAppVersion import org.jetbrains.exposed.sql.and import org.jetbrains.exposed.sql.insert diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/TasksManager.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/TasksManager.kt similarity index 96% rename from shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/TasksManager.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/TasksManager.kt index d9ec70fe..b75e7c15 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/TasksManager.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/cal/TasksManager.kt @@ -1,14 +1,16 @@ -package no.iktdev.mediaprocessing.shared.common.persistance +package no.iktdev.mediaprocessing.shared.common.database.cal import mu.KotlinLogging import no.iktdev.eventi.data.eventId import no.iktdev.eventi.data.referenceId import no.iktdev.eventi.data.toJson import no.iktdev.eventi.database.* +import no.iktdev.mediaprocessing.shared.common.contract.data.Event +import no.iktdev.mediaprocessing.shared.common.database.tables.events +import no.iktdev.mediaprocessing.shared.common.database.tables.tasks import no.iktdev.mediaprocessing.shared.common.task.Task import no.iktdev.mediaprocessing.shared.common.task.TaskType import no.iktdev.mediaprocessing.shared.common.task.TaskDoz -import no.iktdev.mediaprocessing.shared.contract.data.Event import org.jetbrains.exposed.exceptions.ExposedSQLException import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.javatime.CurrentDateTime diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/allEvents.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/allEvents.kt similarity index 90% rename from shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/allEvents.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/allEvents.kt index 9cafe9f7..ce852637 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/allEvents.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/allEvents.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.common.persistance +package no.iktdev.mediaprocessing.shared.common.database.tables import org.jetbrains.exposed.dao.id.IntIdTable import org.jetbrains.exposed.sql.Column diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/events.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/events.kt similarity index 91% rename from shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/events.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/events.kt index ca7ed292..4c31414d 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/events.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/events.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.common.persistance +package no.iktdev.mediaprocessing.shared.common.database.tables import org.jetbrains.exposed.dao.id.IntIdTable import org.jetbrains.exposed.sql.Column diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/runners.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/runners.kt similarity index 78% rename from shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/runners.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/runners.kt index 72336074..d0c00a72 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/runners.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/runners.kt @@ -1,6 +1,5 @@ -package no.iktdev.mediaprocessing.shared.common.persistance +package no.iktdev.mediaprocessing.shared.common.database.tables -import no.iktdev.mediaprocessing.shared.common.persistance.events.defaultExpression import org.jetbrains.exposed.dao.id.IntIdTable import org.jetbrains.exposed.sql.Column import org.jetbrains.exposed.sql.javatime.CurrentDateTime diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/tasks.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/tasks.kt similarity index 94% rename from shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/tasks.kt rename to shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/tasks.kt index bb8ef519..55eddd54 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/persistance/tasks.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/database/tables/tasks.kt @@ -1,4 +1,4 @@ -package no.iktdev.mediaprocessing.shared.common.persistance +package no.iktdev.mediaprocessing.shared.common.database.tables import org.jetbrains.exposed.dao.id.IntIdTable import org.jetbrains.exposed.sql.Column diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminate.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminate.kt index e41e68be..c92011b0 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminate.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminate.kt @@ -1,8 +1,8 @@ package no.iktdev.mediaprocessing.shared.common.parsing -import no.iktdev.mediaprocessing.shared.contract.data.EpisodeInfo -import no.iktdev.mediaprocessing.shared.contract.data.MediaInfo -import no.iktdev.mediaprocessing.shared.contract.data.MovieInfo +import no.iktdev.mediaprocessing.shared.common.contract.data.EpisodeInfo +import no.iktdev.mediaprocessing.shared.common.contract.data.MediaInfo +import no.iktdev.mediaprocessing.shared.common.contract.data.MovieInfo class FileNameDeterminate(val title: String, val sanitizedName: String, val ctype: ContentType = ContentType.UNDEFINED) { diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/runner/IRunner.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/runner/IRunner.kt deleted file mode 100644 index 0dc998fa..00000000 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/runner/IRunner.kt +++ /dev/null @@ -1,13 +0,0 @@ -package no.iktdev.mediaprocessing.shared.common.runner - -interface IRunner { - - fun onStarted() {} - - fun onOutputChanged(line: String) {} - - fun onEnded() {} - - fun onError(code: Int) - -} \ No newline at end of file diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/runner/Runner.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/runner/Runner.kt deleted file mode 100644 index 0441e6b0..00000000 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/runner/Runner.kt +++ /dev/null @@ -1,37 +0,0 @@ -package no.iktdev.mediaprocessing.shared.common.runner - -import kotlinx.coroutines.* -import mu.KotlinLogging - -open class Runner(open val executable: String, val daemonInterface: IRunner) { - private val logger = KotlinLogging.logger {} - - val scope = CoroutineScope(Dispatchers.IO + Job()) - var job: Job? = null - var executor: com.github.pgreze.process.ProcessResult? = null - open suspend fun run(parameters: List): Int { - daemonInterface.onStarted() - logger.info { "\nDaemon arguments: $executable \nParamters:\n${parameters.joinToString(" ")}" } - job = scope.launch { - executor = com.github.pgreze.process.process(executable, *parameters.toTypedArray(), - stdout = com.github.pgreze.process.Redirect.CAPTURE, - stderr = com.github.pgreze.process.Redirect.CAPTURE, - consumer = { - daemonInterface.onOutputChanged(it) - }) - } - job?.join() - - val resultCode = executor?.resultCode ?: -1 - if (resultCode == 0) { - daemonInterface.onEnded() - } else daemonInterface.onError(resultCode) - logger.info { "$executable result: $resultCode" } - return resultCode - } - - suspend fun cancel() { - job?.cancelAndJoin() - scope.cancel("Cancel operation triggered!") - } -} \ No newline at end of file diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/Task.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/Task.kt index 53611ce7..79d46195 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/Task.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/Task.kt @@ -1,6 +1,6 @@ package no.iktdev.mediaprocessing.shared.common.task -import no.iktdev.mediaprocessing.shared.contract.dto.tasks.TaskData +import no.iktdev.mediaprocessing.shared.common.contract.dto.tasks.TaskData import java.time.LocalDateTime data class Task( diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/TaskDoz.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/TaskDoz.kt index 25b845a5..4cb86bf0 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/TaskDoz.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/task/TaskDoz.kt @@ -2,12 +2,11 @@ package no.iktdev.mediaprocessing.shared.common.task import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import com.mysql.cj.xdevapi.RowResult -import no.iktdev.mediaprocessing.shared.common.persistance.tasks -import no.iktdev.mediaprocessing.shared.contract.data.ConvertData -import no.iktdev.mediaprocessing.shared.contract.data.EncodeArgumentData -import no.iktdev.mediaprocessing.shared.contract.data.ExtractArgumentData -import no.iktdev.mediaprocessing.shared.contract.dto.tasks.TaskData +import no.iktdev.mediaprocessing.shared.common.database.tables.tasks +import no.iktdev.mediaprocessing.shared.common.contract.data.ConvertData +import no.iktdev.mediaprocessing.shared.common.contract.data.EncodeArgumentData +import no.iktdev.mediaprocessing.shared.common.contract.data.ExtractArgumentData +import no.iktdev.mediaprocessing.shared.common.contract.dto.tasks.TaskData import org.jetbrains.exposed.sql.ResultRow class TaskDoz { diff --git a/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/PersistentMessageFromJsonDump.kt b/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/PersistentMessageFromJsonDump.kt index 0652e79b..80049c97 100644 --- a/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/PersistentMessageFromJsonDump.kt +++ b/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/PersistentMessageFromJsonDump.kt @@ -1,10 +1,5 @@ package no.iktdev.mediaprocessing.shared.common -import kotlinx.serialization.json.* -import no.iktdev.mediaprocessing.shared.common.persistance.events -import org.json.JSONArray -import java.time.LocalDateTime -import java.time.format.DateTimeFormatter /* class PersistentMessageFromJsonDump(events: String) { diff --git a/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminateTest.kt b/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminateTest.kt index d6bc883a..d191d912 100644 --- a/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminateTest.kt +++ b/shared/common/src/test/kotlin/no/iktdev/mediaprocessing/shared/common/parsing/FileNameDeterminateTest.kt @@ -1,6 +1,6 @@ package no.iktdev.mediaprocessing.shared.common.parsing -import no.iktdev.mediaprocessing.shared.contract.data.EpisodeInfo +import no.iktdev.mediaprocessing.shared.common.contract.data.EpisodeInfo import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test diff --git a/shared/contract/build.gradle.kts b/shared/contract/build.gradle.kts index fcab52f5..cf0a52b5 100644 --- a/shared/contract/build.gradle.kts +++ b/shared/contract/build.gradle.kts @@ -1,6 +1,8 @@ plugins { id("java") kotlin("jvm") + id("org.jetbrains.kotlin.plugin.serialization") version "1.5.0" // Legg til Kotlin Serialization-plugin + } group = "no.iktdev.mediaprocessing.shared" @@ -8,8 +10,16 @@ version = "1.0-SNAPSHOT" repositories { mavenCentral() + maven("https://jitpack.io") + maven { + url = uri("https://reposilite.iktdev.no/releases") + } + maven { + url = uri("https://reposilite.iktdev.no/snapshots") + } } +val exposedVersion = "0.44.0" dependencies { implementation("com.google.code.gson:gson:2.8.9") @@ -18,9 +28,38 @@ dependencies { implementation("org.springframework.boot:spring-boot-starter:2.7.0") implementation(project(mapOf("path" to ":shared:eventi"))) + implementation("com.github.pgreze:kotlin-process:1.3.1") + implementation("io.github.microutils:kotlin-logging-jvm:2.0.11") + implementation("no.iktdev:exfl:0.0.16-SNAPSHOT") + + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1") + implementation("com.google.code.gson:gson:2.8.9") + implementation("org.json:json:20230227") + implementation("org.springframework.boot:spring-boot-starter-websocket:2.6.3") + + implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0") + + implementation("org.jetbrains.exposed:exposed-core:$exposedVersion") + implementation("org.jetbrains.exposed:exposed-dao:$exposedVersion") + implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion") + implementation("org.jetbrains.exposed:exposed-java-time:$exposedVersion") + implementation ("mysql:mysql-connector-java:8.0.29") + implementation("org.apache.commons:commons-lang3:3.12.0") + + + implementation(project(mapOf("path" to ":shared:eventi"))) testImplementation(platform("org.junit:junit-bom:5.9.1")) testImplementation("org.junit.jupiter:junit-jupiter") + + testImplementation("io.mockk:mockk:1.12.0") + testImplementation("com.h2database:h2:1.4.200") + testImplementation("org.assertj:assertj-core:3.4.1") + + testImplementation("org.junit.jupiter:junit-jupiter-api:5.7.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.7.2") + testImplementation("io.kotlintest:kotlintest-assertions:3.3.2") + testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0") } tasks.test { diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ProcessType.kt b/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ProcessType.kt deleted file mode 100644 index d30b8407..00000000 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/ProcessType.kt +++ /dev/null @@ -1,6 +0,0 @@ -package no.iktdev.mediaprocessing.shared.contract - -enum class ProcessType { - FLOW, - MANUAL -} \ No newline at end of file diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/MediaProcessedDto.kt b/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/MediaProcessedDto.kt deleted file mode 100644 index d9f06d58..00000000 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/MediaProcessedDto.kt +++ /dev/null @@ -1,13 +0,0 @@ -package no.iktdev.mediaprocessing.shared.contract.reader - -import no.iktdev.mediaprocessing.shared.contract.ProcessType - -data class MediaProcessedDto( - val referenceId: String, - val process: ProcessType?, - val collection: String?, - val inputFile: String?, - val metadata: MetadataDto?, - val videoDetails: VideoDetails? = null, - val outputFiles: OutputFilesDto? -) \ No newline at end of file diff --git a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/OutputFilesDto.kt b/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/OutputFilesDto.kt deleted file mode 100644 index 14375732..00000000 --- a/shared/contract/src/main/kotlin/no/iktdev/mediaprocessing/shared/contract/reader/OutputFilesDto.kt +++ /dev/null @@ -1,7 +0,0 @@ -package no.iktdev.mediaprocessing.shared.contract.reader - - -data class OutputFilesDto( - val video: String?, // FullName (Path + name) - val subtitles: List = emptyList() // (Path + Name) -) diff --git a/shared/eventi/src/test/kotlin/no/iktdev/eventi/mock/MockEventCoordinator.kt b/shared/eventi/src/test/kotlin/no/iktdev/eventi/mock/MockEventCoordinator.kt index 5305310f..a15bb5d0 100644 --- a/shared/eventi/src/test/kotlin/no/iktdev/eventi/mock/MockEventCoordinator.kt +++ b/shared/eventi/src/test/kotlin/no/iktdev/eventi/mock/MockEventCoordinator.kt @@ -1,6 +1,7 @@ package no.iktdev.eventi.mock import no.iktdev.eventi.data.EventImpl +import no.iktdev.eventi.implementations.ActiveMode import no.iktdev.eventi.implementations.EventCoordinator import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.ApplicationContext @@ -15,4 +16,7 @@ class MockEventCoordinator( override var eventManager: MockEventManager ) : EventCoordinator() { + override fun getActiveTaskMode(): ActiveMode { + return ActiveMode.Active + } } \ No newline at end of file