AniWorld: add vidoza extractor & probably improvments (#868)

* AniWorld: add vidoza extractor & probably improvments

* add experimental to name

* Update build.gradle
This commit is contained in:
LuftVerbot
2022-09-16 09:09:39 +02:00
committed by GitHub
parent 4a40e39bc9
commit dceb71c7c8
5 changed files with 51 additions and 10 deletions

View File

@ -3,10 +3,10 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'AniWorld'
extName = 'AniWorld (experimental)'
pkgNameSuffix = 'de.aniworld'
extClass = '.AniWorld'
extVersionCode = 5
extVersionCode = 6
libVersion = '13'
}

View File

@ -6,13 +6,15 @@ object AWConstants {
const val NAME_DOOD = "Doodstream"
const val NAME_STAPE = "Streamtape"
const val NAME_VOE = "VOE"
const val NAME_VIZ = "Vidoza"
const val URL_DOOD = "https://dood"
const val URL_STAPE = "https://streamtape.com"
const val URL_VOE = "https://voe"
const val URL_VIZ = "https://vidoza"
val HOSTER_NAMES = arrayOf(NAME_VOE, NAME_DOOD, NAME_STAPE)
val HOSTER_URLS = arrayOf(URL_VOE, URL_DOOD, URL_STAPE)
val HOSTER_NAMES = arrayOf(NAME_VOE, NAME_DOOD, NAME_STAPE, NAME_VIZ)
val HOSTER_URLS = arrayOf(URL_VOE, URL_DOOD, URL_STAPE, URL_VIZ)
const val KEY_GER_DUB = 1
const val KEY_ENG_SUB = 2

View File

@ -11,6 +11,7 @@ import androidx.preference.MultiSelectListPreference
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.de.aniworld.extractors.DoodExtractor
import eu.kanade.tachiyomi.animeextension.de.aniworld.extractors.StreamTapeExtractor
import eu.kanade.tachiyomi.animeextension.de.aniworld.extractors.VidozaExtractor
import eu.kanade.tachiyomi.animeextension.de.aniworld.extractors.VoeExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -41,7 +42,7 @@ import uy.kohesive.injekt.injectLazy
class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "AniWorld"
override val name = "AniWorld (experimental)"
override val baseUrl = "https://aniworld.to"
@ -237,13 +238,15 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
if (hosterSelection != null) {
when {
redirects.contains("https://voe.sx") || redirects.contains("https://launchreliantcleaverriver") ||
redirects.contains("https://fraudclatterflyingcar") && hosterSelection.contains(AWConstants.NAME_VOE) -> {
redirects.contains("https://fraudclatterflyingcar") ||
redirects.contains("https://uptodatefinishconferenceroom") || redirects.contains("https://realfinanceblogcenter") && hosterSelection.contains(AWConstants.NAME_VOE) -> {
val quality = "Voe $language"
val video = VoeExtractor(client).videoFromUrl(redirects, quality)
if (video != null) {
videoList.add(video)
}
}
redirects.contains("https://dood") && hosterSelection.contains(AWConstants.NAME_DOOD) -> {
val quality = "Doodstream $language"
val video = DoodExtractor(client).videoFromUrl(redirects, quality)
@ -251,6 +254,7 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
videoList.add(video)
}
}
redirects.contains("https://streamtape") && hosterSelection.contains(AWConstants.NAME_STAPE) -> {
val quality = "Streamtape $language"
val video = StreamTapeExtractor(client).videoFromUrl(redirects, quality)
@ -258,6 +262,13 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
videoList.add(video)
}
}
redirects.contains("https://vidoza") && hosterSelection.contains(AWConstants.NAME_VIZ) -> {
val quality = "Vidoza $language"
val video = VidozaExtractor(client).videoFromUrl(redirects, quality)
if (video != null) {
videoList.add(video)
}
}
}
}
}

View File

@ -63,11 +63,22 @@ class RedirectInterceptor : Interceptor {
view: WebView,
request: WebResourceRequest,
): WebResourceResponse? {
if (request.url.toString().contains("token") || request.url.toString().contains("https://dood.") ||
request.url.toString().contains("https://streamtape") || request.url.toString().contains("https://voe")
if (request.url.toString().contains("token") || request.url.toString().contains("https://dood") || request.url.toString().contains("https://streamtape") ||
request.url.toString().contains("https://voe") || request.url.toString().contains("https://realfinanceblogcenter") ||
request.url.toString().contains("https://launchreliantcleaverriver") ||
request.url.toString().contains("https://fraudclatterflyingcar") ||
request.url.toString().contains("https://uptodatefinishconferenceroom")
) {
newRequest = GET(request.url.toString(), request.requestHeaders.toHeaders())
latch.countDown()
if (!request.url.toString().contains("ad.js")) {
newRequest = GET(request.url.toString(), request.requestHeaders.toHeaders())
latch.countDown()
}
}
if (request.url.toString().contains("token") || request.url.toString().contains("https://vidoza.net/embed-")) {
if (request.url.toString().contains(".html")) {
newRequest = GET(request.url.toString(), request.requestHeaders.toHeaders())
latch.countDown()
}
}
return super.shouldInterceptRequest(view, request)
}

View File

@ -0,0 +1,17 @@
package eu.kanade.tachiyomi.animeextension.de.aniworld.extractors
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.OkHttpClient
class VidozaExtractor(private val client: OkHttpClient) {
fun videoFromUrl(url: String, quality: String): Video? {
val document = client.newCall(GET(url)).execute().asJsoup()
val script = document.select("script:containsData(window.pData = {)")
.firstOrNull()?.data()?.substringAfter("sourcesCode: [{ src: \"") ?: return null
val videoUrl = script.substringAfter("sourcesCode: [{ src: \"").substringBefore("\", type:")
return Video(url, quality, videoUrl)
}
}