From 4684ddef908fea506fd9a0d209d6607370d47f52 Mon Sep 17 00:00:00 2001 From: beerpsi <92439990+beerpiss@users.noreply.github.com> Date: Thu, 15 Feb 2024 12:33:02 +0700 Subject: [PATCH] =?UTF-8?q?Add=20D=C6=B0a=20Leo=20Truy=E1=BB=87n=20(#1257)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Dua Leo Truyen * Add filters --- src/vi/dualeotruyen/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2788 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1425 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4300 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8482 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 13670 bytes .../extension/vi/dualeotruyen/DuaLeoTruyen.kt | 194 ++++++++++++++++++ 7 files changed, 202 insertions(+) create mode 100644 src/vi/dualeotruyen/build.gradle create mode 100644 src/vi/dualeotruyen/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/vi/dualeotruyen/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/vi/dualeotruyen/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/vi/dualeotruyen/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/vi/dualeotruyen/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/vi/dualeotruyen/src/eu/kanade/tachiyomi/extension/vi/dualeotruyen/DuaLeoTruyen.kt diff --git a/src/vi/dualeotruyen/build.gradle b/src/vi/dualeotruyen/build.gradle new file mode 100644 index 000000000..e0dc6ed55 --- /dev/null +++ b/src/vi/dualeotruyen/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = "Dua Leo Truyen" + extClass = ".DuaLeoTruyen" + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/vi/dualeotruyen/res/mipmap-hdpi/ic_launcher.png b/src/vi/dualeotruyen/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ff5ec5fcc66aecd43b4a6469ca90a9d65522ff GIT binary patch literal 2788 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 literal 0 HcmV?d00001 diff --git a/src/vi/dualeotruyen/res/mipmap-xhdpi/ic_launcher.png b/src/vi/dualeotruyen/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce40870cf1e24adc925d6bef2266658e0101288 GIT binary patch literal 4300 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 + .firstOrNull() ?: return popularMangaRequest(page) + addPathSegments(genreFilter.genre[genreFilter.state].path) + } + + if (page > 1) { + addQueryParameter("page", page.toString()) + } + }.build() + + return GET(url, headers) + } + + override fun searchMangaSelector() = popularMangaSelector() + + override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) + + override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() + + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + val statusText = document.selectFirst(".card-body dt:contains(Trạng thái) + dd")?.text() + + title = document.selectFirst(".card-title")!!.text() + description = document.selectFirst(".comics-description .inner")?.text() + genre = document.select(".cate-item").joinToString { it.text() } + status = when (statusText) { + "Đang phát hành" -> SManga.ONGOING + "Đã đủ bộ" -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + thumbnail_url = document.selectFirst("img.img-fluid")?.absUrl("src") + } + + override fun chapterListSelector() = ".list-chapters > .item" + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + element.selectFirst(".episode-title a")!!.let { + setUrlWithoutDomain(it.attr("href")) + name = it.text() + } + date_upload = element.selectFirst(".episode-date span")?.let { parseRelativeDate(it.text()) } ?: 0L + } + + override fun pageListParse(document: Document): List { + countView(document) + + return document.select("img.chapter-img").mapIndexed { i, it -> + Page(i, imageUrl = it.absUrl("data-original")) + } + } + + override fun imageUrlParse(document: Document) = throw UnsupportedOperationException() + + override fun getFilterList() = FilterList( + Filter.Header("Không dùng được khi tìm kiếm bằng tên truyện"), + GenreFilter(getGenreList()), + ) + + private fun countView(document: Document) { + val chapterId = document.selectFirst("input#chapter_id")!!.`val`() + val comicsId = document.selectFirst("input#comics_id")!!.`val`() + val token = document.selectFirst("meta[name=_token]")!!.attr("content") + val form = FormBody.Builder() + .add("_token", token) + .add("comics_id", comicsId) + .add("chapter_id", chapterId) + .build() + val request = POST("$baseUrl/ajax/increase-view-chapter", headers, form) + + client.newCall(request).execute().close() + } + + private fun parseRelativeDate(date: String): Long { + val dateParts = date.split(" ") + + val calendar = Calendar.getInstance().apply { + val amount = -dateParts[0].toInt() + val field = when (dateParts[1]) { + "giây" -> Calendar.SECOND + "phút" -> Calendar.MINUTE + "giờ" -> Calendar.HOUR_OF_DAY + "ngày" -> Calendar.DAY_OF_MONTH + "tuần" -> Calendar.WEEK_OF_MONTH + "tháng" -> Calendar.MONTH + "năm" -> Calendar.YEAR + else -> Calendar.SECOND + } + + add(field, amount) + } + + return calendar.timeInMillis + } + + private class Genre(val name: String, val path: String) + + private class GenreFilter(val genre: List) : Filter.Select("Thể loại", genre.map { it.name }.toTypedArray()) + + // copy([...document.querySelectorAll(".dropdown-menu .dropdown-item")].map((e) => `Genre("${e.textContent.trim()}", "${new URL(e).pathname.replace("/", "")}"),`).join("\n")) + // "Tất cả" and "Truyện full" are custom genres that are lumped in to make my life easier. + private fun getGenreList() = listOf( + Genre("Tất cả", "truyen-tranh-moi.html"), + Genre("Truyện full", "truyen-hoan-thanh.html"), + Genre("18+", "the-loai/18-.html"), + Genre("ABO", "the-loai/abo.html"), + Genre("Bách Hợp", "the-loai/bach-hop.html"), + Genre("BoyLove", "the-loai/boylove.html"), + Genre("Chuyển Sinh", "the-loai/chuyen-sinh.html"), + Genre("Cổ Đại", "the-loai/co-dai.html"), + Genre("Doujinshi", "the-loai/doujinshi.html"), + Genre("Drama", "the-loai/drama.html"), + Genre("Đam Mỹ", "the-loai/dam-my.html"), + Genre("Echi", "the-loai/echi.html"), + Genre("GirlLove", "the-loai/girllove.html"), + Genre("Hài Hước", "the-loai/hai-huoc.html"), + Genre("Hành Động", "the-loai/hanh-dong.html"), + Genre("Harem", "the-loai/harem.html"), + Genre("Hentai", "the-loai/hentai.html"), + Genre("Kịch Tính", "the-loai/kich-tinh.html"), + Genre("Lãng Mạn", "the-loai/lang-man.html"), + Genre("Manga", "the-loai/manga.html"), + Genre("Manhua", "the-loai/manhua.html"), + Genre("Manhwa", "the-loai/manhwa.html"), + Genre("Người Thú", "the-loai/nguoi-thu.html"), + Genre("Oneshot", "the-loai/oneshot.html"), + Genre("Phiêu Lưu", "the-loai/phieu-luu.html"), + Genre("Tình Cảm", "the-loai/tinh-cam.html"), + Genre("Truyện Màu", "the-loai/truyen-mau.html"), + Genre("Yaoi", "the-loai/yaoi.html"), + Genre("Yuri", "the-loai/yuri.html"), + ) +}