Merge pull request #1641 from Sumanth1602/fix/anime-skip-intro

fix: resolve anime skip intros (Kitsu/MAL routing & AniSkip query fix)
This commit is contained in:
Nayif 2026-08-03 15:29:48 +05:30 committed by tapframe
commit ddbabeeedc
2 changed files with 17 additions and 8 deletions

View file

@ -402,12 +402,21 @@ private fun PlayerScreenRuntime.BindPlayerMetadataAndSkipEffects() {
if (season == null || episode == null || vid == null) return@LaunchedEffect
launch {
val imdbId = vid.split(":").firstOrNull()?.takeIf { it.startsWith("tt") }
val intervals = SkipIntroRepository.getSkipIntervals(
imdbId = imdbId,
season = season,
episode = episode,
)
val intervals = when {
vid.startsWith("mal:") -> {
val malId = vid.removePrefix("mal:").substringBefore(':')
SkipIntroRepository.getSkipIntervalsForMal(malId = malId, episode = episode)
}
vid.startsWith("kitsu:") -> {
val kitsuId = vid.removePrefix("kitsu:").substringBefore(':')
SkipIntroRepository.getSkipIntervalsForKitsu(kitsuId = kitsuId, episode = episode)
}
else -> SkipIntroRepository.getSkipIntervals(
imdbId = vid.substringBefore(':').takeIf { it.startsWith("tt") },
season = season,
episode = episode,
)
}
skipIntervals = intervals
}
}

View file

@ -92,8 +92,8 @@ internal object SkipIntroApi {
malId: String,
episode: Int,
): AniSkipResponse? {
val types = "op,ed,recap,mixed-op,mixed-ed"
val url = "${ANISKIP_BASE}skip-times/$malId/$episode?types=$types&episodeLength=0"
val types = "types=op&types=ed&types=recap&types=mixed-op&types=mixed-ed"
val url = "${ANISKIP_BASE}skip-times/$malId/$episode?$types&episodeLength=0"
return try {
val text = httpGetText(url)
json.decodeFromString<AniSkipResponse>(text)