feat(multisrc/animestream/es): New source: AnimeYT.es and Anime.Tiodonghua.com and others fixes (#2531)
@ -0,0 +1,5 @@
|
|||||||
|
dependencies {
|
||||||
|
implementation(project(":lib-okru-extractor"))
|
||||||
|
implementation(project(":lib-streamtape-extractor"))
|
||||||
|
implementation(project(":lib-sendvid-extractor"))
|
||||||
|
}
|
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 50 KiB |
30
multisrc/overrides/animestream/animeytes/src/AnimeYTES.kt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package eu.kanade.tachiyomi.animeextension.es.animeytes
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.animesource.model.Video
|
||||||
|
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
|
||||||
|
import eu.kanade.tachiyomi.lib.sendvidextractor.SendvidExtractor
|
||||||
|
import eu.kanade.tachiyomi.lib.streamtapeextractor.StreamTapeExtractor
|
||||||
|
import eu.kanade.tachiyomi.multisrc.animestream.AnimeStream
|
||||||
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
|
||||||
|
class AnimeYTES : AnimeStream(
|
||||||
|
"es",
|
||||||
|
"AnimeYT.es",
|
||||||
|
"https://animeyt.es",
|
||||||
|
) {
|
||||||
|
override val animeListUrl = "$baseUrl/tv"
|
||||||
|
|
||||||
|
// ============================ Video Links =============================
|
||||||
|
private val okruExtractor by lazy { OkruExtractor(client) }
|
||||||
|
private val streamtapeExtractor by lazy { StreamTapeExtractor(client) }
|
||||||
|
private val sendvidExtractor by lazy { SendvidExtractor(client, headers) }
|
||||||
|
|
||||||
|
override fun getVideoList(url: String, name: String): List<Video> {
|
||||||
|
return when (name) {
|
||||||
|
"OK" -> okruExtractor.videosFromUrl(url)
|
||||||
|
"Stream" -> streamtapeExtractor.videosFromUrl(url)
|
||||||
|
"Send" -> sendvidExtractor.videosFromUrl(url)
|
||||||
|
else -> emptyList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
dependencies {
|
||||||
|
|
||||||
|
implementation(project(":lib-okru-extractor"))
|
||||||
|
implementation(project(":lib-mixdrop-extractor"))
|
||||||
|
implementation(project(":lib-voe-extractor"))
|
||||||
|
implementation(project(":lib-yourupload-extractor"))
|
||||||
|
}
|
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 58 KiB |
39
multisrc/overrides/animestream/tiodonghua/src/Tiodonghua.kt
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
package eu.kanade.tachiyomi.animeextension.es.tiodonghua
|
||||||
|
|
||||||
|
import androidx.preference.ListPreference
|
||||||
|
import androidx.preference.PreferenceScreen
|
||||||
|
import eu.kanade.tachiyomi.animesource.model.Video
|
||||||
|
import eu.kanade.tachiyomi.lib.mixdropextractor.MixDropExtractor
|
||||||
|
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
|
||||||
|
import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor
|
||||||
|
import eu.kanade.tachiyomi.lib.youruploadextractor.YourUploadExtractor
|
||||||
|
import eu.kanade.tachiyomi.multisrc.animestream.AnimeStream
|
||||||
|
import eu.kanade.tachiyomi.network.GET
|
||||||
|
|
||||||
|
class Tiodonghua : AnimeStream(
|
||||||
|
"es",
|
||||||
|
"Tiodonghua.com",
|
||||||
|
"https://anime.tiodonghua.com",
|
||||||
|
) {
|
||||||
|
|
||||||
|
|
||||||
|
// ============================ Video Links =============================
|
||||||
|
private val okruExtractor by lazy { OkruExtractor(client) }
|
||||||
|
private val voeExtractor by lazy { VoeExtractor(client) }
|
||||||
|
private val youruploadExtractor by lazy { YourUploadExtractor(client) }
|
||||||
|
private val mixdropExtractor by lazy { MixDropExtractor(client) }
|
||||||
|
|
||||||
|
override fun getVideoList(url: String, name: String): List<Video> {
|
||||||
|
return when (name) {
|
||||||
|
"Okru" -> okruExtractor.videosFromUrl(url)
|
||||||
|
"Voe" -> voeExtractor.videosFromUrl(url)
|
||||||
|
"YourUpload" -> youruploadExtractor.videoFromUrl(url, headers)
|
||||||
|
"MixDrop" -> mixdropExtractor.videosFromUrl(url)
|
||||||
|
else -> emptyList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override val fetchFilters: Boolean
|
||||||
|
get() = false
|
||||||
|
|
||||||
|
}
|
@ -16,6 +16,8 @@ class AnimeStreamGenerator : ThemeSourceGenerator {
|
|||||||
SingleLang("Animenosub", "https://animenosub.com", "en", isNsfw = true, overrideVersionCode = 3),
|
SingleLang("Animenosub", "https://animenosub.com", "en", isNsfw = true, overrideVersionCode = 3),
|
||||||
SingleLang("AnimeTitans", "https://animetitans.com", "ar", isNsfw = false, overrideVersionCode = 13),
|
SingleLang("AnimeTitans", "https://animetitans.com", "ar", isNsfw = false, overrideVersionCode = 13),
|
||||||
SingleLang("AnimeXin", "https://animexin.vip", "all", isNsfw = false, overrideVersionCode = 7),
|
SingleLang("AnimeXin", "https://animexin.vip", "all", isNsfw = false, overrideVersionCode = 7),
|
||||||
|
SingleLang("AnimeYT.es", "https://animeyt.es", "es", isNsfw = false, className = "AnimeYTES", pkgName = "animeytes"),
|
||||||
|
SingleLang("Tiodonghua.com", "https://anime.tiodonghua.com", "es", isNsfw = false, className = "Tiodonghua", pkgName = "tiodonghua"),
|
||||||
SingleLang("AsyaAnimeleri", "https://asyaanimeleri.com", "tr", isNsfw = false, overrideVersionCode = 1),
|
SingleLang("AsyaAnimeleri", "https://asyaanimeleri.com", "tr", isNsfw = false, overrideVersionCode = 1),
|
||||||
SingleLang("ChineseAnime", "https://chineseanime.top", "all", isNsfw = false, overrideVersionCode = 3),
|
SingleLang("ChineseAnime", "https://chineseanime.top", "all", isNsfw = false, overrideVersionCode = 3),
|
||||||
SingleLang("desu-online", "https://desu-online.pl", "pl", className = "DesuOnline", isNsfw = false, overrideVersionCode = 3),
|
SingleLang("desu-online", "https://desu-online.pl", "pl", className = "DesuOnline", isNsfw = false, overrideVersionCode = 3),
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'EnNovelas'
|
extName = 'EnNovelas'
|
||||||
pkgNameSuffix = 'es.ennovelas'
|
pkgNameSuffix = 'es.ennovelas'
|
||||||
extClass = '.EnNovelas'
|
extClass = '.EnNovelas'
|
||||||
extVersionCode = 6
|
extVersionCode = 7
|
||||||
libVersion = '13'
|
libVersion = '13'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class EnNovelas : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
|
|
||||||
override val name = "EnNovelas"
|
override val name = "EnNovelas"
|
||||||
|
|
||||||
override val baseUrl = "https://f.ennovelas.net"
|
override val baseUrl = "https://u.ennovelas.net"
|
||||||
|
|
||||||
override val lang = "es"
|
override val lang = "es"
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ class EnNovelas : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
|||||||
|
|
||||||
override fun popularAnimeSelector(): String = ".block-post"
|
override fun popularAnimeSelector(): String = ".block-post"
|
||||||
|
|
||||||
override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/novelas/page/$page")
|
override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/telenovelas/page/$page")
|
||||||
|
|
||||||
override fun popularAnimeFromElement(element: Element): SAnime {
|
override fun popularAnimeFromElement(element: Element): SAnime {
|
||||||
val anime = SAnime.create()
|
val anime = SAnime.create()
|
||||||
|