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