fix: audio track names scrambled

This commit is contained in:
rebelonion 2024-05-07 06:50:00 -05:00
parent 7fdd8d5d6e
commit 9d13920f63
2 changed files with 13 additions and 7 deletions

View file

@ -227,7 +227,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
private var downloadId: String? = null private var downloadId: String? = null
private var hasExtSubtitles = false private var hasExtSubtitles = false
private var audioLanguages = mutableListOf<String>() private var audioLanguages = mutableListOf<Pair<String,String>>()
companion object { companion object {
var initialized = false var initialized = false
@ -1548,8 +1548,9 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
val audioMediaItem = mutableListOf<MediaItem>() val audioMediaItem = mutableListOf<MediaItem>()
audioLanguages.clear() audioLanguages.clear()
ext.audioTracks.forEach { ext.audioTracks.forEach {
val code = LanguageMapper.getLanguageCode(it.lang) var code = LanguageMapper.getLanguageCode(it.lang)
audioLanguages.add(code) if (code == "all") code = "un"
audioLanguages.add(Pair(it.lang, code))
audioMediaItem.add( audioMediaItem.add(
MediaItem.Builder() MediaItem.Builder()
.setUri(it.url) .setUri(it.url)
@ -1560,7 +1561,7 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL
} }
val audioSources = audioMediaItem.map { mediaItem -> val audioSources = audioMediaItem.map { mediaItem ->
if (mediaItem.localConfiguration?.uri.toString().endsWith(".m3u8")) { if (mediaItem.localConfiguration?.uri.toString().contains(".m3u8")) {
HlsMediaSource.Factory(cacheFactory).createMediaSource(mediaItem) HlsMediaSource.Factory(cacheFactory).createMediaSource(mediaItem)
} else { } else {
DefaultMediaSourceFactory(cacheFactory).createMediaSource(mediaItem) DefaultMediaSourceFactory(cacheFactory).createMediaSource(mediaItem)

View file

@ -1,5 +1,6 @@
package ani.dantotsu.media.anime package ani.dantotsu.media.anime
import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
@ -22,7 +23,7 @@ class TrackGroupDialogFragment(
private var instance: ExoplayerView, private var instance: ExoplayerView,
private var trackGroups: ArrayList<Tracks.Group>, private var trackGroups: ArrayList<Tracks.Group>,
private var type: @TrackType Int, private var type: @TrackType Int,
private var overrideTrackNames: List<String>? = null private var overrideTrackNames: List<Pair<String, String>>? = null
) : BottomSheetDialogFragment() { ) : BottomSheetDialogFragment() {
private var _binding: BottomSheetSubtitlesBinding? = null private var _binding: BottomSheetSubtitlesBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
@ -57,12 +58,16 @@ class TrackGroupDialogFragment(
) )
) )
@SuppressLint("SetTextI18n")
@OptIn(UnstableApi::class) @OptIn(UnstableApi::class)
override fun onBindViewHolder(holder: StreamViewHolder, position: Int) { override fun onBindViewHolder(holder: StreamViewHolder, position: Int) {
val binding = holder.binding val binding = holder.binding
trackGroups[position].let { trackGroup -> trackGroups[position].let { trackGroup ->
when (val language = overrideTrackNames?.getOrNull(position) if (overrideTrackNames?.getOrNull(position - (trackGroups.size - (overrideTrackNames?.size?:0))) != null) {
?: trackGroup.getTrackFormat(0).language?.lowercase()) { val pair = overrideTrackNames!![position - (trackGroups.size - overrideTrackNames!!.size)]
binding.subtitleTitle.text =
"[${pair.second}] ${pair.first}"
} else when (val language = trackGroup.getTrackFormat(0).language?.lowercase()) {
null -> { null -> {
binding.subtitleTitle.text = binding.subtitleTitle.text =
getString(R.string.unknown_track, "Track $position") getString(R.string.unknown_track, "Track $position")