fix(en/Aniplay): new server, fixed dub with subtitles showing as softsub, latest fixes (#628)
* fix(en/aniplay): fixed dub with subtitles showing as softdub * fix(en/aniplay): new server added "maze" * fix(en/aniplay): implemented proxy mechanic * fix(en/aniplay): version bump
This commit is contained in:
parent
ba2ba44dc4
commit
9f385108fc
3 changed files with 34 additions and 14 deletions
|
@ -2,7 +2,7 @@ ext {
|
||||||
extName = 'AniPlay'
|
extName = 'AniPlay'
|
||||||
extClass = '.AniPlay'
|
extClass = '.AniPlay'
|
||||||
themePkg = 'anilist'
|
themePkg = 'anilist'
|
||||||
overrideVersionCode = 9
|
overrideVersionCode = 10
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -270,13 +270,29 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
?.map { Track(it.url ?: throw Exception("episodeData.response.subtitles.url is null ($it)"), it.lang ?: "Unk") }
|
?.map { Track(it.url ?: throw Exception("episodeData.response.subtitles.url is null ($it)"), it.lang ?: "Unk") }
|
||||||
?: emptyList()
|
?: emptyList()
|
||||||
|
|
||||||
val serverName = getServerName(episodeData.source)
|
var serverName = getServerName(episodeData.source)
|
||||||
val typeName = when {
|
if (serverName == SERVER_UNKNOWN) {
|
||||||
subtitles.isNotEmpty() -> "SoftSub"
|
serverName = episodeData.source.substring(0, 69) + "!"
|
||||||
else -> getTypeName(episodeData.language)
|
}
|
||||||
|
var typeName = getTypeName(episodeData.language)
|
||||||
|
if (typeName == "Sub" && subtitles.isNotEmpty()) {
|
||||||
|
typeName = "SoftSub"
|
||||||
|
} else if (serverName == "Yuki" && typeName == "Dub" && subtitles.isNotEmpty()) {
|
||||||
|
typeName = "Dubtitles"
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (episodeData.response.proxy == true) {
|
||||||
|
var proxyUrl = "$PROXY_URL/fetch?url=${defaultSource.url}"
|
||||||
|
if (episodeData.response.headers != null && episodeData.response.headers.Referer?.startsWith("https://") == true) {
|
||||||
|
proxyUrl += "&ref=${episodeData.response.headers.Referer}"
|
||||||
|
}
|
||||||
|
return playlistUtils.extractFromHls(
|
||||||
|
playlistUrl = proxyUrl,
|
||||||
|
videoNameGen = { quality -> "$serverName - $quality - $typeName" },
|
||||||
|
subtitleList = subtitles,
|
||||||
|
)
|
||||||
|
}
|
||||||
if (episodeData.response.headers != null && episodeData.response.headers.Referer?.startsWith("https://") == true) {
|
if (episodeData.response.headers != null && episodeData.response.headers.Referer?.startsWith("https://") == true) {
|
||||||
return playlistUtils.extractFromHls(
|
return playlistUtils.extractFromHls(
|
||||||
playlistUrl = defaultSource.url,
|
playlistUrl = defaultSource.url,
|
||||||
|
@ -451,7 +467,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
private fun getServerName(value: String): String {
|
private fun getServerName(value: String): String {
|
||||||
val index = PREF_SERVER_ENTRY_VALUES.indexOf(value)
|
val index = PREF_SERVER_ENTRY_VALUES.indexOf(value)
|
||||||
if (index == -1) {
|
if (index == -1) {
|
||||||
return "Other"
|
return SERVER_UNKNOWN
|
||||||
}
|
}
|
||||||
return PREF_SERVER_ENTRIES[index]
|
return PREF_SERVER_ENTRIES[index]
|
||||||
}
|
}
|
||||||
|
@ -459,7 +475,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
private fun getTypeName(value: String): String {
|
private fun getTypeName(value: String): String {
|
||||||
val index = PREF_TYPE_ENTRY_VALUES.indexOf(value.lowercase())
|
val index = PREF_TYPE_ENTRY_VALUES.indexOf(value.lowercase())
|
||||||
if (index == -1) {
|
if (index == -1) {
|
||||||
return "Other"
|
return TYPE_UNKNOWN
|
||||||
}
|
}
|
||||||
return PREF_TYPE_ENTRIES[index]
|
return PREF_TYPE_ENTRIES[index]
|
||||||
}
|
}
|
||||||
|
@ -477,14 +493,15 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val PREF_DOMAIN_KEY = "domain"
|
private const val PREF_DOMAIN_KEY = "domain"
|
||||||
private val PREF_DOMAIN_ENTRIES = arrayOf("aniplaynow.live (default)", "aniplay.lol (backup)")
|
private val PREF_DOMAIN_ENTRIES = arrayOf("aniplaynow.live (default)", "aniplay.lol (backup/experimental)")
|
||||||
private val PREF_DOMAIN_ENTRY_VALUES = arrayOf("aniplaynow.live", "aniplay.lol")
|
private val PREF_DOMAIN_ENTRY_VALUES = arrayOf("aniplaynow.live", "aniplay.lol")
|
||||||
private const val PREF_DOMAIN_DEFAULT = "aniplaynow.live"
|
private const val PREF_DOMAIN_DEFAULT = "aniplaynow.live"
|
||||||
|
|
||||||
private const val PREF_SERVER_KEY = "server"
|
private const val PREF_SERVER_KEY = "server"
|
||||||
private val PREF_SERVER_ENTRIES = arrayOf("Kuro", "Anya", "Yuki", "Pahe")
|
private val PREF_SERVER_ENTRIES = arrayOf("Maze", "Yuki", "Pahe", "Kuro")
|
||||||
private val PREF_SERVER_ENTRY_VALUES = arrayOf("kuro", "anya", "yuki", "pahe")
|
private val PREF_SERVER_ENTRY_VALUES = arrayOf("maze", "yuki", "pahe", "kuro")
|
||||||
private const val PREF_SERVER_DEFAULT = "kuro"
|
private const val PREF_SERVER_DEFAULT = "yuki"
|
||||||
|
private const val SERVER_UNKNOWN = "Other"
|
||||||
|
|
||||||
private const val PREF_QUALITY_KEY = "quality"
|
private const val PREF_QUALITY_KEY = "quality"
|
||||||
private val PREF_QUALITY_ENTRIES = arrayOf("1080p", "720p", "480p", "360p")
|
private val PREF_QUALITY_ENTRIES = arrayOf("1080p", "720p", "480p", "360p")
|
||||||
|
@ -492,9 +509,10 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
private const val PREF_QUALITY_DEFAULT = "1080"
|
private const val PREF_QUALITY_DEFAULT = "1080"
|
||||||
|
|
||||||
private const val PREF_TYPE_KEY = "type"
|
private const val PREF_TYPE_KEY = "type"
|
||||||
private val PREF_TYPE_ENTRIES = arrayOf("Sub", "SoftSub", "Dub")
|
private val PREF_TYPE_ENTRIES = arrayOf("Sub", "SoftSub", "Dub", "Dubtitles")
|
||||||
private val PREF_TYPE_ENTRY_VALUES = arrayOf("sub", "softsub", "dub")
|
private val PREF_TYPE_ENTRY_VALUES = arrayOf("sub", "softsub", "dub", "dubtitles")
|
||||||
private const val PREF_TYPE_DEFAULT = "sub"
|
private const val PREF_TYPE_DEFAULT = "softsub"
|
||||||
|
private const val TYPE_UNKNOWN = "Other"
|
||||||
|
|
||||||
private const val PREF_TITLE_LANGUAGE_KEY = "title_language"
|
private const val PREF_TITLE_LANGUAGE_KEY = "title_language"
|
||||||
private val PREF_TITLE_LANGUAGE_ENTRIES = arrayOf("Romaji", "English", "Native")
|
private val PREF_TITLE_LANGUAGE_ENTRIES = arrayOf("Romaji", "English", "Native")
|
||||||
|
@ -518,6 +536,7 @@ class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
"NEXT_ACTION_SOURCES_LIST" to "8a76af451978c817dde2364326a5e4e45eb43db1",
|
"NEXT_ACTION_SOURCES_LIST" to "8a76af451978c817dde2364326a5e4e45eb43db1",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
private const val PROXY_URL = "https://aniplay-cors.yqizw7.easypanel.host"
|
||||||
|
|
||||||
private val DATE_FORMATTER = SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH)
|
private val DATE_FORMATTER = SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH)
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ data class VideoSourceResponse(
|
||||||
val outro: Timestamp?,
|
val outro: Timestamp?,
|
||||||
val subtitles: List<Subtitle>?,
|
val subtitles: List<Subtitle>?,
|
||||||
val headers: Headers?,
|
val headers: Headers?,
|
||||||
|
val proxy: Boolean?,
|
||||||
) {
|
) {
|
||||||
@Serializable
|
@Serializable
|
||||||
data class Source(
|
data class Source(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue