feat(es/AnimeOnlineNinja): Use filemoon extractor + some fixes (#2046)
This commit is contained in:
parent
581c577c73
commit
bed46c03e6
@ -18,11 +18,12 @@ class FilemoonExtractor(private val client: OkHttpClient) {
|
||||
fun videosFromUrl(url: String, prefix: String = "Filemoon - ", headers: Headers? = null): List<Video> {
|
||||
return runCatching {
|
||||
val doc = client.newCall(GET(url)).execute().asJsoup()
|
||||
val jsEval = doc.selectFirst("script:containsData(eval)")!!.data()
|
||||
val jsEval = doc.selectFirst("script:containsData(eval):containsData(m3u8)")!!.data()
|
||||
val unpacked = JsUnpacker.unpackAndCombine(jsEval).orEmpty()
|
||||
val masterUrl = unpacked.takeIf(String::isNotBlank)
|
||||
?.substringAfter("{file:\"")
|
||||
?.substringBefore("\"}")
|
||||
?.substringAfter("{file:\"", "")
|
||||
?.substringBefore("\"}", "")
|
||||
?.takeIf(String::isNotBlank)
|
||||
?: return emptyList()
|
||||
|
||||
val masterPlaylist = client.newCall(GET(masterUrl)).execute().body.string()
|
||||
|
@ -1,5 +1,6 @@
|
||||
dependencies {
|
||||
implementation(project(':lib-streamtape-extractor'))
|
||||
implementation(project(':lib-dood-extractor'))
|
||||
implementation(project(':lib-filemoon-extractor'))
|
||||
implementation(project(':lib-mixdrop-extractor'))
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.UploadE
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
|
||||
import eu.kanade.tachiyomi.lib.filemoonextractor.FilemoonExtractor
|
||||
import eu.kanade.tachiyomi.lib.mixdropextractor.MixDropExtractor
|
||||
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
|
||||
import eu.kanade.tachiyomi.multisrc.dooplay.DooPlay
|
||||
@ -21,7 +22,7 @@ import uy.kohesive.injekt.api.get
|
||||
class AnimeOnlineNinja : DooPlay(
|
||||
"es",
|
||||
"AnimeOnline.Ninja",
|
||||
"https://www1.animeonline.ninja",
|
||||
"https://ww3.animeonline.ninja",
|
||||
) {
|
||||
override val client by lazy {
|
||||
if (preferences.getBoolean(PREF_VRF_INTERCEPT_KEY, PREF_VRF_INTERCEPT_DEFAULT)) {
|
||||
@ -109,20 +110,28 @@ class AnimeOnlineNinja : DooPlay(
|
||||
}
|
||||
}
|
||||
|
||||
private val filemoonExtractor by lazy { FilemoonExtractor(client) }
|
||||
private val doodExtractor by lazy { DoodExtractor(client) }
|
||||
private val streamTapeExtractor by lazy { StreamTapeExtractor(client) }
|
||||
private val mixDropExtractor by lazy { MixDropExtractor(client) }
|
||||
private val uqloadExtractor by lazy { UploadExtractor(client) }
|
||||
|
||||
private fun extractVideos(url: String, lang: String): List<Video> {
|
||||
return when {
|
||||
"saidochesto.top" in url || "MULTISERVER" in lang.uppercase() ->
|
||||
extractFromMulti(url)
|
||||
"filemoon" in url ->
|
||||
filemoonExtractor.videosFromUrl(url, "$lang Filemoon - ", headers)
|
||||
"dood" in url ->
|
||||
DoodExtractor(client).videoFromUrl(url, "$lang DoodStream", false)
|
||||
doodExtractor.videoFromUrl(url, "$lang DoodStream", false)
|
||||
?.let(::listOf)
|
||||
"streamtape" in url ->
|
||||
StreamTapeExtractor(client).videoFromUrl(url, "$lang StreamTape")
|
||||
streamTapeExtractor.videoFromUrl(url, "$lang StreamTape")
|
||||
?.let(::listOf)
|
||||
"mixdrop" in url ->
|
||||
MixDropExtractor(client).videoFromUrl(url, lang)
|
||||
mixDropExtractor.videoFromUrl(url, lang)
|
||||
"uqload" in url ->
|
||||
UploadExtractor(client).videoFromUrl(url, headers, lang)
|
||||
uqloadExtractor.videoFromUrl(url, headers, lang)
|
||||
?.let(::listOf)
|
||||
"wolfstream" in url -> {
|
||||
client.newCall(GET(url, headers)).execute()
|
||||
|
@ -121,8 +121,10 @@ abstract class DooPlay(
|
||||
|
||||
protected open fun getSeasonEpisodes(season: Element): List<SEpisode> {
|
||||
val seasonName = season.selectFirst("span.se-t")!!.text()
|
||||
return season.select(episodeListSelector()).map { element ->
|
||||
return season.select(episodeListSelector()).mapNotNull { element ->
|
||||
runCatching {
|
||||
episodeFromElement(element, seasonName)
|
||||
}.onFailure { it.printStackTrace() }.getOrNull()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ class DooPlayGenerator : ThemeSourceGenerator {
|
||||
|
||||
override val sources = listOf(
|
||||
SingleLang("AnimeOnline360", "https://animeonline360.me", "en", isNsfw = false),
|
||||
SingleLang("AnimeOnline.Ninja", "https://www1.animeonline.ninja", "es", className = "AnimeOnlineNinja", isNsfw = false, overrideVersionCode = 29),
|
||||
SingleLang("AnimeOnline.Ninja", "https://ww3.animeonline.ninja", "es", className = "AnimeOnlineNinja", isNsfw = false, overrideVersionCode = 30),
|
||||
SingleLang("AnimePlayer", "https://animeplayer.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
||||
SingleLang("AnimePlayer", "https://animeplayer.com.br", "pt-BR", isNsfw = true),
|
||||
SingleLang("AnimeSync", "https://animesync.org", "pt-BR", isNsfw = true),
|
||||
|
Loading…
x
Reference in New Issue
Block a user