From c4acb9725f04713feedbf65cbea2c52b6e77512b Mon Sep 17 00:00:00 2001 From: Zakhar Timoshenko Date: Sat, 31 Dec 2022 22:28:46 +0300 Subject: [PATCH] [Lib] Fix auth part 2 --- .../parsers/site/rulib/MangaLibParser.kt | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/rulib/MangaLibParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/rulib/MangaLibParser.kt index c2d641f3..27872a76 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/rulib/MangaLibParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/rulib/MangaLibParser.kt @@ -98,6 +98,7 @@ internal open class MangaLibParser( if (line.startsWith("window.__DATA__")) { val json = JSONObject(line.substringAfter('=').substringBeforeLast(';')) val list = json.getJSONObject("chapters").getJSONArray("list") + val id = json.optJSONObject("user")?.getLong("id")?.toString() ?: "not" val total = list.length() chapters = ChaptersListBuilder(total) for (i in 0 until total) { @@ -105,14 +106,20 @@ internal open class MangaLibParser( val chapterId = item.getLong("chapter_id") val scanlator = item.getStringOrNull("username") val url = buildString { - append(manga.url) - append("/v") - append(item.getInt("chapter_volume")) - append("/c") - append(item.getString("chapter_number")) if (isAuthorized) { + append(manga.url) + append("/v") + append(item.getInt("chapter_volume")) + append("/c") + append(item.getString("chapter_number")) append("?ui=") - append(getUID()) + append(id) + } else { + append(manga.url) + append("/v") + append(item.getInt("chapter_volume")) + append("/c") + append(item.getString("chapter_number")) } } val nameChapter = item.getStringOrNull("chapter_name") @@ -242,20 +249,6 @@ internal open class MangaLibParser( return body.selectFirst(".profile-user__username")?.text() ?: body.parseFailed("Cannot find username") } - private suspend fun getUID(): String { - val url = "https://${getDomain()}/news/polzovatelskoe-soglasenie" - val body = context.httpGet(url).parseHtml().body() - val scripts = body.select("script") - for (script in scripts) { - val raw = script.html().trim() - if (raw.startsWith("window.__DATA")) { - val json = JSONObject(raw.substringAfter('=').substringBeforeLast(';')) - return json.getJSONObject("user").getInt("id").toString() - } - } - throw AuthRequiredException(source) - } - protected open fun isNsfw(doc: Document): Boolean { val sidebar = doc.body().run { selectFirst(".media-sidebar") ?: selectFirst(".media-info")