diff --git a/multisrc/overrides/bilibili/bilibilicomics/src/BilibiliComicsFactory.kt b/multisrc/overrides/bilibili/bilibilicomics/src/BilibiliComicsFactory.kt index fabd9bf27..22f2f3ad1 100644 --- a/multisrc/overrides/bilibili/bilibilicomics/src/BilibiliComicsFactory.kt +++ b/multisrc/overrides/bilibili/bilibilicomics/src/BilibiliComicsFactory.kt @@ -7,13 +7,16 @@ import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliComicDto import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliCredential import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliGetCredential import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliIntl +import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliSearchDto import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliTag import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliUnlockedEpisode import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliUserEpisodes import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.source.SourceFactory +import eu.kanade.tachiyomi.source.model.MangasPage import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.buildJsonObject @@ -64,6 +67,41 @@ abstract class BilibiliComics(lang: String) : Bilibili( private var accessTokenCookie: BilibiliAccessTokenCookie? = null + override fun latestUpdatesRequest(page: Int): Request { + val jsonPayload = buildJsonObject { put("day", dayOfWeek) } + val requestBody = jsonPayload.toString().toRequestBody(JSON_MEDIA_TYPE) + + 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() + + 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 chapterListParse(response: Response): List { if (!signedIn) { return super.chapterListParse(response) diff --git a/multisrc/overrides/bilibili/bilibilimanga/src/BilibiliManga.kt b/multisrc/overrides/bilibili/bilibilimanga/src/BilibiliManga.kt index a52ea71f9..3f6779243 100644 --- a/multisrc/overrides/bilibili/bilibilimanga/src/BilibiliManga.kt +++ b/multisrc/overrides/bilibili/bilibilimanga/src/BilibiliManga.kt @@ -4,12 +4,8 @@ import eu.kanade.tachiyomi.multisrc.bilibili.Bilibili import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliComicDto import eu.kanade.tachiyomi.multisrc.bilibili.BilibiliIntl 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 okhttp3.Headers -import okhttp3.Request import okhttp3.Response class BilibiliManga : Bilibili( @@ -24,16 +20,6 @@ class BilibiliManga : Bilibili( 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 { val result = response.parseAs() diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/Bilibili.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/Bilibili.kt index 2cfe86e44..62906a1b9 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/Bilibili.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/Bilibili.kt @@ -89,40 +89,15 @@ abstract class Bilibili( override fun popularMangaParse(response: Response): MangasPage = searchMangaParse(response) - override fun latestUpdatesRequest(page: Int): Request { - val jsonPayload = buildJsonObject { put("day", dayOfWeek) } - val requestBody = jsonPayload.toString().toRequestBody(JSON_MEDIA_TYPE) + override fun latestUpdatesRequest(page: Int): Request = searchMangaRequest( + page = page, + query = "", + filters = FilterList( + SortFilter("", getAllSortOptions(), defaultLatestSort) + ) + ) - 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() - - 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 latestUpdatesParse(response: Response): MangasPage = searchMangaParse(response) override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { if (query.startsWith(PREFIX_ID_SEARCH) && query.matches(ID_SEARCH_PATTERN)) { diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/BilibiliGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/BilibiliGenerator.kt index daec2e648..cfe8d7565 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/BilibiliGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/bilibili/BilibiliGenerator.kt @@ -10,7 +10,7 @@ class BilibiliGenerator : ThemeSourceGenerator { override val themeClass = "Bilibili" - override val baseVersionCode: Int = 6 + override val baseVersionCode: Int = 7 override val sources = listOf( MultiLang(