Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -47,22 +48,25 @@ class AniSkip : SkipAPI() {
}
}

@Serializable
data class AniSkipResponse(
@JsonSerialize val found: Boolean,
@JsonSerialize val results: List<Stamp>?,
@JsonSerialize val message: String?,
@JsonSerialize val statusCode: Int
@SerialName("found") val found: Boolean,
@SerialName("results") val results: List<Stamp>?,
@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,
)
}
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand All @@ -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<MyApiClient>,
@SerialName("myApiClients") val myApiClients: List<MyApiClient>,
)

@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? {
Expand Down Expand Up @@ -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<SearchShow>,
@SerialName("searchShows") val searchShows: List<SearchShow>,
)

@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<Episode>,
@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<Episode>,
)

@Serializable
data class Episode(
@JsonProperty("number")
val number: String?,
@JsonProperty("absoluteNumber")
val absoluteNumber: String?,
@JsonProperty("season")
val season: String?,
@JsonProperty("timestamps")
val timestamps: List<Timestamp>,
@SerialName("number") val number: String?,
@SerialName("absoluteNumber") val absoluteNumber: String?,
@SerialName("season") val season: String?,
@SerialName("timestamps") val timestamps: List<Timestamp>,
)

@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<String, Data> = ConcurrentHashMap()
Expand Down Expand Up @@ -367,4 +352,3 @@ class AnimeSkip : SkipAPI() {
return result
}
}

Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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?,
)
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
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
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() {
Expand Down Expand Up @@ -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<Stamp> = emptyList(),
@JsonProperty("recap")
val recap: List<Stamp> = emptyList(),
@JsonProperty("credits")
val credits: List<Stamp> = emptyList(),
@JsonProperty("preview")
val preview: List<Stamp> = emptyList(),
@SerialName("tmdb_id") val tmdbId: Long,
@SerialName("type") val type: String,
@SerialName("intro") val intro: List<Stamp> = emptyList(),
@SerialName("recap") val recap: List<Stamp> = emptyList(),
@SerialName("credits") val credits: List<Stamp> = emptyList(),
@SerialName("preview") val preview: List<Stamp> = 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?,
)
}