GocTruyenTranh: Update genre & use parseAs and tryParse (#9877)

Update genre & use parseAs and tryParse
This commit is contained in:
are-are-are 2025-08-01 16:54:36 +07:00 committed by Draff
parent 2f54e79818
commit cb86a4ac6e
Signed by: Draff
GPG Key ID: E8A89F3211677653
2 changed files with 35 additions and 37 deletions

View File

@ -1,7 +1,7 @@
ext { ext {
extName = 'Goc Truyen Tranh' extName = 'Goc Truyen Tranh'
extClass = '.GocTruyenTranh' extClass = '.GocTruyenTranh'
extVersionCode = 4 extVersionCode = 5
isNsfw = true isNsfw = true
} }

View File

@ -14,8 +14,8 @@ import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import keiyoushi.utils.getPreferences import keiyoushi.utils.getPreferences
import kotlinx.serialization.decodeFromString import keiyoushi.utils.parseAs
import kotlinx.serialization.json.Json import keiyoushi.utils.tryParse
import okhttp3.Headers import okhttp3.Headers
import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
@ -23,7 +23,6 @@ import okhttp3.Request
import okhttp3.Response import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import uy.kohesive.injekt.injectLazy
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Calendar import java.util.Calendar
import java.util.Locale import java.util.Locale
@ -44,10 +43,8 @@ class GocTruyenTranh : ParsedHttpSource(), ConfigurableSource {
private val dateFormat = SimpleDateFormat("dd-MM-yyyy HH:mm:ss", Locale.US) private val dateFormat = SimpleDateFormat("dd-MM-yyyy HH:mm:ss", Locale.US)
private val json: Json by injectLazy()
override val client: OkHttpClient = network.cloudflareClient.newBuilder() override val client: OkHttpClient = network.cloudflareClient.newBuilder()
.rateLimit(1) .rateLimit(3)
.build() .build()
override fun headersBuilder(): Headers.Builder = super.headersBuilder() override fun headersBuilder(): Headers.Builder = super.headersBuilder()
@ -92,7 +89,7 @@ class GocTruyenTranh : ParsedHttpSource(), ConfigurableSource {
"phút trước" -> calendar.apply { add(Calendar.MINUTE, -number) }.timeInMillis "phút trước" -> calendar.apply { add(Calendar.MINUTE, -number) }.timeInMillis
"giờ trước" -> calendar.apply { add(Calendar.HOUR, -number) }.timeInMillis "giờ trước" -> calendar.apply { add(Calendar.HOUR, -number) }.timeInMillis
"ngày trước" -> calendar.apply { add(Calendar.DAY_OF_YEAR, -number) }.timeInMillis "ngày trước" -> calendar.apply { add(Calendar.DAY_OF_YEAR, -number) }.timeInMillis
else -> dateFormat.parse(date)?.time else -> dateFormat.tryParse(date)
} }
}.getOrNull() ?: 0L }.getOrNull() ?: 0L
@ -164,7 +161,7 @@ class GocTruyenTranh : ParsedHttpSource(), ConfigurableSource {
} }
override fun searchMangaParse(response: Response): MangasPage { override fun searchMangaParse(response: Response): MangasPage {
val json = json.decodeFromString<SearchDTO>(response.body.string()) val json = response.parseAs<SearchDTO>()
val manga = json.comics.data.map { val manga = json.comics.data.map {
SManga.create().apply { SManga.create().apply {
title = it.name title = it.name
@ -241,16 +238,16 @@ class GocTruyenTranh : ParsedHttpSource(), ConfigurableSource {
Genre("Adventure", "2"), Genre("Adventure", "2"),
Genre("Fantasy", "3"), Genre("Fantasy", "3"),
Genre("Manhua", "4"), Genre("Manhua", "4"),
Genre("Chuyển", "5"), Genre("Chuyển Sinh", "5"),
Genre("Truyện", "6"), Genre("Truyện Màu", "6"),
Genre("Xuyên", "7"), Genre("Xuyên Không", "7"),
Genre("Manhwa", "8"), Genre("Manhwa", "8"),
Genre("Drama", "9"), Genre("Drama", "9"),
Genre("Historical", "10"), Genre("Historical", "10"),
Genre("Manga", "11"), Genre("Manga", "11"),
Genre("Seinen", "12"), Genre("Seinen", "12"),
Genre("Comedy", "13"), Genre("Comedy", "13"),
Genre("Martial", "14"), Genre("Martial Arts", "14"),
Genre("Mystery", "15"), Genre("Mystery", "15"),
Genre("Romance", "16"), Genre("Romance", "16"),
Genre("Shounen", "17"), Genre("Shounen", "17"),
@ -260,53 +257,54 @@ class GocTruyenTranh : ParsedHttpSource(), ConfigurableSource {
Genre("Webtoon", "21"), Genre("Webtoon", "21"),
Genre("School", "22"), Genre("School", "22"),
Genre("Psychological", "23"), Genre("Psychological", "23"),
Genre("Cổ", "24"), Genre("Cổ Đại", "24"),
Genre("Ecchi", "25"), Genre("Ecchi", "25"),
Genre("Gender", "26"), Genre("Gender Bender", "26"),
Genre("Shoujo", "27"), Genre("Shoujo", "27"),
Genre("Slice", "28"), Genre("Slice of Life", "28"),
Genre("Ngôn", "29"), Genre("Ngôn Tình", "29"),
Genre("Horror", "30"), Genre("Horror", "30"),
Genre("Sci", "31"), Genre("Sci-fi", "31"),
Genre("Tragedy", "32"), Genre("Tragedy", "32"),
Genre("Mecha", "33"), Genre("Mecha", "33"),
Genre("Comic", "34"), Genre("Comic", "34"),
Genre("One", "35"), Genre("One shot", "35"),
Genre("Shoujo", "36"), Genre("Shoujo Ai", "36"),
Genre("Anime", "37"), Genre("Anime", "37"),
Genre("Josei", "38"), Genre("Josei", "38"),
Genre("Smut", "39"), Genre("Smut", "39"),
Genre("Shounen", "40"), Genre("Shounen Ai", "40"),
Genre("Mature", "41"), Genre("Mature", "41"),
Genre("Soft", "42"), Genre("Soft Yuri", "42"),
Genre("Adult", "43"), Genre("Adult", "43"),
Genre("Doujinshi", "44"), Genre("Doujinshi", "44"),
Genre("Live", "45"), Genre("Live action", "45"),
Genre("Trinh", "46"), Genre("Trinh Thám", "46"),
Genre("Việt", "47"), Genre("Việt Nam", "47"),
Genre("Truyện", "48"), Genre("Truyện Scan", "48"),
Genre("Cooking", "49"), Genre("Cooking", "49"),
Genre("Tạp", "50"), Genre("Tạp chí truyện tranh", "50"),
Genre("16", "51"), Genre("16+", "51"),
Genre("Thiếu", "52"), Genre("Thiếu Nhi", "52"),
Genre("Soft", "53"), Genre("Soft Yaoi", "53"),
Genre("Đam", "54"), Genre("Đam Mỹ", "54"),
Genre("BoyLove", "55"), Genre("BoyLove", "55"),
Genre("Yaoi", "56"), Genre("Yaoi", "56"),
Genre("18", "57"), Genre("18+", "57"),
Genre("Người", "58"), Genre("Người Thú", "58"),
Genre("ABO", "59"), Genre("ABO", "59"),
Genre("Mafia", "60"), Genre("Mafia", "60"),
Genre("Isekai", "61"), Genre("Isekai", "61"),
Genre("Hệ", "62"), Genre("Hệ Thống", "62"),
Genre("NTR", "63"), Genre("NTR", "63"),
Genre("Yuri", "64"), Genre("Yuri", "64"),
Genre("Girl", "65"), Genre("Girl Love", "65"),
Genre("Demons", "66"), Genre("Demons", "66"),
Genre("Huyền", "67"), Genre("Huyền Huyễn", "67"),
Genre("Detective", "68"), Genre("Detective", "68"),
Genre("Trọng", "69"), Genre("Trọng Sinh", "69"),
Genre("Magic", "70"), Genre("Magic", "70"),
Genre("Military", "71"),
) )
private val preferences: SharedPreferences = getPreferences() private val preferences: SharedPreferences = getPreferences()