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 4c812cb3..b24a1da1 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 60f9400f..d4ab4fc4 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 c3f82bed..899021a5 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["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? {