From b88effd02d4a5aad18f0b00105ffc19c5cfae23b Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Sun, 18 Jun 2023 21:16:05 +0200 Subject: [PATCH] fix(it/animeunity): update url (#1759) --- src/it/animeunity/build.gradle | 2 +- .../it/animeunity/AnimeUnity.kt | 133 ++++++++++-------- .../{DataModel.kt => AnimeUnityDto.kt} | 0 3 files changed, 76 insertions(+), 59 deletions(-) rename src/it/animeunity/src/eu/kanade/tachiyomi/animeextension/it/animeunity/{DataModel.kt => AnimeUnityDto.kt} (100%) diff --git a/src/it/animeunity/build.gradle b/src/it/animeunity/build.gradle index 5815d1a8b..43d78a90c 100644 --- a/src/it/animeunity/build.gradle +++ b/src/it/animeunity/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'AnimeUnity' pkgNameSuffix = 'it.animeunity' extClass = '.AnimeUnity' - extVersionCode = 3 + extVersionCode = 4 libVersion = '13' } diff --git a/src/it/animeunity/src/eu/kanade/tachiyomi/animeextension/it/animeunity/AnimeUnity.kt b/src/it/animeunity/src/eu/kanade/tachiyomi/animeextension/it/animeunity/AnimeUnity.kt index 5d9746a9a..1d2dbb4ba 100644 --- a/src/it/animeunity/src/eu/kanade/tachiyomi/animeextension/it/animeunity/AnimeUnity.kt +++ b/src/it/animeunity/src/eu/kanade/tachiyomi/animeextension/it/animeunity/AnimeUnity.kt @@ -3,8 +3,11 @@ package eu.kanade.tachiyomi.animeextension.it.animeunity import android.annotation.SuppressLint import android.app.Application import android.content.SharedPreferences +import android.widget.Toast +import androidx.preference.EditTextPreference import androidx.preference.ListPreference import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.AppInfo import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimesPage @@ -16,10 +19,10 @@ import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.asObservableSuccess import eu.kanade.tachiyomi.util.asJsoup -import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request @@ -36,7 +39,7 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { override val name = "AnimeUnity" - override val baseUrl = "https://www.animeunity.tv" + override val baseUrl by lazy { preferences.getString(PREF_DOMAIN_KEY, PREF_DOMAIN_DEFAULT)!! } private val workerUrl = "https://scws.work" @@ -54,6 +57,9 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { // ============================== Popular =============================== + override fun popularAnimeRequest(page: Int): Request = + GET("$baseUrl/top-anime?popular=true&page=$page", headers = headers) + override fun popularAnimeParse(response: Response): AnimesPage { val parsed = json.decodeFromString( response.body.string().substringAfter("top-anime animes=\"").substringBefore("\">").replace(""", "\""), @@ -70,8 +76,6 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { return AnimesPage(animeList, parsed.current_page < parsed.last_page) } - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/top-anime?popular=true&page=$page", headers = headers) - // =============================== Latest =============================== override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/?anime=$page", headers = headers) @@ -94,6 +98,8 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { // =============================== Search =============================== + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request = throw Exception("Not used") + override fun fetchSearchAnime(page: Int, query: String, filters: AnimeFilterList): Observable { val params = AnimeUnityFilters.getSearchParameters(filters) return client.newCall(searchAnimeRequest(page, query, params)) @@ -103,8 +109,6 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { } } - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request = throw Exception("Not used") - private fun searchAnimeRequest(page: Int, query: String, filters: AnimeUnityFilters.FilterSearchParams): Request { val archivioResponse = client.newCall( GET("$baseUrl/archivio", headers = headers), @@ -185,12 +189,9 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { // =========================== Anime Details ============================ - override fun animeDetailsRequest(anime: SAnime): Request { - return GET("$baseUrl/anime/${anime.url}") - } + override fun animeDetailsRequest(anime: SAnime): Request = GET("$baseUrl/anime/${anime.url}") override fun animeDetailsParse(response: Response): SAnime { - val anime = SAnime.create() val document = response.asJsoup() val videoPlayer = document.selectFirst("video-player[episodes_count]")!! @@ -199,27 +200,23 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { videoPlayer.attr("anime").replace(""", "\""), ) - anime.title = animeDetails.title_eng - anime.status = parseStatus(animeDetails.status) - anime.artist = animeDetails.studio ?: "" - anime.genre = animeDetails.genres.joinToString(", ") { it.name } - - var description = animeDetails.plot + "\n" - - description += "\nTipo: ${animeDetails.type}" - description += "\nStagione: ${animeDetails.season} ${animeDetails.date}" - description += "\nValutazione: ★${animeDetails.score ?: "-"}" - - anime.description = description - - return anime + return SAnime.create().apply { + title = animeDetails.title_eng + status = parseStatus(animeDetails.status) + artist = animeDetails.studio ?: "" + genre = animeDetails.genres.joinToString(", ") { it.name } + description = buildString { + append(animeDetails.plot) + append("\n\nTipo: ${animeDetails.type}") + append("\nStagione: ${animeDetails.season} ${animeDetails.date}") + append("\nValutazione: ★${animeDetails.score ?: "-"}") + } + } } // ============================== Episodes ============================== - override fun episodeListRequest(anime: SAnime): Request { - return GET("$baseUrl/anime/${anime.url}", headers = headers) - } + override fun episodeListRequest(anime: SAnime): Request = GET("$baseUrl/anime/${anime.url}", headers = headers) override fun episodeListParse(response: Response): List { val episodeList = mutableListOf() @@ -290,20 +287,19 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { // ============================ Video Links ============================= override fun fetchVideoList(episode: SEpisode): Observable> { - val newHeaders = Headers.headersOf( - "Accept", "*/*", - "Accept-Language", "en-US,en;q=0.5", - "Host", "scws.work", - "Origin", baseUrl, - "Referer", "$baseUrl/", - "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0", - ) + val newHeaders = headers.newBuilder() + .add("Accept", "*/*") + .add("Accept-Language", "en-US,en;q=0.5") + .add("Host", workerUrl.toHttpUrl().host) + .add("Origin", baseUrl) + .add("Referer", "$baseUrl/") + .build() val mediaId = json.decodeFromString(episode.url) val videoList = mutableListOf