From 62e3b88156749dba51da162659179d2b1c11586c Mon Sep 17 00:00:00 2001 From: are-are-are <62763969+dejavui@users.noreply.github.com> Date: Fri, 25 Oct 2024 06:52:38 +0700 Subject: [PATCH 1/3] Add TruyenGG --- src/vi/truyengg/build.gradle | 7 + .../truyengg/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5421 bytes .../truyengg/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2841 bytes .../truyengg/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 8342 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 16293 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 26291 bytes .../extension/vi/truyengg/TruyenGG.kt | 310 ++++++++++++++++++ 7 files changed, 317 insertions(+) create mode 100644 src/vi/truyengg/build.gradle create mode 100644 src/vi/truyengg/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/vi/truyengg/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/vi/truyengg/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/vi/truyengg/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/vi/truyengg/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt diff --git a/src/vi/truyengg/build.gradle b/src/vi/truyengg/build.gradle new file mode 100644 index 00000000000..3f917fb1a6b --- /dev/null +++ b/src/vi/truyengg/build.gradle @@ -0,0 +1,7 @@ +ext { + extName = 'TruyenGG' + extClass = '.TruyenGG' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" diff --git a/src/vi/truyengg/res/mipmap-hdpi/ic_launcher.png b/src/vi/truyengg/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cb246293de4da78d5c4193f94a83bfc59244473b GIT binary patch literal 5421 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 X1pb}800000NkvXXu0mjfs`+#K literal 0 HcmV?d00001 diff --git a/src/vi/truyengg/res/mipmap-mdpi/ic_launcher.png b/src/vi/truyengg/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd16ced0f7473455d5c84150abed96e9fd973da GIT binary patch literal 2841 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 ZB{$woay8Xw~aT~?_t;8L$tNES;ERp zURqjW*?%ug$a~UVTbRiCK%cCfoF$s7&5Bk{A{DBpX(T5nBRBgkEiJUSwI%gU4QsjgA1wZZ!_2To`L@ZFiUESFqUXC00000NkvXXu0mjf82D+} literal 0 HcmV?d00001 diff --git a/src/vi/truyengg/res/mipmap-xhdpi/ic_launcher.png b/src/vi/truyengg/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..21ca90094d8b3449e842e673ec8c725c2d67488b GIT binary patch literal 8342 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 UMbk`7XaE2J07*qoM6N<$f SManga.ONGOING + "Hoàn Thành" -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + } + + override fun pageListParse(document: Document): List = + document.select(".content_detail img") + .mapIndexed { idx, it -> + Page(idx, imageUrl = it.attr("abs:src")) + } + + override fun pageListRequest(chapter: SChapter): Request = super.pageListRequest(chapter) + .newBuilder() + .cacheControl(CacheControl.FORCE_NETWORK) + .build() + + override fun popularMangaFromElement(element: Element): SManga = latestUpdatesFromElement(element) + + override fun popularMangaNextPageSelector(): String = latestUpdatesNextPageSelector() + + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/top-binh-chon/trang-$page.html", headers) + + override fun popularMangaSelector(): String = latestUpdatesSelector() + + override fun searchMangaFromElement(element: Element): SManga = latestUpdatesFromElement(element) + + override fun searchMangaNextPageSelector(): String = latestUpdatesNextPageSelector() + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = if (query.isNotBlank()) { + "$baseUrl/tim-kiem/trang-$page.html".toHttpUrl().newBuilder() + .addQueryParameter("q", query) + .build() + .toString() + } else { + val builder = "$baseUrl/tim-kiem-nang-cao/trang-$page.html".toHttpUrl().newBuilder() + (if (filters.isEmpty()) getFilterList() else filters).filterIsInstance() + .forEach { it.addToUri(builder) } + builder.build().toString() + } + return GET(url, headers) + } + + override fun searchMangaSelector(): String = latestUpdatesSelector() + + override fun getFilterList(): FilterList = FilterList( + Filter.Header("Không dùng chung với tìm kiếm bằng tên"), + CountryFilter(), + StatusFilter(), + ChapterCountFilter(), + SortByFilter(), + GenreList(getGenreList()), + ) + + interface UriFilter { + fun addToUri(builder: HttpUrl.Builder) + } + + open class UriPartFilter( + name: String, + private val query: String, + private val vals: Array>, + ) : UriFilter, Filter.Select(name, vals.map { it.first }.toTypedArray()) { + override fun addToUri(builder: HttpUrl.Builder) { + builder.addQueryParameter(query, vals[state].second) + } + } + + class CountryFilter : UriPartFilter( + "Quốc gia", + "country", + arrayOf( + "Tất cả" to "0", + "Trung Quốc" to "1", + "Việt Nam" to "2", + "Hàn Quốc" to "3", + "Nhật Bản" to "4", + "Mỹ" to "5", + ), + ) + + class StatusFilter : UriPartFilter( + "Tình trạng", + "status", + arrayOf( + "Tất cả" to "-1", + "Đang tiến hành" to "0", + "Hoàn thành" to "2", + ), + ) + + class ChapterCountFilter : UriPartFilter( + "Số lượng chương", + "minchapter", + arrayOf( + "0" to "0", + ">= 100" to "100", + ">= 200" to "200", + ">= 300" to "300", + ">= 400" to "400", + ">= 500" to "500", + ), + ) + + class SortByFilter : UriFilter, Filter.Sort( + "Sắp xếp", + arrayOf("Ngày đăng", "Ngày cập nhật", "Lượt xem"), + Selection(2, false), + ) { + override fun addToUri(builder: HttpUrl.Builder) { + val index = state?.index ?: 2 + val ascending = if (state?.ascending == true) 1 else 0 + builder.addQueryParameter("sort", (index * 2 + ascending).toString()) + } + } + + class Genre(name: String, val id: String) : Filter.TriState(name) + + class GenreList(state: List) : UriFilter, Filter.Group("Thể loại", state) { + override fun addToUri(builder: HttpUrl.Builder) { + val genres = mutableListOf() + val genresEx = mutableListOf() + + state.forEach { + when (it.state) { + TriState.STATE_INCLUDE -> genres.add(it.id) + TriState.STATE_EXCLUDE -> genresEx.add(it.id) + else -> {} + } + } + + builder.addQueryParameter("category", genres.joinToString(",")) + builder.addQueryParameter("notcategory", genresEx.joinToString(",")) + } + } + + private fun getGenreList() = listOf( + Genre("Action", "37"), + Genre("Adventure", "38"), + Genre("Anime", "39"), + Genre("Cổ Đại", "40"), + Genre("Comedy", "41"), + Genre("Comic", "42"), + Genre("Detective", "43"), + Genre("Doujinshi", "44"), + Genre("Drama", "45"), + Genre("Ecchi", "80"), + Genre("Fantasy", "46"), + Genre("Gender Bender", "47"), + Genre("Harem", "78"), + Genre("Historical", "48"), + Genre("Horror", "49"), + Genre("Huyền Huyễn", "50"), + Genre("Isekai", "51"), + Genre("Josei", "52"), + Genre("Magic", "53"), + Genre("Manga", "81"), + Genre("Manhua", "54"), + Genre("Manhwa", "55"), + Genre("Martial Arts", "56"), + Genre("Mystery", "57"), + Genre("Ngôn Tình", "58"), + Genre("One shot", "59"), + Genre("Psychological", "60"), + Genre("Romance", "61"), + Genre("School Life", "62"), + Genre("Sci-fi", "63"), + Genre("Seinen", "64"), + Genre("Shoujo", "65"), + Genre("Shoujo Ai", "66"), + Genre("Shounen", "67"), + Genre("Shounen Ai", "68"), + Genre("Slice of life", "69"), + Genre("Sports", "70"), + Genre("Supernatural", "71"), + Genre("Tragedy", "72"), + Genre("Truyện Màu", "73"), + Genre("Webtoon", "74"), + Genre("Xuyên Không", "75"), + Genre("Yuri", "76"), + ) + + private val preferences: SharedPreferences = + Injekt.get().getSharedPreferences("source_$id", 0x0000) + + init { + preferences.getString(DEFAULT_BASE_URL_PREF, null).let { prefDefaultBaseUrl -> + if (prefDefaultBaseUrl != defaultBaseUrl) { + preferences.edit() + .putString(BASE_URL_PREF, defaultBaseUrl) + .putString(DEFAULT_BASE_URL_PREF, defaultBaseUrl) + .apply() + } + } + } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val baseUrlPref = androidx.preference.EditTextPreference(screen.context).apply { + key = BASE_URL_PREF + title = BASE_URL_PREF_TITLE + summary = BASE_URL_PREF_SUMMARY + setDefaultValue(defaultBaseUrl) + dialogTitle = BASE_URL_PREF_TITLE + dialogMessage = "Default: $defaultBaseUrl" + + setOnPreferenceChangeListener { _, _ -> + Toast.makeText(screen.context, RESTART_APP, Toast.LENGTH_LONG).show() + true + } + } + screen.addPreference(baseUrlPref) + } + private fun getPrefBaseUrl(): String = preferences.getString(BASE_URL_PREF, defaultBaseUrl)!! + + companion object { + private const val DEFAULT_BASE_URL_PREF = "defaultBaseUrl" + private const val RESTART_APP = "Khởi chạy lại ứng dụng để áp dụng thay đổi." + private const val BASE_URL_PREF_TITLE = "Ghi đè URL cơ sở" + private const val BASE_URL_PREF = "overrideBaseUrl" + private const val BASE_URL_PREF_SUMMARY = + "Dành cho sử dụng tạm thời, cập nhật tiện ích sẽ xóa cài đặt." + } +} From c8fb095226f816b8c7adfc672d7c3d7c8443fa60 Mon Sep 17 00:00:00 2001 From: are-are-are <62763969+dejavui@users.noreply.github.com> Date: Sun, 27 Oct 2024 14:07:02 +0700 Subject: [PATCH 2/3] Update src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com> --- .../src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt b/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt index 20257b8cac2..c41551709ef 100644 --- a/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt +++ b/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt @@ -40,10 +40,7 @@ class TruyenGG() : ParsedHttpSource(), ConfigurableSource { override val lang = "vi" override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .connectTimeout(30, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) .retryOnConnectionFailure(true) - .followRedirects(true) .rateLimit(1) .build() From bd97923a9c30cdc67c4e5aeadeb6fb162e3c493a Mon Sep 17 00:00:00 2001 From: are-are-are <62763969+dejavui@users.noreply.github.com> Date: Mon, 4 Nov 2024 08:29:30 +0700 Subject: [PATCH 3/3] Clean code --- .../extension/vi/truyengg/TruyenGG.kt | 73 +++++++++---------- 1 file changed, 33 insertions(+), 40 deletions(-) diff --git a/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt b/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt index c41551709ef..30f6f290666 100644 --- a/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt +++ b/src/vi/truyengg/src/eu/kanade/tachiyomi/extension/vi/truyengg/TruyenGG.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.extension.vi.truyengg import android.app.Application import android.content.SharedPreferences import android.widget.Toast +import androidx.preference.EditTextPreference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.interceptor.rateLimit @@ -13,7 +14,6 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource -import okhttp3.CacheControl import okhttp3.Headers import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl @@ -25,42 +25,29 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.text.SimpleDateFormat import java.util.Locale -import java.util.concurrent.TimeUnit -class TruyenGG() : ParsedHttpSource(), ConfigurableSource { - - override val supportsLatest = true +class TruyenGG : ParsedHttpSource(), ConfigurableSource { override val name = "TruyenGG" - override val baseUrl by lazy { getPrefBaseUrl() } + override val lang = "vi" private val defaultBaseUrl = "https://truyengg.com" - override val lang = "vi" + override val supportsLatest = true + + override val baseUrl by lazy { getPrefBaseUrl() } override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .retryOnConnectionFailure(true) .rateLimit(1) .build() override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", "$baseUrl/") - override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply { - setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) - name = element.select("a").text() - date_upload = parseDate(element.select("span.cl99").text().trim()) - } private val dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.US) - private fun parseDate(date: String): Long = runCatching { - dateFormat.parse(date)?.time - }.getOrNull() ?: 0L - - override fun chapterListSelector() = "ul.list_chap > li.item_chap" - - override fun imageUrlParse(document: Document) = throw UnsupportedOperationException() + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/truyen-moi-cap-nhat/trang-$page.html", headers) override fun latestUpdatesFromElement(element: Element): SManga = SManga.create().apply { setUrlWithoutDomain(element.selectFirst("a.book_name")!!.attr("href")) @@ -68,11 +55,29 @@ class TruyenGG() : ParsedHttpSource(), ConfigurableSource { thumbnail_url = element.selectFirst(".image-cover img")!!.attr("data-src") } + override fun latestUpdatesSelector() = ".list_item_home .item_home" + override fun latestUpdatesNextPageSelector() = ".pagination a.active + a" - override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/truyen-moi-cap-nhat/trang-$page.html", headers) + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/top-binh-chon/trang-$page.html", headers) - override fun latestUpdatesSelector() = ".list_item_home .item_home" + override fun popularMangaFromElement(element: Element) = latestUpdatesFromElement(element) + + override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector() + + override fun popularMangaSelector() = latestUpdatesSelector() + + override fun chapterListSelector() = "ul.list_chap > li.item_chap" + + override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply { + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + name = element.select("a").text() + date_upload = parseDate(element.select("span.cl99").text().trim()) + } + + private fun parseDate(date: String): Long = runCatching { + dateFormat.parse(date)?.time + }.getOrNull() ?: 0L override fun mangaDetailsParse(document: Document): SManga = SManga.create().apply { title = document.select("h1[itemprop=name]").text() @@ -93,22 +98,11 @@ class TruyenGG() : ParsedHttpSource(), ConfigurableSource { Page(idx, imageUrl = it.attr("abs:src")) } - override fun pageListRequest(chapter: SChapter): Request = super.pageListRequest(chapter) - .newBuilder() - .cacheControl(CacheControl.FORCE_NETWORK) - .build() - - override fun popularMangaFromElement(element: Element): SManga = latestUpdatesFromElement(element) - - override fun popularMangaNextPageSelector(): String = latestUpdatesNextPageSelector() - - override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/top-binh-chon/trang-$page.html", headers) - - override fun popularMangaSelector(): String = latestUpdatesSelector() + override fun imageUrlParse(document: Document) = throw UnsupportedOperationException() - override fun searchMangaFromElement(element: Element): SManga = latestUpdatesFromElement(element) + override fun searchMangaFromElement(element: Element) = latestUpdatesFromElement(element) - override fun searchMangaNextPageSelector(): String = latestUpdatesNextPageSelector() + override fun searchMangaNextPageSelector() = latestUpdatesNextPageSelector() override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val url = if (query.isNotBlank()) { @@ -125,7 +119,7 @@ class TruyenGG() : ParsedHttpSource(), ConfigurableSource { return GET(url, headers) } - override fun searchMangaSelector(): String = latestUpdatesSelector() + override fun searchMangaSelector() = latestUpdatesSelector() override fun getFilterList(): FilterList = FilterList( Filter.Header("Không dùng chung với tìm kiếm bằng tên"), @@ -279,7 +273,7 @@ class TruyenGG() : ParsedHttpSource(), ConfigurableSource { } override fun setupPreferenceScreen(screen: PreferenceScreen) { - val baseUrlPref = androidx.preference.EditTextPreference(screen.context).apply { + EditTextPreference(screen.context).apply { key = BASE_URL_PREF title = BASE_URL_PREF_TITLE summary = BASE_URL_PREF_SUMMARY @@ -291,8 +285,7 @@ class TruyenGG() : ParsedHttpSource(), ConfigurableSource { Toast.makeText(screen.context, RESTART_APP, Toast.LENGTH_LONG).show() true } - } - screen.addPreference(baseUrlPref) + }.let(screen::addPreference) } private fun getPrefBaseUrl(): String = preferences.getString(BASE_URL_PREF, defaultBaseUrl)!!