From 0c4cea69e68dfb04c88499cfe8c033fca7f1def2 Mon Sep 17 00:00:00 2001 From: are-are-are <62763969+dejavui@users.noreply.github.com> Date: Fri, 8 Nov 2024 16:28:58 +0700 Subject: [PATCH] Add VlogTruyen (#5820) * Add vlogtruyen * Updates changes * Fix date_upload * Update selector for filter * Edit fetchchapter * Parse Json Chapter * Delete SerialName & variables not use * Delete return popularMangaRequest & latestUpdatesRequest --- src/vi/vlogtruyen/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4867 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2556 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7630 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 14873 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 24065 bytes .../extension/vi/vlogtruyen/ChapterDTO.kt | 14 ++ .../extension/vi/vlogtruyen/VlogTruyen.kt | 219 ++++++++++++++++++ 8 files changed, 241 insertions(+) create mode 100644 src/vi/vlogtruyen/build.gradle create mode 100644 src/vi/vlogtruyen/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/vi/vlogtruyen/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/vi/vlogtruyen/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/vi/vlogtruyen/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/vi/vlogtruyen/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/ChapterDTO.kt create mode 100644 src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/VlogTruyen.kt diff --git a/src/vi/vlogtruyen/build.gradle b/src/vi/vlogtruyen/build.gradle new file mode 100644 index 000000000..a43586029 --- /dev/null +++ b/src/vi/vlogtruyen/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'VlogTruyen' + extClass = '.VlogTruyen' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/vi/vlogtruyen/res/mipmap-hdpi/ic_launcher.png b/src/vi/vlogtruyen/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e85fe97e08d9e197c451e3286116f6ae8bd75bf9 GIT binary patch literal 4867 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 literal 0 HcmV?d00001 diff --git a/src/vi/vlogtruyen/res/mipmap-mdpi/ic_launcher.png b/src/vi/vlogtruyen/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6c6576d900d1eb9f88871e5b657f2ea3d37617f1 GIT binary patch literal 2556 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 literal 0 HcmV?d00001 diff --git a/src/vi/vlogtruyen/res/mipmap-xxhdpi/ic_launcher.png b/src/vi/vlogtruyen/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8758012bea81c4fe8366f118298383ebacbb6b42 GIT binary patch literal 14873 zcma)jRaYEL*X-a9Gq^JhERR2sYga|8smNiWlcECv04xQ0X^rCqvNxA{FhdTL*Ls9ooQ9G{7TVg25Nig8fT}(5c(w zRGgr0$C0h~e-)HYmkg+7o*yemT7!hQpi?xZwgI-p!=2Y&ez(gtpUwa_Xr|-D(rW<5 zMBATV>bmdj1~~Fi!z9z?AfV5zgdw$Oww^^>s2|8aB+DutWw_s6FgmyV&CZ0cuW3oP zBEgP8aBLO&{nuxOpFHkA`}O7%H$cabA}@EzR6r*DC^Akav-f(lZ7VMi&r4xTON;md z>T214g2irvmB|}|s)F|^(>)GEWRw2DF#A-B z=B=`traLiBfL-0n{J*J|-nE+>HN;ii*Mom;o9P zCARhejYgjE3E2Rs#P3YT&&*kqQnJe`Y=HH6ES-voZxTx~uR>9GH)hQsdpa(7(@8%<#13K0Qb3g)d`vpo=I=mheXf?$ak0 zI{2m6m>yki0_b;XhrHF_4xIMs@M;s`WPFa~K6mGlrW~;0VOcF*-QupUoGnYi4qDBo zG)K9w%dcOL1annVQvM9U5^2=+^Z@!v)Qa#6q)>UMEa81s1l>PO-%uDEm3FCjLkG;H zi`2=PSq4^2zU8{hS1bUaURS#VW5N|CFQ>X0P+MG5Qc^Wdqgbg39E+#Bi}LDfOTLfd zQL@Dab5CBv)1plz(WIfTjuSLvp$&o<;IS_C4k8KQT-kSgz8zt_WCoM4qWwG$CAba+ zFeextf=RE+U-0m<@U|+3DQ;&NQafZOIdZC6#zx+&Tmf}JLbbN zC$lO`)CTI2&Wth1zZjgq?<4LD0vD7QBl`IX&}oQc!Q`=$n%dI+W}%YQchI@_QymOU z<3CJ8WAV@i2pCb~6W;f=Mbqz23$zxO>!L}zzgJp3D$i@!AT$mK4 zbU3I=MWq%t?Ci*?KTVg)Ca%v+UK*F!6zwC}unNAtOx3we#GEADT}Ur9{z?dDmS!lp zcb2#!kQ`?To-IbT1EXY3z$t6!ts83c$5dvKYArAB9yb)Pw)^s7r%^~UlAAv(i#OiJ z+NUY{iDj>%1;buL!p+zJtnt6~H(U|^Q^y0jd{>duE{^JeMJ3NMR!WiD9UyBdAGL=` zDPA^mAm4&3PC z!U|BIa|S2j3w@?ISJt)!Xbt{U5C{}K7nqqdx8{_60-DcJ-DS}=eNQ+j)%ALw6Xlc`kIadLo z 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 literal 0 HcmV?d00001 diff --git a/src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/ChapterDTO.kt b/src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/ChapterDTO.kt new file mode 100644 index 000000000..058028081 --- /dev/null +++ b/src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/ChapterDTO.kt @@ -0,0 +1,14 @@ +package eu.kanade.tachiyomi.extension.vi.vlogtruyen + +import kotlinx.serialization.Serializable + +@Serializable +data class ChapterDTO( + val status: Boolean, + val data: Data, +) + +@Serializable +class Data( + val chaptersHtml: String, +) diff --git a/src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/VlogTruyen.kt b/src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/VlogTruyen.kt new file mode 100644 index 000000000..c44ca2ba0 --- /dev/null +++ b/src/vi/vlogtruyen/src/eu/kanade/tachiyomi/extension/vi/vlogtruyen/VlogTruyen.kt @@ -0,0 +1,219 @@ +package eu.kanade.tachiyomi.extension.vi.vlogtruyen + +import android.app.Application +import android.content.SharedPreferences +import android.widget.Toast +import androidx.preference.EditTextPreference +import androidx.preference.PreferenceScreen +import androidx.preference.SwitchPreferenceCompat +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.asObservableSuccess +import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.source.ConfigurableSource +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 eu.kanade.tachiyomi.source.online.ParsedHttpSource +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import org.jsoup.Jsoup +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import rx.Observable +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy +import java.text.SimpleDateFormat +import java.util.Locale + +class VlogTruyen : ParsedHttpSource(), ConfigurableSource { + + override val lang = "vi" + + override val name = "VlogTruyen" + + override val supportsLatest = true + + private val defaultBaseUrl = "https://vlogtruyen33.com" + + override val baseUrl by lazy { getPrefBaseUrl() } + + private val searchURL by lazy { "$baseUrl/tim-kiem" } + + private val dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.US) + + private val json: Json by injectLazy() + + override val client: OkHttpClient = network.cloudflareClient.newBuilder() + .rateLimit(1) + .build() + + override fun headersBuilder(): Headers.Builder = super.headersBuilder() + .add("Referer", "$baseUrl/") + .add("X-Requested-With", "XMLHttpRequest") + + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/the-loai/moi-cap-nhap/?page=$page", headers) + + override fun latestUpdatesFromElement(element: Element): SManga = SManga.create().apply { + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + title = element.select("h3.title-commic-tab").text() + thumbnail_url = element.selectFirst(".image-commic-tab img.lazyload")?.attr("data-src") + } + + override fun latestUpdatesNextPageSelector() = ".pagination > li.active + li" + + override fun latestUpdatesSelector() = "div.content-tab ul li.commic-hover" + + override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/the-loai/dang-hot?page=$page", headers) + + override fun popularMangaFromElement(element: Element) = latestUpdatesFromElement(element) + + override fun popularMangaNextPageSelector() = latestUpdatesNextPageSelector() + + override fun popularMangaSelector() = latestUpdatesSelector() + + override fun mangaDetailsParse(document: Document): SManga = SManga.create().apply { + title = document.select("h1.title-commic-detail").text() + genre = document.select(".categories-list-detail-commic > li > a").joinToString { it.text().trim(',', ' ') } + description = document.select("div.top-detail-manga > div.top-detail-manga-content > span.desc-commic-detail").text() + thumbnail_url = document.select("div.image-commic-detail > a > img").attr("data-src") + status = parseStatus(document.selectFirst("div.top-detail-manga > div.top-detail-manga-avatar > div.manga-status > p")?.text()) + author = document.select(".h5-drawer:contains(Tác Giả) + ul li a").joinToString { it.text() } + } + + private fun parseStatus(status: String?) = when { + status == null -> SManga.UNKNOWN + status.contains("Đang tiến hành") -> SManga.ONGOING + status.contains("Đã hoàn thành") -> SManga.COMPLETED + status.contains("Tạm ngưng") -> SManga.ON_HIATUS + else -> SManga.UNKNOWN + } + + override fun chapterListParse(response: Response): List { + val json = json.decodeFromString(response.body.string().replace("\\n", "")) + val document = Jsoup.parseBodyFragment(json.data.chaptersHtml, response.request.url.toString()) + val hidePaidChapters = preferences.getBoolean(KEY_HIDE_PAID_CHAPTERS, false) + return document.select("li, .ul-list-chaper-detail-commic li").filterNot { + if (hidePaidChapters) { + it.select("li:not(:has(> b))").text().isBlank().or(!hidePaidChapters) + } else { + it.select("li > a").text().isBlank().or(false) + } + } + .mapNotNull { + SChapter.create().apply { + setUrlWithoutDomain(it.selectFirst("a")!!.attr("href")) + name = it.select("h3").first()!!.text().trim() + if (it.select("li > b").text().isNotBlank()) { + name += " " + it.select("li > b").text() + " 🔒" + } + date_upload = parseDate(it.select("li:not(:has(> span.chapter-view)) > span, li > span:last-child").text()) + } + } + } + + private fun parseDate(date: String): Long = runCatching { + dateFormat.parse(date)?.time + }.getOrNull() ?: 0L + + override fun fetchChapterList(manga: SManga): Observable> { + val url = client.newCall(GET(baseUrl + manga.url, headers)).execute().asJsoup() + if (checkChapterLists(url).isNotEmpty()) { + val mangaId = checkChapterLists(url) + return client.newCall(GET("$baseUrl/thong-tin-ca-nhan?manga_id=$mangaId", headers)) + .asObservableSuccess() + .map { response -> chapterListParse(response) } + } + return super.fetchChapterList(manga) + } + + private fun checkChapterLists(document: Document) = document.selectFirst("input[name=manga_id]")!!.attr("value") + + override fun chapterListSelector() = throw UnsupportedOperationException() + + override fun chapterFromElement(element: Element) = throw UnsupportedOperationException() + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val url = searchURL.toHttpUrl().newBuilder().apply { + addQueryParameter("q", query) + if (page > 1) { + addQueryParameter("page", page.toString()) + } + }.build() + return GET(url, headers) + } + + override fun searchMangaFromElement(element: Element): SManga = latestUpdatesFromElement(element) + + override fun searchMangaNextPageSelector(): String = latestUpdatesNextPageSelector() + + override fun searchMangaSelector(): String = latestUpdatesSelector() + + override fun pageListParse(document: Document): List { + val loginRequired = document.selectFirst(".area-show-content span") + + if (loginRequired != null) { + throw Exception("${loginRequired.text()} Hãy đăng nhập trong WebView.") + } + return document.select(".comicDetails img").mapIndexed { i, e -> + Page(i, imageUrl = e.attr("abs:src")) + } + } + + override fun imageUrlParse(document: Document): String = "" + + 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) { + 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 + } + }.let(screen::addPreference) + + SwitchPreferenceCompat(screen.context).apply { + key = KEY_HIDE_PAID_CHAPTERS + title = "Ẩn các chương cần tài khoản" + summary = "Ẩn các chương truyện cần nạp xu để đọc." + setDefaultValue(false) + }.let(screen::addPreference) + } + + 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." + private const val KEY_HIDE_PAID_CHAPTERS = "hidePaidChapters" + } +}