Merge branch 'master' into mihonmerge

This commit is contained in:
jmir1 2024-07-11 14:55:23 +02:00
commit 525c4715e9
No known key found for this signature in database
GPG key ID: 7B3B624787A072BD
5 changed files with 68 additions and 48 deletions

View file

@ -22,16 +22,18 @@ import cafe.adriel.voyager.navigator.LocalNavigator
import cafe.adriel.voyager.navigator.currentOrThrow import cafe.adriel.voyager.navigator.currentOrThrow
import eu.kanade.domain.base.BasePreferences import eu.kanade.domain.base.BasePreferences
import eu.kanade.presentation.more.settings.Preference import eu.kanade.presentation.more.settings.Preference
import eu.kanade.tachiyomi.ui.player.JUST_PLAYER import eu.kanade.tachiyomi.ui.player.JustPlayer
import eu.kanade.tachiyomi.ui.player.MPV_PLAYER import eu.kanade.tachiyomi.ui.player.MpvKt
import eu.kanade.tachiyomi.ui.player.MPV_REMOTE import eu.kanade.tachiyomi.ui.player.MpvKtPreview
import eu.kanade.tachiyomi.ui.player.MX_PLAYER import eu.kanade.tachiyomi.ui.player.MpvPlayer
import eu.kanade.tachiyomi.ui.player.MX_PLAYER_FREE import eu.kanade.tachiyomi.ui.player.MpvRemote
import eu.kanade.tachiyomi.ui.player.MX_PLAYER_PRO import eu.kanade.tachiyomi.ui.player.MxPlayer
import eu.kanade.tachiyomi.ui.player.NEXT_PLAYER import eu.kanade.tachiyomi.ui.player.MxPlayerFree
import eu.kanade.tachiyomi.ui.player.VLC_PLAYER import eu.kanade.tachiyomi.ui.player.MxPlayerPro
import eu.kanade.tachiyomi.ui.player.WEB_VIDEO_CASTER import eu.kanade.tachiyomi.ui.player.NextPlayer
import eu.kanade.tachiyomi.ui.player.X_PLAYER import eu.kanade.tachiyomi.ui.player.VlcPlayer
import eu.kanade.tachiyomi.ui.player.WebVideoCaster
import eu.kanade.tachiyomi.ui.player.XPlayer
import eu.kanade.tachiyomi.ui.player.settings.PlayerPreferences import eu.kanade.tachiyomi.ui.player.settings.PlayerPreferences
import eu.kanade.tachiyomi.ui.player.viewer.AudioChannels import eu.kanade.tachiyomi.ui.player.viewer.AudioChannels
import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.persistentListOf
@ -440,14 +442,16 @@ object SettingsPlayerScreen : SearchableSettings {
} }
val externalPlayers = listOf( val externalPlayers = listOf(
MPV_PLAYER, MpvPlayer,
MX_PLAYER, MxPlayer,
MX_PLAYER_FREE, MxPlayerFree,
MX_PLAYER_PRO, MxPlayerPro,
VLC_PLAYER, VlcPlayer,
MPV_REMOTE, MpvKt,
JUST_PLAYER, MpvKtPreview,
NEXT_PLAYER, MpvRemote,
X_PLAYER, JustPlayer,
WEB_VIDEO_CASTER, NextPlayer,
XPlayer,
WebVideoCaster,
) )

View file

@ -170,7 +170,7 @@ class ExternalIntents {
*/ */
private fun getIntentForPackage(pkgName: String, context: Context, uri: Uri, video: Video): Intent { private fun getIntentForPackage(pkgName: String, context: Context, uri: Uri, video: Video): Intent {
return when (pkgName) { return when (pkgName) {
WEB_VIDEO_CASTER -> webVideoCasterIntent(pkgName, context, uri, video) WebVideoCaster -> webVideoCasterIntent(pkgName, context, uri, video)
else -> standardIntentForPackage(pkgName, context, uri, video) else -> standardIntentForPackage(pkgName, context, uri, video)
} }
} }
@ -178,7 +178,7 @@ class ExternalIntents {
private fun webVideoCasterIntent(pkgName: String, context: Context, uri: Uri, video: Video): Intent { private fun webVideoCasterIntent(pkgName: String, context: Context, uri: Uri, video: Video): Intent {
return Intent(Intent.ACTION_VIEW).apply { return Intent(Intent.ACTION_VIEW).apply {
setDataAndType(uri, "video/*") setDataAndType(uri, "video/*")
if (isPackageInstalled(pkgName, context.packageManager)) setPackage(WEB_VIDEO_CASTER) if (isPackageInstalled(pkgName, context.packageManager)) setPackage(WebVideoCaster)
addExtrasAndFlags(true, this) addExtrasAndFlags(true, this)
val headers = Bundle() val headers = Bundle()
@ -300,16 +300,17 @@ class ExternalIntents {
*/ */
private fun getComponent(packageName: String): ComponentName? { private fun getComponent(packageName: String): ComponentName? {
return when (packageName) { return when (packageName) {
MPV_PLAYER -> ComponentName(packageName, "$packageName.MPVActivity") MpvPlayer -> ComponentName(packageName, "$packageName.MPVActivity")
MX_PLAYER, MX_PLAYER_FREE, MX_PLAYER_PRO -> ComponentName( MxPlayer, MxPlayerFree, MxPlayerPro -> ComponentName(
packageName, packageName,
"$packageName.ActivityScreen", "$packageName.ActivityScreen",
) )
VLC_PLAYER -> ComponentName(packageName, "$packageName.gui.video.VideoPlayerActivity") VlcPlayer -> ComponentName(packageName, "$packageName.gui.video.VideoPlayerActivity")
MPV_REMOTE -> ComponentName(packageName, "$packageName.MainActivity") MpvKt, MpvKtPreview -> ComponentName(packageName, "live.mehiz.mpvkt.ui.player.PlayerActivity")
JUST_PLAYER -> ComponentName(packageName, "$packageName.PlayerActivity") MpvRemote -> ComponentName(packageName, "$packageName.MainActivity")
NEXT_PLAYER -> ComponentName(packageName, "$packageName.feature.player.PlayerActivity") JustPlayer -> ComponentName(packageName, "$packageName.PlayerActivity")
X_PLAYER -> ComponentName(packageName, "com.inshot.xplayer.activities.PlayerActivity") NextPlayer -> ComponentName(packageName, "$packageName.feature.player.PlayerActivity")
XPlayer -> ComponentName(packageName, "com.inshot.xplayer.activities.PlayerActivity")
else -> null else -> null
} }
} }
@ -559,13 +560,15 @@ class ExternalIntents {
} }
// List of supported external players and their packages // List of supported external players and their packages
const val MPV_PLAYER = "is.xyz.mpv" const val MpvPlayer = "is.xyz.mpv"
const val MX_PLAYER = "com.mxtech.videoplayer" const val MxPlayer = "com.mxtech.videoplayer"
const val MX_PLAYER_FREE = "com.mxtech.videoplayer.ad" const val MxPlayerFree = "com.mxtech.videoplayer.ad"
const val MX_PLAYER_PRO = "com.mxtech.videoplayer.pro" const val MxPlayerPro = "com.mxtech.videoplayer.pro"
const val VLC_PLAYER = "org.videolan.vlc" const val VlcPlayer = "org.videolan.vlc"
const val MPV_REMOTE = "com.husudosu.mpvremote" const val MpvKt = "live.mehiz.mpvkt"
const val JUST_PLAYER = "com.brouken.player" const val MpvKtPreview = "live.mehiz.mpvkt.preview"
const val NEXT_PLAYER = "dev.anilbeesetti.nextplayer" const val MpvRemote = "com.husudosu.mpvremote"
const val X_PLAYER = "video.player.videoplayer" const val JustPlayer = "com.brouken.player"
const val WEB_VIDEO_CASTER = "com.instantbits.cast.webvideo" const val NextPlayer = "dev.anilbeesetti.nextplayer"
const val XPlayer = "video.player.videoplayer"
const val WebVideoCaster = "com.instantbits.cast.webvideo"

View file

@ -112,6 +112,8 @@ import java.io.IOException
import java.io.InputStream import java.io.InputStream
import java.io.OutputStream import java.io.OutputStream
import kotlin.math.abs import kotlin.math.abs
import kotlin.math.ceil
import kotlin.math.floor
import kotlin.math.roundToInt import kotlin.math.roundToInt
import `is`.xyz.mpv.MPVView.Chapter as VideoChapter import `is`.xyz.mpv.MPVView.Chapter as VideoChapter
@ -1735,6 +1737,7 @@ class PlayerActivity : BaseActivity() {
// at void is.xyz.mpv.MPVLib.event(int) (MPVLib.java:86) // at void is.xyz.mpv.MPVLib.event(int) (MPVLib.java:86)
@SuppressLint("SourceLockedOrientationActivity") @SuppressLint("SourceLockedOrientationActivity")
internal suspend fun fileLoaded() { internal suspend fun fileLoaded() {
setMpvMediaTitle()
val localLangName = LocaleHelper.getSimpleLocaleDisplayName() val localLangName = LocaleHelper.getSimpleLocaleDisplayName()
clearTracks() clearTracks()
player.loadTracks() player.loadTracks()
@ -1827,6 +1830,24 @@ class PlayerActivity : BaseActivity() {
} }
} }
private fun setMpvMediaTitle() {
val anime = viewModel.currentAnime ?: return
val episode = viewModel.currentEpisode ?: return
val epNumber = episode.episode_number.let { number ->
if (ceil(number) == floor(number)) number.toInt() else number
}.toString().padStart(2, '0')
val title = stringResource(
MR.strings.mpv_media_title,
anime.title,
epNumber,
episode.name,
)
MPVLib.setPropertyString("force-media-title", title)
}
private var aniskipStamps: List<Stamp> = emptyList() private var aniskipStamps: List<Stamp> = emptyList()
private fun updateChapters(stamps: List<Stamp>? = null, duration: Int? = null) { private fun updateChapters(stamps: List<Stamp>? = null, duration: Int? = null) {

View file

@ -1849,15 +1849,6 @@
<ID>TopLevelPropertyNaming:DisplayExtensions.kt$// some tablets have screen width like 711dp = 1600px / 2.25 private const val TABLET_UI_MIN_SCREEN_WIDTH_PORTRAIT_DP = 700</ID> <ID>TopLevelPropertyNaming:DisplayExtensions.kt$// some tablets have screen width like 711dp = 1600px / 2.25 private const val TABLET_UI_MIN_SCREEN_WIDTH_PORTRAIT_DP = 700</ID>
<ID>TopLevelPropertyNaming:DisplayExtensions.kt$private const val TABLET_UI_REQUIRED_SCREEN_WIDTH_DP = 720</ID> <ID>TopLevelPropertyNaming:DisplayExtensions.kt$private const val TABLET_UI_REQUIRED_SCREEN_WIDTH_DP = 720</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$// List of supported external players and their packages const val MPV_PLAYER = "is.xyz.mpv"</ID> <ID>TopLevelPropertyNaming:ExternalIntents.kt$// List of supported external players and their packages const val MPV_PLAYER = "is.xyz.mpv"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val JUST_PLAYER = "com.brouken.player"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val MPV_REMOTE = "com.husudosu.mpvremote"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val MX_PLAYER = "com.mxtech.videoplayer"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val MX_PLAYER_FREE = "com.mxtech.videoplayer.ad"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val MX_PLAYER_PRO = "com.mxtech.videoplayer.pro"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val NEXT_PLAYER = "dev.anilbeesetti.nextplayer"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val VLC_PLAYER = "org.videolan.vlc"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val WEB_VIDEO_CASTER = "com.instantbits.cast.webvideo"</ID>
<ID>TopLevelPropertyNaming:ExternalIntents.kt$const val X_PLAYER = "video.player.videoplayer"</ID>
<ID>TopLevelPropertyNaming:GLUtil.kt$// Safe minimum default size private const val IMAGE_MAX_BITMAP_DIMENSION = 2048</ID> <ID>TopLevelPropertyNaming:GLUtil.kt$// Safe minimum default size private const val IMAGE_MAX_BITMAP_DIMENSION = 2048</ID>
<ID>TopLevelPropertyNaming:GestureHandler.kt$private const val STATE_HORIZONTAL = 1</ID> <ID>TopLevelPropertyNaming:GestureHandler.kt$private const val STATE_HORIZONTAL = 1</ID>
<ID>TopLevelPropertyNaming:GestureHandler.kt$private const val STATE_UP = 0</ID> <ID>TopLevelPropertyNaming:GestureHandler.kt$private const val STATE_UP = 0</ID>

View file

@ -915,6 +915,7 @@
<string name="go_to_next_chapter">Next chapter</string> <string name="go_to_next_chapter">Next chapter</string>
<string name="go_to_previous_chapter">Previous chapter</string> <string name="go_to_previous_chapter">Previous chapter</string>
<string name="go_to_after_opening">Skipped opening</string> <string name="go_to_after_opening">Skipped opening</string>
<string name="mpv_media_title">%1$s - E%2$s - %3$s</string>
<string name="pref_player_smooth_seek">Enable precise seeking</string> <string name="pref_player_smooth_seek">Enable precise seeking</string>
<string name="pref_player_smooth_seek_summary">When enabled, seeking will not focus on keyframes, leading to slower but precise seeking</string> <string name="pref_player_smooth_seek_summary">When enabled, seeking will not focus on keyframes, leading to slower but precise seeking</string>
<string name="pref_player_fullscreen">Show content in display cutout</string> <string name="pref_player_fullscreen">Show content in display cutout</string>