From 3e75f400eca2fdb01e754ec075b4672673a92c3a Mon Sep 17 00:00:00 2001 From: srgsf Date: Sat, 28 Mar 2026 21:10:40 +0100 Subject: [PATCH 1/2] Support for external audiotracks in Vimu. --- .../ui/activities/play/players/Vimu.kt | 7 +++ .../java/ru/yourok/torrserve/utils/Mime.kt | 1 + .../yourok/torrserve/utils/TorrentHelper.kt | 46 ++++++++++++------- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/ru/yourok/torrserve/ui/activities/play/players/Vimu.kt b/app/src/main/java/ru/yourok/torrserve/ui/activities/play/players/Vimu.kt index 4c812cb30..b24a1da16 100644 --- a/app/src/main/java/ru/yourok/torrserve/ui/activities/play/players/Vimu.kt +++ b/app/src/main/java/ru/yourok/torrserve/ui/activities/play/players/Vimu.kt @@ -35,6 +35,13 @@ object Vimu { intent.putStringArrayListExtra("asusfilelist", files) intent.putStringArrayListExtra("asusnamelist", names) intent.putExtra("startindex", idx) + } else { + val extAudio = TorrentHelper.getAudioFiles(torrent).map { audio -> + TorrentHelper.getFileLink(torrent, audio) + } + if (extAudio.isNotEmpty()) { + intent.putStringArrayListExtra("extsound", ArrayList(extAudio)) + } } return intent } diff --git a/app/src/main/java/ru/yourok/torrserve/utils/Mime.kt b/app/src/main/java/ru/yourok/torrserve/utils/Mime.kt index 60f9400fe..d4ab4fc45 100644 --- a/app/src/main/java/ru/yourok/torrserve/utils/Mime.kt +++ b/app/src/main/java/ru/yourok/torrserve/utils/Mime.kt @@ -58,6 +58,7 @@ object Mime { val extAudio = listOf( "aac", + "ac3", "aiff", "ape", "au", diff --git a/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt b/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt index c3f82bedb..682a86c1e 100644 --- a/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt +++ b/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt @@ -26,25 +26,37 @@ object TorrentHelper { return emptyList() val files = torr.file_stats - val retList = mutableListOf() - - files?.forEach { - val path = it.path - if (Mime.getMimeType(path) != "*/*") { - val size = it.length - if (File(path).extension.lowercase() == "m2ts" || - File(path).extension.lowercase() == "mts" || - File(path).extension.lowercase() == "ts" - ) { - if (size > 524288000L) // 500MB 1073741824 = 1GB - retList.add(it) - } else - retList.add(it) - } else if (path.lowercase(Locale.getDefault()).contains("bdmv/index.bdmv")) { - retList.add(it) + + val playable = files?.mapNotNull { file -> + val mime = Mime.getMimeType(file.path) + val isBdmv by lazy { + file.path.lowercase(Locale.getDefault()).contains("bdmv/index.bdmv") + } + when { + mime.startsWith("audio") -> "audio" to file + mime.startsWith("video") -> "video" to file + isBdmv -> "video" to file + else -> null } + }?.groupBy({ it.first }, { it.second }) + + if(playable?.get("video").isNullOrEmpty()) { + return playable?.get("audio") ?: emptyList() } - return retList + + return playable?.get("video")?.filter { + val ext = File(it.path).extension.lowercase() + return@filter when (ext) { + "m2ts", "mts", "ts" -> it.length > 524288000L + else -> true + } + } ?: emptyList() + } + + fun getAudioFiles(torr: Torrent): List { + return torr.file_stats?.filter { f -> + Mime.getMimeType(f.path).startsWith("audio") + } ?: emptyList() } fun waitFiles(hash: String): Torrent? { From affbde5f0639ea024bb71380cfa9eb2205386770 Mon Sep 17 00:00:00 2001 From: srgsf Date: Sat, 28 Mar 2026 21:40:57 +0100 Subject: [PATCH 2/2] cleanup --- app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt b/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt index 682a86c1e..899021a5b 100644 --- a/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt +++ b/app/src/main/java/ru/yourok/torrserve/utils/TorrentHelper.kt @@ -44,7 +44,7 @@ object TorrentHelper { return playable?.get("audio") ?: emptyList() } - return playable?.get("video")?.filter { + return playable["video"]?.filter { val ext = File(it.path).extension.lowercase() return@filter when (ext) { "m2ts", "mts", "ts" -> it.length > 524288000L