diff --git a/lib-multisrc/iken/build.gradle.kts b/lib-multisrc/iken/build.gradle.kts index dc076cc37..9dce2478c 100644 --- a/lib-multisrc/iken/build.gradle.kts +++ b/lib-multisrc/iken/build.gradle.kts @@ -2,4 +2,4 @@ plugins { id("lib-multisrc") } -baseVersionCode = 1 +baseVersionCode = 2 diff --git a/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Dto.kt b/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Dto.kt index 7a0112c00..e16a6d86c 100644 --- a/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Dto.kt +++ b/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Dto.kt @@ -4,7 +4,6 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonPrimitive -import okhttp3.HttpUrl.Companion.toHttpUrl import org.jsoup.Jsoup import java.text.ParseException import java.text.SimpleDateFormat @@ -31,14 +30,10 @@ class Manga( private val seriesStatus: String? = null, val genres: List = emptyList(), ) { - fun toSManga(baseUrl: String) = SManga.create().apply { + fun toSManga() = SManga.create().apply { url = "$slug#$id" title = postTitle - thumbnail_url = "$baseUrl/_next/image".toHttpUrl().newBuilder().apply { - addQueryParameter("url", featuredImage) - addQueryParameter("w", "828") - addQueryParameter("q", "75") - }.toString() + thumbnail_url = featuredImage author = this@Manga.author?.takeUnless { it.isEmpty() } artist = this@Manga.artist?.takeUnless { it.isEmpty() } description = buildString { diff --git a/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Iken.kt b/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Iken.kt index 77257abf7..ccbf40234 100644 --- a/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Iken.kt +++ b/lib-multisrc/iken/src/eu/kanade/tachiyomi/multisrc/iken/Iken.kt @@ -14,6 +14,7 @@ import kotlinx.serialization.json.Json import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Request import okhttp3.Response +import rx.Observable import uy.kohesive.injekt.injectLazy abstract class Iken( @@ -43,7 +44,7 @@ abstract class Iken( it.genres.map { genre -> genre.name to genre.id.toString() } - } + }.distinct() } .associateBy { it.slug } } @@ -56,7 +57,7 @@ abstract class Iken( .map { it.absUrl("href").substringAfterLast("/series/") } val entries = slugs.mapNotNull { - titleCache[it]?.toSManga(baseUrl) + titleCache[it]?.toSManga() } return MangasPage(entries, false) @@ -84,7 +85,7 @@ abstract class Iken( val entries = data.posts .filterNot { it.isNovel } - .map { it.toSManga(baseUrl) } + .map { it.toSManga() } val hasNextPage = data.totalCount > (page * perPage) @@ -98,32 +99,28 @@ abstract class Iken( Filter.Header("Open popular mangas if genre filter is empty"), ) - override fun mangaDetailsRequest(manga: SManga): Request { - val id = manga.url.substringAfterLast("#") - val url = "$baseUrl/api/chapters?postId=$id&skip=0&take=1000&order=desc&userid=" - - return GET(url, headers) - } - override fun getMangaUrl(manga: SManga): String { val slug = manga.url.substringBeforeLast("#") return "$baseUrl/series/$slug" } - override fun mangaDetailsParse(response: Response): SManga { - val data = response.parseAs>() + override fun fetchMangaDetails(manga: SManga): Observable { + val slug = manga.url.substringBeforeLast("#") + val update = titleCache[slug]?.toSManga() ?: manga - assert(!data.post.isNovel) { "Novels are unsupported" } - - // genres are only returned in search call - // and not when fetching details - return data.post.toSManga(baseUrl).apply { - genre = titleCache[data.post.slug]?.getGenres() - } + return Observable.just(update) } - override fun chapterListRequest(manga: SManga) = mangaDetailsRequest(manga) + override fun mangaDetailsParse(response: Response) = + throw UnsupportedOperationException() + + override fun chapterListRequest(manga: SManga): Request { + val id = manga.url.substringAfterLast("#") + val url = "$baseUrl/api/chapters?postId=$id&skip=0&take=1000&order=desc&userid=" + + return GET(url, headers) + } override fun chapterListParse(response: Response): List { val data = response.parseAs>()