GocTruyenTranhVui: Using the token of a level 1 account. Login is no longer required. (#9855)
* Currently using token of a lv1 account. Will not require login anymore Helps read most manga, manhua, manhwa. Manga/manhua/manhwa above level 1 will only be read on the web. * Apply suggestion
This commit is contained in:
parent
ca348c78eb
commit
e18a2f732c
@ -1,7 +1,7 @@
|
||||
ext {
|
||||
extName = 'Goc Truyen Tranh Vui'
|
||||
extClass = '.GocTruyenTranhVui'
|
||||
extVersionCode = 1
|
||||
extVersionCode = 2
|
||||
isNsfw = true
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package eu.kanade.tachiyomi.extension.vi.goctruyentranhvui
|
||||
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
import eu.kanade.tachiyomi.network.interceptor.rateLimit
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
@ -10,6 +11,7 @@ import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
import eu.kanade.tachiyomi.util.asJsoup
|
||||
import keiyoushi.utils.parseAs
|
||||
import okhttp3.FormBody
|
||||
import okhttp3.Headers
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
@ -94,18 +96,31 @@ class GocTruyenTranhVui : HttpSource() {
|
||||
val pattern = Regex("chapterJson:\\s*`(.*?)`")
|
||||
val match = pattern.find(html) ?: throw Exception("Không tìm thấy Json") // find json
|
||||
val jsonPage = match.groups[1]!!.value
|
||||
if (jsonPage.isEmpty()) throw Exception("Không có nội dung. Hãy đăng nhập trong WebView") // loginRequired
|
||||
val result = jsonPage.parseAs<ImageListWrapper>()
|
||||
val imageList = result.body.result.data
|
||||
return imageList.mapIndexed { i, url ->
|
||||
val finalUrl = if (url.startsWith("/image/")) {
|
||||
baseUrl + url
|
||||
} else {
|
||||
url
|
||||
}
|
||||
|
||||
val imageUrls = if (jsonPage.isEmpty()) {
|
||||
val regexMangaId = Regex("""comic\s*=\s*\{\s*id:\s*"(\d{10})"""")
|
||||
val matchId = regexMangaId.find(html) ?: throw Exception("Không tìm thấy mangaId") // find mangaId
|
||||
val mangaId = matchId.groups[1]!!.value
|
||||
val nameEn = response.request.url.toString().substringAfter("/truyen/").substringBefore("/")
|
||||
val chapterNumber = response.request.url.toString().substringAfterLast("chuong-")
|
||||
val body = FormBody.Builder().add("comicId", mangaId)
|
||||
.add("chapterNumber", chapterNumber).add("nameEn", nameEn).build()
|
||||
val request = POST("$baseUrl/api/chapter/auth", pageHeaders, body)
|
||||
client.newCall(request).execute().parseAs<ResultDto<ImageListDto>>().result.data
|
||||
} else {
|
||||
jsonPage.parseAs<ImageListWrapper>().body.result.data
|
||||
}
|
||||
return imageUrls.mapIndexed { i, url ->
|
||||
val finalUrl = if (url.startsWith("/image/")) { baseUrl + url } else { url }
|
||||
Page(i, imageUrl = finalUrl)
|
||||
}
|
||||
}
|
||||
private val pageHeaders by lazy {
|
||||
headersBuilder()
|
||||
.add("X-Requested-With", "XMLHttpRequest")
|
||||
.add("Authorization", TOKEN_KEY)
|
||||
.build()
|
||||
}
|
||||
|
||||
override fun imageUrlParse(response: Response): String = throw UnsupportedOperationException()
|
||||
|
||||
@ -136,3 +151,4 @@ class GocTruyenTranhVui : HttpSource() {
|
||||
GenreList(getGenreList()),
|
||||
)
|
||||
}
|
||||
private const val TOKEN_KEY = "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJBbG9uZSBGb3JldmVyIiwiY29taWNJZHMiOltdLCJyb2xlSWQiOm51bGwsImdyb3VwSWQiOm51bGwsImFkbWluIjpmYWxzZSwicmFuayI6MCwicGVybWlzc2lvbiI6W10sImlkIjoiMDAwMTA4NDQyNSIsInRlYW0iOmZhbHNlLCJpYXQiOjE3NTM2OTgyOTAsImVtYWlsIjoibnVsbCJ9.HT080LGjvzfh6XAPmdDZhf5vhnzUhXI4GU8U6tzwlnXWjgMO4VdYL1_jsSFWd-s3NBGt-OAt89XnzaQ03iqDyA"
|
||||
|
Loading…
x
Reference in New Issue
Block a user