diff --git a/AnimeUAProvider/build.gradle.kts b/AnimeUAProvider/build.gradle.kts index 1012650..1bf4e60 100644 --- a/AnimeUAProvider/build.gradle.kts +++ b/AnimeUAProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 3 +version = 4 cloudstream { diff --git a/AnimeUAProvider/src/main/kotlin/com/lagradost/AnimeUAProvider.kt b/AnimeUAProvider/src/main/kotlin/com/lagradost/AnimeUAProvider.kt index de58576..83d7d62 100644 --- a/AnimeUAProvider/src/main/kotlin/com/lagradost/AnimeUAProvider.kt +++ b/AnimeUAProvider/src/main/kotlin/com/lagradost/AnimeUAProvider.kt @@ -62,6 +62,8 @@ class AnimeUAProvider : MainAPI() { val title = this.selectFirst(titleSelector)?.text()?.trim().toString() val href = this.selectFirst(hrefSelector)?.attr("href").toString() val posterUrl = mainUrl + this.selectFirst(posterSelector)?.attr("data-src") + + // TODO: Use it val status = this.select(".poster__label").text() return newAnimeSearchResponse(title, href, TvType.Anime) { this.posterUrl = posterUrl @@ -118,7 +120,7 @@ class AnimeUAProvider : MainAPI() { // Return to app // Parse Episodes as Series return if (tvType == TvType.Anime || tvType == TvType.OVA) { - var episodes: List = emptyList() + val episodes = mutableListOf() val playerRawJson = app.get(playerUrl).document.select("script").html() .substringAfterLast("file:\'") .substringBefore("\',") @@ -126,7 +128,7 @@ class AnimeUAProvider : MainAPI() { tryParseJson>(playerRawJson)?.map { dubs -> // Dubs for(season in dubs.folder){ // Seasons for(episode in season.folder){ // Episodes - episodes = episodes.plus( + episodes.add( Episode( "${season.title}, ${episode.title}, $playerUrl", episode.title, diff --git a/BambooUAProvider/build.gradle.kts b/BambooUAProvider/build.gradle.kts index 79ee1e1..9891ee7 100644 --- a/BambooUAProvider/build.gradle.kts +++ b/BambooUAProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 2 +version = 3 dependencies { implementation("com.google.code.gson:gson:2.9.0") diff --git a/BambooUAProvider/src/main/kotlin/com/lagradost/BambooUAProvider.kt b/BambooUAProvider/src/main/kotlin/com/lagradost/BambooUAProvider.kt index af80ad3..a269705 100644 --- a/BambooUAProvider/src/main/kotlin/com/lagradost/BambooUAProvider.kt +++ b/BambooUAProvider/src/main/kotlin/com/lagradost/BambooUAProvider.kt @@ -121,15 +121,15 @@ class BambooUAProvider : MainAPI() { it.toSearchResponse() } - var subEpisodes: List = emptyList() - var dubEpisodes: List = emptyList() + val subEpisodes = mutableListOf() + val dubEpisodes = mutableListOf() // Parse episodes (sub/dub) document.select(".mt-4").forEach { // Parse sub if(it.select("h3.my-4").text() == "Субтитри"){ it.select("span.play_me").forEach{ episode -> - subEpisodes = subEpisodes.plus( + subEpisodes.add( Episode( episode.attr("data-file"), episode.attr("data-title"), @@ -140,7 +140,7 @@ class BambooUAProvider : MainAPI() { // Parse dub } else if(it.select("h3.my-4").text() == "Озвучення"){ it.select("span.play_me").forEach{ episode -> - dubEpisodes = dubEpisodes.plus( + dubEpisodes.add( Episode( episode.attr("data-file"), episode.attr("data-title"), diff --git a/EneyidaProvider/build.gradle.kts b/EneyidaProvider/build.gradle.kts index 8222eec..76ce47c 100644 --- a/EneyidaProvider/build.gradle.kts +++ b/EneyidaProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 1 +version = 2 cloudstream { diff --git a/EneyidaProvider/src/main/kotlin/com/lagradost/EneyidaProvider.kt b/EneyidaProvider/src/main/kotlin/com/lagradost/EneyidaProvider.kt index 48def72..9fbd996 100644 --- a/EneyidaProvider/src/main/kotlin/com/lagradost/EneyidaProvider.kt +++ b/EneyidaProvider/src/main/kotlin/com/lagradost/EneyidaProvider.kt @@ -36,7 +36,7 @@ class EneyidaProvider : MainAPI() { page: Int, request: MainPageRequest ): HomePageResponse { - var document = app.get(request.data + page).document + val document = app.get(request.data + page).document val home = document.select("article.short").map { it.toSearchResponse() @@ -57,7 +57,7 @@ class EneyidaProvider : MainAPI() { override suspend fun search(query: String): List { val document = app.post( - url = "$mainUrl", + url = mainUrl, data = mapOf( "do" to "search", "subaction" to "search", @@ -74,18 +74,18 @@ class EneyidaProvider : MainAPI() { override suspend fun load(url: String): LoadResponse { val document = app.get(url).document // Parse info - val full_info = document.select(".full_info li") + val fullInfo = document.select(".full_info li") val title = document.selectFirst("div.full_header-title h1")?.text()?.trim().toString() val poster = mainUrl + document.selectFirst(".full_content-poster img")?.attr("src") - val tags = full_info[1].select("a").map { it.text() } - val year = full_info[0].select("a").text().toIntOrNull() + val tags = fullInfo[1].select("a").map { it.text() } + val year = fullInfo[0].select("a").text().toIntOrNull() val playerUrl = document.select(".tabs_b.visible iframe").attr("src") val tvType = if (tags.contains("фільм") or playerUrl.contains("/vod/")) TvType.Movie else TvType.TvSeries val description = document.selectFirst(".full_content-desc p")?.text()?.trim() val trailer = document.selectFirst("div#trailer_place iframe")?.attr("src").toString() val rating = document.selectFirst(".r_kp span, .r_imdb span")?.text().toRatingInt() - val actors = full_info[4].select("a").map { it.text() } + val actors = fullInfo[4].select("a").map { it.text() } val recommendations = document.select(".short.related_item").map { it.toSearchResponse() @@ -94,7 +94,7 @@ class EneyidaProvider : MainAPI() { // Return to app // Parse Episodes as Series return if (tvType == TvType.TvSeries) { - var episodes: List = emptyList() + val episodes = mutableListOf() val playerRawJson = app.get(playerUrl).document.select("script").html() .substringAfterLast("file:\'") .substringBefore("\',") @@ -102,7 +102,7 @@ class EneyidaProvider : MainAPI() { tryParseJson>(playerRawJson)?.map { dubs -> // Dubs for(season in dubs.folder){ // Seasons for(episode in season.folder){ // Episodes - episodes = episodes.plus( + episodes.add( Episode( "${season.title}, ${episode.title}, $playerUrl", episode.title, diff --git a/KinoTronProvider/build.gradle.kts b/KinoTronProvider/build.gradle.kts index 541b734..b3a82da 100644 --- a/KinoTronProvider/build.gradle.kts +++ b/KinoTronProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 1 +version = 2 cloudstream { diff --git a/KinoTronProvider/src/main/kotlin/com/lagradost/KinoTronProvider.kt b/KinoTronProvider/src/main/kotlin/com/lagradost/KinoTronProvider.kt index 9d4c176..e7beacd 100644 --- a/KinoTronProvider/src/main/kotlin/com/lagradost/KinoTronProvider.kt +++ b/KinoTronProvider/src/main/kotlin/com/lagradost/KinoTronProvider.kt @@ -1,12 +1,25 @@ package com.lagradost import android.util.Log -import com.lagradost.cloudstream3.* -import com.lagradost.models.PlayerJson +import com.lagradost.cloudstream3.Episode +import com.lagradost.cloudstream3.HomePageResponse +import com.lagradost.cloudstream3.LoadResponse +import com.lagradost.cloudstream3.MainAPI +import com.lagradost.cloudstream3.MainPageRequest +import com.lagradost.cloudstream3.SearchResponse +import com.lagradost.cloudstream3.SubtitleFile +import com.lagradost.cloudstream3.TvType +import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.mainPageOf +import com.lagradost.cloudstream3.newHomePageResponse +import com.lagradost.cloudstream3.newMovieLoadResponse +import com.lagradost.cloudstream3.newMovieSearchResponse +import com.lagradost.cloudstream3.newTvSeriesLoadResponse +import com.lagradost.cloudstream3.toRatingInt import com.lagradost.cloudstream3.utils.AppUtils import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.M3u8Helper -import com.lagradost.cloudstream3.utils.Qualities +import com.lagradost.models.PlayerJson import org.jsoup.nodes.Element class KinoTronProvider : MainAPI() { @@ -80,7 +93,7 @@ class KinoTronProvider : MainAPI() { // Parse info val title = document.select(".full h1").text() val poster = mainUrl + document.select(".img-box img").attr("data-src") - var tags = document.select(".flist li")[2].select("a").map { it.text() } + val tags = document.select(".flist li")[2].select("a").map { it.text() } val year = document.select(".flist li")[0].select("a").text().toIntOrNull() @@ -99,14 +112,13 @@ class KinoTronProvider : MainAPI() { val rating = document.selectFirst(".fqualityimdb")?.text().toRatingInt() // Parse episodes - var episodes: List = emptyList() + val episodes = mutableListOf() val playerUrl = document.select("div.video-box iframe").attr("data-src") if (playerUrl.contains("/vod/")) { tvType = TvType.Movie } Log.d("load-debug", playerUrl) // Return to app // Parse Episodes as Series return if (tvType == TvType.TvSeries || tvType == TvType.Anime) { - var episodes: List = emptyList() val playerRawJson = app.get(playerUrl).document.select("script").html() .substringAfterLast("file:\'") .substringBefore("\',") @@ -114,7 +126,7 @@ class KinoTronProvider : MainAPI() { AppUtils.tryParseJson>(playerRawJson)?.map { dubs -> // Dubs for(season in dubs.folder){ // Seasons for(episode in season.folder){ // Episodes - episodes = episodes.plus( + episodes.add( Episode( "${season.title}, ${episode.title}, $playerUrl", episode.title, diff --git a/KinoVezhaProvider/build.gradle.kts b/KinoVezhaProvider/build.gradle.kts index f51d839..a0a3e85 100644 --- a/KinoVezhaProvider/build.gradle.kts +++ b/KinoVezhaProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 1 +version = 2 cloudstream { diff --git a/KinoVezhaProvider/src/main/kotlin/com/lagradost/KinoVezhaProvider.kt b/KinoVezhaProvider/src/main/kotlin/com/lagradost/KinoVezhaProvider.kt index c44036f..6f491b2 100644 --- a/KinoVezhaProvider/src/main/kotlin/com/lagradost/KinoVezhaProvider.kt +++ b/KinoVezhaProvider/src/main/kotlin/com/lagradost/KinoVezhaProvider.kt @@ -88,13 +88,12 @@ class KinoVezhaProvider : MainAPI() { val rating = document.selectFirst(".dd-imdb-colours")?.text().toRatingInt() // Parse episodes - var episodes: List = emptyList() + val episodes = mutableListOf() val playerUrl = document.select(".video-responsive > iframe").attr("src") // Return to app // Parse Episodes as Series return if (tvType == TvType.TvSeries) { - var episodes: List = emptyList() val playerRawJson = app.get(playerUrl).document.select("script").html() .substringAfterLast("file:\'") .substringBefore("\',") @@ -102,7 +101,7 @@ class KinoVezhaProvider : MainAPI() { AppUtils.tryParseJson>(playerRawJson)?.map { dubs -> // Dubs for(season in dubs.folder){ // Seasons for(episode in season.folder){ // Episodes - episodes = episodes.plus( + episodes.add( Episode( "${season.title}, ${episode.title}, $playerUrl", episode.title, diff --git a/KlonTVProvider/build.gradle.kts b/KlonTVProvider/build.gradle.kts index 1c6bc61..6ee627b 100644 --- a/KlonTVProvider/build.gradle.kts +++ b/KlonTVProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 1 +version = 2 cloudstream { diff --git a/KlonTVProvider/src/main/kotlin/com/lagradost/KlonTVProvider.kt b/KlonTVProvider/src/main/kotlin/com/lagradost/KlonTVProvider.kt index b406033..1d4b959 100644 --- a/KlonTVProvider/src/main/kotlin/com/lagradost/KlonTVProvider.kt +++ b/KlonTVProvider/src/main/kotlin/com/lagradost/KlonTVProvider.kt @@ -124,7 +124,7 @@ class KlonTVProvider : MainAPI() { // Return to app // Parse Episodes as Series return if (tvType != TvType.Movie) { - var episodes: List = emptyList() + val episodes = mutableListOf() val playerRawJson = app.get(playerUrl).document.select("script").html() .substringAfterLast("file:\'") .substringBefore("\',") @@ -132,7 +132,7 @@ class KlonTVProvider : MainAPI() { tryParseJson>(playerRawJson)?.map { dubs -> // Dubs for(season in dubs.folder){ // Seasons for(episode in season.folder){ // Episodes - episodes = episodes.plus( + episodes.add( Episode( "${season.title}, ${episode.title}, $playerUrl", episode.title, diff --git a/SerialnoProvider/build.gradle.kts b/SerialnoProvider/build.gradle.kts index 3e7c0e3..404135d 100644 --- a/SerialnoProvider/build.gradle.kts +++ b/SerialnoProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 1 +version = 2 cloudstream { diff --git a/SerialnoProvider/src/main/kotlin/com/lagradost/SerialnoProvider.kt b/SerialnoProvider/src/main/kotlin/com/lagradost/SerialnoProvider.kt index dc4a624..06b0baf 100644 --- a/SerialnoProvider/src/main/kotlin/com/lagradost/SerialnoProvider.kt +++ b/SerialnoProvider/src/main/kotlin/com/lagradost/SerialnoProvider.kt @@ -1,12 +1,23 @@ package com.lagradost -import android.util.Log -import com.lagradost.cloudstream3.* -import com.lagradost.models.PlayerJson +import com.lagradost.cloudstream3.Episode +import com.lagradost.cloudstream3.HomePageResponse +import com.lagradost.cloudstream3.LoadResponse +import com.lagradost.cloudstream3.MainAPI +import com.lagradost.cloudstream3.MainPageRequest +import com.lagradost.cloudstream3.SearchResponse +import com.lagradost.cloudstream3.SubtitleFile +import com.lagradost.cloudstream3.TvType +import com.lagradost.cloudstream3.app +import com.lagradost.cloudstream3.mainPageOf +import com.lagradost.cloudstream3.newHomePageResponse +import com.lagradost.cloudstream3.newMovieSearchResponse +import com.lagradost.cloudstream3.newTvSeriesLoadResponse +import com.lagradost.cloudstream3.toRatingInt import com.lagradost.cloudstream3.utils.AppUtils import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.M3u8Helper -import com.lagradost.cloudstream3.utils.Qualities +import com.lagradost.models.PlayerJson import org.jsoup.nodes.Element class SerialnoProvider : MainAPI() { @@ -81,20 +92,21 @@ class SerialnoProvider : MainAPI() { val title = document.select(".full h1").text() val poster = document.select(".fposter a").attr("href") + val tags = mutableListOf() // Can be smaller if (generalInfo.size > 4) { - var tags = document.select(".flist li")[4].select("a").map { it.text() } + document.select(".flist li")[4].select("a").map { tags.add(it.text()) } } else { - var tags = document.select(".flist li")[3].select("a").map { it.text() } + document.select(".flist li")[3].select("a").map { tags.add(it.text()) } } val year = document.select(".flist li")[1].select("a").text().toIntOrNull() - var tvType = TvType.TvSeries + val tvType = TvType.TvSeries val description = document.select(".full-text").text() // val author = someInfo.select("strong:contains(Студія:)").next().html() val rating = document.selectFirst(".th-voice")?.text().toRatingInt() // Parse episodes - var episodes: List = emptyList() + val episodes = mutableListOf() val playerUrl = document.select("div.video-box iframe").attr("src") // Return to app @@ -106,7 +118,7 @@ class SerialnoProvider : MainAPI() { AppUtils.tryParseJson>(playerRawJson)?.map { dubs -> // Dubs for (season in dubs.folder) { // Seasons for (episode in season.folder) { // Episodes - episodes = episodes.plus( + episodes.add( Episode( "${season.title}, ${episode.title}, $playerUrl", episode.title, diff --git a/UASerialProvider/build.gradle.kts b/UASerialProvider/build.gradle.kts index b0afe87..ac04ad6 100644 --- a/UASerialProvider/build.gradle.kts +++ b/UASerialProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 3 +version = 4 dependencies { implementation("com.google.code.gson:gson:2.9.0") diff --git a/UASerialProvider/src/main/kotlin/com/lagradost/UASerialProvider.kt b/UASerialProvider/src/main/kotlin/com/lagradost/UASerialProvider.kt index 53e8617..0d9cb60 100644 --- a/UASerialProvider/src/main/kotlin/com/lagradost/UASerialProvider.kt +++ b/UASerialProvider/src/main/kotlin/com/lagradost/UASerialProvider.kt @@ -1,11 +1,8 @@ package com.lagradost -import android.annotation.SuppressLint -import android.util.Log import com.google.gson.Gson import com.lagradost.cloudstream3.* import com.lagradost.cloudstream3.LoadResponse.Companion.addActors -import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson import com.lagradost.cloudstream3.utils.ExtractorLink import com.lagradost.cloudstream3.utils.M3u8Helper import com.lagradost.models.GeneralInfo @@ -36,7 +33,7 @@ class UASerialProvider : MainAPI() { page: Int, request: MainPageRequest ): HomePageResponse { - var document = app.get(request.data.format(page)).document + val document = app.get(request.data.format(page)).document val home = document.select(".row .col").map { it.toSearchResponse() @@ -57,7 +54,7 @@ class UASerialProvider : MainAPI() { override suspend fun search(query: String): List { val document = app.post( - url = "$mainUrl", + url = mainUrl, data = mapOf( "do" to "search", "subaction" to "search", @@ -77,9 +74,9 @@ class UASerialProvider : MainAPI() { val titleJson = Gson().fromJson(document.select("script[type*=json]").html(), GeneralInfo::class.java) if(titleJson.type == "Movie"){ - val titleJson = Gson().fromJson(document.select("script[type*=json]").html(), GeneralInfoMovie::class.java) + val titleJsonMovie = Gson().fromJson(document.select("script[type*=json]").html(), GeneralInfoMovie::class.java) // Parse info for Serials - val title = titleJson.name + val title = titleJsonMovie.name val poster = mainUrl + document.selectFirst("img.cover")?.attr("src") val tags = document.select("div.genre div a").map { it.text() } val year = document.select("div.release div a").text().toIntOrNull() @@ -87,7 +84,7 @@ class UASerialProvider : MainAPI() { val tvType = TvType.Movie val description = document.selectFirst(".text")?.text()?.trim() val rating = document.select("div.rating__item--imdb div.number").text().toRatingInt() - val actors = titleJson.actor.map { it.name } + val actors = titleJsonMovie.actor.map { it.name } return newMovieLoadResponse(title, url, tvType, url) { this.posterUrl = poster @@ -110,13 +107,13 @@ class UASerialProvider : MainAPI() { val actors = titleJson.partOfTVSeries.actor.map { it.name } - var episodes: List = emptyList() + val episodes = mutableListOf() titleJson.partOfTVSeries.containsSeason.map { season -> val documentSeason = app.get(season.url).document season.episode.map { episode -> var episodeName = documentSeason.select("div[data-episode-id=${episode.episodeNumber}] div.name").text().replaceFirstChar { it.uppercase() } if (episodeName.isBlank()) { episodeName = episode.name.replaceFirstChar { it.uppercase() } } - episodes = episodes.plus( + episodes.add( Episode( "${season.url}, ${episode.episodeNumber}", episodeName, diff --git a/UFDubProvider/build.gradle.kts b/UFDubProvider/build.gradle.kts index e35ba64..d06232c 100644 --- a/UFDubProvider/build.gradle.kts +++ b/UFDubProvider/build.gradle.kts @@ -1,5 +1,5 @@ // use an integer for version numbers -version = 1 +version = 2 cloudstream { diff --git a/UFDubProvider/src/main/kotlin/com/lagradost/UFDubProvider.kt b/UFDubProvider/src/main/kotlin/com/lagradost/UFDubProvider.kt index 0a2b7f6..e75c7e9 100644 --- a/UFDubProvider/src/main/kotlin/com/lagradost/UFDubProvider.kt +++ b/UFDubProvider/src/main/kotlin/com/lagradost/UFDubProvider.kt @@ -83,7 +83,7 @@ class UFDubProvider : MainAPI() { // Parse info val title = document.select("h1.top-title").text() val poster = mainUrl + document.select("div.f-poster img").attr("src") - var tags = emptyList() + val tags = mutableListOf() val year = someInfo.select("strong:contains(Рік випуску аніме:)").next().html().toIntOrNull() // TODO: Check type by url @@ -101,7 +101,7 @@ class UFDubProvider : MainAPI() { ele -> when (ele.select("span").text()) { //"Студія:" -> tags = ele.select("a").text().split(" / ") - "Жанр:" -> ele.select("a").map { tags = tags.plus(it.text()) } + "Жанр:" -> ele.select("a").map { tags.add(it.text()) } } }