Skip to content

Commit

Permalink
add DocTruyen3Q (#6439)
Browse files Browse the repository at this point in the history
* added DocTruyen3Q

* Update src/vi/doctruyen3q/src/eu/kanade/tachiyomi/extension/vi/doctruyen3q/DocTruyen3Q.kt

Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>

* Fix space + avoid non null

* avoid non null

* update

---------

Co-authored-by: AwkwardPeak7 <48650614+AwkwardPeak7@users.noreply.github.com>
  • Loading branch information
2 people authored and cuong-tran committed Dec 6, 2024
1 parent 385dbd1 commit 62b4775
Show file tree
Hide file tree
Showing 7 changed files with 98 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/vi/doctruyen3q/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
ext {
extName = 'DocTruyen3Q'
extClass = '.DocTruyen3Q'
themePkg = 'wpcomics'
baseUrl = 'https://doctruyen3qk.pro'
overrideVersionCode = 0
isNsfw = true
}

apply from: "$rootDir/common.gradle"
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package eu.kanade.tachiyomi.extension.vi.doctruyen3q

import eu.kanade.tachiyomi.multisrc.wpcomics.WPComics
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Request
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
import java.util.TimeZone

class DocTruyen3Q : WPComics(
"DocTruyen3Q",
"https://doctruyen3qk.pro",
"vi",
dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.ROOT).apply {
timeZone = TimeZone.getTimeZone("Asia/Ho_Chi_Minh")
},
gmtOffset = null,
) {
override val client = super.client.newBuilder()
.rateLimit(3)
.build()

override fun pageListParse(document: Document): List<Page> {
return document.select(".page-chapter a img, .page-chapter img").mapIndexed { index, element ->
val img = element.attr("abs:src").takeIf { it.isNotBlank() } ?: element.attr("abs:data-original")
Page(index, imageUrl = img)
}.distinctBy { it.imageUrl }
}

override fun popularMangaSelector() = "div.item-manga div.item"

override fun popularMangaFromElement(element: Element) = SManga.create().apply {
element.selectFirst("h3 a")?.let {
title = it.text()
setUrlWithoutDomain(it.attr("abs:href"))
}
thumbnail_url = element.selectFirst("img")?.attr("abs:src")
}

override fun searchMangaSelector() = popularMangaSelector()

override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element)

override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = "$baseUrl/$searchPath".toHttpUrl().newBuilder()

filters.forEach { filter ->
when (filter) {
is GenreFilter -> filter.toUriPart()?.let { url.addPathSegment(it) }
is StatusFilter -> filter.toUriPart()?.let { url.addQueryParameter("status", it) }
else -> {}
}
}

when {
query.isNotBlank() -> url.addQueryParameter(queryParam, query)
else -> url.addQueryParameter("page", page.toString())
}

return GET(url.toString(), headers)
}

override fun mangaDetailsParse(document: Document) = SManga.create().apply {
title = document.selectFirst("h1.title-manga")!!.text()
description = document.selectFirst("p.detail-summary")?.text()
status = document.selectFirst("li.status p.detail-info span")?.text().toStatus()
genre = document.select("li.category p.detail-info a")?.joinToString { it.text() }
thumbnail_url = document.selectFirst("img.image-comic")?.attr("abs:src")
}

override fun chapterListSelector() = "div.list-chapter li.row:not(.heading):not([style])"

override fun chapterFromElement(element: Element): SChapter {
return super.chapterFromElement(element).apply {
date_upload = element.selectFirst(".chapters + div")?.text().toDate()
}
}

override val genresSelector = ".categories-detail ul.nav li:not(.active) a"
}

0 comments on commit 62b4775

Please sign in to comment.