From 6a474556089267d65d878296d80d8b6fbe22af1b Mon Sep 17 00:00:00 2001 From: Pavka Date: Thu, 3 Sep 2020 04:55:45 +0300 Subject: [PATCH] [Ru] Libmanga. Revert changes from 19->20 update (#4289) --- src/ru/libmanga/build.gradle | 2 +- .../extension/ru/libmanga/LibManga.kt | 60 +++++++++++++++---- 2 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/ru/libmanga/build.gradle b/src/ru/libmanga/build.gradle index 10f55c20a..c0d16be3a 100644 --- a/src/ru/libmanga/build.gradle +++ b/src/ru/libmanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'MangaLib' pkgNameSuffix = 'ru.libmanga' extClass = '.LibManga' - extVersionCode = 20 + extVersionCode = 21 libVersion = '1.2' } diff --git a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt index c1bb8df2f..06fc2569f 100644 --- a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt +++ b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt @@ -6,6 +6,7 @@ import android.support.v7.preference.ListPreference import android.support.v7.preference.PreferenceScreen import com.github.salomonbrys.kotson.array import com.github.salomonbrys.kotson.get +import com.github.salomonbrys.kotson.int import com.github.salomonbrys.kotson.nullArray import com.github.salomonbrys.kotson.nullString import com.github.salomonbrys.kotson.obj @@ -231,10 +232,22 @@ class LibManga : ConfigurableSource, HttpSource() { private fun chapterFromElement(element: Element): SChapter { val chapter = SChapter.create() - val id = element.attr("data-id") - val slug = element.baseUri().replace("$baseUrl/", "") - val url = "/download/$id?slug=$slug" - chapter.setUrlWithoutDomain(url) + + val chapterLink = element.select("div.chapter-item__name > a").first() + if (chapterLink != null) { + chapter.setUrlWithoutDomain(chapterLink.attr("href")) + } else { + // Found multiple translate. Get first one for now + val volume = element.attr("data-volume") + val number = element.attr("data-number") + val teams = jsonParser.parse(element.attr("data-teams")) + val team = teams[0]["slug"].nullString + val baseUrl = "${element.baseUri()}/v$volume/c$number" + val url = if (team != null) "$baseUrl/$team" else baseUrl + + chapter.setUrlWithoutDomain(url) + } + chapter.name = element.select("div.chapter-item__name").first().text() chapter.date_upload = SimpleDateFormat("dd.MM.yyyy", Locale.US) .parse(element.select("div.chapter-item__date").text()).time @@ -249,18 +262,39 @@ class LibManga : ConfigurableSource, HttpSource() { } override fun pageListParse(response: Response): List { - val body = response.body()!!.string() - val slug = response.request().url().queryParameter("slug") - val json = jsonParser.parse(body) - val images = json["images"].array - val chapterslug = json["chapter"]["slug"].string + val document = response.asJsoup() + val chapInfo = document + .select("script:containsData(window.__info)") + .first() + .html() + .trim() + .removePrefix("window.__info = ") + .split(";") + .first() + val chapInfoJson = jsonParser.parse(chapInfo).obj + val servers = chapInfoJson["servers"].asJsonObject + val defaultServer: String = chapInfoJson["img"]["server"].string + val imgUrl: String = chapInfoJson["img"]["url"].string + + val serverToUse = if (this.server == null) defaultServer else this.server + val imageServerUrl: String = servers[serverToUse].string + + // Get pages + val pagesArr = document + .select("script:containsData(window.__pg)") + .first() + .html() + .trim() + .removePrefix("window.__pg = ") + .removeSuffix(";") + + val pagesJson = jsonParser.parse(pagesArr).array val pages = mutableListOf() - images.forEachIndexed { index, page -> - val url = "${this.imageServerUrl()}/manga/$slug/chapters/$chapterslug/${page.string}" - pages.add(Page(index, "", url)) - } + pagesJson.forEach { page -> + pages.add(Page(page["p"].int, "", imageServerUrl + imgUrl + page["u"].string)) + } return pages }