From 31f80579cb66d00269835f734312c2cf9ab72f1c Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Thu, 21 Dec 2023 07:51:51 -0500 Subject: [PATCH] Add Ikigai Mangas (#19339) * Add IkigaiMangas * Remove log * Set isNsfw=true * Get popular and latest tab from search api * Remove unused Dto * Remove more unused Dto * Review --- src/es/ikigaimangas/AndroidManifest.xml | 2 + src/es/ikigaimangas/build.gradle | 14 ++ .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3941 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2401 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5023 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8604 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 11389 bytes src/es/ikigaimangas/res/web_hi_res_512.png | Bin 0 -> 37750 bytes .../extension/es/ikigaimangas/IkigaiMangas.kt | 216 ++++++++++++++++++ .../es/ikigaimangas/IkigaiMangasDto.kt | 73 ++++++ .../es/ikigaimangas/IkigaiMangasFilters.kt | 18 ++ 11 files changed, 323 insertions(+) create mode 100644 src/es/ikigaimangas/AndroidManifest.xml create mode 100644 src/es/ikigaimangas/build.gradle create mode 100644 src/es/ikigaimangas/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/ikigaimangas/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/ikigaimangas/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/ikigaimangas/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/ikigaimangas/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/ikigaimangas/res/web_hi_res_512.png create mode 100644 src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangas.kt create mode 100644 src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasDto.kt create mode 100644 src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasFilters.kt diff --git a/src/es/ikigaimangas/AndroidManifest.xml b/src/es/ikigaimangas/AndroidManifest.xml new file mode 100644 index 000000000..8072ee00d --- /dev/null +++ b/src/es/ikigaimangas/AndroidManifest.xml @@ -0,0 +1,2 @@ + + diff --git a/src/es/ikigaimangas/build.gradle b/src/es/ikigaimangas/build.gradle new file mode 100644 index 000000000..6330b3757 --- /dev/null +++ b/src/es/ikigaimangas/build.gradle @@ -0,0 +1,14 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' + + +ext { + extName = 'Ikigai Mangas' + pkgNameSuffix = 'es.ikigaimangas' + extClass = '.IkigaiMangas' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/es/ikigaimangas/res/mipmap-hdpi/ic_launcher.png b/src/es/ikigaimangas/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0322746f57c467436faad503e145aaa677967d6a GIT binary patch literal 3941 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

-%_fPlNJGui{z4{@}v7C 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 literal 0 HcmV?d00001 diff --git a/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangas.kt b/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangas.kt new file mode 100644 index 000000000..be2aa874a --- /dev/null +++ b/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangas.kt @@ -0,0 +1,216 @@ +package eu.kanade.tachiyomi.extension.es.ikigaimangas + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.interceptor.rateLimitHost +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList +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 eu.kanade.tachiyomi.source.online.HttpSource +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import uy.kohesive.injekt.injectLazy +import java.text.SimpleDateFormat +import java.util.Locale +import java.util.TimeZone + +class IkigaiMangas : HttpSource() { + + override val baseUrl: String = "https://ikigaimangas.com" + private val apiBaseUrl: String = "https://panel.ikigaimangas.com" + private val pageViewerUrl: String = "https://ikigaitoon.com" + + override val lang: String = "es" + override val name: String = "Ikigai Mangas" + + override val supportsLatest: Boolean = true + + override val client = super.client.newBuilder() + .rateLimitHost(baseUrl.toHttpUrl(), 1, 2) + .rateLimitHost(apiBaseUrl.toHttpUrl(), 2, 1) + .build() + + override fun headersBuilder() = super.headersBuilder() + .add("Referer", "$baseUrl/") + + private val json: Json by injectLazy() + + private val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'", Locale.US).apply { + timeZone = TimeZone.getTimeZone("UTC") + } + + override fun popularMangaRequest(page: Int): Request { + val apiUrl = "$apiBaseUrl/api/swf/series?page=$page&column=view_count&direction=desc" + return GET(apiUrl, headers) + } + + override fun popularMangaParse(response: Response): MangasPage = searchMangaParse(response) + + override fun latestUpdatesRequest(page: Int): Request { + val apiUrl = "$apiBaseUrl/api/swf/series?page=$page&column=last_chapter_date&direction=desc" + return GET(apiUrl, headers) + } + + override fun latestUpdatesParse(response: Response): MangasPage = searchMangaParse(response) + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val sortByFilter = filters.firstInstanceOrNull() + + val apiUrl = "$apiBaseUrl/api/swf/series".toHttpUrl().newBuilder() + + if (query.isNotEmpty()) apiUrl.addQueryParameter("search", query) + + apiUrl.addQueryParameter("page", page.toString()) + + val genres = filters.firstInstanceOrNull()?.state.orEmpty() + .filter(Genre::state) + .map(Genre::id) + .joinToString(",") + + val statuses = filters.firstInstanceOrNull()?.state.orEmpty() + .filter(Status::state) + .map(Status::id) + .joinToString(",") + + if (genres.isNotEmpty()) apiUrl.addQueryParameter("genres", genres) + if (statuses.isNotEmpty()) apiUrl.addQueryParameter("status", statuses) + + apiUrl.addQueryParameter("column", sortByFilter?.selected ?: "name") + apiUrl.addQueryParameter("direction", if (sortByFilter?.state?.ascending == true) "asc" else "desc") + apiUrl.addQueryParameter("type", "comic") + + return GET(apiUrl.build(), headers) + } + + override fun searchMangaParse(response: Response): MangasPage { + runCatching { fetchFilters() } + val result = json.decodeFromString(response.body.string()) + val mangaList = result.data.filter { it.type == "comic" }.map { + SManga.create().apply { + url = "/series/comic-${it.slug}#${it.id}" + title = it.name + thumbnail_url = it.cover + } + } + val hasNextPage = result.currentPage < result.lastPage + return MangasPage(mangaList, hasNextPage) + } + + override fun mangaDetailsParse(response: Response): SManga { + val slug = response.request.url + .toString() + .substringAfter("/series/comic-") + .substringBefore("#") + val apiUrl = "$apiBaseUrl/api/swf/series/$slug".toHttpUrl() + val newResponse = client.newCall(GET(url = apiUrl, headers = headers)).execute() + val result = json.decodeFromString(newResponse.body.string()) + return SManga.create().apply { + title = result.series.name + thumbnail_url = result.series.cover + description = result.series.summary + status = parseStatus(result.series.status?.id) + genre = result.series.genres?.joinToString { it.name.trim() } + } + } + + override fun getChapterUrl(chapter: SChapter): String = pageViewerUrl + chapter.url + + override fun chapterListRequest(manga: SManga): Request { + val id = manga.url.substringAfterLast("#") + return GET("$apiBaseUrl/api/swf/series/$id/chapter-list") + } + + override fun chapterListParse(response: Response): List { + val result = json.decodeFromString(response.body.string()) + return result.data.map { + SChapter.create().apply { + url = "/capitulo/${it.id}" + name = "Capítulo ${it.name}" + date_upload = runCatching { dateFormat.parse(it.date)?.time } + .getOrNull() ?: 0L + } + }.reversed() + } + + override fun pageListRequest(chapter: SChapter): Request { + val id = chapter.url.substringAfter("/capitulo/") + return GET("$apiBaseUrl/api/swf/chapters/$id") + } + + override fun pageListParse(response: Response): List { + return json.decodeFromString(response.body.string()).chapter.pages.mapIndexed { i, img -> + Page(i, "", img) + } + } + + override fun imageUrlParse(response: Response): String = throw Exception("Not used") + + private fun parseStatus(statusId: Long?) = when (statusId) { + 906397890812182531, 911437469204086787 -> SManga.ONGOING + 906409397258190851 -> SManga.ON_HIATUS + 906409532796731395, 911793517664960513 -> SManga.COMPLETED + 906426661911756802, 906428048651190273, 911793767845265410, 911793856861798402 -> SManga.CANCELLED + else -> SManga.UNKNOWN + } + + data class SortProperty(val name: String, val value: String) { + override fun toString(): String = name + } + + private fun getSortProperties(): List = listOf( + SortProperty("Nombre", "name"), + SortProperty("Creado en", "created_at"), + SortProperty("Actualización más reciente", "last_chapter_date"), + SortProperty("Número de favoritos", "bookmark_count"), + SortProperty("Número de valoración", "rating_count"), + SortProperty("Número de vistas", "view_count"), + ) + + override fun getFilterList(): FilterList { + val filters = mutableListOf>( + SortByFilter("Ordenar por", getSortProperties()), + ) + + filters += if (genresList.isNotEmpty() || statusesList.isNotEmpty()) { + listOf( + StatusFilter("Estados", getStatusFilters()), + GenreFilter("Géneros", getGenreFilters()), + ) + } else { + listOf( + Filter.Header("Presione 'Restablecer' para intentar cargar los filtros"), + ) + } + + return FilterList(filters) + } + + private fun getGenreFilters(): List = genresList.map { Genre(it.first, it.second) } + private fun getStatusFilters(): List = statusesList.map { Status(it.first, it.second) } + + private var genresList: List> = emptyList() + private var statusesList: List> = emptyList() + private var fetchFiltersAttempts = 0 + private var fetchFiltersFailed = false + + private fun fetchFilters() { + if (fetchFiltersAttempts <= 3 && ((genresList.isEmpty() && statusesList.isEmpty()) || fetchFiltersFailed)) { + val filters = runCatching { + val response = client.newCall(GET("$apiBaseUrl/api/swf/filter-options", headers)).execute() + json.decodeFromString(response.body.string()) + } + + fetchFiltersFailed = filters.isFailure + genresList = filters.getOrNull()?.data?.genres?.map { it.name.trim() to it.id } ?: emptyList() + statusesList = filters.getOrNull()?.data?.statuses?.map { it.name.trim() to it.id } ?: emptyList() + } + } + + private inline fun List<*>.firstInstanceOrNull(): R? = + filterIsInstance().firstOrNull() +} diff --git a/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasDto.kt b/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasDto.kt new file mode 100644 index 000000000..41899f36e --- /dev/null +++ b/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasDto.kt @@ -0,0 +1,73 @@ +package eu.kanade.tachiyomi.extension.es.ikigaimangas + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class PayloadSeriesDto( + val data: List, + @SerialName("current_page")val currentPage: Int = 0, + @SerialName("last_page") val lastPage: Int = 0, +) + +@Serializable +data class SeriesDto( + val id: Long, + val name: String, + val slug: String, + val cover: String? = null, + val type: String? = null, + val summary: String? = null, + val status: SeriesStatusDto? = null, + val genres: List? = null, +) + +@Serializable +data class PayloadSeriesDetailsDto( + val series: SeriesDto, +) + +@Serializable +data class PayloadChaptersDto( + var data: List, +) + +@Serializable +data class ChapterDto( + val id: Long, + val name: String, + @SerialName("published_at") val date: String, +) + +@Serializable +data class PayloadPagesDto( + val chapter: PageDto, +) + +@Serializable +data class PageDto( + val pages: List, +) + +@Serializable +data class SeriesStatusDto( + val id: Long, + val name: String, +) + +@Serializable +data class PayloadFiltersDto( + val data: GenresStatusesDto, +) + +@Serializable +data class GenresStatusesDto( + val genres: List, + val statuses: List, +) + +@Serializable +data class FilterDto( + val id: Long, + val name: String, +) diff --git a/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasFilters.kt b/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasFilters.kt new file mode 100644 index 000000000..e34f90192 --- /dev/null +++ b/src/es/ikigaimangas/src/eu/kanade/tachiyomi/extension/es/ikigaimangas/IkigaiMangasFilters.kt @@ -0,0 +1,18 @@ +package eu.kanade.tachiyomi.extension.es.ikigaimangas + +import eu.kanade.tachiyomi.source.model.Filter + +class Genre(title: String, val id: Long) : Filter.CheckBox(title) +class GenreFilter(title: String, genres: List) : Filter.Group(title, genres) + +class Status(title: String, val id: Long) : Filter.CheckBox(title) +class StatusFilter(title: String, statuses: List) : Filter.Group(title, statuses) + +class SortByFilter(title: String, private val sortProperties: List) : Filter.Sort( + title, + sortProperties.map { it.name }.toTypedArray(), + Selection(0, ascending = true), +) { + val selected: String + get() = sortProperties[state!!.index].value +}