From a8e85cc125e8264631f291dac1b0cc2248813d54 Mon Sep 17 00:00:00 2001 From: seew3l <90949336+seew3l@users.noreply.github.com> Date: Sun, 9 Apr 2023 08:57:44 -0500 Subject: [PATCH] OlympusScanlation: Fix missing field and add chapter date (#16009) * Fix missing summary field and add chapter date * Implement getChapterUrl --- src/es/olympusscanlation/build.gradle | 2 +- .../es/olympusscanlation/OlympusScanlation.kt | 29 ++++++----- .../olympusscanlation/OlympusScanlationDto.kt | 52 +++++++++++++++++++ .../dto/OlympusScanlationDto.kt | 48 ----------------- 4 files changed, 68 insertions(+), 63 deletions(-) create mode 100644 src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlationDto.kt delete mode 100644 src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/dto/OlympusScanlationDto.kt diff --git a/src/es/olympusscanlation/build.gradle b/src/es/olympusscanlation/build.gradle index 0d79d83f8..7b45e0208 100644 --- a/src/es/olympusscanlation/build.gradle +++ b/src/es/olympusscanlation/build.gradle @@ -7,7 +7,7 @@ ext { extName = 'Olympus Scanlation' pkgNameSuffix = 'es.olympusscanlation' extClass = '.OlympusScanlation' - extVersionCode = 2 + extVersionCode = 3 } apply from: "$rootDir/common.gradle" \ No newline at end of file diff --git a/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt b/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt index fa2bde9ea..826bce986 100644 --- a/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt +++ b/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlation.kt @@ -1,12 +1,5 @@ package eu.kanade.tachiyomi.extension.es.olympusscanlation -import eu.kanade.tachiyomi.extension.es.olympusscanlation.dto.OlympusScanlationDto.ChapterDto -import eu.kanade.tachiyomi.extension.es.olympusscanlation.dto.OlympusScanlationDto.MangaDetailDto -import eu.kanade.tachiyomi.extension.es.olympusscanlation.dto.OlympusScanlationDto.MangaDto -import eu.kanade.tachiyomi.extension.es.olympusscanlation.dto.OlympusScanlationDto.PayloadChapterDto -import eu.kanade.tachiyomi.extension.es.olympusscanlation.dto.OlympusScanlationDto.PayloadHomeDto -import eu.kanade.tachiyomi.extension.es.olympusscanlation.dto.OlympusScanlationDto.PayloadMangaDto -import eu.kanade.tachiyomi.extension.es.olympusscanlation.dto.OlympusScanlationDto.PayloadPagesDto import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.MangasPage @@ -20,6 +13,9 @@ import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response import uy.kohesive.injekt.injectLazy +import java.text.SimpleDateFormat +import java.util.Locale + class OlympusScanlation : HttpSource() { override val baseUrl: String = "https://olympusscans.com" @@ -29,6 +25,7 @@ class OlympusScanlation : HttpSource() { override val versionId = 2 override val supportsLatest: Boolean = true private val json: Json by injectLazy() + private val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'", Locale.US) // Search override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { @@ -81,10 +78,10 @@ class OlympusScanlation : HttpSource() { description = result.data.summary } } + override fun imageUrlParse(response: Response): String = throw Exception("Not used") // Chapters - override fun chapterListRequest(manga: SManga): Request { return paginatedChapterListRequest( manga.url @@ -106,13 +103,13 @@ class OlympusScanlation : HttpSource() { .toString() .substringAfter("/series/") .substringBefore("/chapters") - var data = json.decodeFromString(response.body.string()) + val data = json.decodeFromString(response.body.string()) var resultSize = data.data.size var page = 2 while (data.meta.total > resultSize) { - val newRequest = paginatedChapterListRequest("$slug", page) + val newRequest = paginatedChapterListRequest(slug, page) val newResponse = client.newCall(newRequest).execute() - var newData = json.decodeFromString(newResponse.body.string()) + val newData = json.decodeFromString(newResponse.body.string()) data.data += newData.data resultSize += newData.data.size page += 1 @@ -123,12 +120,15 @@ class OlympusScanlation : HttpSource() { private fun chapterFromObject(chapter: ChapterDto, slug: String) = SChapter.create().apply { url = "/capitulo/${chapter.id}/comic-$slug" name = "Capitulo ${chapter.name}" - chapter_number = chapter.name.toFloatOrNull() ?: -1f + date_upload = runCatching { dateFormat.parse(chapter.date)?.time } + .getOrNull() ?: 0L } - // Pages + override fun getChapterUrl(chapter: SChapter): String = baseUrl + chapter.url + + // Pages override fun pageListRequest(chapter: SChapter): Request { - var id = chapter.url + val id = chapter.url .substringAfter("/capitulo/") .substringBefore("/chapters") .substringBefore("/comic") @@ -157,6 +157,7 @@ class OlympusScanlation : HttpSource() { } return MangasPage(mangaList, hasNextPage = false) } + override fun popularMangaRequest(page: Int): Request { val apiUrl = "$apiBaseUrl/api/home".toHttpUrl().newBuilder() .build() diff --git a/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlationDto.kt b/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlationDto.kt new file mode 100644 index 000000000..7d3ffdba2 --- /dev/null +++ b/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/OlympusScanlationDto.kt @@ -0,0 +1,52 @@ +package eu.kanade.tachiyomi.extension.es.olympusscanlation + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ChapterDto( + val id: Int, + val name: String, + @SerialName("published_at") val date: String, +) + +@Serializable +data class MangaDto( + val id: Int, + val name: String, + val slug: String, + val cover: String? = null, + val type: String? = null, + val summary: String? = null, +) + +@Serializable +data class MangaDetailDto( + var data: MangaDto, +) + +@Serializable +data class MetaDto(val total: Int) + +@Serializable +data class PageDto(val pages: List) + +@Serializable +data class PayloadChapterDto(var data: List, val meta: MetaDto) + +@Serializable +data class PayloadMangaDto(val data: List) + +@Serializable +data class PayloadPagesDto(val chapter: PageDto) + +@Serializable +data class HomeDto( + val popular_comics: String, + val new_chapters: List, +) + +@Serializable +data class PayloadHomeDto( + val data: HomeDto, +) diff --git a/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/dto/OlympusScanlationDto.kt b/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/dto/OlympusScanlationDto.kt deleted file mode 100644 index 6e73d9811..000000000 --- a/src/es/olympusscanlation/src/eu/kanade/tachiyomi/extension/es/olympusscanlation/dto/OlympusScanlationDto.kt +++ /dev/null @@ -1,48 +0,0 @@ -package eu.kanade.tachiyomi.extension.es.olympusscanlation.dto -import kotlinx.serialization.Serializable -@Serializable -object OlympusScanlationDto { - @Serializable - data class ChapterDto(val id: Int, val name: String) - - @Serializable - data class MangaDto( - val id: Int, - val name: String, - val slug: String?, - val cover: String?, - val type: String?, - val summary: String?, - ) - - @Serializable - data class MangaDetailDto( - var data: MangaDto, - ) - - @Serializable - data class MetaDto(val total: Int) - - @Serializable - data class PageDto(val pages: List) - - @Serializable - data class PayloadChapterDto(var data: List, val meta: MetaDto) - - @Serializable - data class PayloadMangaDto(val data: List) - - @Serializable - data class PayloadPagesDto(val chapter: PageDto) - - @Serializable - data class HomeDto( - val popular_comics: String, - val new_chapters: List, - ) - - @Serializable - data class PayloadHomeDto( - val data: HomeDto, - ) -}