From d33029e3f430598a9ef47fbc9d504985265d1c9e Mon Sep 17 00:00:00 2001
From: Claudemirovsky <63046606+Claudemirovsky@users.noreply.github.com>
Date: Sun, 25 Sep 2022 07:45:07 -0300
Subject: [PATCH] Zoro: add search filters and URL intent handler (#887)
---
src/en/zoro/AndroidManifest.xml | 24 +-
src/en/zoro/build.gradle | 6 +-
.../tachiyomi/animeextension/en/zoro/Zoro.kt | 151 +++++++++---
.../animeextension/en/zoro/ZoroFilters.kt | 231 ++++++++++++++++++
.../animeextension/en/zoro/ZoroUrlActivity.kt | 41 ++++
.../en/zoro/extractors/ZoroExtractor.kt | 17 +-
6 files changed, 424 insertions(+), 46 deletions(-)
create mode 100644 src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/ZoroFilters.kt
create mode 100644 src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/ZoroUrlActivity.kt
diff --git a/src/en/zoro/AndroidManifest.xml b/src/en/zoro/AndroidManifest.xml
index acb4de356..17b857a03 100644
--- a/src/en/zoro/AndroidManifest.xml
+++ b/src/en/zoro/AndroidManifest.xml
@@ -1,2 +1,24 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/en/zoro/build.gradle b/src/en/zoro/build.gradle
index 81f09d75e..2e306b89e 100644
--- a/src/en/zoro/build.gradle
+++ b/src/en/zoro/build.gradle
@@ -5,8 +5,12 @@ ext {
extName = 'zoro.to (experimental)'
pkgNameSuffix = 'en.zoro'
extClass = '.Zoro'
- extVersionCode = 10
+ extVersionCode = 11
libVersion = '13'
}
+dependencies {
+ compileOnly libs.bundles.coroutines
+}
+
apply from: "$rootDir/common.gradle"
diff --git a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt b/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt
index f537ebe3b..d138dea00 100644
--- a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt
+++ b/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt
@@ -8,12 +8,18 @@ import eu.kanade.tachiyomi.animeextension.en.zoro.extractors.ZoroExtractor
import eu.kanade.tachiyomi.animeextension.en.zoro.utils.JSONUtil
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
+import eu.kanade.tachiyomi.animesource.model.AnimesPage
import eu.kanade.tachiyomi.animesource.model.SAnime
import eu.kanade.tachiyomi.animesource.model.SEpisode
import eu.kanade.tachiyomi.animesource.model.Track
import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.network.GET
+import eu.kanade.tachiyomi.network.asObservableSuccess
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.async
+import kotlinx.coroutines.awaitAll
+import kotlinx.coroutines.runBlocking
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
@@ -21,12 +27,15 @@ import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.Headers
+import okhttp3.HttpUrl
+import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
+import rx.Observable
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
@@ -55,13 +64,11 @@ class Zoro : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/most-popular?page=$page")
- override fun popularAnimeFromElement(element: Element): SAnime {
- val anime = SAnime.create()
- anime.thumbnail_url = element.select("div.film-poster > img").attr("data-src")
- anime.setUrlWithoutDomain(element.select("div.film-detail a").attr("href"))
- anime.title = element.select("div.film-detail a").attr("data-jname")
- anime.description = element.selectFirst("div.film-detail div.description")?.text()
- return anime
+ override fun popularAnimeFromElement(element: Element) = SAnime.create().apply {
+ thumbnail_url = element.selectFirst("div.film-poster > img").attr("data-src")
+ val filmDetail = element.selectFirst("div.film-detail a")
+ setUrlWithoutDomain(filmDetail.attr("href"))
+ title = filmDetail.attr("data-jname")
}
override fun popularAnimeNextPageSelector(): String = "li.page-item a[title=Next]"
@@ -106,27 +113,29 @@ class Zoro : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val data = body.substringAfter("\"html\":\"").substringBefore("