diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 702406c7..a5b6182c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -128,10 +128,10 @@ - + - + diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/AltadefinizioneProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/AltadefinizioneProvider.kt index 63015bd1..a08a3ea0 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/AltadefinizioneProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/AltadefinizioneProvider.kt @@ -18,8 +18,9 @@ class AltadefinizioneProvider : MainAPI() { ) override val mainPage = mainPageOf( - Pair("$mainUrl/azione/page/", "Azione"), - Pair("$mainUrl/avventura/page/", "Avventura"), + Pair("$mainUrl/cerca/anno/2022/page/", "Ultimi Film"), + Pair("$mainUrl/cerca/openload-quality/HD/page/", "Film in HD"), + Pair("$mainUrl/cinema/page/", "Ora al cinema") ) override suspend fun getMainPage( diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CineblogProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CineblogProvider.kt index f843fce0..d8c110f7 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CineblogProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/CineblogProvider.kt @@ -16,60 +16,37 @@ class CineblogProvider : MainAPI() { TvType.Movie, TvType.TvSeries, ) + override val mainPage = mainPageOf( + Pair("$mainUrl/popolari/page/number/?get=movies", "Film Popolari"), + Pair("$mainUrl/popolari/page/number/?get=tv", "Serie Tv Popolari"), + Pair("$mainUrl/i-piu-votati/page/number/?get=movies", "Film più votati"), + Pair("$mainUrl/i-piu-votati/page/number/?get=tv", "Serie Tv più votate"), + Pair("$mainUrl/anno/2022/page/number", "Ultime uscite"), + ) - override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { - val items = ArrayList() - val urls = listOf( - Pair("$mainUrl/genere/azione/", "Azione"), - Pair("$mainUrl/genere/avventura/", "Avventura"), - ) - for ((url, name) in urls) { - try { - val soup = app.get(url).document - val home = soup.select("article.item.movies").map { - val title = it.selectFirst("div.data > h3 > a")!!.text().substringBefore("(") - val link = it.selectFirst("div.poster > a")!!.attr("href") - val quality = getQualityFromString(it.selectFirst("span.quality")?.text()) - TvSeriesSearchResponse( - title, - link, - this.name, - TvType.Movie, - it.selectFirst("img")!!.attr("src"), - null, - null, - quality = quality - ) - } - - items.add(HomePageList(name, home)) - } catch (e: Exception) { - logError(e) - } + override suspend fun getMainPage( + page: Int, + categoryName: String, + categoryData: String + ): HomePageResponse { + val url = categoryData.replace("number", page.toString()) + val soup = app.get(url, referer = url.substringBefore("page")).document + val home = soup.select("article.item").map { + val title = it.selectFirst("div.data > h3 > a")!!.text().substringBefore("(") + val link = it.selectFirst("div.poster > a")!!.attr("href") + val quality = getQualityFromString(it.selectFirst("span.quality")?.text()) + TvSeriesSearchResponse( + title, + link, + this.name, + TvType.Movie, + it.selectFirst("img")!!.attr("src"), + null, + null, + quality = quality + ) } - try { - val soup = app.get("$mainUrl/serietv/").document - val home = soup.select("article.item.tvshows").map { - val title = it.selectFirst("div.data > h3 > a")!!.text().substringBefore("(") - val link = it.selectFirst("div.poster > a")!!.attr("href") - TvSeriesSearchResponse( - title, - link, - this.name, - TvType.Movie, - it.selectFirst("img")!!.attr("src"), - null, - null, - ) - } - - items.add(HomePageList("Serie tv", home)) - } catch (e: Exception) { - logError(e) - } - - if (items.size <= 0) throw ErrorLoadingException() - return HomePageResponse(items) + return newHomePageResponse(categoryName, home) } override suspend fun search(query: String): List { diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/FilmpertuttiProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/FilmpertuttiProvider.kt index 830ecef1..d5944993 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/FilmpertuttiProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/FilmpertuttiProvider.kt @@ -7,6 +7,7 @@ import com.lagradost.cloudstream3.LoadResponse.Companion.addTrailer import com.lagradost.cloudstream3.utils.AppUtils.toJson import com.lagradost.cloudstream3.utils.AppUtils.tryParseJson import com.lagradost.cloudstream3.utils.ExtractorLink +import com.lagradost.cloudstream3.utils.ShortLink import com.lagradost.cloudstream3.utils.loadExtractor import com.lagradost.nicehttp.NiceResponse import org.jsoup.nodes.Element @@ -14,7 +15,7 @@ import org.jsoup.nodes.Element class FilmpertuttiProvider : MainAPI() { override var lang = "it" - override var mainUrl = "https://filmpertutti.love" + override var mainUrl = "https://filmpertutti.photo" override var name = "Filmpertutti" override val hasMainPage = true override val hasChromecastSupport = true @@ -24,9 +25,9 @@ class FilmpertuttiProvider : MainAPI() { ) override val mainPage = mainPageOf( - Pair("$mainUrl/category/serie-tv/page/", "Serie Tv"), - Pair("$mainUrl/category/film/azione/page/", "Azione"), - Pair("$mainUrl/category/film/avventura/page/", "Avventura"), + Pair("$mainUrl/category/film/page/", "Film Popolari"), + Pair("$mainUrl/category/serie-tv/page/", "Serie Tv Popolari"), + Pair("$mainUrl/prime-visioni/", "Ultime uscite"), ) override suspend fun getMainPage( @@ -178,56 +179,6 @@ class FilmpertuttiProvider : MainAPI() { } } - // to be updated when UnshortenUrl is ready - suspend fun unshorten_linkup(uri: String): String { - var r: NiceResponse? = null - var uri = uri - when { - uri.contains("/tv/") -> uri = uri.replace("/tv/", "/tva/") - uri.contains("delta") -> uri = uri.replace("/delta/", "/adelta/") - (uri.contains("/ga/") || uri.contains("/ga2/")) -> uri = - base64Decode(uri.split('/').last()).trim() - uri.contains("/speedx/") -> uri = - uri.replace("http://linkup.pro/speedx", "http://speedvideo.net") - else -> { - r = app.get(uri, allowRedirects = true) - uri = r.url - val link = - Regex("]*src=\\'([^'>]*)\\'[^<>]*>").find(r.text)?.value - ?: Regex("""action="(?:[^/]+.*?/[^/]+/([a-zA-Z0-9_]+))">""").find(r.text)?.value - ?: Regex("""href","((.|\\n)*?)"""").findAll(r.text) - .elementAtOrNull(1)?.groupValues?.get(1) - - if (link != null) { - uri = link - } - } - } - - val short = Regex("""^https?://.*?(https?://.*)""").find(uri)?.value - if (short != null) { - uri = short - } - if (r == null) { - r = app.get( - uri, - allowRedirects = false - ) - if (r.headers["location"] != null) { - uri = r.headers["location"].toString() - } - } - if (uri.contains("snip.")) { - if (uri.contains("out_generator")) { - uri = Regex("url=(.*)\$").find(uri)!!.value - } else if (uri.contains("/decode/")) { - uri = app.get(uri, allowRedirects = true).url - } - } - return uri - } - - override suspend fun loadLinks( data: String, isCasting: Boolean, @@ -235,16 +186,8 @@ class FilmpertuttiProvider : MainAPI() { callback: (ExtractorLink) -> Unit ): Boolean { tryParseJson>(data)?.apmap { id -> - if (id.contains("buckler")) { - val id2 = unshorten_linkup(id).trim().replace("/v/", "/e/").replace("/f/", "/e/") - loadExtractor(id2, data, subtitleCallback, callback) - } else if (id.contains("isecure")) { - val doc1 = app.get(id).document - val id2 = doc1.selectFirst("iframe")!!.attr("src") - loadExtractor(id2, data, subtitleCallback, callback) - } else { - loadExtractor(id, data, subtitleCallback, callback) - } + val link = ShortLink.unshorten(id).trim().replace("/v/", "/e/").replace("/f/", "/e/") + loadExtractor(link, data, subtitleCallback, callback) } return true } diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/StreamingcommunityProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/StreamingcommunityProvider.kt index 27788444..e22918f8 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/StreamingcommunityProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/StreamingcommunityProvider.kt @@ -177,7 +177,7 @@ class StreamingcommunityProvider : MainAPI() { override suspend fun getMainPage(page: Int, categoryName: String, categoryData: String): HomePageResponse { val items = ArrayList() val document = app.get(mainUrl).document - document.select("slider-title").subList(0, 6).map { it -> + document.select("slider-title").subList(0, 3).map { it -> if (it.attr("slider-name") != "In arrivo") { val films = it.attr("titles-json") val lista = mutableListOf() diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/TantiFilmProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/TantiFilmProvider.kt index 2bc341c3..eb8fff50 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/TantiFilmProvider.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/TantiFilmProvider.kt @@ -8,7 +8,7 @@ import com.lagradost.cloudstream3.utils.loadExtractor class TantifilmProvider : MainAPI() { override var lang = "it" - override var mainUrl = "https://www.tantifilm.nl" + override var mainUrl = "https://tantifilm.autos" override var name = "Tantifilm" override val hasMainPage = true override val hasChromecastSupport = true @@ -18,9 +18,9 @@ class TantifilmProvider : MainAPI() { ) override val mainPage = mainPageOf( - Pair("$mainUrl/watch-genre/serie-tv/page/", "Serie Tv"), - Pair("$mainUrl/watch-genre/azione/page/", "Azione"), - Pair("$mainUrl/watch-genre/avventura/page/", "Avventura"), + Pair("$mainUrl/watch-genre/al-cinema/page/", "Ultimi Film"), + Pair("$mainUrl/serie-tv/page/", "Ultime Serie Tv"), + Pair("$mainUrl/watch-genre/film-aggiornati/page/", "Ultimi Film Aggiornati"), ) override suspend fun getMainPage( diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/UnshortenUrl.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/UnshortenUrl.kt index d0d3298d..f8902670 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/UnshortenUrl.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/UnshortenUrl.kt @@ -30,6 +30,7 @@ object ShortLink { private val nuovoLinkRegex = """nuovolink\.com""" private val uprotRegex = """uprot\.net""" private val davisonbarkerRegex = """davisonbarker\.pro|lowrihouston\.pro""" + private val isecureRegex = """isecure\.link""" private val shortList = listOf( ShortUrl(adflyRegex, "adfly", ::unshortenAdfly), @@ -39,6 +40,7 @@ object ShortLink { ShortUrl(nuovoLinkRegex, "nuovolink", ::unshortenNuovoLink), ShortUrl(uprotRegex, "uprot", ::unshortenUprot), ShortUrl(davisonbarkerRegex, "uprot", ::unshortenDavisonbarker), + ShortUrl(isecureRegex, "isecure", ::unshortenIsecure), ) fun isShortLink(url: String): Boolean { @@ -187,4 +189,8 @@ object ShortLink { fun unshortenDavisonbarker(uri: String): String { return URLDecoder.decode(uri.substringAfter("dest=")) } + suspend fun unshortenIsecure(uri: String): String { + val doc = app.get(uri).document + return doc.selectFirst("iframe")?.attr("src")?.trim()?: uri + } } \ No newline at end of file diff --git a/docs/providers.json b/docs/providers.json index ef223c59..d467c81e 100644 --- a/docs/providers.json +++ b/docs/providers.json @@ -222,7 +222,7 @@ "language": "it", "name": "Filmpertutti", "status": 1, - "url": "https://filmpertutti.love" + "url": "https://filmpertutti.photo" }, "FmoviesToProvider": { "language": "en", @@ -502,7 +502,7 @@ "language": "it", "name": "Tantifilm", "status": 1, - "url": "https://www.tantifilm.nl" + "url": "https://tantifilm.autos" }, "TenshiProvider": { "language": "en",