1+ package com.lagradost.cloudstream3.utils.videoskip
2+
3+ import com.fasterxml.jackson.annotation.JsonProperty
4+ import com.lagradost.cloudstream3.LoadResponse
5+ import com.lagradost.cloudstream3.LoadResponse.Companion.getImdbId
6+ import com.lagradost.cloudstream3.LoadResponse.Companion.getTMDbId
7+ import com.lagradost.cloudstream3.LoadResponse.Companion.isMovie
8+ import com.lagradost.cloudstream3.TvType
9+ import com.lagradost.cloudstream3.ui.result.ResultEpisode
10+ import com.lagradost.cloudstream3.app
11+
12+ /* * https://theintrodb.org/docs */
13+ class TheIntroDBSkip : SkipAPI () {
14+ override val name = " TheIntroDB"
15+ override val supportedTypes = setOf (
16+ TvType .TvSeries , TvType .Cartoon , TvType .Anime , TvType .Movie ,
17+ TvType .AsianDrama
18+ )
19+
20+ val mainUrl = " https://api.theintrodb.org"
21+
22+ override suspend fun stamps (
23+ data : LoadResponse ,
24+ episode : ResultEpisode ,
25+ episodeDurationMs : Long
26+ ): List <SkipStamp >? {
27+ val idSuffix =
28+ data.getTMDbId()?.let { tmdbId -> " tmdb_id=$tmdbId " }
29+ ? : data.getImdbId()?.let { imdbId -> " imdb_id=$imdbId " }
30+ ? : return null
31+
32+ val url = if (data.isMovie()) {
33+ " $mainUrl /v2/media?$idSuffix "
34+ } else {
35+ val season = episode.season ? : return null
36+ " $mainUrl /v2/media?$idSuffix &season=$season &episode=${episode.episode} "
37+ }
38+ val root = app.get(url).parsed<Root >()
39+ return arrayOf(
40+ root.intro to SkipType .Intro ,
41+ root.credits to SkipType .Credits ,
42+ root.recap to SkipType .Recap ,
43+ root.preview to SkipType .Preview
44+ ).map { (list, type) ->
45+ list.map { stamp ->
46+ SkipStamp (
47+ type,
48+ stamp.startMs ? : 0L ,
49+ stamp.endMs ? : episodeDurationMs
50+ )
51+ }
52+ }.flatten()
53+ }
54+
55+ data class Root (
56+ @JsonProperty(" tmdb_id" )
57+ val tmdbId : Long ,
58+ @JsonProperty(" type" )
59+ val type : String ,
60+ @JsonProperty(" intro" )
61+ val intro : List <Stamp > = emptyList(),
62+ @JsonProperty(" recap" )
63+ val recap : List <Stamp > = emptyList(),
64+ @JsonProperty(" credits" )
65+ val credits : List <Stamp > = emptyList(),
66+ @JsonProperty(" preview" )
67+ val preview : List <Stamp > = emptyList(),
68+ )
69+
70+ data class Stamp (
71+ @JsonProperty(" start_ms" )
72+ val startMs : Long? ,
73+ @JsonProperty(" end_ms" )
74+ val endMs : Long? ,
75+ )
76+ }
0 commit comments