From ffff87d5a0488c79bf47f97d4beec0015f254dee Mon Sep 17 00:00:00 2001 From: are-are-are <62763969+dejavui@users.noreply.github.com> Date: Sat, 26 Jul 2025 00:42:57 +0700 Subject: [PATCH] Add source GocTruyenTranhVui (#9728) * Add GocTruyenTranhVui * Use jsonInstance * Use parseAs * Use HttpSource() * Merge DTO files * Using chapterListParse and loginRequired * Fix variable * Use toManga(), Use toChapter(), fix no chapter * Fix Url, Works well * Add Advanced search * Optimize variable naming & add mangaId cache * MangaIdCache: Add limit cache * Apply suggestion * Fix package declaration, format using Android Studio * Fix names: use camel case Dto instead of DTO even if it's acronym; add S in to[S]Manga/Chapter * Use generic ResultDto to replace similar classes * Inline the typealiases, which are used to demonstrate how to use generics * More conventional namings * Change manga url format; override getMangaUrl; fix chapterListParse slug which is definitely not tested; remove useless HTML parse fallback * Use timestamp value from API instead of parsing string * Early abort in pageListParse() * Refactor filters; don't get an empty filter list if argument is empty, it's uselss * Parse more manga fields from API and set initialized because all fields are filled; fix listing next page; use selectFirst()!!.text() instead of select().text() * Use search endpoint for latest updates; the home endpoint doesn't provide genres --------- Co-authored-by: stevenyomi <95685115+stevenyomi@users.noreply.github.com> --- src/vi/goctruyentranhvui/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4297 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2372 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6065 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 11808 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 19556 bytes .../extension/vi/goctruyentranhvui/Dto.kt | 70 +++++++++ .../extension/vi/goctruyentranhvui/Filters.kt | 74 ++++++++++ .../vi/goctruyentranhvui/GocTruyenTranhVui.kt | 138 ++++++++++++++++++ 9 files changed, 290 insertions(+) create mode 100644 src/vi/goctruyentranhvui/build.gradle create mode 100644 src/vi/goctruyentranhvui/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/vi/goctruyentranhvui/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/vi/goctruyentranhvui/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/vi/goctruyentranhvui/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/vi/goctruyentranhvui/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Dto.kt create mode 100644 src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Filters.kt create mode 100644 src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/GocTruyenTranhVui.kt diff --git a/src/vi/goctruyentranhvui/build.gradle b/src/vi/goctruyentranhvui/build.gradle new file mode 100644 index 000000000..02b4ed9eb --- /dev/null +++ b/src/vi/goctruyentranhvui/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'Goc Truyen Tranh Vui' + extClass = '.GocTruyenTranhVui' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/vi/goctruyentranhvui/res/mipmap-hdpi/ic_launcher.png b/src/vi/goctruyentranhvui/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..fb02ea5dc1218908c1eb9da08fabda11e9935f70 GIT binary patch literal 4297 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 literal 0 HcmV?d00001 diff --git a/src/vi/goctruyentranhvui/res/mipmap-mdpi/ic_launcher.png b/src/vi/goctruyentranhvui/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1571191fdae4673e5fbad9754c40b4f0ca46c34c GIT binary patch literal 2372 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 literal 0 HcmV?d00001 diff --git a/src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Dto.kt b/src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Dto.kt new file mode 100644 index 000000000..fb819578f --- /dev/null +++ b/src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Dto.kt @@ -0,0 +1,70 @@ +package eu.kanade.tachiyomi.extension.vi.goctruyentranhvui + +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import kotlinx.serialization.Serializable + +@Serializable +class ResultDto( + val result: T, +) + +@Serializable +class ChapterDto( + private val numberChapter: String, + private val updateTime: Long, +) { + fun toSChapter(slug: String): SChapter = SChapter.create().apply { + name = numberChapter + date_upload = updateTime + url = "/truyen/$slug/chuong-$numberChapter" + } +} + +@Serializable +class ChapterListDto( + val chapters: List, +) + +@Serializable +class ListingDto( + val next: Boolean, + val data: List, +) + +@Serializable +class MangaDto( + private val id: String, + private val name: String, + private val description: String, + private val statusCode: String, + private val photo: String, + private val nameEn: String, + private val author: String, + private val category: List? = null, +) { + fun toSManga(baseUrl: String): SManga = SManga.create().apply { + title = name + thumbnail_url = baseUrl + photo + url = "$id:$nameEn" + author = this@MangaDto.author + description = this@MangaDto.description + genre = category?.joinToString() + status = when (statusCode) { + "PRG" -> SManga.ONGOING + "END" -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + initialized = true + } +} + +@Serializable +class ImageListWrapper( + val body: ResultDto, +) + +@Serializable +class ImageListDto( + val data: List, +) diff --git a/src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Filters.kt b/src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Filters.kt new file mode 100644 index 000000000..d6cda67a1 --- /dev/null +++ b/src/vi/goctruyentranhvui/src/eu/kanade/tachiyomi/extension/vi/goctruyentranhvui/Filters.kt @@ -0,0 +1,74 @@ +package eu.kanade.tachiyomi.extension.vi.goctruyentranhvui + +import eu.kanade.tachiyomi.source.model.Filter + +class Option(name: String, val id: String) : Filter.CheckBox(name) +open class FilterGroup(name: String, val query: String, state: List