Use schedule instead of last added in Latest on Bilibili. (#14149)

This commit is contained in:
Alessandro Jean 2022-11-06 16:58:17 -03:00 committed by GitHub
parent 2bed516a8a
commit 7def22b8e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 52 additions and 9 deletions

View File

@ -4,8 +4,12 @@ import eu.kanade.tachiyomi.multisrc.bilibili.Bilibili
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliComicDto import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliComicDto
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliIntl import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliIntl
import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliTag import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliTag
import eu.kanade.tachiyomi.multisrc.bilibili.SortFilter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
import okhttp3.Headers import okhttp3.Headers
import okhttp3.Request
import okhttp3.Response import okhttp3.Response
class BilibiliManga : Bilibili( class BilibiliManga : Bilibili(
@ -20,6 +24,16 @@ class BilibiliManga : Bilibili(
add("User-Agent", DEFAULT_USER_AGENT) add("User-Agent", DEFAULT_USER_AGENT)
} }
override fun latestUpdatesRequest(page: Int): Request = searchMangaRequest(
page = page,
query = "",
filters = FilterList(
SortFilter("", getAllSortOptions(), defaultLatestSort)
)
)
override fun latestUpdatesParse(response: Response): MangasPage = searchMangaParse(response)
override fun chapterListParse(response: Response): List<SChapter> { override fun chapterListParse(response: Response): List<SChapter> {
val result = response.parseAs<BilibiliComicDto>() val result = response.parseAs<BilibiliComicDto>()

View File

@ -34,6 +34,7 @@ import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale import java.util.Locale
abstract class Bilibili( abstract class Bilibili(
@ -75,6 +76,9 @@ abstract class Bilibili(
protected open val signedIn: Boolean = false protected open val signedIn: Boolean = false
protected val dayOfWeek: Int
get() = Calendar.getInstance().get(Calendar.DAY_OF_WEEK) - 1
override fun popularMangaRequest(page: Int): Request = searchMangaRequest( override fun popularMangaRequest(page: Int): Request = searchMangaRequest(
page = page, page = page,
query = "", query = "",
@ -85,15 +89,40 @@ abstract class Bilibili(
override fun popularMangaParse(response: Response): MangasPage = searchMangaParse(response) override fun popularMangaParse(response: Response): MangasPage = searchMangaParse(response)
override fun latestUpdatesRequest(page: Int): Request = searchMangaRequest( override fun latestUpdatesRequest(page: Int): Request {
page = page, val jsonPayload = buildJsonObject { put("day", dayOfWeek) }
query = "", val requestBody = jsonPayload.toString().toRequestBody(JSON_MEDIA_TYPE)
filters = FilterList(
SortFilter("", getAllSortOptions(), defaultLatestSort)
)
)
override fun latestUpdatesParse(response: Response): MangasPage = searchMangaParse(response) val newHeaders = headersBuilder()
.add("Content-Length", requestBody.contentLength().toString())
.add("Content-Type", requestBody.contentType().toString())
.set("Referer", "$baseUrl/schedule")
.build()
val apiUrl = "$baseUrl/$API_COMIC_V1_COMIC_ENDPOINT/GetSchedule".toHttpUrl().newBuilder()
.addCommonParameters()
.toString()
return POST(apiUrl, newHeaders, requestBody)
}
override fun latestUpdatesParse(response: Response): MangasPage {
val result = response.parseAs<BilibiliSearchDto>()
if (result.code != 0) {
return MangasPage(emptyList(), hasNextPage = false)
}
val comicList = result.data!!.list.map(::latestMangaFromObject)
return MangasPage(comicList, hasNextPage = false)
}
protected open fun latestMangaFromObject(comic: BilibiliComicDto): SManga = SManga.create().apply {
title = comic.title
thumbnail_url = comic.verticalCover + THUMBNAIL_RESOLUTION
url = "/detail/mc${comic.comicId}"
}
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
if (query.startsWith(PREFIX_ID_SEARCH) && query.matches(ID_SEARCH_PATTERN)) { if (query.startsWith(PREFIX_ID_SEARCH) && query.matches(ID_SEARCH_PATTERN)) {

View File

@ -10,7 +10,7 @@ class BilibiliGenerator : ThemeSourceGenerator {
override val themeClass = "Bilibili" override val themeClass = "Bilibili"
override val baseVersionCode: Int = 5 override val baseVersionCode: Int = 6
override val sources = listOf( override val sources = listOf(
MultiLang( MultiLang(