From 3e6aba7609d1b8467a1dc6bfb74438be8db0c4f8 Mon Sep 17 00:00:00 2001 From: MelonLamink <92729146+MelonLamink@users.noreply.github.com> Date: Mon, 28 Feb 2022 13:06:02 +0000 Subject: [PATCH] Add support for http://sssscomic.com/ (#9548) * Add support for http://sssscomic.com/ * Combine when in Hiveworks.kt Co-authored-by: Alessandro Jean Co-authored-by: Alessandro Jean --- src/en/hiveworks/build.gradle | 2 +- .../extension/en/hiveworks/Hiveworks.kt | 47 ++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/en/hiveworks/build.gradle b/src/en/hiveworks/build.gradle index e497d45c7..3d17b3959 100644 --- a/src/en/hiveworks/build.gradle +++ b/src/en/hiveworks/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Hiveworks Comics' pkgNameSuffix = 'en.hiveworks' extClass = '.Hiveworks' - extVersionCode = 5 + extVersionCode = 6 } apply from: "$rootDir/common.gradle" diff --git a/src/en/hiveworks/src/eu/kanade/tachiyomi/extension/en/hiveworks/Hiveworks.kt b/src/en/hiveworks/src/eu/kanade/tachiyomi/extension/en/hiveworks/Hiveworks.kt index d5e16350d..93dcbd718 100644 --- a/src/en/hiveworks/src/eu/kanade/tachiyomi/extension/en/hiveworks/Hiveworks.kt +++ b/src/en/hiveworks/src/eu/kanade/tachiyomi/extension/en/hiveworks/Hiveworks.kt @@ -189,8 +189,12 @@ class Hiveworks : ParsedHttpSource() { override fun chapterListSelector() = "select[name=comic] option" override fun chapterListRequest(manga: SManga): Request { val uri = Uri.parse(manga.url).buildUpon() - .appendPath("comic") - .appendPath("archive") + if ("sssscomic" in uri.toString()) { + uri.appendQueryParameter("id", "archive") // sssscomic uses query string in url + } else { + uri.appendPath("comic") + uri.appendPath("archive") + } return GET(uri.toString(), headers) } @@ -198,6 +202,7 @@ class Hiveworks : ParsedHttpSource() { val url = response.request.url.toString() when { "witchycomic" in url -> return witchyChapterListParse(response) + "sssscomic" in url -> return ssssChapterListParse(response) } val document = response.asJsoup() val baseUrl = document.select("div script").html().substringAfter("href='").substringBefore("'") @@ -245,6 +250,14 @@ class Hiveworks : ParsedHttpSource() { pages.add(Page(pages.size, "", smbcTextHandler(document))) } } + // sssscomic doesn't use standard Hiveworks image locations + when { + "sssscomic" in url -> { + val urlPath = document.select("img.comicnormal").attr("src") + val urlimg = response.request.url.resolve("../../$urlPath").toString() + pages.add(Page(pages.size, "", urlimg)) + } + } return pages } @@ -413,6 +426,36 @@ class Hiveworks : ParsedHttpSource() { return chapters } + /** + * Gets the chapter list for sssscomic - based on work by roblabla for witchycomic + * + */ + private fun ssssChapterListParse(response: Response): List { + val document = response.asJsoup() + // Gets the adventure div's + val advDiv = document.select("div[id^=adv]") + val chapters = mutableListOf() + // Iterate through the Div's + for (i in 1 until advDiv.size + 1) { + val elements = document.select("#adv${i}Div a") + if (elements.isNullOrEmpty()) throw Exception("This comic has a unsupported chapter list") + for (c in 0 until elements.size) { + val chapter = SChapter.create() + // Adventure No. and Page No. for chapter name + chapter.name = "Adventure $i - Page ${elements[c].text()}" + // Uses relative paths so need to combine the initial host with the path + val urlPath = elements[c].attr("href") + chapter.url = response.request.url.resolve("../../$urlPath").toString() + // use system time as the date of the chapters are per page and takes to long to pull each one. + chapter.date_upload = System.currentTimeMillis() + chapters.add(chapter) + } + } + chapters.retainAll { it.url.contains("page") } + chapters.reverse() + return chapters + } + // Builds Image from mouse tooltip text private fun smbcTextHandler(document: Document): String { val title = document.select("title").text().trim()