diff --git a/SoraStream/build.gradle.kts b/SoraStream/build.gradle.kts index 905055d0..56d9892f 100644 --- a/SoraStream/build.gradle.kts +++ b/SoraStream/build.gradle.kts @@ -1,7 +1,7 @@ import org.jetbrains.kotlin.konan.properties.Properties // use an integer for version numbers -version = 181 +version = 182 android { defaultConfig { diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt index 2267b577..d9bb63ee 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraExtractor.kt @@ -1031,33 +1031,41 @@ object SoraExtractor : SoraStream() { title: String? = null, year: Int? = null, season: Int? = null, + lastSeason: Int? = null, episode: Int? = null, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit ) { - invokeWpredis(title, year, season, episode, subtitleCallback, callback, dotmoviesAPI) + invokeWpredis(title, year, season, lastSeason, episode, subtitleCallback, callback, dotmoviesAPI) } + suspend fun invokeVegamovies( title: String? = null, year: Int? = null, season: Int? = null, + lastSeason: Int? = null, episode: Int? = null, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit ) { - invokeWpredis(title, year, season, episode, subtitleCallback, callback, vegaMoviesAPI) + invokeWpredis(title, year, season, lastSeason, episode, subtitleCallback, callback, vegaMoviesAPI) } private suspend fun invokeWpredis( title: String? = null, year: Int? = null, season: Int? = null, + lastSeason: Int? = null, episode: Int? = null, subtitleCallback: (SubtitleFile) -> Unit, callback: (ExtractorLink) -> Unit, api: String ) { var res = app.get("$api/search/$title").document - val match = if (season == null) "$year" else "Season $season" + val match = when (season) { + null -> "$year" + 1 -> "Season 1" + else -> "Season 1 – $lastSeason" + } val media = res.selectFirst("div.blog-items article:has(h3.entry-title:matches((?i)$title.*$match)) a") ?.attr("href") @@ -1065,7 +1073,9 @@ object SoraExtractor : SoraStream() { res = app.get(media ?: return).document val hTag = if (season == null) "h5" else "h3" val aTag = if (season == null) "Download Now" else "V-Cloud" - res.select("div.entry-content > $hTag:matches(1080p|2160p)").apmap { + val sTag = if (season == null) "" else "Season $season" + res.select("div.entry-content > $hTag:matches((?i)$sTag.*1080p|2160p)"). + filter { element -> !element.text().contains("Download", true) }.apmap { val tags = """(?:1080p|2160p)(.*)""".toRegex().find(it.text())?.groupValues?.get(1)?.trim() val href = @@ -1090,7 +1100,6 @@ object SoraExtractor : SoraStream() { getIndexQuality(it.text()) ) } - } suspend fun invokePobmovies( diff --git a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt index 995509c9..bdcb52f5 100644 --- a/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt +++ b/SoraStream/src/main/kotlin/com/hexated/SoraStream.kt @@ -643,6 +643,7 @@ open class SoraStream : TmdbProvider() { res.title, res.year, res.season, + res.lastSeason, res.episode, subtitleCallback, callback @@ -653,6 +654,7 @@ open class SoraStream : TmdbProvider() { res.title, res.year, res.season, + res.lastSeason, res.episode, subtitleCallback, callback