From 7b2afcf2ad036f8e984e3b2201bd935ff280e610 Mon Sep 17 00:00:00 2001 From: WebDitto Date: Fri, 3 Jan 2025 04:03:02 -0300 Subject: [PATCH] feat(pt/tomat): New Source: pt/Tomato (#459) --- src/pt/tomato/build.gradle | 7 + src/pt/tomato/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4503 bytes src/pt/tomato/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2383 bytes .../tomato/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7099 bytes .../tomato/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 14197 bytes .../tomato/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 23347 bytes .../animeextension/pt/tomato/Tomato.kt | 336 ++++++++++++++++++ .../animeextension/pt/tomato/TomatoFilters.kt | 79 ++++ .../animeextension/pt/tomato/dto/TomatoDto.kt | 78 ++++ 9 files changed, 500 insertions(+) create mode 100644 src/pt/tomato/build.gradle create mode 100644 src/pt/tomato/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/pt/tomato/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/pt/tomato/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/pt/tomato/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/pt/tomato/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/pt/tomato/src/eu/kanade/tachiyomi/animeextension/pt/tomato/Tomato.kt create mode 100644 src/pt/tomato/src/eu/kanade/tachiyomi/animeextension/pt/tomato/TomatoFilters.kt create mode 100644 src/pt/tomato/src/eu/kanade/tachiyomi/animeextension/pt/tomato/dto/TomatoDto.kt diff --git a/src/pt/tomato/build.gradle b/src/pt/tomato/build.gradle new file mode 100644 index 00000000..6b964445 --- /dev/null +++ b/src/pt/tomato/build.gradle @@ -0,0 +1,7 @@ +ext { + extName = 'Tomato' + extClass = '.Tomato' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" diff --git a/src/pt/tomato/res/mipmap-hdpi/ic_launcher.png b/src/pt/tomato/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e39ecc76ef3a80d32d8216f8858e028b872198 GIT binary patch literal 4503 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 literal 0 HcmV?d00001 diff --git a/src/pt/tomato/res/mipmap-xxhdpi/ic_launcher.png b/src/pt/tomato/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cc67371995fd1f4573eecce6754f56b802a27382 GIT binary patch literal 14197 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 EPM+W5Tt-5v&SD{R)5xLD!g?ePimy^{S6 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.getSharedPreferences("source_$id", 0x0000) + } + + private val json: Json by injectLazy() + + override fun headersBuilder() = super.headersBuilder().add( + "Authorization", + "Bearer $TOKEN", + ) + + private val episodesClient by lazy { + client.newBuilder().rateLimitHost(baseUrl.toHttpUrl(), 1, 0.5.seconds).build() + } + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int) = + GET("$baseUrl/v2/animes/feed", headers = headers) + + override fun popularAnimeParse(response: Response): AnimesPage { + val responseJson = response.parseAs() + + val emAlta = responseJson["data"]?.jsonArray?.find { + it.jsonObject["title"]?.jsonPrimitive?.content?.contains("curtidos") == true + } + + val animes = emAlta?.jsonObject?.get("data")?.jsonArray?.parallelMapBlocking { + animeFromId(it.jsonObject["anime_id"]!!.jsonPrimitive.int) + } + ?: emptyList() + + return AnimesPage(animes, false) + } + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int) = + GET("$baseUrl/v2/animes/feed", headers = headers) + + override fun latestUpdatesParse(response: Response): AnimesPage { + val responseJson = response.parseAs() + + val emAlta = responseJson["data"]?.jsonArray?.find { + it.jsonObject["type"]!!.jsonPrimitive.int == 7 + } + + val animes = emAlta?.jsonObject?.get("data")?.jsonArray?.parallelMapBlocking { + animeFromId(it.jsonObject["ep_anime_id"]!!.jsonPrimitive.int) + } + ?: emptyList() + + return AnimesPage(animes, false) + } + + // =============================== Search =============================== + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val params = TomatoFilters.getSearchParameters(filters) + + val data = buildJsonObject { + put("token", TOKEN) + put("search", query) + put("content_type", "anime") + put("page", page - 1) + + if (params.genres.isNotEmpty()) { + putJsonArray("tags") { + params.genres.forEach { add(it) } + } + } + } + + val body = json.encodeToString(JsonObject.serializer(), data) + .toRequestBody("application/json".toMediaType()) + + return POST("$baseUrl/v2/content/search", headers = headers, body = body) + } + + override fun searchAnimeParse(response: Response): AnimesPage { + val searchResult = response.parseAs().result + val results = searchResult.map { it.toSAnime() } + return AnimesPage(results, false) + } + + private fun SearchAnimeItemDto.toSAnime(): SAnime { + return SAnime.create().apply { + setUrlWithoutDomain("$baseUrl/v2/anime/$id") + title = name + thumbnail_url = image + } + } + + override fun getFilterList() = TomatoFilters.FILTER_LIST + + // =========================== Anime Details ============================ + private fun animeFromId(id: Int): SAnime { + val response = client.newCall( + GET("$baseUrl/v2/anime/$id", headers = headers), + ).execute() + + return animeDetailsParse(response) + } + + override fun animeDetailsParse(response: Response): SAnime { + val anime = response.parseAs() + return SAnime.create().apply { + setUrlWithoutDomain("$baseUrl/v2/anime/${anime.animeDetails.animeId}") + title = anime.animeDetails.animeName + description = anime.animeDetails.animeDescription + genre = anime.animeDetails.animeGenre + thumbnail_url = anime.animeDetails.animeCoverUrl + } + } + + // ============================== Episodes ============================== + override fun episodeListParse(response: Response): List { + val anime = response.parseAs() + + val seasons = anime.animeSeasons + + val episodeList = mutableListOf() + + seasons.forEach { season -> + var nextPage = 0 + do { + val data = buildJsonObject { + put("token", TOKEN) + put("page", nextPage) + put("order", "ASC") + } + + val body = json.encodeToString(JsonObject.serializer(), data) + .toRequestBody("application/json".toMediaType()) + + val request = POST( + "$baseUrl/season/${season.seasonId}/episodes", + headers = headers, + body = body, + ) + val episodes = + episodesClient.newCall(request).execute().parseAs().data + + episodes.forEach { episode -> + val partName = "Temporada ${season.seasonNumber} x ${episode.epNumber}" + val fullName = "$partName - ${episode.epName}" + + val prev = episodeList.find { it.name.contains(partName) } + + val newUrl = "&episode[${season.seasonDubbed}]=${episode.epId}" + if (prev != null) { + prev.url += newUrl + } else { + episodeList.add( + SEpisode.create().apply { + episode_number = episode.epNumber + name = fullName + url = "http://localhost?season=${season.seasonNumber}$newUrl" + }, + ) + } + } + + if (episodes.size == 25) nextPage += 1 else nextPage = -1 + } while (nextPage != -1) + } + + return episodeList.reversed() + } + + // ============================ Video Links ============================= + override suspend fun getVideoList(episode: SEpisode): List