diff --git a/multisrc/overrides/guya/magicaltranslators/src/MagicalTranslators.kt b/multisrc/overrides/guya/magicaltranslators/src/MagicalTranslators.kt index 107ad46fa..326b0cea5 100644 --- a/multisrc/overrides/guya/magicaltranslators/src/MagicalTranslators.kt +++ b/multisrc/overrides/guya/magicaltranslators/src/MagicalTranslators.kt @@ -24,9 +24,6 @@ abstract class MagicalTranslatorsCommon(lang: String) : override fun latestUpdatesParse(response: Response): MangasPage = filterMangasPage(super.latestUpdatesParse(response)) - override fun proxySearchMangaParse(response: Response, query: String): MangasPage = - filterMangasPage(super.proxySearchMangaParse(response, query)) - override fun searchMangaParseWithSlug(response: Response, slug: String): MangasPage = filterMangasPage(super.searchMangaParseWithSlug(response, slug)) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/Guya.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/Guya.kt index c28be0347..918cca83b 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/Guya.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/Guya.kt @@ -74,7 +74,7 @@ abstract class Guya( for (series in payload.keys()) { val json = payload.getJSONObject(series) val timestamp = json.getLong("last_updated") - mangas[timestamp] = parseMangaFromJson(json, "", series) + mangas[timestamp] = parseMangaFromJson(json, series) } return MangasPage(mangas.values.reversed(), false) @@ -82,54 +82,32 @@ abstract class Guya( // Overridden to use our overload override fun fetchMangaDetails(manga: SManga): Observable { - return when { - manga.url.startsWith(PROXY_PREFIX) -> { - client.newCall(proxyChapterListRequest(manga)) - .asObservableSuccess() - .map { response -> - proxyMangaDetailsParse(response, manga) - } + return client.newCall(mangaDetailsRequest(manga)) + .asObservableSuccess() + .map { response -> + mangaDetailsParse(response, manga) } - else -> { - client.newCall(chapterListRequest(manga)) - .asObservableSuccess() - .map { response -> - mangaDetailsParse(response, manga) - } - } - } } - // Called when the series is loaded, or when opening in browser override fun mangaDetailsRequest(manga: SManga): Request { - return when { - manga.url.startsWith(PROXY_PREFIX) -> proxySeriesRequest(manga.url, false) - else -> GET("$baseUrl/reader/series/${manga.url}/", headers) - } + return GET("$baseUrl/api/series/${manga.url}/", headers) } private fun mangaDetailsParse(response: Response, manga: SManga): SManga { val res = response.body.string() - return parseMangaFromJson(JSONObject(res), "", manga.title) + return parseMangaFromJson(JSONObject(res), manga.title) + } + + override fun getMangaUrl(manga: SManga): String { + return "$baseUrl/reader/series/${manga.url}/" } override fun fetchChapterList(manga: SManga): Observable> { - return when { - manga.url.startsWith(PROXY_PREFIX) -> { - client.newCall(proxyChapterListRequest(manga)) - .asObservableSuccess() - .map { response -> - proxyChapterListParse(response, manga) - } + return client.newCall(chapterListRequest(manga)) + .asObservableSuccess() + .map { response -> + chapterListParse(response, manga) } - else -> { - client.newCall(chapterListRequest(manga)) - .asObservableSuccess() - .map { response -> - chapterListParse(response, manga) - } - } - } } // Gets the chapter list based on the series being viewed @@ -142,24 +120,17 @@ abstract class Guya( return parseChapterList(response.body.string(), manga) } + override fun getChapterUrl(chapter: SChapter): String { + return "$baseUrl/read/manga/${chapter.url.replace('.', '-')}/1/" + } + // Overridden fetch so that we use our overloaded method instead override fun fetchPageList(chapter: SChapter): Observable> { - return when { - chapter.url.startsWith(PROXY_PREFIX) -> { - client.newCall(proxyPageListRequest(chapter)) - .asObservableSuccess() - .map { response -> - proxyPageListParse(response, chapter) - } + return client.newCall(pageListRequest(chapter)) + .asObservableSuccess() + .map { response -> + pageListParse(response, chapter) } - else -> { - client.newCall(pageListRequest(chapter)) - .asObservableSuccess() - .map { response -> - pageListParse(response, chapter) - } - } - } } override fun pageListRequest(chapter: SChapter): Request { @@ -199,13 +170,6 @@ abstract class Guya( searchMangaParseWithSlug(response, slug) } } - query.startsWith(PROXY_PREFIX) && query.contains("/") -> { - client.newCall(proxySearchMangaRequest(query)) - .asObservableSuccess() - .map { response -> - proxySearchMangaParse(response, query) - } - } else -> { client.newCall(searchMangaRequest(page, query, filters)) .asObservableSuccess() @@ -273,75 +237,6 @@ abstract class Guya( screen.addPreference(preference) } - // ---------------- Proxy methods ------------------ - - private fun proxySeriesRequest(query: String, api: Boolean = true): Request { - val res = query.removePrefix(PROXY_PREFIX) - val options = res.split("/") - val proxyType = options[0] - val slug = options[1] - return if (api) { - GET("$baseUrl/proxy/api/$proxyType/series/$slug/", headers) - } else { - GET("$baseUrl/proxy/$proxyType/$slug/", headers) - } - } - - private fun proxyMangaDetailsParse(response: Response, manga: SManga): SManga { - return mangaDetailsParse(response, manga) - } - - private fun proxyChapterListRequest(manga: SManga): Request { - return proxySeriesRequest(manga.url) - } - - private fun proxyChapterListParse(response: Response, manga: SManga): List { - return chapterListParse(response, manga) - } - - private fun proxyPageListRequest(chapter: SChapter): Request { - val proxyUrl = chapter.url.removePrefix(PROXY_PREFIX) - return when { - proxyUrl.startsWith(NESTED_PROXY_API_PREFIX) -> { - GET("$baseUrl$proxyUrl", headers) - } - else -> proxySeriesRequest(chapter.url) - } - } - - private fun proxyPageListParse(response: Response, chapter: SChapter): List { - val res = response.body.string() - val pages = if (chapter.url.removePrefix(PROXY_PREFIX).startsWith(NESTED_PROXY_API_PREFIX)) { - JSONArray(res) - } else { - val json = JSONObject(res) - val metadata = chapter.url.split("/").takeLast(2) - val chapterNum = metadata[0] - val groupNum = metadata[1] - json.getJSONObject("chapters") - .getJSONObject(chapterNum) - .getJSONObject("groups") - .getJSONArray(groupNum) - } - return List(pages.length()) { - Page( - it + 1, - "", - pages.optJSONObject(it)?.getString("src") - ?: pages[it].toString(), - ) - } - } - - private fun proxySearchMangaRequest(query: String): Request { - return proxySeriesRequest(query) - } - - protected open fun proxySearchMangaParse(response: Response, query: String): MangasPage { - val json = JSONObject(response.body.string()) - return MangasPage(listOf(parseMangaFromJson(json, query)), false) - } - // ------------- Helpers and whatnot --------------- private fun parseChapterList(payload: String, manga: SManga): List { @@ -393,12 +288,7 @@ abstract class Guya( } chapter.name = chapterNum + " - " + chapterObj.getString("title") chapter.chapter_number = chapterNum.toFloat() - chapter.url = - if (groups.optJSONArray(groupNum) != null) { - "${manga.url}/$chapterNum/$groupNum" - } else { - "$PROXY_PREFIX${groups.getString(groupNum)}" - } + chapter.url = "${manga.url}/$chapterNum" chapterList.add(chapter) } } @@ -414,14 +304,14 @@ abstract class Guya( for (series in payload.keys()) { val json = payload.getJSONObject(series) - mangas += parseMangaFromJson(json, "", series) + mangas += parseMangaFromJson(json, series) } return MangasPage(mangas, false) } // Takes a json of the manga to parse - private fun parseMangaFromJson(json: JSONObject, slug: String, title: String = ""): SManga { + private fun parseMangaFromJson(json: JSONObject, title: String = ""): SManga { val manga = SManga.create() manga.title = title.ifEmpty { json.getString("title") } manga.artist = json.optString("artist") @@ -433,7 +323,7 @@ abstract class Guya( text() } } - manga.url = if (slug.startsWith(PROXY_PREFIX)) slug else json.getString("slug") + manga.url = json.getString("slug") val cover = json.optString("cover") manga.thumbnail_url = when { @@ -454,7 +344,7 @@ abstract class Guya( chapter.date_upload = json.getJSONObject("release_date").getLong(firstGroupId) * 1000 chapter.name = num + " - " + json.getString("title") chapter.chapter_number = num.toFloat() - chapter.url = "$slug/$num/$firstGroupId" + chapter.url = "$slug/$num" return chapter } @@ -586,9 +476,6 @@ abstract class Guya( companion object { const val SLUG_PREFIX = "slug:" - const val PROXY_PREFIX = "proxy:" - const val NESTED_PROXY_API_PREFIX = "/proxy/api/" - private const val scanlatorPreference = "SCANLATOR_PREFERENCE" } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/GuyaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/GuyaGenerator.kt index 91dce3599..cf8b4bca1 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/GuyaGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/guya/GuyaGenerator.kt @@ -10,10 +10,10 @@ class GuyaGenerator : ThemeSourceGenerator { override val themeClass = "Guya" - override val baseVersionCode = 4 + override val baseVersionCode = 5 override val sources = listOf( - SingleLang("Guya", "https://guya.moe", "en", overrideVersionCode = 18), + SingleLang("Guya", "https://guya.cubari.moe", "en", overrideVersionCode = 18), SingleLang("Danke fürs Lesen", "https://danke.moe", "en", className = "DankeFursLesen"), SingleLang("Hachirumi", "https://hachirumi.com", "en", isNsfw = true), MultiLang("Magical Translators", "https://mahoushoujobu.com", listOf("en", "es", "pl"), overrideVersionCode = 1),