diff --git a/src/it/animeunity/build.gradle b/src/it/animeunity/build.gradle index 43d78a90c..18cbc5246 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 = 4 + extVersionCode = 5 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 1d2dbb4ba..67a96b10a 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 @@ -13,15 +13,16 @@ import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SEpisode +import eu.kanade.tachiyomi.animesource.model.Track import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource 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.encodeToString import kotlinx.serialization.json.Json import okhttp3.Headers +import okhttp3.HttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient @@ -41,8 +42,6 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { override val baseUrl by lazy { preferences.getString(PREF_DOMAIN_KEY, PREF_DOMAIN_DEFAULT)!! } - private val workerUrl = "https://scws.work" - override val lang = "it" override val supportsLatest = true @@ -61,9 +60,11 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { 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(""", "\""), - ) + val parsed = response.parseAs { + it.substringAfter("top-anime animes=\"") + .substringBefore("\">") + .replace(""", "\"") + } val animeList = parsed.data.map { ani -> SAnime.create().apply { @@ -167,9 +168,7 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { private fun searchAnimeParse(response: Response, page: Int): AnimesPage { return if (response.request.method == "POST") { - val data = json.decodeFromString( - response.body.string(), - ) + val data = response.parseAs() val animeList = data.records.map { SAnime.create().apply { @@ -251,13 +250,17 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { episodeList.addAll( episodes.filter { - it.scws_id != null && it.file_name != null + it.id != null }.map { SEpisode.create().apply { name = "Episode ${it.number}" - url = LinkData(it.scws_id.toString(), it.file_name!!).toJsonString() date_upload = parseDate(it.created_at) episode_number = it.number.split("-")[0].toFloatOrNull() ?: 0F + setUrlWithoutDomain( + response.request.url.newBuilder() + .addPathSegment(it.id.toString()) + .toString(), + ) } }, ) @@ -268,7 +271,7 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { while (end < episodeCount) { episodeList.addAll( - addFromApi(start, end, animeId, newHeaders), + addFromApi(start, end, animeId, newHeaders, response.request.url), ) start += 120 end += 120 @@ -276,7 +279,7 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { if (episodeCount >= start) { episodeList.addAll( - addFromApi(start, episodeCount, animeId, newHeaders), + addFromApi(start, episodeCount, animeId, newHeaders, response.request.url), ) } } @@ -287,64 +290,50 @@ class AnimeUnity : ConfigurableAnimeSource, AnimeHttpSource() { // ============================ Video Links ============================= override fun fetchVideoList(episode: SEpisode): Observable> { - val newHeaders = headers.newBuilder() - .add("Accept", "*/*") - .add("Accept-Language", "en-US,en;q=0.5") - .add("Host", workerUrl.toHttpUrl().host) - .add("Origin", baseUrl) + val videoList = mutableListOf