diff --git a/Moviehab/src/main/kotlin/com/hexated/Moviehab.kt b/Moviehab/src/main/kotlin/com/hexated/Moviehab.kt index fdc78ed1..b5fc674f 100644 --- a/Moviehab/src/main/kotlin/com/hexated/Moviehab.kt +++ b/Moviehab/src/main/kotlin/com/hexated/Moviehab.kt @@ -30,6 +30,7 @@ class Moviehab : MainAPI() { "$mainUrl/library/movies?sort_by=imdb_rate&page=" to "Movies by IMDB Rating", "$mainUrl/library/shows?&sort_by=imdb_rate&page=" to "TV Shows by IMDB Rating", "$mainUrl/library/movies?&sort_by=year&page=" to "New Movies", + "$mainUrl/trending/movies" to "Trending", "$mainUrl/library/shows?&sort_by=year&page=" to "New TV Shows", "$mainUrl/library/movies?country=Philippines&sort_by=year&page=" to "New Philippines Movies", "$mainUrl/library/shows?&country=Philippines&sort_by=year&page=" to "New Philippines TV Shows", diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index d1ab0f5e..151d8c53 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -1311,10 +1311,8 @@ object SoraExtractor : SoraStream() { val script = if (scriptData.size == 1) { scriptData.firstOrNull() } else { - scriptData.find { it.first.equals("$title ($year)", true) } ?: scriptData.find { - it.first.contains( - "$title", true - ) && it.second == "$year" + scriptData.find { + it.first.contains(Regex("(?i)$title \\($year\\s?\\)")) && if(season!=null) it.third?.contains("-tvshow-") == true else it.third?.contains("-movie-") == true } } @@ -1945,46 +1943,6 @@ object SoraExtractor : SoraStream() { } - suspend fun invokeMovies123( - title: String? = null, - year: Int? = null, - season: Int? = null, - episode: Int? = null, - callback: (ExtractorLink) -> Unit, - ) { - invokeGpress( - title, - year, - season, - episode, - callback, - movies123API, - "Movies123", - "mouCgDQMxDwt", - "moFHVogrVLMH" - ) - } - - suspend fun invokeGomovies( - title: String? = null, - year: Int? = null, - season: Int? = null, - episode: Int? = null, - callback: (ExtractorLink) -> Unit, - ) { - invokeGpress( - title, - year, - season, - episode, - callback, - gomoviesAPI, - "Gomovies", - "_smQamBQsETb", - "_sBWcqbTBMaT" - ) - } - private suspend fun invokeGpress( title: String? = null, year: Int? = null, @@ -2353,7 +2311,7 @@ object SoraExtractor : SoraStream() { episode: Int? = null, callback: (ExtractorLink) -> Unit, ) { - invokeHindi(momentAPI, "https://hdmovies4u.green", imdbId, season, episode, callback) + invokeHindi(momentAPI, "https://hdmovies4u.band", imdbId, season, episode, callback) } private suspend fun invokeHindi( @@ -2461,49 +2419,6 @@ object SoraExtractor : SoraStream() { } - suspend fun invokeJump1( - tmdbId: Int? = null, - tvdbId: Int? = null, - title: String? = null, - year: Int? = null, - season: Int? = null, - episode: Int? = null, - callback: (ExtractorLink) -> Unit, - ) { - val referer = "https://jump1.net/" - val res = if (season == null) { - val body = - """{"filters":[{"type":"slug","args":{"slugs":["${title.createSlug()}-$year"]}}],"sort":"addedRecent","skip":0,"limit":100}""".toRequestBody( - RequestBodyTypes.JSON.toMediaTypeOrNull() - ) - app.post("$jump1API/api/movies", requestBody = body, referer = referer) - } else { - app.get("$jump1API/api/shows/$tvdbId/seasons", referer = referer) - }.text - - val source = if (season == null) { - tryParseJson(res)?.movies?.find { it.id == tmdbId }?.videoId - } else { - val jumpSeason = - tryParseJson>(res)?.find { it.seasonNumber == season }?.id - val seasonRes = app.get( - "$jump1API/api/shows/seasons/${jumpSeason ?: return}/episodes", referer = referer - ) - tryParseJson>(seasonRes.text)?.find { it.episodeNumber == episode }?.videoId - } - - callback.invoke( - ExtractorLink( - "Jump1", - "Jump1", - "$jump1API/hls/${source ?: return}/master.m3u8?ts=${unixTimeMS}", - referer, - Qualities.P1080.value, - true - ) - ) - } - suspend fun invokeSFMovies( tmdbId: Int? = null, title: String? = null, diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt b/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt index ac8c2b17..27095a67 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraParser.kt @@ -72,21 +72,6 @@ data class KisskhResults( @JsonProperty("title") val title: String?, ) -data class Jump1Episodes( - @JsonProperty("id") val id: Any? = null, - @JsonProperty("episodeNumber") val episodeNumber: Int? = null, - @JsonProperty("videoId") val videoId: String? = null, -) - -data class Jump1Season( - @JsonProperty("seasonNumber") val seasonNumber: Int? = null, - @JsonProperty("id") val id: String? = null, -) - -data class Jump1Movies( - @JsonProperty("movies") val movies: ArrayList? = arrayListOf(), -) - data class DriveBotLink( @JsonProperty("url") val url: String? = null, ) diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt index f44345c7..f727b495 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt @@ -34,12 +34,9 @@ import com.hexated.SoraExtractor.invokeSmashyStream import com.hexated.SoraExtractor.invokeDumpStream import com.hexated.SoraExtractor.invokeEmovies import com.hexated.SoraExtractor.invokeHdmovies4u -import com.hexated.SoraExtractor.invokeJump1 import com.hexated.SoraExtractor.invokeMoment import com.hexated.SoraExtractor.invokeMultimovies import com.hexated.SoraExtractor.invokeNetmovies -import com.hexated.SoraExtractor.invokeGomovies -import com.hexated.SoraExtractor.invokeMovies123 import com.hexated.SoraExtractor.invokeSFMovies import com.hexated.SoraExtractor.invokeShowflix import com.hexated.SoraExtractor.invokeTvMovies @@ -111,18 +108,15 @@ open class SoraStream : TmdbProvider() { const val emoviesAPI = "https://emovies.si" const val multimoviesAPI = "https://multimovies.info" const val netmoviesAPI = "https://netmovies.to" - const val momentAPI = "https://moment-explanation-i-244.site" + const val momentAPI = "https://izzillent-dickstonyx-i-262.site" const val doomoviesAPI = "https://doomovies.net" const val vidsrctoAPI = "https://vidsrc.to" const val dramadayAPI = "https://dramaday.me" const val animetoshoAPI = "https://animetosho.org" - const val movies123API = "https://new-movies123.link" - const val jump1API = "https://ca.jump1.net" const val vegaMoviesAPI = "https://vegamovies.care" const val hdmovies4uAPI = "https://hdmovies4u.name" const val watchflxAPI = "https://watchflx.tv" - const val gomoviesAPI = "https://gomovies-online.cam" - const val dotmoviesAPI = "https://dotmovies.yachts" + const val dotmoviesAPI = "https://dotmovies.tattoo" const val blackvidAPI = "https://prod.api.blackvid.space" const val showflixAPI = "https://showflix.online" const val dahmerMoviesAPI = "https://edytjedhgmdhm.abfhaqrhbnf.workers.dev" @@ -565,24 +559,6 @@ open class SoraStream : TmdbProvider() { callback ) }, - { - if (!res.isAnime) invokeGomovies( - res.title, - res.year, - res.season, - res.episode, - callback - ) - }, - { - if (!res.isAnime) invokeMovies123( - res.title, - res.year, - res.season, - res.episode, - callback - ) - }, { invokeWatchOnline( res.imdbId, @@ -676,17 +652,6 @@ open class SoraStream : TmdbProvider() { { if (!res.isAnime) invoke2embed(res.imdbId, res.season, res.episode, subtitleCallback, callback) }, - { - if (!res.isAnime) invokeJump1( - res.id, - res.tvdbId, - res.title, - res.year, - res.season, - res.episode, - callback - ) - }, { if (!res.isAnime) invokeHdmovies4u( res.title, diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt index eaf0db00..d20ff4d1 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStreamLite.kt @@ -22,12 +22,9 @@ import com.hexated.SoraExtractor.invokeRidomovies import com.hexated.SoraExtractor.invokeSmashyStream import com.hexated.SoraExtractor.invokeDumpStream import com.hexated.SoraExtractor.invokeEmovies -import com.hexated.SoraExtractor.invokeJump1 import com.hexated.SoraExtractor.invokeMoment import com.hexated.SoraExtractor.invokeMultimovies import com.hexated.SoraExtractor.invokeNetmovies -import com.hexated.SoraExtractor.invokeGomovies -import com.hexated.SoraExtractor.invokeMovies123 import com.hexated.SoraExtractor.invokeSFMovies import com.hexated.SoraExtractor.invokeShowflix import com.hexated.SoraExtractor.invokeVidSrc @@ -53,9 +50,6 @@ class SoraStreamLite : SoraStream() { val res = AppUtils.parseJson(data) argamap( - { - if(!res.isAnime) invokeJump1(res.id,res.tvdbId,res.title,res.year,res.season,res.episode,callback) - }, { if (!res.isAnime) invokeBlackvid( res.id, @@ -203,12 +197,6 @@ class SoraStreamLite : SoraStream() { { if (!res.isAnime) invokeFlixon(res.id, res.imdbId, res.season, res.episode, callback) }, - { - if (!res.isAnime) invokeGomovies(res.title, res.year, res.season, res.episode, callback) - }, - { - if (!res.isAnime) invokeMovies123(res.title, res.year, res.season, res.episode, callback) - }, { invokeWatchOnline( res.imdbId, diff --git a/build.gradle.kts b/build.gradle.kts index 6311437a..f78b761e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -79,7 +79,7 @@ subprojects { // https://github.com/recloudstream/cloudstream/blob/master/app/build.gradle implementation(kotlin("stdlib")) // adds standard kotlin features, like listOf, mapOf etc implementation("com.github.Blatzar:NiceHttp:0.4.4") // http library - implementation("org.jsoup:jsoup:1.15.3") // html parser + implementation("org.jsoup:jsoup:1.16.1") // html parser implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.1") implementation("io.karn:khttp-android:0.1.2") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") // html parser