From d6627bab8d5a86459cdfd66b1645136610f8b3b3 Mon Sep 17 00:00:00 2001 From: Luna712 <142361265+Luna712@users.noreply.github.com> Date: Thu, 4 Jun 2026 14:13:11 -0600 Subject: [PATCH 1/3] videoskip: migrate to kotlinx serialization --- .../cloudstream3/utils/videoskip/AniSkip.kt | 26 +++-- .../cloudstream3/utils/videoskip/AnimeSkip.kt | 108 ++++++++---------- .../utils/videoskip/IntroDbSkip.kt | 32 +++--- .../utils/videoskip/TheIntroDBSkip.kt | 29 ++--- 4 files changed, 90 insertions(+), 105 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt index 0db90afeaef..a68399c6398 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt @@ -1,12 +1,13 @@ package com.lagradost.cloudstream3.utils.videoskip -import com.fasterxml.jackson.databind.annotation.JsonSerialize import com.lagradost.cloudstream3.AnimeLoadResponse import com.lagradost.cloudstream3.LoadResponse import com.lagradost.cloudstream3.LoadResponse.Companion.getMalId import com.lagradost.cloudstream3.TvType import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.ui.result.ResultEpisode +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable // taken from https://github.com/saikou-app/saikou/blob/3803f8a7a59b826ca193664d46af3a22bbc989f7/app/src/main/java/ani/saikou/others/AniSkip.kt // the following is GPLv3 code https://github.com/saikou-app/saikou/blob/main/LICENSE.md @@ -47,22 +48,25 @@ class AniSkip : SkipAPI() { } } + @Serializable data class AniSkipResponse( - @JsonSerialize val found: Boolean, - @JsonSerialize val results: List?, - @JsonSerialize val message: String?, - @JsonSerialize val statusCode: Int + @SerialName("found") val found: Boolean, + @SerialName("results") val results: List?, + @SerialName("message") val message: String?, + @SerialName("statusCode") val statusCode: Int, ) + @Serializable data class Stamp( - @JsonSerialize val interval: AniSkipInterval, - @JsonSerialize val skipType: String, - @JsonSerialize val skipId: String, - @JsonSerialize val episodeLength: Double + @SerialName("interval") val interval: AniSkipInterval, + @SerialName("skipType") val skipType: String, + @SerialName("skipId") val skipId: String, + @SerialName("episodeLength") val episodeLength: Double, ) + @Serializable data class AniSkipInterval( - @JsonSerialize val startTime: Double, - @JsonSerialize val endTime: Double + @SerialName("startTime") val startTime: Double, + @SerialName("endTime") val endTime: Double, ) } \ No newline at end of file diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt index f9254576bb5..44713f673c2 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt @@ -1,6 +1,5 @@ package com.lagradost.cloudstream3.utils.videoskip -import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.AnimeLoadResponse import com.lagradost.cloudstream3.ErrorLoadingException import com.lagradost.cloudstream3.LoadResponse @@ -17,6 +16,8 @@ import com.lagradost.cloudstream3.syncproviders.PlainAuthRepo import com.lagradost.cloudstream3.ui.result.ResultEpisode import com.lagradost.cloudstream3.utils.AppUtils.parseJson import com.lagradost.cloudstream3.utils.AppUtils.toJson +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable import java.math.BigInteger import java.util.concurrent.ConcurrentHashMap import java.security.MessageDigest @@ -34,58 +35,51 @@ class AnimeSkipAuth : AuthAPI() { return BigInteger(1, md.digest(input.toByteArray())).toString(16).padStart(32, '0') } + @Serializable data class LoginRoot( - @JsonProperty("data") - val data: LoginData, + @SerialName("data") val data: LoginData, ) + @Serializable data class LoginData( - @JsonProperty("login") - val login: Login, + @SerialName("login") val login: Login, ) + @Serializable data class Login( - @JsonProperty("authToken") - val authToken: String, - @JsonProperty("refreshToken") - val refreshToken: String, - @JsonProperty("account") - val account: Account, + @SerialName("authToken") val authToken: String, + @SerialName("refreshToken") val refreshToken: String, + @SerialName("account") val account: Account, ) + @Serializable data class ApiRoot( - @JsonProperty("data") - val data: ApiData, + @SerialName("data") val data: ApiData, ) + @Serializable data class ApiData( - @JsonProperty("myApiClients") - val myApiClients: List, + @SerialName("myApiClients") val myApiClients: List, ) + @Serializable data class MyApiClient( - @JsonProperty("id") - val id: String, + @SerialName("id") val id: String, ) + @Serializable data class Account( - @JsonProperty("profileUrl") - val profileUrl: String, - @JsonProperty("username") - val username: String, - @JsonProperty("email") - val email: String, + @SerialName("profileUrl") val profileUrl: String, + @SerialName("username") val username: String, + @SerialName("email") val email: String, ) + @Serializable data class Payload( - @JsonProperty("profileUrl") - val profileUrl: String, - @JsonProperty("username") - val username: String, - @JsonProperty("email") - val email: String, - @JsonProperty("clientId") - val clientId: String, + @SerialName("profileUrl") val profileUrl: String, + @SerialName("username") val username: String, + @SerialName("email") val email: String, + @SerialName("clientId") val clientId: String, ) override suspend fun user(token: AuthToken?): AuthUser? { @@ -187,52 +181,43 @@ class AnimeSkip : SkipAPI() { name?.replace(asciiRegex, "")?.lowercase() } + @Serializable data class Root( - @JsonProperty("data") - val data: Data, + @SerialName("data") val data: Data, ) + @Serializable data class Data( - @JsonProperty("searchShows") - val searchShows: List, + @SerialName("searchShows") val searchShows: List, ) + @Serializable data class SearchShow( - @JsonProperty("name") - val name: String, - @JsonProperty("originalName") - val originalName: String?, - @JsonProperty("seasonCount") - val seasonCount: Long, - @JsonProperty("episodeCount") - val episodeCount: Long, - @JsonProperty("baseDuration") - val baseDuration: Double, - @JsonProperty("episodes") - val episodes: List, + @SerialName("name") val name: String, + @SerialName("originalName") val originalName: String?, + @SerialName("seasonCount") val seasonCount: Long, + @SerialName("episodeCount") val episodeCount: Long, + @SerialName("baseDuration") val baseDuration: Double, + @SerialName("episodes") val episodes: List, ) + @Serializable data class Episode( - @JsonProperty("number") - val number: String?, - @JsonProperty("absoluteNumber") - val absoluteNumber: String?, - @JsonProperty("season") - val season: String?, - @JsonProperty("timestamps") - val timestamps: List, + @SerialName("number") val number: String?, + @SerialName("absoluteNumber") val absoluteNumber: String?, + @SerialName("season") val season: String?, + @SerialName("timestamps") val timestamps: List, ) + @Serializable data class Timestamp( - @JsonProperty("at") - val at: Double, - @JsonProperty("type") - val type: Type, + @SerialName("at") val at: Double, + @SerialName("type") val type: Type, ) + @Serializable data class Type( - @JsonProperty("name") - val name: String, + @SerialName("name") val name: String, ) val cache: ConcurrentHashMap = ConcurrentHashMap() @@ -367,4 +352,3 @@ class AnimeSkip : SkipAPI() { return result } } - diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt index 869515f4390..3fb9879de00 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt @@ -1,11 +1,12 @@ package com.lagradost.cloudstream3.utils.videoskip -import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.LoadResponse import com.lagradost.cloudstream3.LoadResponse.Companion.getImdbId import com.lagradost.cloudstream3.TvType import com.lagradost.cloudstream3.app import com.lagradost.cloudstream3.ui.result.ResultEpisode +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable class IntroDbSkip : SkipAPI() { override val name = "IntroDb" @@ -55,23 +56,24 @@ class IntroDbSkip : SkipAPI() { ) } - + @Serializable data class IntroDbResponse( - @JsonProperty("imdb_id") val imdbId: String?, - val season: Int?, - val episode: Int?, - val intro: Segment?, - val recap: Segment?, - val outro: Segment?, + @SerialName("imdb_id") val imdbId: String?, + @SerialName("season") val season: Int?, + @SerialName("episode") val episode: Int?, + @SerialName("intro") val intro: Segment?, + @SerialName("recap") val recap: Segment?, + @SerialName("outro") val outro: Segment?, ) + @Serializable data class Segment( - @JsonProperty("start_sec") val startSec: Double?, - @JsonProperty("end_sec") val endSec: Double?, - @JsonProperty("start_ms") val startMs: Long?, - @JsonProperty("end_ms") val endMs: Long?, - val confidence: Double?, - @JsonProperty("submission_count") val submissionCount: Int?, - @JsonProperty("updated_at") val updatedAt: String?, + @SerialName("start_sec") val startSec: Double?, + @SerialName("end_sec") val endSec: Double?, + @SerialName("start_ms") val startMs: Long?, + @SerialName("end_ms") val endMs: Long?, + @SerialName("confidence") val confidence: Double?, + @SerialName("submission_count") val submissionCount: Int?, + @SerialName("updated_at") val updatedAt: String?, ) } \ No newline at end of file diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt index cc2661cb096..90d6c2e173c 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt @@ -1,6 +1,5 @@ package com.lagradost.cloudstream3.utils.videoskip -import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.LoadResponse import com.lagradost.cloudstream3.LoadResponse.Companion.getImdbId import com.lagradost.cloudstream3.LoadResponse.Companion.getTMDbId @@ -8,6 +7,8 @@ import com.lagradost.cloudstream3.LoadResponse.Companion.isMovie import com.lagradost.cloudstream3.TvType import com.lagradost.cloudstream3.ui.result.ResultEpisode import com.lagradost.cloudstream3.app +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable /** https://theintrodb.org/docs */ class TheIntroDBSkip : SkipAPI() { @@ -52,25 +53,19 @@ class TheIntroDBSkip : SkipAPI() { }.flatten() } + @Serializable data class Root( - @JsonProperty("tmdb_id") - val tmdbId: Long, - @JsonProperty("type") - val type: String, - @JsonProperty("intro") - val intro: List = emptyList(), - @JsonProperty("recap") - val recap: List = emptyList(), - @JsonProperty("credits") - val credits: List = emptyList(), - @JsonProperty("preview") - val preview: List = emptyList(), + @SerialName("tmdb_id") val tmdbId: Long, + @SerialName("type") val type: String, + @SerialName("intro") val intro: List = emptyList(), + @SerialName("recap") val recap: List = emptyList(), + @SerialName("credits") val credits: List = emptyList(), + @SerialName("preview") val preview: List = emptyList(), ) + @Serializable data class Stamp( - @JsonProperty("start_ms") - val startMs: Long?, - @JsonProperty("end_ms") - val endMs: Long?, + @SerialName("start_ms") val startMs: Long?, + @SerialName("end_ms") val endMs: Long?, ) } \ No newline at end of file From b5fa638c12c966219c6efd942a4db314347fa00d Mon Sep 17 00:00:00 2001 From: Luna712 <142361265+Luna712@users.noreply.github.com> Date: Tue, 9 Jun 2026 11:17:40 -0600 Subject: [PATCH 2/3] Keep JsonProperty where different than variable name --- .../cloudstream3/utils/videoskip/IntroDbSkip.kt | 17 +++++++++-------- .../utils/videoskip/TheIntroDBSkip.kt | 9 +++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt index 3fb9879de00..ff367bcee9e 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt @@ -1,5 +1,6 @@ package com.lagradost.cloudstream3.utils.videoskip +import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.LoadResponse import com.lagradost.cloudstream3.LoadResponse.Companion.getImdbId import com.lagradost.cloudstream3.TvType @@ -58,7 +59,7 @@ class IntroDbSkip : SkipAPI() { @Serializable data class IntroDbResponse( - @SerialName("imdb_id") val imdbId: String?, + @JsonProperty("imdb_id") @SerialName("imdb_id") val imdbId: String?, @SerialName("season") val season: Int?, @SerialName("episode") val episode: Int?, @SerialName("intro") val intro: Segment?, @@ -68,12 +69,12 @@ class IntroDbSkip : SkipAPI() { @Serializable data class Segment( - @SerialName("start_sec") val startSec: Double?, - @SerialName("end_sec") val endSec: Double?, - @SerialName("start_ms") val startMs: Long?, - @SerialName("end_ms") val endMs: Long?, + @JsonProperty("start_sec") @SerialName("start_sec") val startSec: Double?, + @JsonProperty("end_sec") @SerialName("end_sec") val endSec: Double?, + @JsonProperty("start_ms") @SerialName("start_ms") val startMs: Long?, + @JsonProperty("end_ms") @SerialName("end_ms") val endMs: Long?, @SerialName("confidence") val confidence: Double?, - @SerialName("submission_count") val submissionCount: Int?, - @SerialName("updated_at") val updatedAt: String?, + @JsonProperty("submission_count") @SerialName("submission_count") val submissionCount: Int?, + @JsonProperty("updated_at") @SerialName("updated_at") val updatedAt: String?, ) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt index 90d6c2e173c..d6c3bc358d0 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt @@ -1,5 +1,6 @@ package com.lagradost.cloudstream3.utils.videoskip +import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.LoadResponse import com.lagradost.cloudstream3.LoadResponse.Companion.getImdbId import com.lagradost.cloudstream3.LoadResponse.Companion.getTMDbId @@ -55,7 +56,7 @@ class TheIntroDBSkip : SkipAPI() { @Serializable data class Root( - @SerialName("tmdb_id") val tmdbId: Long, + @JsonProperty("tmdb_id") @SerialName("tmdb_id") val tmdbId: Long, @SerialName("type") val type: String, @SerialName("intro") val intro: List = emptyList(), @SerialName("recap") val recap: List = emptyList(), @@ -65,7 +66,7 @@ class TheIntroDBSkip : SkipAPI() { @Serializable data class Stamp( - @SerialName("start_ms") val startMs: Long?, - @SerialName("end_ms") val endMs: Long?, + @JsonProperty("start_ms") @SerialName("start_ms") val startMs: Long?, + @JsonProperty("end_ms") @SerialName("end_ms") val endMs: Long?, ) -} \ No newline at end of file +} From 57a0713f2663c131805c1f3fda9345e7a07324d9 Mon Sep 17 00:00:00 2001 From: Luna712 <142361265+Luna712@users.noreply.github.com> Date: Thu, 18 Jun 2026 14:03:28 -0600 Subject: [PATCH 3/3] Keep all JsonProperty for now --- .../cloudstream3/utils/videoskip/AniSkip.kt | 23 +++---- .../cloudstream3/utils/videoskip/AnimeSkip.kt | 61 ++++++++++--------- .../utils/videoskip/IntroDbSkip.kt | 12 ++-- .../utils/videoskip/TheIntroDBSkip.kt | 10 +-- 4 files changed, 54 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt index a68399c6398..4bb78a1b0e8 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AniSkip.kt @@ -1,5 +1,6 @@ package com.lagradost.cloudstream3.utils.videoskip +import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.AnimeLoadResponse import com.lagradost.cloudstream3.LoadResponse import com.lagradost.cloudstream3.LoadResponse.Companion.getMalId @@ -50,23 +51,23 @@ class AniSkip : SkipAPI() { @Serializable data class AniSkipResponse( - @SerialName("found") val found: Boolean, - @SerialName("results") val results: List?, - @SerialName("message") val message: String?, - @SerialName("statusCode") val statusCode: Int, + @JsonProperty("found") @SerialName("found") val found: Boolean, + @JsonProperty("results") @SerialName("results") val results: List?, + @JsonProperty("message") @SerialName("message") val message: String?, + @JsonProperty("statusCode") @SerialName("statusCode") val statusCode: Int, ) @Serializable data class Stamp( - @SerialName("interval") val interval: AniSkipInterval, - @SerialName("skipType") val skipType: String, - @SerialName("skipId") val skipId: String, - @SerialName("episodeLength") val episodeLength: Double, + @JsonProperty("interval") @SerialName("interval") val interval: AniSkipInterval, + @JsonProperty("skipType") @SerialName("skipType") val skipType: String, + @JsonProperty("skipId") @SerialName("skipId") val skipId: String, + @JsonProperty("episodeLength") @SerialName("episodeLength") val episodeLength: Double, ) @Serializable data class AniSkipInterval( - @SerialName("startTime") val startTime: Double, - @SerialName("endTime") val endTime: Double, + @JsonProperty("startTime") @SerialName("startTime") val startTime: Double, + @JsonProperty("endTime") @SerialName("endTime") val endTime: Double, ) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt index 44713f673c2..df9d56217fd 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/AnimeSkip.kt @@ -1,5 +1,6 @@ package com.lagradost.cloudstream3.utils.videoskip +import com.fasterxml.jackson.annotation.JsonProperty import com.lagradost.cloudstream3.AnimeLoadResponse import com.lagradost.cloudstream3.ErrorLoadingException import com.lagradost.cloudstream3.LoadResponse @@ -37,49 +38,49 @@ class AnimeSkipAuth : AuthAPI() { @Serializable data class LoginRoot( - @SerialName("data") val data: LoginData, + @JsonProperty("data") @SerialName("data") val data: LoginData, ) @Serializable data class LoginData( - @SerialName("login") val login: Login, + @JsonProperty("login") @SerialName("login") val login: Login, ) @Serializable data class Login( - @SerialName("authToken") val authToken: String, - @SerialName("refreshToken") val refreshToken: String, - @SerialName("account") val account: Account, + @JsonProperty("authToken") @SerialName("authToken") val authToken: String, + @JsonProperty("refreshToken") @SerialName("refreshToken") val refreshToken: String, + @JsonProperty("account") @SerialName("account") val account: Account, ) @Serializable data class ApiRoot( - @SerialName("data") val data: ApiData, + @JsonProperty("data") @SerialName("data") val data: ApiData, ) @Serializable data class ApiData( - @SerialName("myApiClients") val myApiClients: List, + @JsonProperty("myApiClients") @SerialName("myApiClients") val myApiClients: List, ) @Serializable data class MyApiClient( - @SerialName("id") val id: String, + @JsonProperty("id") @SerialName("id") val id: String, ) @Serializable data class Account( - @SerialName("profileUrl") val profileUrl: String, - @SerialName("username") val username: String, - @SerialName("email") val email: String, + @JsonProperty("profileUrl") @SerialName("profileUrl") val profileUrl: String, + @JsonProperty("username") @SerialName("username") val username: String, + @JsonProperty("email") @SerialName("email") val email: String, ) @Serializable data class Payload( - @SerialName("profileUrl") val profileUrl: String, - @SerialName("username") val username: String, - @SerialName("email") val email: String, - @SerialName("clientId") val clientId: String, + @JsonProperty("profileUrl") @SerialName("profileUrl") val profileUrl: String, + @JsonProperty("username") @SerialName("username") val username: String, + @JsonProperty("email") @SerialName("email") val email: String, + @JsonProperty("clientId") @SerialName("clientId") val clientId: String, ) override suspend fun user(token: AuthToken?): AuthUser? { @@ -183,41 +184,41 @@ class AnimeSkip : SkipAPI() { @Serializable data class Root( - @SerialName("data") val data: Data, + @JsonProperty("data") @SerialName("data") val data: Data, ) @Serializable data class Data( - @SerialName("searchShows") val searchShows: List, + @JsonProperty("searchShows") @SerialName("searchShows") val searchShows: List, ) @Serializable data class SearchShow( - @SerialName("name") val name: String, - @SerialName("originalName") val originalName: String?, - @SerialName("seasonCount") val seasonCount: Long, - @SerialName("episodeCount") val episodeCount: Long, - @SerialName("baseDuration") val baseDuration: Double, - @SerialName("episodes") val episodes: List, + @JsonProperty("name") @SerialName("name") val name: String, + @JsonProperty("originalName") @SerialName("originalName") val originalName: String?, + @JsonProperty("seasonCount") @SerialName("seasonCount") val seasonCount: Long, + @JsonProperty("episodeCount") @SerialName("episodeCount") val episodeCount: Long, + @JsonProperty("baseDuration") @SerialName("baseDuration") val baseDuration: Double, + @JsonProperty("episodes") @SerialName("episodes") val episodes: List, ) @Serializable data class Episode( - @SerialName("number") val number: String?, - @SerialName("absoluteNumber") val absoluteNumber: String?, - @SerialName("season") val season: String?, - @SerialName("timestamps") val timestamps: List, + @JsonProperty("number") @SerialName("number") val number: String?, + @JsonProperty("absoluteNumber") @SerialName("absoluteNumber") val absoluteNumber: String?, + @JsonProperty("season") @SerialName("season") val season: String?, + @JsonProperty("timestamps") @SerialName("timestamps") val timestamps: List, ) @Serializable data class Timestamp( - @SerialName("at") val at: Double, - @SerialName("type") val type: Type, + @JsonProperty("at") @SerialName("at") val at: Double, + @JsonProperty("type") @SerialName("type") val type: Type, ) @Serializable data class Type( - @SerialName("name") val name: String, + @JsonProperty("name") @SerialName("name") val name: String, ) val cache: ConcurrentHashMap = ConcurrentHashMap() diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt index ff367bcee9e..75e22a15f16 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/IntroDbSkip.kt @@ -60,11 +60,11 @@ class IntroDbSkip : SkipAPI() { @Serializable data class IntroDbResponse( @JsonProperty("imdb_id") @SerialName("imdb_id") val imdbId: String?, - @SerialName("season") val season: Int?, - @SerialName("episode") val episode: Int?, - @SerialName("intro") val intro: Segment?, - @SerialName("recap") val recap: Segment?, - @SerialName("outro") val outro: Segment?, + @JsonProperty("season") @SerialName("season") val season: Int?, + @JsonProperty("episode") @SerialName("episode") val episode: Int?, + @JsonProperty("intro") @SerialName("intro") val intro: Segment?, + @JsonProperty("recap") @SerialName("recap") val recap: Segment?, + @JsonProperty("outro") @SerialName("outro") val outro: Segment?, ) @Serializable @@ -73,7 +73,7 @@ class IntroDbSkip : SkipAPI() { @JsonProperty("end_sec") @SerialName("end_sec") val endSec: Double?, @JsonProperty("start_ms") @SerialName("start_ms") val startMs: Long?, @JsonProperty("end_ms") @SerialName("end_ms") val endMs: Long?, - @SerialName("confidence") val confidence: Double?, + @JsonProperty("confidence") @SerialName("confidence") val confidence: Double?, @JsonProperty("submission_count") @SerialName("submission_count") val submissionCount: Int?, @JsonProperty("updated_at") @SerialName("updated_at") val updatedAt: String?, ) diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt index d6c3bc358d0..3fd050f1a5f 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/videoskip/TheIntroDBSkip.kt @@ -57,11 +57,11 @@ class TheIntroDBSkip : SkipAPI() { @Serializable data class Root( @JsonProperty("tmdb_id") @SerialName("tmdb_id") val tmdbId: Long, - @SerialName("type") val type: String, - @SerialName("intro") val intro: List = emptyList(), - @SerialName("recap") val recap: List = emptyList(), - @SerialName("credits") val credits: List = emptyList(), - @SerialName("preview") val preview: List = emptyList(), + @JsonProperty("type") @SerialName("type") val type: String, + @JsonProperty("intro") @SerialName("intro") val intro: List = emptyList(), + @JsonProperty("recap") @SerialName("recap") val recap: List = emptyList(), + @JsonProperty("credits") @SerialName("credits") val credits: List = emptyList(), + @JsonProperty("preview") @SerialName("preview") val preview: List = emptyList(), ) @Serializable