From 0c552ed88e9ff4226f0edd061b9fa66f4a149a93 Mon Sep 17 00:00:00 2001 From: hollow <35398794+hollowshiroyuki@users.noreply.github.com> Date: Fri, 12 Apr 2024 09:25:46 +0000 Subject: [PATCH] feat(src/all): New source: Sudatchi (#3153) --- src/all/sudatchi/AndroidManifest.xml | 22 ++ src/all/sudatchi/build.gradle | 11 + .../sudatchi/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4883 bytes .../sudatchi/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3033 bytes .../sudatchi/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 6978 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 11539 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 17732 bytes .../animeextension/all/sudatchi/Sudatchi.kt | 292 ++++++++++++++++++ .../all/sudatchi/SudatchiFilters.kt | 72 +++++ .../all/sudatchi/SudatchiUrlActivity.kt | 41 +++ .../all/sudatchi/dto/SudatchiDto.kt | 111 +++++++ 11 files changed, 549 insertions(+) create mode 100644 src/all/sudatchi/AndroidManifest.xml create mode 100644 src/all/sudatchi/build.gradle create mode 100644 src/all/sudatchi/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/all/sudatchi/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/all/sudatchi/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/all/sudatchi/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/all/sudatchi/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/all/sudatchi/src/eu/kanade/tachiyomi/animeextension/all/sudatchi/Sudatchi.kt create mode 100644 src/all/sudatchi/src/eu/kanade/tachiyomi/animeextension/all/sudatchi/SudatchiFilters.kt create mode 100644 src/all/sudatchi/src/eu/kanade/tachiyomi/animeextension/all/sudatchi/SudatchiUrlActivity.kt create mode 100644 src/all/sudatchi/src/eu/kanade/tachiyomi/animeextension/all/sudatchi/dto/SudatchiDto.kt diff --git a/src/all/sudatchi/AndroidManifest.xml b/src/all/sudatchi/AndroidManifest.xml new file mode 100644 index 000000000..dc4be11ab --- /dev/null +++ b/src/all/sudatchi/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/src/all/sudatchi/build.gradle b/src/all/sudatchi/build.gradle new file mode 100644 index 000000000..cbd13790e --- /dev/null +++ b/src/all/sudatchi/build.gradle @@ -0,0 +1,11 @@ +ext { + extName = 'Sudatchi' + extClass = '.Sudatchi' + extVersionCode = 1 +} + +apply from: "$rootDir/common.gradle" + +dependencies { + implementation(project(":lib:playlist-utils")) +} diff --git a/src/all/sudatchi/res/mipmap-hdpi/ic_launcher.png b/src/all/sudatchi/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0e72fb45f0acdd098e6b7b0a169f29631d81ecee GIT binary patch literal 4883 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 FV1h*mXWak* literal 0 HcmV?d00001 diff --git a/src/all/sudatchi/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/sudatchi/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4022b5483334e724939d72a2fa9c719ede2e903a GIT binary patch literal 17732 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 Smoy3h0000().getSharedPreferences("source_$id", 0x0000) + } + + // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int) = GET("$baseUrl/api/home-list", headers) + + private fun Int.parseStatus() = when (this) { + 1 -> SAnime.UNKNOWN // Not Yet Released + 2 -> SAnime.ONGOING + 3 -> SAnime.COMPLETED + else -> SAnime.UNKNOWN + } + + private fun ShortAnimeDto.toSAnime(titleLang: String) = SAnime.create().apply { + url = "/anime/$slug" + title = when (titleLang) { + "romaji" -> titleRomanji + "japanese" -> titleJapanese + else -> titleEnglish + } ?: arrayOf(titleEnglish, titleRomanji, titleJapanese, "").firstNotNullOf { it } + description = synopsis + status = statusId.parseStatus() + thumbnail_url = "$baseUrl$imgUrl" + genre = animeGenres?.joinToString { it.genre.name } + } + + override fun popularAnimeParse(response: Response): AnimesPage { + sudatchiFilters.fetchFilters() + val titleLang = preferences.title + return AnimesPage(response.parseAs().animeSpotlight.map { it.toSAnime(titleLang) }, false) + } + + // =============================== Latest =============================== + override fun latestUpdatesRequest(page: Int) = GET("$baseUrl/api/directory?page=$page&genres=&status=2,3", headers) + + override fun latestUpdatesParse(response: Response): AnimesPage { + sudatchiFilters.fetchFilters() + val titleLang = preferences.title + return response.parseAs().let { + AnimesPage(it.animes.map { it.toSAnime(titleLang) }, it.page != it.pages) + } + } + + // =============================== Search =============================== + override fun getFilterList() = sudatchiFilters.getFilterList() + + override suspend fun getSearchAnime(page: Int, query: String, filters: AnimeFilterList): AnimesPage { + return if (query.startsWith(PREFIX_SEARCH)) { // URL intent handler + val id = query.removePrefix(PREFIX_SEARCH) + client.newCall(GET("$baseUrl/api/anime/$id", headers)) + .awaitSuccess() + .use(::searchAnimeByIdParse) + } else { + super.getSearchAnime(page, query, filters) + } + } + + private fun searchAnimeByIdParse(response: Response) = AnimesPage(listOf(animeDetailsParse(response)), false) + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val url = "$baseUrl/api/directory".toHttpUrl().newBuilder() + url.addQueryParameter("page", page.toString()) + url.addQueryParameter("title", query) + filters.filterIsInstance().forEach { + val (name, value) = it.toQueryParameter() + if (value != null) url.addQueryParameter(name, value) + } + return GET(url.build(), headers) + } + + override fun searchAnimeParse(response: Response) = latestUpdatesParse(response) + + // =========================== Anime Details ============================ + override fun getAnimeUrl(anime: SAnime) = "$baseUrl${anime.url}" + + override fun animeDetailsRequest(anime: SAnime) = GET("$baseUrl/api${anime.url}", headers) + + override fun animeDetailsParse(response: Response) = response.parseAs().toSAnime(preferences.title) + + // ============================== Episodes ============================== + override fun episodeListRequest(anime: SAnime) = animeDetailsRequest(anime) + + override fun episodeListParse(response: Response): List { + val anime = response.parseAs() + return anime.episodes.map { + SEpisode.create().apply { + name = it.title + episode_number = it.number.toFloat() + url = "/watch/${anime.slug}/${it.number}" + } + }.reversed() + } + + // ============================ Video Links ============================= + override fun videoListRequest(episode: SEpisode) = GET("$baseUrl${episode.url}", headers) + + private val playlistUtils: PlaylistUtils by lazy { PlaylistUtils(client, headers) } + + override fun videoListParse(response: Response): List