This commit is contained in:
hexated 2023-09-02 05:48:35 +07:00
parent 62d9783705
commit f511569c34
8 changed files with 137 additions and 33 deletions

View file

@ -1,5 +1,5 @@
// use an integer for version numbers
version = 8
version = 9
cloudstream {

View file

@ -1,8 +1,11 @@
package com.hexated
import com.lagradost.cloudstream3.extractors.Filesim
import com.lagradost.cloudstream3.extractors.Gdriveplayer
import com.lagradost.cloudstream3.extractors.StreamSB
import com.lagradost.cloudstream3.extractors.*
class Doods : DoodLaExtractor() {
override var name = "Doods"
override var mainUrl = "https://doods.pro"
}
class Dutamovie21 : StreamSB() {
override var name = "Dutamovie21"

View file

@ -18,6 +18,7 @@ class GomovPlugin: Plugin() {
registerExtractorAPI(DbGdriveplayer())
registerExtractorAPI(Dutamovie21())
registerExtractorAPI(Embedwish())
registerExtractorAPI(Doods())
registerExtractorAPI(Lylxan())
}
}

View file

@ -26,16 +26,30 @@ class Nodrakorid : DutaMovie() {
is TvSeriesLoadResponse -> {
val doc = app.get(url).document
this.comingSoon = false
this.episodes = doc.select("div.entry-content p:contains(Episode)").distinctBy {
it.text()
}.map { eps ->
val num = eps.text()
val endSibling = eps.nextElementSiblings().select("p:contains(Episode)").firstOrNull() ?: eps.nextElementSiblings().select("div.content-moviedata").firstOrNull()
val siblings = eps.nextElementSiblingsUntil(endSibling).map { ele ->
ele.ownText().filter { it.isDigit() }.toIntOrNull() to ele.select("a")
.map { it.attr("href") to it.text() }
}.filter { it.first != null }
Episode(siblings.toJson(), episode = Regex("Episode\\s?([0-9]+)").find(num)?.groupValues?.getOrNull(1)?.toIntOrNull())
this.episodes = when {
doc.select("div.vid-episodes a, div.gmr-listseries a").isNotEmpty() -> this.episodes
doc.select("div#download").isEmpty() -> {
doc.select("div.entry-content p:contains(Episode)").distinctBy {
it.text()
}.mapNotNull { eps ->
val endSibling = eps.nextElementSiblings().select("p:contains(Episode)").firstOrNull() ?: eps.nextElementSiblings().select("div.content-moviedata").firstOrNull()
val siblings = eps.nextElementSiblingsUntil(endSibling).map { ele ->
ele.ownText().filter { it.isDigit() }.toIntOrNull() to ele.select("a")
.map { it.attr("href") to it.text() }
}.filter { it.first != null }
Episode(siblings.toJson(), episode = eps.text().toEpisode())
}
}
else -> {
doc.select("div#download h3.title-download").mapNotNull { eps ->
val siblings = eps.nextElementSibling()?.select("li")?.map { ele ->
ele.text().filter { it.isDigit() }.toIntOrNull() to ele.select("a").map {
it.attr("href") to it.text().split(" ").first()
}
}?.filter { it.first != null }
Episode(siblings?.toJson() ?: return@mapNotNull null, episode = eps.text().toEpisode())
}
}
}
}
}
@ -83,6 +97,10 @@ class Nodrakorid : DutaMovie() {
}
}
private fun String.toEpisode() : Int? {
return Regex("(?i)Episode\\s?([0-9]+)").find(this)?.groupValues?.getOrNull(1)?.toIntOrNull()
}
private fun getBaseUrl(url: String): String {
return URI(url).let {
"${it.scheme}://${it.host}"