From f42e5fa6de0589c5d8d3d2d7fdc1802bdbd628b4 Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Sat, 16 Nov 2024 03:10:26 -0300 Subject: [PATCH] Add RoliaScan (#6042) * Add RoliaScan * Cleanup --- src/en/roliascan/AndroidManifest.xml | 22 ++ src/en/roliascan/build.gradle | 7 + .../roliascan/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4391 bytes .../roliascan/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2344 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6382 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12288 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 17775 bytes .../extension/en/roliascan/RoliaScan.kt | 323 ++++++++++++++++++ .../en/roliascan/RoliaScanUrlActivity.kt | 37 ++ 9 files changed, 389 insertions(+) create mode 100644 src/en/roliascan/AndroidManifest.xml create mode 100644 src/en/roliascan/build.gradle create mode 100644 src/en/roliascan/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/roliascan/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/roliascan/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/roliascan/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/roliascan/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/roliascan/src/eu/kanade/tachiyomi/extension/en/roliascan/RoliaScan.kt create mode 100644 src/en/roliascan/src/eu/kanade/tachiyomi/extension/en/roliascan/RoliaScanUrlActivity.kt diff --git a/src/en/roliascan/AndroidManifest.xml b/src/en/roliascan/AndroidManifest.xml new file mode 100644 index 000000000..a2d7c72e6 --- /dev/null +++ b/src/en/roliascan/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/src/en/roliascan/build.gradle b/src/en/roliascan/build.gradle new file mode 100644 index 000000000..6011be1bf --- /dev/null +++ b/src/en/roliascan/build.gradle @@ -0,0 +1,7 @@ +ext { + extName = 'Rolia Scan' + extClass = '.RoliaScan' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/roliascan/res/mipmap-hdpi/ic_launcher.png b/src/en/roliascan/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e3e81dae1c79db7f27279d5c2604bda7b71eb896 GIT binary patch literal 4391 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 literal 0 HcmV?d00001 diff --git a/src/en/roliascan/res/mipmap-mdpi/ic_launcher.png b/src/en/roliascan/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6f033c558fbe465653c026a872c9b7cdcb1715f9 GIT binary patch literal 2344 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 + when (filter) { + is SelectionList -> { + val selected = filter.selected() + if (selected.value.isBlank()) { + return@forEach + } + url.addQueryParameter(selected.query, selected.value) + } + is GenreList -> { + val genres = filter.state + .filter { it.state } + .joinToString(",") { it.id } + + if (genres.isBlank()) { + return@forEach + } + + url.addQueryParameter("_genres", genres) + } + else -> {} + } + } + + return GET(url.build(), headers) + } + + override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { + if (query.startsWith(PREFIX_SEARCH)) { + val slug = query.substringAfter(PREFIX_SEARCH) + return fetchMangaDetails(SManga.create().apply { url = "/manga/$slug" }) + .map { manga -> MangasPage(listOf(manga), false) } + } + return super.fetchSearchManga(page, query, filters) + } + + override fun searchMangaSelector() = "div.post" + + override fun searchMangaNextPageSelector() = null + + override fun searchMangaFromElement(element: Element) = SManga.create().apply { + thumbnail_url = element.selectFirst("img")?.absUrl("src") + element.selectFirst("h6 a")!!.let { + title = it.text() + setUrlWithoutDomain(it.absUrl("href")) + } + } + + // ======================== Details ====================================== + + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + title = document.selectFirst("h1")!!.text() + thumbnail_url = document + .selectFirst("div.post-type-single-column img.wp-post-image") + ?.absUrl("src") + description = document + .select("div.card-body:has(h5:contains(Synopsis)) p") + .filter { p -> p.text().isNotBlank() } + .joinToString("\n") { it.text() } + + genre = document.select("a[href*=genres]") + .joinToString { it.text() } + + document.selectFirst("tr:has(th:contains(Status)) > td")?.text()?.let { + status = when { + it.contains("publishing", true) -> SManga.ONGOING + it.contains("completed", true) -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + } + setUrlWithoutDomain(document.location()) + } + + // ======================== Chapters ===================================== + + override fun fetchChapterList(manga: SManga): Observable> { + val chapters = mutableListOf() + val url = "$baseUrl/wp-admin/admin-ajax.php" + + val document = client.newCall(chapterListRequest(manga)).execute() + .asJsoup() + + val postId = document + .select("input[name=current_page_id]") + .attr("value") + + chapters += document.select(chapterListSelector()).map(::chapterFromElement) + val step = 20 + var offset = step + + do { + val formBuilder = FormBody.Builder() + .add("action", "load_more_chapters") + .add("post_id", postId) + .add("offset", offset.toString()) + + val chapterPage = client.newCall(POST(url, headers, formBuilder.build())).execute().asJsoup() + .select(chapterListSelector()) + .map(::chapterFromElement) + + chapters += chapterPage + offset += step + } while (chapterPage.isNotEmpty()) + + return Observable.just(chapters) + } + + override fun chapterListRequest(manga: SManga): Request { + val url = super.chapterListRequest(manga).url.newBuilder() + .addPathSegment("chapterlist") + .build() + return GET(url, headers) + } + + override fun chapterListSelector() = "a.seenchapter" + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + name = element.text() + setUrlWithoutDomain(element.absUrl("href")) + } + + // ======================== Pages ======================================== + + override fun pageListParse(document: Document): List { + return document.select(".manga-child-the-content img").mapIndexed { index, element -> + Page(index, imageUrl = element.absUrl("src")) + } + } + + override fun imageUrlParse(document: Document) = "" + + // ======================== Filters ====================================== + + private var genreList = emptyList() + + private val ratingList = listOf( + Option("Any"), + Option("★★★★★ (5)", "5"), + Option("★★★★☆ (4)", "4"), + Option("★★★☆☆ (3)", "3"), + Option("★★☆☆☆ (2)", "2"), + Option("★☆☆☆☆ (1)", "1"), + ).map { it.copy(query = "_rating") } + + private var optionList = emptyList>>() + + override fun getFilterList(): FilterList { + val filters = mutableListOf>( + SelectionList("Rating", ratingList), + ) + + filters += optionList.flatMap { + listOf( + Filter.Separator(), + SelectionList(it.first, it.second), + ) + } + + filters += if (genreList.isNotEmpty()) { + listOf( + Filter.Separator(), + GenreList(title = "Genres", genres = genreList), + ) + } else { + listOf( + Filter.Separator(), + Filter.Header("Press 'Reset' to attempt to show the genres, sort and years filters"), + ) + } + return FilterList(filters) + } + + private fun getFilters(response: Response) { + val document = Jsoup.parse(response.peekBody(Long.MAX_VALUE).string()) + + val script = document.selectFirst("script:containsData(FWP_JSON)")?.data() + ?: return + + script.getDocumentFragmentFilter(buildRegex("genres"))?.let { + genreList = it.select(".facetwp-checkbox").map { element -> + Genre( + name = element.selectFirst(".facetwp-display-value")!!.text(), + id = element.attr("data-value"), + ) + } + } + + val queries = listOf( + "Sort" to "sort_posts", + "Year" to "movies_series_year", + "Author" to "movies_series_staff", + ) + + optionList = queries.map { + it.first to getOptionList(buildRegex(it.second), script) + } + } + + private fun getOptionList(pattern: Regex, content: String, cssQuery: String = "option"): List