Some changes and fixes [Tioanime] [MonosChinos] [AnimeOnlineNinja] [AnimeFLV] (#653)
* Fix search [Tioanime], fix version [AnimeOnlineNinja]] * fix in MixdropExtractor [AnimeOnlineNinja] * removed a lot of useless tags [AnimeOnlineNinja] * New filters [TioAnime] * fix titles and new server [MonosChinos] * New server (Uqload) [AnimeOnlineNinja]
This commit is contained in:
committed by
GitHub
parent
7cea39140c
commit
2c7e2679d1
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'AnimeFLV'
|
||||
pkgNameSuffix = 'es.animeflv'
|
||||
extClass = '.AnimeFlv'
|
||||
extVersionCode = 21
|
||||
extVersionCode = 22
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ class AnimeFlv : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
|
||||
override val lang = "es"
|
||||
|
||||
override val supportsLatest = true
|
||||
override val supportsLatest = false
|
||||
|
||||
override val client: OkHttpClient = network.cloudflareClient
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'AnimeonlineNinja'
|
||||
pkgNameSuffix = 'es.animeonlineninja'
|
||||
extClass = '.AnimeonlineNinja'
|
||||
extVersionCode = 1
|
||||
extVersionCode = 2
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.FembedE
|
||||
import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.JsUnpacker
|
||||
import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.StreamSBExtractor
|
||||
import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.StreamTapeExtractor
|
||||
import eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors.uploadExtractor
|
||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
import eu.kanade.tachiyomi.animesource.model.SAnime
|
||||
@ -150,9 +151,11 @@ class AnimeonlineNinja : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
}
|
||||
serverUrl.contains("mixdrop") && lang.contains(langSelect) -> {
|
||||
val jsE = client.newCall(GET(serverUrl)).execute().asJsoup().selectFirst("script:containsData(eval)").data()
|
||||
val url = "http:" + JsUnpacker(jsE).unpack().toString().substringAfter("MDCore.wurl=\"").substringBefore("\"")
|
||||
if (!url.contains("\$(document).ready(function(){});")) {
|
||||
videos.add(Video(url, "$lang MixDrop", url, null))
|
||||
if (jsE.contains("MDCore")) {
|
||||
val url = "http:" + JsUnpacker(jsE).unpack().toString().substringAfter("MDCore.wurl=\"").substringBefore("\"")
|
||||
if (!url.contains("\$(document).ready(function(){});")) {
|
||||
videos.add(Video(url, "$lang MixDrop", url, null))
|
||||
}
|
||||
}
|
||||
}
|
||||
serverUrl.contains("wolfstream") && lang.contains(langSelect) -> {
|
||||
@ -160,6 +163,11 @@ class AnimeonlineNinja : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
val url = jsE.substringAfter("{file:\"").substringBefore("\"")
|
||||
videos.add(Video(url, "$lang WolfStream", url, null))
|
||||
}
|
||||
serverUrl.contains("uqload") && lang.contains(langSelect) -> {
|
||||
val headers = headers.newBuilder().add("referer", "https://uqload.com/").build()
|
||||
val video = uploadExtractor(client).videofromurl(serverUrl, headers, lang)
|
||||
videos.add(video)
|
||||
}
|
||||
}
|
||||
|
||||
return videos
|
||||
@ -207,11 +215,12 @@ class AnimeonlineNinja : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
override fun animeDetailsParse(document: Document): SAnime {
|
||||
val anime = SAnime.create()
|
||||
anime.title = document.select("div.sheader div.data h1").text()
|
||||
anime.genre = document.select("div.sheader div.data div.sgeneros a").joinToString {
|
||||
if (!it.text().lowercase().contains("anime")) {
|
||||
it.text()
|
||||
} else {
|
||||
val uselessTags = listOf("supergoku", "younime", "zonamixs", "monoschinos", "otakustv", "Hanaojara", "series flv", "zenkimex", "Crunchyroll")
|
||||
anime.genre = document.select("div.sheader div.data div.sgeneros a").joinToString("") {
|
||||
if (it.text() in uselessTags || it.text().lowercase().contains("anime")) {
|
||||
""
|
||||
} else {
|
||||
it.text() + ", "
|
||||
}
|
||||
}
|
||||
anime.description = document.select("div.wp-content p").joinToString { it.text() }
|
||||
|
@ -6,7 +6,7 @@ import org.jsoup.Connection
|
||||
import org.jsoup.Jsoup
|
||||
|
||||
class FembedExtractor {
|
||||
fun videosFromUrl(url: String, lang: String): List<Video> {
|
||||
fun videosFromUrl(url: String, qualityP: String): List<Video> {
|
||||
val videoApi = url.replace("/v/", "/api/source/")
|
||||
val json = JSONObject(Jsoup.connect(videoApi).ignoreContentType(true).method(Connection.Method.POST).execute().body())
|
||||
val videoList = mutableListOf<Video>()
|
||||
@ -16,13 +16,13 @@ class FembedExtractor {
|
||||
for (i in 0 until jsonArray.length()) {
|
||||
val `object` = jsonArray.getJSONObject(i)
|
||||
val videoUrl = `object`.getString("file")
|
||||
val quality = "$lang Fembed:" + `object`.getString("label")
|
||||
val quality = "$qualityP Fembed:" + `object`.getString("label")
|
||||
videoList.add(Video(videoUrl, quality, videoUrl, null))
|
||||
}
|
||||
return videoList
|
||||
} else {
|
||||
val videoUrl = "not used"
|
||||
val quality = "Video taken down for dmca"
|
||||
val quality = "$qualityP Video taken down for dmca"
|
||||
videoList.add(Video(videoUrl, quality, videoUrl, null))
|
||||
}
|
||||
return videoList
|
||||
|
@ -0,0 +1,15 @@
|
||||
package eu.kanade.tachiyomi.animeextension.es.animeonlineninja.extractors
|
||||
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.Headers
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class uploadExtractor(private val client: OkHttpClient) {
|
||||
fun videofromurl(url: String, headers: Headers, quality: String): Video {
|
||||
val document = client.newCall(GET(url)).execute().asJsoup()
|
||||
val basicUrl = document.selectFirst("script:containsData(var player =)").data().substringAfter("sources: [\"").substringBefore("\"],")
|
||||
return Video(basicUrl, "$quality Uqload", basicUrl, null, headers)
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'MonosChinos'
|
||||
pkgNameSuffix = 'es.monoschinos'
|
||||
extClass = '.MonosChinos'
|
||||
extVersionCode = 5
|
||||
extVersionCode = 6
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@ import androidx.preference.PreferenceScreen
|
||||
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.FembedExtractor
|
||||
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.OkruExtractor
|
||||
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.SolidFilesExtractor
|
||||
import eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors.uploadExtractor
|
||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilter
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
@ -51,7 +52,7 @@ class MonosChinos : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
anime.setUrlWithoutDomain(
|
||||
element.select("a").attr("href")
|
||||
)
|
||||
anime.title = element.select("a div.series div.seriesdetails h5").text()
|
||||
anime.title = element.select("a div.series div.seriesdetails h3").text()
|
||||
anime.thumbnail_url = element.select("a div.series div.seriesimg img").attr("src")
|
||||
return anime
|
||||
}
|
||||
@ -90,7 +91,7 @@ class MonosChinos : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
val url1 = Base64.decode(urlBase64, Base64.DEFAULT)
|
||||
val url = String(url1).replace("https://monoschinos2.com/reproductor?url=", "")
|
||||
|
||||
if (server == "fembed" || server == "Fembed" || server == "fembed2" || server == "Fembed2") {
|
||||
if (server.lowercase() == "fembed" || server.lowercase() == "fembed2") {
|
||||
val videos = FembedExtractor().videosFromUrl(url)
|
||||
videoList.addAll(videos)
|
||||
}
|
||||
@ -98,10 +99,15 @@ class MonosChinos : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
val videos = OkruExtractor(client).videosFromUrl(url)
|
||||
videoList.addAll(videos)
|
||||
}
|
||||
if (server == "zeus" || server == "Zeus") {
|
||||
if (server.lowercase() == "zeus") {
|
||||
val videos = SolidFilesExtractor(client).videosFromUrl(url)
|
||||
videoList.addAll(videos)
|
||||
}
|
||||
if (server == "uqload") {
|
||||
val headers = headers.newBuilder().add("referer", "https://uqload.com/").build()
|
||||
val video = uploadExtractor(client).videofromurl(url, headers)
|
||||
videoList.add(video)
|
||||
}
|
||||
}
|
||||
return videoList
|
||||
}
|
||||
|
@ -0,0 +1,15 @@
|
||||
package eu.kanade.tachiyomi.animeextension.es.monoschinos.extractors
|
||||
|
||||
import eu.kanade.tachiyomi.animesource.model.Video
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import okhttp3.Headers
|
||||
import okhttp3.OkHttpClient
|
||||
|
||||
class uploadExtractor(private val client: OkHttpClient) {
|
||||
fun videofromurl(url: String, headers: Headers): Video {
|
||||
val document = client.newCall(GET(url)).execute().asJsoup()
|
||||
val basicUrl = document.selectFirst("script:containsData(var player =)").data().substringAfter("sources: [\"").substringBefore("\"],")
|
||||
return Video(basicUrl, "Upload", basicUrl, null, headers)
|
||||
}
|
||||
}
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'TioanimeH'
|
||||
pkgNameSuffix = 'es.tioanimeh'
|
||||
extClass = '.TioanimeHFactory'
|
||||
extVersionCode = 1
|
||||
extVersionCode = 3
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.animeextension.es.tioanimeh
|
||||
|
||||
import android.app.Application
|
||||
import android.content.SharedPreferences
|
||||
import android.util.Log
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import eu.kanade.tachiyomi.animeextension.es.tioanimeh.extractors.fembedExtractor
|
||||
@ -130,7 +131,7 @@ open class TioanimeH(override val name: String, override val baseUrl: String) :
|
||||
|
||||
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request {
|
||||
val filterList = if (filters.isEmpty()) getFilterList() else filters
|
||||
val genreFilter = filterList.find { it is GenreFilter } as GenreFilter
|
||||
val genreFilter = if (filterList.isNotEmpty())filterList.find { it is GenreFilter } as GenreFilter else { GenreFilter().apply { state = 0 } }
|
||||
|
||||
return when {
|
||||
query.isNotBlank() -> GET("$baseUrl/directorio?q=$query&p=$page", headers)
|
||||
@ -176,7 +177,7 @@ open class TioanimeH(override val name: String, override val baseUrl: String) :
|
||||
GenreFilter()
|
||||
)
|
||||
|
||||
private class GenreFilter : UriPartFilter(
|
||||
class GenreFilter : UriPartFilter(
|
||||
"Generos",
|
||||
arrayOf(
|
||||
Pair("<selecionar>", ""),
|
||||
|
@ -1,8 +1,11 @@
|
||||
package eu.kanade.tachiyomi.animeextension.es.tioanimeh
|
||||
|
||||
import android.util.Log
|
||||
import eu.kanade.tachiyomi.animesource.AnimeSource
|
||||
import eu.kanade.tachiyomi.animesource.AnimeSourceFactory
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import okhttp3.Request
|
||||
|
||||
class TioanimeHFactory : AnimeSourceFactory {
|
||||
override fun createSources(): List<AnimeSource> = listOf(
|
||||
@ -12,7 +15,66 @@ class TioanimeHFactory : AnimeSourceFactory {
|
||||
}
|
||||
|
||||
class tioanime : TioanimeH("TioAnime", "https://tioanime.com") {
|
||||
override fun getFilterList(): AnimeFilterList = AnimeFilterList()
|
||||
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request {
|
||||
val filterList = if (filters.isEmpty()) getFilterList() else filters
|
||||
val genreFilter = if (filterList.isNotEmpty())filterList.find { it is GenreFilter } as GenreFilter else { GenreFilter().apply { state = 0 } }
|
||||
return when {
|
||||
query.isNotBlank() -> GET("$baseUrl/directorio?q=$query&p=$page", headers)
|
||||
genreFilter.state != 0 -> GET("$baseUrl/directorio?genero=${genreFilter.toUriPart()}&p=$page")
|
||||
else -> GET("$baseUrl/directorio?p=$page ")
|
||||
}
|
||||
}
|
||||
|
||||
override fun getFilterList(): AnimeFilterList = AnimeFilterList(
|
||||
GenreFilter()
|
||||
)
|
||||
|
||||
private class GenreFilter : UriPartFilter(
|
||||
"Géneros",
|
||||
arrayOf(
|
||||
Pair("<Selecionar>", "all"),
|
||||
Pair("Acción", "accion"),
|
||||
Pair("Artes Marciales", "artes_marciales"),
|
||||
Pair("Aventuras", "aventura"),
|
||||
Pair("Carreras", "carreras"),
|
||||
Pair("Ciencia Ficción", "ciencia_ficcion"),
|
||||
Pair("Comedia", "comedia"),
|
||||
Pair("Demencia", "demencia"),
|
||||
Pair("Demonios", "demonios"),
|
||||
Pair("Deportes", "deportes"),
|
||||
Pair("Drama", "drama"),
|
||||
Pair("Ecchi", "ecchi"),
|
||||
Pair("Escolares", "escolares"),
|
||||
Pair("Espacial", "espacial"),
|
||||
Pair("Fantasía", "fantasia"),
|
||||
Pair("Harem", "harem"),
|
||||
Pair("Historico", "historico"),
|
||||
Pair("Infantil", "infantil"),
|
||||
Pair("Josei", "josei"),
|
||||
Pair("Juegos", "juegos"),
|
||||
Pair("Magia", "magia"),
|
||||
Pair("Mecha", "mecha"),
|
||||
Pair("Militar", "militar"),
|
||||
Pair("Misterio", "misterio"),
|
||||
Pair("Música", "musica"),
|
||||
Pair("Parodia", "parodia"),
|
||||
Pair("Policía", "policia"),
|
||||
Pair("Psicológico", "psicologico"),
|
||||
Pair("Recuentos de la vida", "recuentos_de_la_vida"),
|
||||
Pair("Romance", "romance"),
|
||||
Pair("Samurai", "samurai"),
|
||||
Pair("Seinen", "seinen"),
|
||||
Pair("Shoujo", "shoujo"),
|
||||
Pair("Shounen", "shounen"),
|
||||
Pair("Sobrenatural", "sobrenatural"),
|
||||
Pair("Superpoderes", "superpoderes"),
|
||||
Pair("Suspenso", "suspenso"),
|
||||
Pair("Terror", "terror"),
|
||||
Pair("Vampiros", "vampiros"),
|
||||
Pair("Yaoi", "yaoi"),
|
||||
Pair("Yuri", "yuri")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
class tiohentai : TioanimeH("TioHentai", "https://tiohentai.com")
|
||||
|
Reference in New Issue
Block a user