diff --git a/src/all/animeui/build.gradle b/src/all/animeui/build.gradle deleted file mode 100644 index 929345099..000000000 --- a/src/all/animeui/build.gradle +++ /dev/null @@ -1,7 +0,0 @@ -ext { - extName = 'AnimeUI' - extClass = '.AnimeUI' - extVersionCode = 2 -} - -apply from: "$rootDir/common.gradle" diff --git a/src/all/animeui/res/mipmap-hdpi/ic_launcher.png b/src/all/animeui/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index a78f5e311..000000000 Binary files a/src/all/animeui/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/animeui/res/mipmap-mdpi/ic_launcher.png b/src/all/animeui/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 833d54b64..000000000 Binary files a/src/all/animeui/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/animeui/res/mipmap-xhdpi/ic_launcher.png b/src/all/animeui/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 659da39ab..000000000 Binary files a/src/all/animeui/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/animeui/res/mipmap-xxhdpi/ic_launcher.png b/src/all/animeui/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 406ca4916..000000000 Binary files a/src/all/animeui/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/animeui/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/animeui/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 40082deff..000000000 Binary files a/src/all/animeui/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/all/animeui/src/eu/kanade/tachiyomi/animeextension/all/animeui/AnimeUI.kt b/src/all/animeui/src/eu/kanade/tachiyomi/animeextension/all/animeui/AnimeUI.kt deleted file mode 100644 index 7815a3008..000000000 --- a/src/all/animeui/src/eu/kanade/tachiyomi/animeextension/all/animeui/AnimeUI.kt +++ /dev/null @@ -1,255 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.all.animeui - -import android.app.Application -import android.content.SharedPreferences -import android.widget.Toast -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource -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.util.asJsoup -import eu.kanade.tachiyomi.util.parseAs -import kotlinx.serialization.json.Json -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.Request -import okhttp3.Response -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy - -class AnimeUI : ConfigurableAnimeSource, AnimeHttpSource() { - - override val name = "AnimeUI" - - override val baseUrl = "https://animeui.com" - - override val lang = "all" - - override val supportsLatest = true - - private val json: Json by injectLazy() - - override val id: Long = 7372747480486811746L - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - private val apiHeaders = headers.newBuilder().apply { - add("Accept", "application/json, text/plain, */*") - add("Host", baseUrl.toHttpUrl().host) - add("Referer", "$baseUrl/") - }.build() - - private val docHeaders = headers.newBuilder().apply { - add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8") - add("Host", baseUrl.toHttpUrl().host) - }.build() - - private val titlePref by lazy { preferences.getString(PREF_TITLE_LANG_KEY, PREF_TITLE_LANG_DEFAULT)!! } - - // ============================== Popular =============================== - - override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/api/home-list", apiHeaders) - - override fun popularAnimeParse(response: Response): AnimesPage { - val animeList = response.parseAs().trendingAnimes.map { it.toSAnime(baseUrl, titlePref) } - return AnimesPage(animeList, false) - } - - // =============================== Latest =============================== - - override fun latestUpdatesRequest(page: Int): Request = popularAnimeRequest(page) - - override fun latestUpdatesParse(response: Response): AnimesPage { - val animeList = response.parseAs().latestAnimes.map { it.toSAnime(baseUrl, titlePref) } - return AnimesPage(animeList, false) - } - - // =============================== Search =============================== - - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { - val params = AnimeUIFilters.getSearchParameters(filters) - - val url = "$baseUrl/api/directory".toHttpUrl().newBuilder().apply { - addQueryParameter("page", page.toString()) - addQueryParameter("genres", params.genres) - addQueryParameter("years", params.year) - addQueryParameter("types", params.types) - addQueryParameter("status", params.status) - addQueryParameter("title", query) - addQueryParameter("category", params.category) - }.build().toString() - - return GET(url, headers = apiHeaders) - } - - override fun searchAnimeParse(response: Response): AnimesPage { - val data = response.parseAs() - val animeList = data.animes.map { it.toSAnime(baseUrl, titlePref) } - return AnimesPage(animeList, data.page < data.pages) - } - - // ============================== Filters =============================== - - override fun getFilterList() = AnimeUIFilters.FILTER_LIST - - // =========================== Anime Details ============================ - - override fun animeDetailsRequest(anime: SAnime) = GET(baseUrl + anime.url, docHeaders) - - override fun animeDetailsParse(response: Response): SAnime { - val document = response.asJsoup() - val data = document.selectFirst("script#__NEXT_DATA__")?.data() ?: return SAnime.create() - - return json.decodeFromString(data).props.pageProps.animeData.toSAnime() - } - - // ============================== Episodes ============================== - - override fun episodeListRequest(anime: SAnime): Request = animeDetailsRequest(anime) - - override fun episodeListParse(response: Response): List { - val document = response.asJsoup() - val data = document.selectFirst("script#__NEXT_DATA__")?.data() ?: return emptyList() - - return json.decodeFromString(data).props.pageProps.animeData.episodes.map { - it.toSEpisode(response.request.url.pathSegments.last()) - }.reversed() - } - - // ============================ Video Links ============================= - - override fun videoListRequest(episode: SEpisode): Request = GET(baseUrl + episode.url, headers = docHeaders) - - override fun videoListParse(response: Response): List