From 96cde60458a33add59569de1b5259e78cd25daed Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Sat, 29 Jun 2024 04:11:55 -0300 Subject: [PATCH] Remove YomuMangas (#3803) --- src/pt/yomumangas/build.gradle | 8 - .../res/mipmap-hdpi/ic_launcher.png | Bin 3607 -> 0 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 1975 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 5104 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 9235 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 13551 -> 0 bytes .../extension/pt/yomumangas/YomuMangas.kt | 208 ------------------ .../extension/pt/yomumangas/YomuMangasDto.kt | 96 -------- .../pt/yomumangas/YomuMangasFilters.kt | 73 ------ 9 files changed, 385 deletions(-) delete mode 100644 src/pt/yomumangas/build.gradle delete mode 100644 src/pt/yomumangas/res/mipmap-hdpi/ic_launcher.png delete mode 100644 src/pt/yomumangas/res/mipmap-mdpi/ic_launcher.png delete mode 100644 src/pt/yomumangas/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 src/pt/yomumangas/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 src/pt/yomumangas/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangas.kt delete mode 100644 src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasDto.kt delete mode 100644 src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasFilters.kt diff --git a/src/pt/yomumangas/build.gradle b/src/pt/yomumangas/build.gradle deleted file mode 100644 index b71b26aa2..000000000 --- a/src/pt/yomumangas/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -ext { - extName = 'Yomu Mangás' - extClass = '.YomuMangas' - extVersionCode = 3 - isNsfw = true -} - -apply from: "$rootDir/common.gradle" diff --git a/src/pt/yomumangas/res/mipmap-hdpi/ic_launcher.png b/src/pt/yomumangas/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 47013f3484e4b8e1837ac9e36f4f312ea5a7fca3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3607 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 S`sbd*z`*dR{ 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 diff --git a/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangas.kt b/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangas.kt deleted file mode 100644 index d112f0271..000000000 --- a/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangas.kt +++ /dev/null @@ -1,208 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.yomumangas - -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.interceptor.rateLimitHost -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.Headers -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import rx.Observable -import uy.kohesive.injekt.injectLazy -import java.util.concurrent.TimeUnit - -class YomuMangas : HttpSource() { - - override val name = "Yomu Mangás" - - override val baseUrl = "https://yomumangas.com" - - override val lang = "pt-BR" - - override val supportsLatest = true - - override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .rateLimitHost(baseUrl.toHttpUrl(), 1, 1, TimeUnit.SECONDS) - .rateLimitHost(API_URL.toHttpUrl(), 1, 1, TimeUnit.SECONDS) - .rateLimitHost(CDN_URL.toHttpUrl(), 1, 2, TimeUnit.SECONDS) - .build() - - private val json: Json by injectLazy() - - private val apiHeaders: Headers by lazy { apiHeadersBuilder().build() } - - override fun headersBuilder(): Headers.Builder = Headers.Builder() - .add("Origin", baseUrl) - .add("Referer", baseUrl) - - private fun apiHeadersBuilder(): Headers.Builder = headersBuilder() - .add("Accept", ACCEPT_JSON) - - override fun popularMangaRequest(page: Int): Request { - return GET("$API_URL/mangas/home", apiHeaders) - } - - override fun popularMangaParse(response: Response): MangasPage { - val result = response.parseAs() - val seriesList = result.votes.map(YomuMangasSeriesDto::toSManga) - - return MangasPage(seriesList, hasNextPage = false) - } - - override fun latestUpdatesRequest(page: Int) = popularMangaRequest(page) - - override fun latestUpdatesParse(response: Response): MangasPage { - val result = response.parseAs() - val seriesList = result.updates.map(YomuMangasSeriesDto::toSManga) - - return MangasPage(seriesList, hasNextPage = false) - } - - override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val apiUrl = "$API_URL/mangas/search".toHttpUrl().newBuilder() - .addQueryParameter("query", query) - .addQueryParameter("page", page.toString()) - - filters.filterIsInstance() - .forEach { it.addQueryParameter(apiUrl) } - - return GET(apiUrl.build(), apiHeaders) - } - - override fun searchMangaParse(response: Response): MangasPage { - val result = response.parseAs() - val seriesList = result.mangas.map(YomuMangasSeriesDto::toSManga) - - return MangasPage(seriesList, result.hasNextPage) - } - - override fun getMangaUrl(manga: SManga): String = baseUrl + manga.url - - override fun mangaDetailsRequest(manga: SManga): Request { - val id = manga.url - .substringAfter("/manga/") - .substringBefore("/") - - return GET("$API_URL/mangas/$id", apiHeaders) - } - - override fun mangaDetailsParse(response: Response): SManga { - return response.parseAs().manga.toSManga() - } - - override fun chapterListRequest(manga: SManga) = mangaDetailsRequest(manga) - - private fun chapterListApiRequest(mangaId: Int): Request { - return GET("$API_URL/mangas/$mangaId/chapters", apiHeaders) - } - - override fun chapterListParse(response: Response): List { - val series = response.parseAs().manga - - return client.newCall(chapterListApiRequest(series.id)).execute() - .parseAs().chapters - .sortedByDescending(YomuMangasChapterDto::chapter) - .map { it.toSChapter(series) } - } - - override fun getChapterUrl(chapter: SChapter): String = baseUrl + chapter.url - - override fun pageListRequest(chapter: SChapter): Request { - val urlParts = chapter.url.split("/", "#") - val seriesId = urlParts[2] - val chapterNumber = urlParts[6] - - return GET("$API_URL/mangas/$seriesId/chapters/$chapterNumber", apiHeaders) - } - - override fun pageListParse(response: Response): List { - return response.parseAs() - .chapter.images.orEmpty() - .mapIndexed { i, image -> Page(i, "", "$CDN_URL/${image.uri}") } - } - - override fun fetchImageUrl(page: Page): Observable = Observable.just(page.imageUrl!!) - - override fun imageUrlParse(response: Response): String = "" - - override fun imageRequest(page: Page): Request { - val newHeaders = headersBuilder() - .add("Accept", ACCEPT_IMAGE) - .build() - - return GET(page.imageUrl!!, newHeaders) - } - - override fun getFilterList(): FilterList = FilterList( - StatusFilter(getStatusList()), - TypeFilter(getTypesList()), - NsfwContentFilter(), - AdultContentFilter(), - GenreFilter(getGenresList()), - ) - - private fun getStatusList(): List = listOf( - Status("Todos", ""), - Status("Lançando", "RELEASING"), - Status("Finalizado", "FINISHED"), - Status("Cancelado", "CANCELLED"), - Status("Hiato", "HIATUS"), - Status("Não lançado", "NOT_YET_RELEASED"), - Status("Traduzindo", "TRANSLATING"), - Status("Desconhecido", "UNKNOWN"), - ) - - private fun getTypesList(): List = listOf( - Type("Todos", ""), - Type("Mangá", "MANGA"), - Type("Manhwa", "MANHWA"), - Type("Mangá em hiato", "MANGA_HIATUS"), - Type("Webcomic", "WEBCOMIC"), - Type("Webtoon", "WEBTOON"), - Type("Hentai", "HENTAI"), - Type("Doujinshi", "DOUJIN"), - Type("One-shot", "ONESHOT"), - ) - - private fun getGenresList(): List = listOf( - Genre("Ação", "1"), - Genre("Aventura", "8"), - Genre("Comédia", "2"), - Genre("Drama", "3"), - Genre("Ecchi", "15"), - Genre("Esportes", "14"), - Genre("Fantasia", "6"), - Genre("Hentai", "19"), - Genre("Horror", "4"), - Genre("Mahou shoujo", "18"), - Genre("Mecha", "17"), - Genre("Mistério", "7"), - Genre("Música", "16"), - Genre("Psicológico", "9"), - Genre("Romance", "13"), - Genre("Sci-fi", "11"), - Genre("Slice of life", "10"), - Genre("Sobrenatural", "5"), - Genre("Suspense", "12"), - ) - - private inline fun Response.parseAs(): T = use { - json.decodeFromString(it.body.string()) - } - - companion object { - private const val ACCEPT_IMAGE = "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" - private const val ACCEPT_JSON = "application/json" - - private const val API_URL = "https://api.yomumangas.com" - const val CDN_URL = "https://images.yomumangas.com" - } -} diff --git a/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasDto.kt b/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasDto.kt deleted file mode 100644 index e742993d8..000000000 --- a/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasDto.kt +++ /dev/null @@ -1,96 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.yomumangas - -import eu.kanade.tachiyomi.source.model.SChapter -import eu.kanade.tachiyomi.source.model.SManga -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable -import java.text.SimpleDateFormat -import java.util.Locale - -@Serializable -data class YomuMangasHomeDto( - val updates: List = emptyList(), - val votes: List = emptyList(), -) - -@Serializable -data class YomuMangasSearchDto( - val mangas: List = emptyList(), - val page: Int, - val pages: Int, -) { - - val hasNextPage: Boolean - get() = page < pages -} - -@Serializable -data class YomuMangasDetailsDto(val manga: YomuMangasSeriesDto) - -@Serializable -data class YomuMangasSeriesDto( - val id: Int, - val slug: String, - val title: String, - val cover: String? = null, - val status: String, - val authors: List? = emptyList(), - val artists: List? = emptyList(), - val genres: List? = emptyList(), - val description: String? = null, -) { - - fun toSManga(): SManga = SManga.create().apply { - title = this@YomuMangasSeriesDto.title - author = authors.orEmpty().joinToString { it.trim() } - artist = artists.orEmpty().joinToString { it.trim() } - genre = genres.orEmpty() - .sortedBy { it.name } - .joinToString { it.name.trim() } - description = this@YomuMangasSeriesDto.description?.trim() - status = when (this@YomuMangasSeriesDto.status) { - "RELEASING" -> SManga.ONGOING - "FINISHED" -> SManga.COMPLETED - "HIATUS" -> SManga.ON_HIATUS - "CANCELLED" -> SManga.CANCELLED - "TRANSLATING" -> SManga.PUBLISHING_FINISHED - else -> SManga.UNKNOWN - } - thumbnail_url = cover?.let { "${YomuMangas.CDN_URL}/$it" } - url = "/manga/$id/$slug" - } -} - -@Serializable -data class YomuMangasGenreDto(val name: String) - -@Serializable -data class YomuMangasChaptersDto(val chapters: List = emptyList()) - -@Serializable -data class YomuMangasChapterDto( - val id: Int, - val chapter: Float, - @SerialName("uploaded_at") val uploadedAt: String, - val images: List? = emptyList(), -) { - - fun toSChapter(series: YomuMangasSeriesDto): SChapter = SChapter.create().apply { - name = "Capítulo ${chapter.toString().removeSuffix(".0")}" - date_upload = runCatching { DATE_FORMATTER.parse(uploadedAt)?.time } - .getOrNull() ?: 0L - url = "/manga/${series.id}/${series.slug}/chapter/$id#$chapter" - } - - companion object { - private val DATE_FORMATTER by lazy { - SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US) - } - } -} - -@Serializable -data class YomuMangasChapterDetailsDto(val chapter: YomuMangasChapterDto) - -@Serializable -data class YomuMangasImageDto(val uri: String) diff --git a/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasFilters.kt b/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasFilters.kt deleted file mode 100644 index 2bd95683b..000000000 --- a/src/pt/yomumangas/src/eu/kanade/tachiyomi/extension/pt/yomumangas/YomuMangasFilters.kt +++ /dev/null @@ -1,73 +0,0 @@ -package eu.kanade.tachiyomi.extension.pt.yomumangas - -import eu.kanade.tachiyomi.source.model.Filter -import okhttp3.HttpUrl - -interface UrlQueryFilter { - fun addQueryParameter(url: HttpUrl.Builder) -} - -class NsfwContentFilter : Filter.CheckBox("Conteúdo NSFW"), UrlQueryFilter { - override fun addQueryParameter(url: HttpUrl.Builder) { - if (state) { - url.addQueryParameter("nsfw", "true") - } - } -} - -class AdultContentFilter : Filter.CheckBox("Conteúdo adulto"), UrlQueryFilter { - override fun addQueryParameter(url: HttpUrl.Builder) { - if (state) { - url.addQueryParameter("hentai", "true") - } - } -} - -open class EnhancedSelect(name: String, values: Array) : Filter.Select(name, values) { - val selected: T - get() = values[state] -} - -data class Status(val name: String, val value: String) { - override fun toString() = name -} - -class StatusFilter(statusList: List) : - EnhancedSelect("Status", statusList.toTypedArray()), - UrlQueryFilter { - - override fun addQueryParameter(url: HttpUrl.Builder) { - if (state > 0) { - url.addQueryParameter("status", selected.value) - } - } -} - -data class Type(val name: String, val value: String) { - override fun toString() = name -} - -class TypeFilter(typesList: List) : - EnhancedSelect("Tipo", typesList.toTypedArray()), - UrlQueryFilter { - - override fun addQueryParameter(url: HttpUrl.Builder) { - if (state > 0) { - url.addQueryParameter("type", selected.value) - } - } -} - -class Genre(name: String, val id: String) : Filter.CheckBox(name) { - override fun toString() = name -} - -class GenreFilter(genres: List) : - Filter.Group("Gêneros", genres), - UrlQueryFilter { - - override fun addQueryParameter(url: HttpUrl.Builder) { - state.filter(Genre::state) - .forEach { url.addQueryParameter("genres[]", it.id) } - } -}