refactor: Make extensions use the vudeo-extractor lib (#2173)

This commit is contained in:
Claudemirovsky
2023-09-10 12:47:49 -03:00
committed by GitHub
parent 4596194da4
commit b04ce515bd
18 changed files with 20 additions and 116 deletions

View File

@ -103,7 +103,9 @@ class AnimeWorldIndia(
?: return SAnime.UNKNOWN ?: return SAnime.UNKNOWN
if (epParts.first().trim().compareTo(epParts[1].trim()) == 0) { if (epParts.first().trim().compareTo(epParts[1].trim()) == 0) {
SAnime.COMPLETED SAnime.COMPLETED
} else SAnime.ONGOING } else {
SAnime.ONGOING
}
} }
} }
} }

View File

@ -11,6 +11,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-vudeo-extractor'))
implementation(project(':lib-mixdrop-extractor')) implementation(project(':lib-mixdrop-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))
} }

View File

@ -5,7 +5,6 @@ import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.MultiSelectListPreference import androidx.preference.MultiSelectListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.de.hdfilme.extractors.VudeoExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
@ -14,6 +13,7 @@ import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.mixdropextractor.MixDropExtractor import eu.kanade.tachiyomi.lib.mixdropextractor.MixDropExtractor
import eu.kanade.tachiyomi.lib.vudeoextractor.VudeoExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.OkHttpClient import okhttp3.OkHttpClient

View File

@ -1,21 +0,0 @@
package eu.kanade.tachiyomi.animeextension.de.hdfilme.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 VudeoExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
val document = client.newCall(GET(url)).execute().asJsoup()
val videoList = mutableListOf<Video>()
document.select("script:containsData(sources: [)").forEach { script ->
val videoUrl = script.data().substringAfter("sources: [").substringBefore("]").replace("\"", "").split(",")
videoUrl.forEach {
videoList.add(Video(it, "Vudeo", it, headers = Headers.headersOf("referer", "https://vudeo.net/")))
}
}
return videoList
}
}

View File

@ -187,7 +187,9 @@ class KickAssAnime : ConfigurableAnimeSource, AnimeHttpSource() {
it.titlecase( it.titlecase(
Locale.ROOT, Locale.ROOT,
) )
} else it.toString() } else {
it.toString()
}
}}\n", }}\n",
) )
append("Year: ${anime.year}") append("Year: ${anime.year}")

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-vudeo-extractor'))
implementation(project(':lib-uqload-extractor')) implementation(project(':lib-uqload-extractor'))
implementation(project(':lib-streamwish-extractor')) implementation(project(':lib-streamwish-extractor'))
implementation(project(':lib-filemoon-extractor')) implementation(project(':lib-filemoon-extractor'))

View File

@ -4,7 +4,6 @@ import android.util.Base64
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.es.pelisplushd.extractors.StreamHideExtractor import eu.kanade.tachiyomi.animeextension.es.pelisplushd.extractors.StreamHideExtractor
import eu.kanade.tachiyomi.animeextension.es.pelisplushd.extractors.VudeoExtractor
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
@ -17,6 +16,7 @@ import eu.kanade.tachiyomi.lib.streamlareextractor.StreamlareExtractor
import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor import eu.kanade.tachiyomi.lib.streamwishextractor.StreamWishExtractor
import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor
import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor
import eu.kanade.tachiyomi.lib.vudeoextractor.VudeoExtractor
import eu.kanade.tachiyomi.lib.youruploadextractor.YourUploadExtractor import eu.kanade.tachiyomi.lib.youruploadextractor.YourUploadExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup

View File

@ -1,20 +0,0 @@
package eu.kanade.tachiyomi.animeextension.es.pelisplushd.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 VudeoExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
val document = client.newCall(GET(url)).execute().asJsoup()
val videoList = mutableListOf<Video>()
document.select("script:containsData(sources: [)").forEach { script ->
val videoUrl = script.data().substringAfter("sources: [").substringBefore("]").replace("\"", "").split(",")
videoUrl.forEach {
videoList.add(Video(it, "Vudeo", it, headers = Headers.headersOf("referer", "https://vudeo.net/")))
}
}
return videoList
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-vudeo-extractor'))
implementation(project(':lib-uqload-extractor')) implementation(project(':lib-uqload-extractor'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))

View File

@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.StreamHideEx
import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.StreamVidExtractor import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.StreamVidExtractor
import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.UpstreamExtractor import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.UpstreamExtractor
import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.VidoExtractor import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.VidoExtractor
import eu.kanade.tachiyomi.animeextension.fr.frenchanime.extractors.VudeoExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -20,6 +19,7 @@ import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.sibnetextractor.SibnetExtractor import eu.kanade.tachiyomi.lib.sibnetextractor.SibnetExtractor
import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor
import eu.kanade.tachiyomi.lib.vudeoextractor.VudeoExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.network.asObservableSuccess

View File

@ -1,21 +0,0 @@
package eu.kanade.tachiyomi.animeextension.fr.frenchanime.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 VudeoExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String): List<Video> {
val document = client.newCall(GET(url)).execute().asJsoup()
val videoList = mutableListOf<Video>()
document.select("script:containsData(sources: [)").forEach { script ->
val videoUrl = script.data().substringAfter("sources: [").substringBefore("]").replace("\"", "").split(",")
videoUrl.forEach {
videoList.add(Video(it, "Vudeo", it, headers = Headers.headersOf("referer", "https://vudeo.net/")))
}
}
return videoList
}
}

View File

@ -10,6 +10,7 @@ ext {
} }
dependencies { dependencies {
implementation(project(':lib-vudeo-extractor'))
implementation(project(':lib-dood-extractor')) implementation(project(':lib-dood-extractor'))
implementation(project(':lib-mytv-extractor')) implementation(project(':lib-mytv-extractor'))
implementation(project(':lib-okru-extractor')) implementation(project(':lib-okru-extractor'))

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.fr.vostfree.extractors.VudeoExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -16,6 +15,7 @@ import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor import eu.kanade.tachiyomi.lib.doodextractor.DoodExtractor
import eu.kanade.tachiyomi.lib.mytvextractor.MytvExtractor import eu.kanade.tachiyomi.lib.mytvextractor.MytvExtractor
import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor import eu.kanade.tachiyomi.lib.okruextractor.OkruExtractor
import eu.kanade.tachiyomi.lib.vudeoextractor.VudeoExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
@ -102,13 +102,10 @@ class Vostfree : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
allPlayerIds.select("div").forEach { allPlayerIds.select("div").forEach {
val server = it.text() val server = it.text()
if (server.lowercase() == "vudeo") { if (server.lowercase() == "vudeo") {
val headers = headers.newBuilder()
.set("referer", "https://vudeo.io/")
.build()
val playerId = it.attr("id") val playerId = it.attr("id")
val url = document.select("div#player-tabs div.tab-blocks div.tab-content div div#content_$playerId").text() val url = document.select("div#player-tabs div.tab-blocks div.tab-content div div#content_$playerId").text()
try { try {
val video = VudeoExtractor(client).videosFromUrl(url, headers) val video = VudeoExtractor(client).videosFromUrl(url)
videoList.addAll(video) videoList.addAll(video)
} catch (e: Exception) {} } catch (e: Exception) {}
} }

View File

@ -1,21 +0,0 @@
package eu.kanade.tachiyomi.animeextension.fr.vostfree.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 VudeoExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String, headers: Headers): List<Video> {
val document = client.newCall(GET(url)).execute().asJsoup()
val videoList = mutableListOf<Video>()
document.select("script:containsData(sources: [)").forEach { script ->
val videoUrl = script.data().substringAfter("sources: [").substringBefore("]").replace("\"", "").split(",")
videoUrl.forEach {
videoList.add(Video(it, "Vudeo", it, headers))
}
}
return videoList
}
}

View File

@ -148,7 +148,9 @@ class NimeGami : ParsedAnimeHttpSource() {
if (url.contains("bunga.nimegami")) { if (url.contains("bunga.nimegami")) {
if (usedBunga) { if (usedBunga) {
return@mapNotNull null return@mapNotNull null
} else usedBunga = true } else {
usedBunga = true
}
} }
runCatching { runCatching {
extractVideos(url, quality, episodeIndex) extractVideos(url, quality, episodeIndex)

View File

@ -5,6 +5,7 @@ plugins {
} }
dependencies { dependencies {
implementation(project(':lib-vudeo-extractor'))
implementation(project(':lib-uqload-extractor')) implementation(project(':lib-uqload-extractor'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1" implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
implementation(project(":lib-cryptoaes")) implementation(project(":lib-cryptoaes"))

View File

@ -13,7 +13,6 @@ import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.MVidooExtracto
import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.MailRuExtractor import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.MailRuExtractor
import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.StreamVidExtractor import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.StreamVidExtractor
import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.VTubeExtractor import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.VTubeExtractor
import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.VudeoExtractor
import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.WolfstreamExtractor import eu.kanade.tachiyomi.animeextension.tr.turkanime.extractors.WolfstreamExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -35,6 +34,7 @@ import eu.kanade.tachiyomi.lib.synchrony.Deobfuscator
import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor import eu.kanade.tachiyomi.lib.uqloadextractor.UqloadExtractor
import eu.kanade.tachiyomi.lib.vkextractor.VkExtractor import eu.kanade.tachiyomi.lib.vkextractor.VkExtractor
import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor import eu.kanade.tachiyomi.lib.voeextractor.VoeExtractor
import eu.kanade.tachiyomi.lib.vudeoextractor.VudeoExtractor
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup

View File

@ -1,21 +0,0 @@
package eu.kanade.tachiyomi.animeextension.tr.turkanime.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 VudeoExtractor(private val client: OkHttpClient) {
fun videosFromUrl(url: String, prefix: String = ""): List<Video> {
val document = client.newCall(GET(url)).execute().asJsoup()
val videoList = mutableListOf<Video>()
document.select("script:containsData(sources: [)").forEach { script ->
val videoUrl = script.data().substringAfter("sources: [").substringBefore("]").replace("\"", "").split(",")
videoUrl.forEach {
videoList.add(Video(it, "${prefix}Vudeo", it, headers = Headers.headersOf("referer", "https://vudeo.net/")))
}
}
return videoList
}
}