updated mainapi

This commit is contained in:
LagradOst 2022-07-31 17:02:22 +02:00
parent 65804d7739
commit 4dd72058c2
85 changed files with 143 additions and 123 deletions

View File

@ -382,6 +382,11 @@ data class MainPageData(
val data: String, val data: String,
) )
data class MainPageRequest(
val name: String,
val data: String,
)
/** return list of MainPageData with url to name, make for more readable code */ /** return list of MainPageData with url to name, make for more readable code */
fun mainPageOf(vararg elements: Pair<String, String>): List<MainPageData> { fun mainPageOf(vararg elements: Pair<String, String>): List<MainPageData> {
return elements.map { (url, name) -> MainPageData(name = name, data = url) } return elements.map { (url, name) -> MainPageData(name = name, data = url) }
@ -462,8 +467,7 @@ abstract class MainAPI {
@WorkerThread @WorkerThread
open suspend fun getMainPage( open suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request: MainPageRequest,
categoryData: String
): HomePageResponse? { ): HomePageResponse? {
throw NotImplementedError() throw NotImplementedError()
} }
@ -957,6 +961,7 @@ interface LoadResponse {
var comingSoon: Boolean var comingSoon: Boolean
var syncData: MutableMap<String, String> var syncData: MutableMap<String, String>
var posterHeaders: Map<String, String>? var posterHeaders: Map<String, String>?
var backgroundPosterUrl: String?
companion object { companion object {
private val malIdPrefix = malApi.idPrefix private val malIdPrefix = malApi.idPrefix
@ -1100,9 +1105,30 @@ data class NextAiring(
val unixTime: Long, val unixTime: Long,
) )
data class SeasonData(
val season: Int,
val name: String? = null,
)
interface EpisodeResponse { interface EpisodeResponse {
var showStatus: ShowStatus? var showStatus: ShowStatus?
var nextAiring: NextAiring? var nextAiring: NextAiring?
var seasonNames: List<SeasonData>?
}
@JvmName("addSeasonNamesString")
fun EpisodeResponse.addSeasonNames(names: List<String>) {
this.seasonNames = if (names.isEmpty()) null else names.mapIndexed { index, s ->
SeasonData(
season = index + 1,
s
)
}
}
@JvmName("addSeasonNamesSeasonData")
fun EpisodeResponse.addSeasonNames(names: List<SeasonData>) {
this.seasonNames = names.ifEmpty { null }
} }
data class TorrentLoadResponse( data class TorrentLoadResponse(
@ -1124,6 +1150,7 @@ data class TorrentLoadResponse(
override var comingSoon: Boolean = false, override var comingSoon: Boolean = false,
override var syncData: MutableMap<String, String> = mutableMapOf(), override var syncData: MutableMap<String, String> = mutableMapOf(),
override var posterHeaders: Map<String, String>? = null, override var posterHeaders: Map<String, String>? = null,
override var backgroundPosterUrl: String? = null,
) : LoadResponse ) : LoadResponse
data class AnimeLoadResponse( data class AnimeLoadResponse(
@ -1153,6 +1180,8 @@ data class AnimeLoadResponse(
override var syncData: MutableMap<String, String> = mutableMapOf(), override var syncData: MutableMap<String, String> = mutableMapOf(),
override var posterHeaders: Map<String, String>? = null, override var posterHeaders: Map<String, String>? = null,
override var nextAiring: NextAiring? = null, override var nextAiring: NextAiring? = null,
override var seasonNames: List<SeasonData>? = null,
override var backgroundPosterUrl: String? = null,
) : LoadResponse, EpisodeResponse ) : LoadResponse, EpisodeResponse
fun AnimeLoadResponse.addEpisodes(status: DubStatus, episodes: List<Episode>?) { fun AnimeLoadResponse.addEpisodes(status: DubStatus, episodes: List<Episode>?) {
@ -1200,6 +1229,7 @@ data class LiveStreamLoadResponse(
override var comingSoon: Boolean = false, override var comingSoon: Boolean = false,
override var syncData: MutableMap<String, String> = mutableMapOf(), override var syncData: MutableMap<String, String> = mutableMapOf(),
override var posterHeaders: Map<String, String>? = null, override var posterHeaders: Map<String, String>? = null,
override var backgroundPosterUrl: String? = null,
) : LoadResponse ) : LoadResponse
data class MovieLoadResponse( data class MovieLoadResponse(
@ -1222,6 +1252,7 @@ data class MovieLoadResponse(
override var comingSoon: Boolean = false, override var comingSoon: Boolean = false,
override var syncData: MutableMap<String, String> = mutableMapOf(), override var syncData: MutableMap<String, String> = mutableMapOf(),
override var posterHeaders: Map<String, String>? = null, override var posterHeaders: Map<String, String>? = null,
override var backgroundPosterUrl: String? = null,
) : LoadResponse ) : LoadResponse
suspend fun <T> MainAPI.newMovieLoadResponse( suspend fun <T> MainAPI.newMovieLoadResponse(
@ -1344,6 +1375,8 @@ data class TvSeriesLoadResponse(
override var syncData: MutableMap<String, String> = mutableMapOf(), override var syncData: MutableMap<String, String> = mutableMapOf(),
override var posterHeaders: Map<String, String>? = null, override var posterHeaders: Map<String, String>? = null,
override var nextAiring: NextAiring? = null, override var nextAiring: NextAiring? = null,
override var seasonNames: List<SeasonData>? = null,
override var backgroundPosterUrl: String? = null,
) : LoadResponse, EpisodeResponse ) : LoadResponse, EpisodeResponse
suspend fun MainAPI.newTvSeriesLoadResponse( suspend fun MainAPI.newTvSeriesLoadResponse(

View File

@ -104,7 +104,7 @@ class AllAnimeProvider : MainAPI() {
@JsonProperty("__typename") val _typename: String? = null @JsonProperty("__typename") val _typename: String? = null
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val urls = listOf( val urls = listOf(
// Pair( // Pair(

View File

@ -114,7 +114,7 @@ class AniPlayProvider : MainAPI() {
@JsonProperty("videoUrl") val url: String @JsonProperty("videoUrl") val url: String
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val response = app.get("$mainUrl/api/home/latest-episodes?page=0").parsed<List<ApiMainPageAnime>>() val response = app.get("$mainUrl/api/home/latest-episodes?page=0").parsed<List<ApiMainPageAnime>>()
val results = response.map{ val results = response.map{

View File

@ -44,7 +44,7 @@ class AniflixProvider : MainAPI() {
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val soup = app.get(mainUrl).document val soup = app.get(mainUrl).document
val elements = listOf( val elements = listOf(

View File

@ -62,7 +62,7 @@ class AnimeIndoProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = request(mainUrl).document val document = request(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -58,7 +58,7 @@ class AnimePaheProvider : MainAPI() {
TvType.OVA TvType.OVA
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
data class Data( data class Data(
@JsonProperty("id") val id: Int, @JsonProperty("id") val id: Int,
@JsonProperty("anime_id") val animeId: Int, @JsonProperty("anime_id") val animeId: Int,

View File

@ -47,7 +47,7 @@ class AnimeSailProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = request(mainUrl).document val document = request(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -64,7 +64,7 @@ class AnimeSaturnProvider : MainAPI() {
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val list = ArrayList<HomePageList>() val list = ArrayList<HomePageList>()
document.select("div.container:has(span.badge-saturn)").forEach { document.select("div.container:has(span.badge-saturn)").forEach {

View File

@ -130,7 +130,7 @@ class AnimeWorldProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = request(mainUrl).document val document = request(mainUrl).document
val list = ArrayList<HomePageList>() val list = ArrayList<HomePageList>()

View File

@ -30,7 +30,7 @@ class AnimefenixProvider:MainAPI() {
else DubStatus.Subbed else DubStatus.Subbed
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("$mainUrl/", "Animes"), Pair("$mainUrl/", "Animes"),
Pair("$mainUrl/animes?type[]=movie&order=default", "Peliculas", ), Pair("$mainUrl/animes?type[]=movie&order=default", "Peliculas", ),

View File

@ -22,7 +22,7 @@ class AnimeflvIOProvider:MainAPI() {
TvType.OVA, TvType.OVA,
TvType.Anime, TvType.Anime,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val urls = listOf( val urls = listOf(
Pair("$mainUrl/series", "Series actualizadas",), Pair("$mainUrl/series", "Series actualizadas",),

View File

@ -34,7 +34,7 @@ class AnimeflvnetProvider : MainAPI() {
TvType.Anime, TvType.Anime,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("$mainUrl/browse?type[]=movie&order=updated", "Películas"), Pair("$mainUrl/browse?type[]=movie&order=updated", "Películas"),
Pair("$mainUrl/browse?status[]=2&order=default", "Animes"), Pair("$mainUrl/browse?status[]=2&order=default", "Animes"),

View File

@ -26,7 +26,7 @@ class AnimekisaProvider : MainAPI() {
@JsonProperty("html") val html: String @JsonProperty("html") val html: String
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("$mainUrl/ajax/list/views?type=all", "All animes"), Pair("$mainUrl/ajax/list/views?type=all", "All animes"),
Pair("$mainUrl/ajax/list/views?type=day", "Trending now"), Pair("$mainUrl/ajax/list/views?type=day", "Trending now"),

View File

@ -96,7 +96,7 @@ class DubbedAnimeProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val trendingUrl = "$mainUrl/xz/trending.php?_=$unixTimeMS" val trendingUrl = "$mainUrl/xz/trending.php?_=$unixTimeMS"
val lastEpisodeUrl = "$mainUrl/xz/epgrid.php?p=1&_=$unixTimeMS" val lastEpisodeUrl = "$mainUrl/xz/epgrid.php?p=1&_=$unixTimeMS"
val recentlyAddedUrl = "$mainUrl/xz/gridgrabrecent.php?p=1&_=$unixTimeMS" val recentlyAddedUrl = "$mainUrl/xz/gridgrabrecent.php?p=1&_=$unixTimeMS"

View File

@ -202,16 +202,15 @@ class GogoanimeProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request : MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val params = mapOf("page" to page.toString(), "type" to categoryData) val params = mapOf("page" to page.toString(), "type" to request.data)
val html = app.get( val html = app.get(
"https://ajax.gogo-load.com/ajax/page-recent-release.html", "https://ajax.gogo-load.com/ajax/page-recent-release.html",
headers = headers, headers = headers,
params = params params = params
) )
val isSub = listOf(1, 3).contains(categoryData.toInt()) val isSub = listOf(1, 3).contains(request.data.toInt())
val home = parseRegex.findAll(html.text).map { val home = parseRegex.findAll(html.text).map {
val (link, epNum, title, poster) = it.destructured val (link, epNum, title, poster) = it.destructured
@ -221,7 +220,7 @@ class GogoanimeProvider : MainAPI() {
} }
}.toList() }.toList()
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): ArrayList<SearchResponse> { override suspend fun search(query: String): ArrayList<SearchResponse> {

View File

@ -46,7 +46,7 @@ class GomunimeProvider : MainAPI() {
@JsonProperty("html") val html: String @JsonProperty("html") val html: String
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("e", "Episode Baru"), Pair("e", "Episode Baru"),
Pair("c", "Completed"), Pair("c", "Completed"),

View File

@ -32,7 +32,7 @@ class JKAnimeProvider : MainAPI() {
TvType.Anime, TvType.Anime,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair( Pair(
"$mainUrl/directorio/?filtro=fecha&tipo=TV&estado=1&fecha=none&temporada=none&orden=desc", "$mainUrl/directorio/?filtro=fecha&tipo=TV&estado=1&fecha=none&temporada=none&orden=desc",

View File

@ -14,7 +14,7 @@ class KawaiifuProvider : MainAPI() {
override val supportedTypes = setOf(TvType.Anime, TvType.AnimeMovie) override val supportedTypes = setOf(TvType.Anime, TvType.AnimeMovie)
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val resp = app.get(mainUrl).text val resp = app.get(mainUrl).text

View File

@ -17,7 +17,7 @@ class KimCartoonProvider : MainAPI() {
return if (url.startsWith("/")) mainUrl + url else url return if (url.startsWith("/")) mainUrl + url else url
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val doc = app.get(mainUrl).document.select("#container") val doc = app.get(mainUrl).document.select("#container")
val response = mutableListOf( val response = mutableListOf(
HomePageList( HomePageList(

View File

@ -38,7 +38,7 @@ class KuramanimeProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -39,7 +39,7 @@ class KuronimeProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -34,7 +34,7 @@ class MonoschinosProvider : MainAPI() {
TvType.Anime, TvType.Anime,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("$mainUrl/emision", "En emisión"), Pair("$mainUrl/emision", "En emisión"),
Pair( Pair(

View File

@ -23,7 +23,7 @@ class MundoDonghuaProvider : MainAPI() {
TvType.Anime, TvType.Anime,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("$mainUrl/lista-donghuas", "Donghuas"), Pair("$mainUrl/lista-donghuas", "Donghuas"),
) )

View File

@ -40,7 +40,7 @@ class NeonimeProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -148,10 +148,9 @@ class NineAnimeProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request: MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val url = categoryData + page val url = request.data + page
val home = Jsoup.parse( val home = Jsoup.parse(
app.get( app.get(
url url
@ -175,7 +174,7 @@ class NineAnimeProvider : MainAPI() {
} }
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
data class Response( data class Response(
@ -238,9 +237,10 @@ class NineAnimeProvider : MainAPI() {
val title = (info.selectFirst(".title") ?: info.selectFirst(".d-title"))?.text() val title = (info.selectFirst(".title") ?: info.selectFirst(".d-title"))?.text()
?: throw ErrorLoadingException("Could not find title") ?: throw ErrorLoadingException("Could not find title")
val body = val vrf = encodeVrf(id, cipherKey)
app.get("$mainUrl/ajax/episode/list/$id?vrf=${encodeVrf(id, cipherKey)}") val req = app.get("$mainUrl/ajax/episode/list/$id?vrf=$vrf")
.parsed<Response>().html val body = req.parsedSafe<Response>()?.html
?: throw ErrorLoadingException("Could not parse json with cipherKey=$cipherKey code=${req.code}")
val subEpisodes = ArrayList<Episode>() val subEpisodes = ArrayList<Episode>()
val dubEpisodes = ArrayList<Episode>() val dubEpisodes = ArrayList<Episode>()

View File

@ -40,7 +40,7 @@ class NontonAnimeIDProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -40,7 +40,7 @@ class OploverzProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -7,7 +7,6 @@ import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.loadExtractor import com.lagradost.cloudstream3.utils.loadExtractor
import org.jsoup.Jsoup import org.jsoup.Jsoup
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import java.util.ArrayList
class OtakudesuProvider : MainAPI() { class OtakudesuProvider : MainAPI() {
override var mainUrl = "https://otakudesu.watch" override var mainUrl = "https://otakudesu.watch"
@ -38,7 +37,7 @@ class OtakudesuProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -44,7 +44,7 @@ class TenshiProvider : MainAPI() {
} }
}*/ }*/
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val soup = app.get(mainUrl, interceptor = ddosGuardKiller).document val soup = app.get(mainUrl, interceptor = ddosGuardKiller).document
for (section in soup.select("#content > section")) { for (section in soup.select("#content > section")) {

View File

@ -39,7 +39,7 @@ class TocanimeProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -30,7 +30,7 @@ class WcoProvider : MainAPI() {
TvType.OVA TvType.OVA
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("$mainUrl/ajax/list/recently_updated?type=tv", "Recently Updated Anime"), Pair("$mainUrl/ajax/list/recently_updated?type=tv", "Recently Updated Anime"),
Pair("$mainUrl/ajax/list/recently_updated?type=movie", "Recently Updated Movies"), Pair("$mainUrl/ajax/list/recently_updated?type=movie", "Recently Updated Movies"),

View File

@ -77,7 +77,7 @@ class ZoroProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val html = app.get("$mainUrl/home").text val html = app.get("$mainUrl/home").text
val document = Jsoup.parse(html) val document = Jsoup.parse(html)

View File

@ -37,7 +37,7 @@ class EjaTv : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
// Maybe this based on app language or as setting? // Maybe this based on app language or as setting?
val language = "English" val language = "English"
val dataMap = mapOf( val dataMap = mapOf(

View File

@ -196,7 +196,7 @@ open class TmdbProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
// SAME AS DISCOVER IT SEEMS // SAME AS DISCOVER IT SEEMS
// val popularSeries = tmdb.tvService().popular(1, "en-US").execute().body()?.results?.map { // val popularSeries = tmdb.tvService().popular(1, "en-US").execute().body()?.results?.map {

View File

@ -34,7 +34,7 @@ class AkwamProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
// Title, Url // Title, Url
val moviesUrl = listOf( val moviesUrl = listOf(
"Movies" to "$mainUrl/movies", "Movies" to "$mainUrl/movies",

View File

@ -27,7 +27,7 @@ class AllMoviesForYouProvider : MainAPI() {
TvType.TvSeries TvType.TvSeries
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val soup = app.get(mainUrl).document val soup = app.get(mainUrl).document
val urls = listOf( val urls = listOf(

View File

@ -23,12 +23,8 @@ class AltadefinizioneProvider : MainAPI() {
Pair("$mainUrl/cinema/page/", "Ora al cinema") Pair("$mainUrl/cinema/page/", "Ora al cinema")
) )
override suspend fun getMainPage( override suspend fun getMainPage(page: Int, request: MainPageRequest): HomePageResponse {
page: Int, val url = request.data + page
categoryName: String,
categoryData: String
): HomePageResponse {
val url = categoryData + page
val soup = app.get(url).document val soup = app.get(url).document
val home = soup.select("div.box").map { val home = soup.select("div.box").map {
@ -48,7 +44,7 @@ class AltadefinizioneProvider : MainAPI() {
quality, quality,
) )
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): List<SearchResponse> { override suspend fun search(query: String): List<SearchResponse> {

View File

@ -110,7 +110,7 @@ class AsiaFlixProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val headers = mapOf("X-Requested-By" to "asiaflix-web") val headers = mapOf("X-Requested-By" to "asiaflix-web")
val response = app.get("$apiUrl/dashboard", headers = headers).text val response = app.get("$apiUrl/dashboard", headers = headers).text

View File

@ -23,7 +23,7 @@ open class BflixProvider : MainAPI() {
//override val uniqueId: Int by lazy { "BflixProvider".hashCode() } //override val uniqueId: Int by lazy { "BflixProvider".hashCode() }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val soup = app.get("$mainUrl/home").document val soup = app.get("$mainUrl/home").document
val testa = listOf( val testa = listOf(

View File

@ -41,7 +41,7 @@ class CimaNowProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val doc = app.get("$mainUrl/home", headers = mapOf("user-agent" to "MONKE")).document val doc = app.get("$mainUrl/home", headers = mapOf("user-agent" to "MONKE")).document
val pages = doc.select("section").not("section:contains(أختر وجهتك المفضلة)").not("section:contains(تم اضافته حديثاً)").apmap { val pages = doc.select("section").not("section:contains(أختر وجهتك المفضلة)").not("section:contains(تم اضافته حديثاً)").apmap {

View File

@ -26,10 +26,9 @@ class CineblogProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request : MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val url = categoryData.replace("number", page.toString()) val url = request.data.replace("number", page.toString())
val soup = app.get(url, referer = url.substringBefore("page")).document val soup = app.get(url, referer = url.substringBefore("page")).document
val home = soup.select("article.item").map { val home = soup.select("article.item").map {
val title = it.selectFirst("div.data > h3 > a")!!.text().substringBefore("(") val title = it.selectFirst("div.data > h3 > a")!!.text().substringBefore("(")
@ -46,7 +45,7 @@ class CineblogProvider : MainAPI() {
quality = quality quality = quality
) )
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): List<SearchResponse> { override suspend fun search(query: String): List<SearchResponse> {

View File

@ -26,10 +26,9 @@ class CinecalidadProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request : MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val url = categoryData + page val url = request.data + page
val soup = app.get(url).document val soup = app.get(url).document
val home = soup.select(".item.movies").map { val home = soup.select(".item.movies").map {
@ -46,7 +45,7 @@ class CinecalidadProvider : MainAPI() {
) )
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): List<SearchResponse> { override suspend fun search(query: String): List<SearchResponse> {

View File

@ -19,7 +19,7 @@ class CuevanaProvider : MainAPI() {
TvType.TvSeries, TvType.TvSeries,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val urls = listOf( val urls = listOf(
Pair(mainUrl, "Recientemente actualizadas"), Pair(mainUrl, "Recientemente actualizadas"),

View File

@ -31,7 +31,7 @@ class DoramasYTProvider : MainAPI() {
TvType.AsianDrama, TvType.AsianDrama,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("$mainUrl/emision", "En emisión"), Pair("$mainUrl/emision", "En emisión"),
Pair( Pair(

View File

@ -14,7 +14,7 @@ class DramaSeeProvider : MainAPI() {
override val hasDownloadSupport = true override val hasDownloadSupport = true
override val supportedTypes = setOf(TvType.AsianDrama) override val supportedTypes = setOf(TvType.AsianDrama)
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val headers = mapOf("X-Requested-By" to mainUrl) val headers = mapOf("X-Requested-By" to mainUrl)
val document = app.get(mainUrl, headers = headers).document val document = app.get(mainUrl, headers = headers).document
val mainbody = document.getElementsByTag("body") val mainbody = document.getElementsByTag("body")

View File

@ -30,7 +30,7 @@ class DramaidProvider : MainAPI() {
} }
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -41,7 +41,7 @@ class EgyBestProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
// url, title // url, title
val doc = app.get(mainUrl).document val doc = app.get(mainUrl).document
val pages = arrayListOf<HomePageList>() val pages = arrayListOf<HomePageList>()

View File

@ -15,7 +15,7 @@ class ElifilmsProvider : MainAPI() {
TvType.Movie, TvType.Movie,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val newest = app.get(mainUrl).document.selectFirst("a.fav_link.premiera")?.attr("href") val newest = app.get(mainUrl).document.selectFirst("a.fav_link.premiera")?.attr("href")
val urls = listOf( val urls = listOf(

View File

@ -25,10 +25,9 @@ class EntrepeliculasyseriesProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request : MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val url = categoryData + page val url = request.data + page
val soup = app.get(url).document val soup = app.get(url).document
val home = soup.select("ul.list-movie li").map { val home = soup.select("ul.list-movie li").map {
@ -45,7 +44,7 @@ class EntrepeliculasyseriesProvider : MainAPI() {
) )
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): List<SearchResponse> { override suspend fun search(query: String): List<SearchResponse> {

View File

@ -28,7 +28,7 @@ class EstrenosDoramasProvider : MainAPI() {
TvType.AsianDrama, TvType.AsianDrama,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair(mainUrl, "Últimas series"), Pair(mainUrl, "Últimas series"),
Pair("$mainUrl/category/peliculas", "Películas"), Pair("$mainUrl/category/peliculas", "Películas"),

View File

@ -35,7 +35,7 @@ class FaselHDProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
// Title, Url // Title, Url
val moviesUrl = listOf( val moviesUrl = listOf(
Pair("Movies", "$mainUrl/all-movies/page/"+(0..10).random()), Pair("Movies", "$mainUrl/all-movies/page/"+(0..10).random()),

View File

@ -18,7 +18,7 @@ class FilmanProvider : MainAPI() {
TvType.TvSeries TvType.TvSeries
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val lists = document.select("#item-list,#series-list") val lists = document.select("#item-list,#series-list")
val categories = ArrayList<HomePageList>() val categories = ArrayList<HomePageList>()

View File

@ -9,7 +9,6 @@ import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson
import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.ShortLink import com.lagradost.cloudstream3.utils.ShortLink
import com.lagradost.cloudstream3.utils.loadExtractor import com.lagradost.cloudstream3.utils.loadExtractor
import com.lagradost.nicehttp.NiceResponse
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
@ -32,10 +31,9 @@ class FilmpertuttiProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request: MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val url = categoryData + page val url = request.data + page
val soup = app.get(url).document val soup = app.get(url).document
val home = soup.select("ul.posts > li").map { val home = soup.select("ul.posts > li").map {
@ -58,7 +56,7 @@ class FilmpertuttiProvider : MainAPI() {
} }
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): List<SearchResponse> { override suspend fun search(query: String): List<SearchResponse> {

View File

@ -232,7 +232,7 @@ class FrenchStreamProvider : MainAPI() {
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse? { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse? {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val docs = document.select("div.sect") val docs = document.select("div.sect")
val returnList = docs.mapNotNull { val returnList = docs.mapNotNull {

View File

@ -69,7 +69,7 @@ class HDMProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val html = app.get(mainUrl, timeout = 25).text val html = app.get(mainUrl, timeout = 25).text
val document = Jsoup.parse(html) val document = Jsoup.parse(html)
val all = ArrayList<HomePageList>() val all = ArrayList<HomePageList>()

View File

@ -19,7 +19,7 @@ class HDMovie5 : MainAPI() {
TvType.TvSeries, TvType.TvSeries,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val doc = app.get(mainUrl).document.select("div.content") val doc = app.get(mainUrl).document.select("div.content")
val list = mapOf( val list = mapOf(
"Featured Movies" to "featured", "Featured Movies" to "featured",

View File

@ -28,7 +28,7 @@ class HDrezkaProvider : MainAPI() {
TvType.AsianDrama TvType.AsianDrama
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()

View File

@ -14,7 +14,7 @@ class IHaveNoTvProvider : MainAPI() {
override val supportedTypes = setOf(TvType.Documentary) override val supportedTypes = setOf(TvType.Documentary)
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
// Uhh, I am too lazy to scrape the "latest documentaries" and "recommended documentaries", // Uhh, I am too lazy to scrape the "latest documentaries" and "recommended documentaries",
// so I am just scraping 3 random categories // so I am just scraping 3 random categories
val allCategories = listOf( val allCategories = listOf(

View File

@ -22,7 +22,7 @@ class IdlixProvider : MainAPI() {
TvType.TvSeries, TvType.TvSeries,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -26,7 +26,7 @@ class KdramaHoodProvider : MainAPI() {
@JsonProperty("file") val file: String @JsonProperty("file") val file: String
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val doc = app.get("$mainUrl/home2").document val doc = app.get("$mainUrl/home2").document
val home = ArrayList<HomePageList>() val home = ArrayList<HomePageList>()

View File

@ -21,7 +21,7 @@ class LayarKacaProvider : MainAPI() {
TvType.AsianDrama TvType.AsianDrama
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -22,7 +22,7 @@ class MultiplexProvider : MainAPI() {
TvType.AsianDrama TvType.AsianDrama
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -44,7 +44,7 @@ class MyCimaProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
// Title, Url // Title, Url
val moviesUrl = listOf( val moviesUrl = listOf(
"Movies" to "$mainUrl/movies/page/" + (0..25).random(), "Movies" to "$mainUrl/movies/page/" + (0..25).random(),

View File

@ -212,7 +212,7 @@ class NginxProvider : MainAPI() {
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val authHeader = val authHeader =
getAuthHeader() // call again because it isn't reloaded if in main class and storedCredentials loads after getAuthHeader() // call again because it isn't reloaded if in main class and storedCredentials loads after

View File

@ -17,7 +17,7 @@ class PeliSmartProvider: MainAPI() {
) )
override val vpnStatus = VPNStatus.MightBeNeeded //Due to evoload sometimes not loading override val vpnStatus = VPNStatus.MightBeNeeded //Due to evoload sometimes not loading
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val urls = listOf( val urls = listOf(
Pair("$mainUrl/peliculas/", "Peliculas"), Pair("$mainUrl/peliculas/", "Peliculas"),

View File

@ -18,7 +18,7 @@ class PelisflixProvider : MainAPI() {
TvType.TvSeries, TvType.TvSeries,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val urls = listOf( val urls = listOf(
Pair("$mainUrl/ver-peliculas-online-gratis-fullhdc3/", "Películas"), Pair("$mainUrl/ver-peliculas-online-gratis-fullhdc3/", "Películas"),

View File

@ -16,7 +16,7 @@ class PelisplusHDProvider:MainAPI() {
TvType.Movie, TvType.Movie,
TvType.TvSeries, TvType.TvSeries,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val map = mapOf( val map = mapOf(

View File

@ -142,7 +142,7 @@ open class PelisplusProviderTemplate : MainAPI() {
// This loads the homepage, which is basically a collection of search results with labels. // This loads the homepage, which is basically a collection of search results with labels.
// Optional function, but make sure to enable hasMainPage if you program this. // Optional function, but make sure to enable hasMainPage if you program this.
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = homePageUrlList val urls = homePageUrlList
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()
// .pmap {} is used to fetch the different pages in parallel // .pmap {} is used to fetch the different pages in parallel

View File

@ -23,7 +23,7 @@ class PhimmoichillProvider : MainAPI() {
TvType.AsianDrama TvType.AsianDrama
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -15,7 +15,7 @@ class PinoyHDXyzProvider : MainAPI() {
override val hasMainPage = true override val hasMainPage = true
override val hasQuickSearch = false override val hasQuickSearch = false
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val all = ArrayList<HomePageList>() val all = ArrayList<HomePageList>()
val document = app.get(mainUrl, referer = mainUrl).document val document = app.get(mainUrl, referer = mainUrl).document
val mainbody = document.getElementsByTag("body") val mainbody = document.getElementsByTag("body")

View File

@ -16,7 +16,7 @@ class PinoyMoviePediaProvider : MainAPI() {
override val hasMainPage = true override val hasMainPage = true
override val hasQuickSearch = false override val hasQuickSearch = false
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val all = ArrayList<HomePageList>() val all = ArrayList<HomePageList>()
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val mainbody = document.getElementsByTag("body") val mainbody = document.getElementsByTag("body")

View File

@ -90,7 +90,7 @@ class PinoyMoviesEsProvider : MainAPI() {
return all return all
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val all = ArrayList<HomePageList>() val all = ArrayList<HomePageList>()
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val mainbody = document.getElementsByTag("body") val mainbody = document.getElementsByTag("body")

View File

@ -27,7 +27,7 @@ class RebahinProvider : MainAPI() {
TvType.AsianDrama TvType.AsianDrama
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = listOf( val urls = listOf(
Pair("Featured", "xtab1"), Pair("Featured", "xtab1"),
Pair("Film Terbaru", "xtab2"), Pair("Film Terbaru", "xtab2"),

View File

@ -18,7 +18,7 @@ class SeriesflixProvider : MainAPI() {
TvType.TvSeries, TvType.TvSeries,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val urls = listOf( val urls = listOf(
Pair("$mainUrl/ver-series-online/", "Series"), Pair("$mainUrl/ver-series-online/", "Series"),

View File

@ -43,7 +43,7 @@ open class SflixProvider : MainAPI() {
) )
override val vpnStatus = VPNStatus.None override val vpnStatus = VPNStatus.None
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val html = app.get("$mainUrl/home").text val html = app.get("$mainUrl/home").text
val document = Jsoup.parse(html) val document = Jsoup.parse(html)

View File

@ -25,10 +25,9 @@ class SoaptwoDayProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request : MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val url = categoryData + page val url = request.data + page
val soup = app.get(url).document val soup = app.get(url).document
val home = val home =
@ -46,7 +45,7 @@ class SoaptwoDayProvider : MainAPI() {
null, null,
) )
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): List<SearchResponse> { override suspend fun search(query: String): List<SearchResponse> {

View File

@ -174,7 +174,7 @@ class StreamingcommunityProvider : MainAPI() {
val posterMap = hashMapOf<String, String>() val posterMap = hashMapOf<String, String>()
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
document.select("slider-title").subList(0, 3).map { it -> document.select("slider-title").subList(0, 3).map { it ->

View File

@ -25,10 +25,9 @@ class TantifilmProvider : MainAPI() {
override suspend fun getMainPage( override suspend fun getMainPage(
page: Int, page: Int,
categoryName: String, request : MainPageRequest
categoryData: String
): HomePageResponse { ): HomePageResponse {
val url = categoryData + page val url = request.data + page
val soup = app.get(url).document val soup = app.get(url).document
val home = soup.select("div.media3").map { val home = soup.select("div.media3").map {
val title = it.selectFirst("p")!!.text().substringBefore("(") val title = it.selectFirst("p")!!.text().substringBefore("(")
@ -43,7 +42,7 @@ class TantifilmProvider : MainAPI() {
null, null,
) )
} }
return newHomePageResponse(categoryName, home) return newHomePageResponse(request.name, home)
} }
override suspend fun search(query: String): List<SearchResponse> { override suspend fun search(query: String): List<SearchResponse> {

View File

@ -143,7 +143,7 @@ class TheFlixToProvider : MainAPI() {
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val items = ArrayList<HomePageList>() val items = ArrayList<HomePageList>()
val doc = app.get(mainUrl).document val doc = app.get(mainUrl).document
val scriptText = doc.selectFirst("script[type=application/json]")!!.data() val scriptText = doc.selectFirst("script[type=application/json]")!!.data()

View File

@ -23,7 +23,7 @@ class UakinoProvider : MainAPI() {
TvType.Anime TvType.Anime
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -210,7 +210,7 @@ open class VidstreamProviderTemplate : MainAPI() {
// This loads the homepage, which is basically a collection of search results with labels. // This loads the homepage, which is basically a collection of search results with labels.
// Optional function, but make sure to enable hasMainPage if you program this. // Optional function, but make sure to enable hasMainPage if you program this.
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val urls = homePageUrlList val urls = homePageUrlList
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()
// .pmap {} is used to fetch the different pages in parallel // .pmap {} is used to fetch the different pages in parallel

View File

@ -18,7 +18,7 @@ class WatchAsianProvider : MainAPI() {
override val hasDownloadSupport = true override val hasDownloadSupport = true
override val supportedTypes = setOf(TvType.AsianDrama) override val supportedTypes = setOf(TvType.AsianDrama)
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val headers = mapOf("X-Requested-By" to mainUrl) val headers = mapOf("X-Requested-By" to mainUrl)
val doc = app.get(mainUrl, headers = headers).document val doc = app.get(mainUrl, headers = headers).document
val rowPair = mutableListOf<Pair<String, String>>() val rowPair = mutableListOf<Pair<String, String>>()

View File

@ -40,7 +40,7 @@ class XcineProvider : MainAPI() {
) )
} }
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val sections = document.select("div.group-film") val sections = document.select("div.group-film")
return HomePageResponse(sections.mapNotNull { section -> return HomePageResponse(sections.mapNotNull { section ->

View File

@ -19,7 +19,7 @@ class YomoviesProvider : MainAPI() {
TvType.TvSeries, TvType.TvSeries,
) )
override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { override suspend fun getMainPage(page: Int, request : MainPageRequest): HomePageResponse {
val document = app.get(mainUrl).document val document = app.get(mainUrl).document
val homePageList = ArrayList<HomePageList>() val homePageList = ArrayList<HomePageList>()

View File

@ -63,9 +63,9 @@ class APIRepository(val api: MainAPI) {
suspend fun getMainPage(page: Int, nameIndex: Int? = null): Resource<List<HomePageResponse?>> { suspend fun getMainPage(page: Int, nameIndex: Int? = null): Resource<List<HomePageResponse?>> {
return safeApiCall { return safeApiCall {
nameIndex?.let { api.mainPage.getOrNull(it) }?.let { data -> nameIndex?.let { api.mainPage.getOrNull(it) }?.let { data ->
listOf(api.getMainPage(page, data.name, data.data)) listOf(api.getMainPage(page, MainPageRequest(data.name, data.data)))
} ?: api.mainPage.apmap { data -> } ?: api.mainPage.apmap { data ->
api.getMainPage(page, data.name, data.data) api.getMainPage(page, MainPageRequest(data.name, data.data))
} }
} }
} }