diff --git a/src/en/animixplay/build.gradle b/src/en/animixplay/build.gradle deleted file mode 100644 index 20b5d2603..000000000 --- a/src/en/animixplay/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' - -ext { - extName = 'Animixplay' - pkgNameSuffix = 'en.animixplay' - extClass = '.Animixplay' - extVersionCode = 13 - libVersion = '13' -} - -apply from: "$rootDir/common.gradle" diff --git a/src/en/animixplay/res/mipmap-hdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 4edee4291..000000000 Binary files a/src/en/animixplay/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/animixplay/res/mipmap-mdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17aabcb17..000000000 Binary files a/src/en/animixplay/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/animixplay/res/mipmap-xhdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 0b2d18fa9..000000000 Binary files a/src/en/animixplay/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/animixplay/res/mipmap-xxhdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 14be463a4..000000000 Binary files a/src/en/animixplay/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/animixplay/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/animixplay/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 40684f810..000000000 Binary files a/src/en/animixplay/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/animixplay/res/web_hi_res_512.png b/src/en/animixplay/res/web_hi_res_512.png deleted file mode 100644 index 4a0dfede0..000000000 Binary files a/src/en/animixplay/res/web_hi_res_512.png and /dev/null differ diff --git a/src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt b/src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt deleted file mode 100644 index afbecb4f1..000000000 --- a/src/en/animixplay/src/eu/kanade/tachiyomi/animeextension/en/animixplay/Animixplay.kt +++ /dev/null @@ -1,391 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.en.animixplay - -import android.app.Application -import android.content.SharedPreferences -import android.util.Base64 -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.animeextension.en.animixplay.extractors.GogoCdnExtractor -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.Video -import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.util.asJsoup -import kotlinx.serialization.ExperimentalSerializationApi -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.json.Json -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.boolean -import kotlinx.serialization.json.int -import kotlinx.serialization.json.jsonArray -import kotlinx.serialization.json.jsonObject -import kotlinx.serialization.json.jsonPrimitive -import okhttp3.FormBody -import okhttp3.Headers -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import org.jsoup.Jsoup -import org.jsoup.nodes.Document -import org.jsoup.nodes.Element -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy -import java.lang.Exception - -@ExperimentalSerializationApi -class Animixplay : ConfigurableAnimeSource, ParsedAnimeHttpSource() { - - override val name = "Animixplay" - - override val baseUrl = "https://animixplay.to" - - override val lang = "en" - - override val supportsLatest = true - - override val client: OkHttpClient = network.cloudflareClient - - private val json: Json by injectLazy() - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - var nextPage = "99999999" - var hasNextPage = true - - var latestNextDate = "3020-05-06 00:00:00" - var latestHasNextPage = true - - override fun popularAnimeSelector(): String = throw Exception("not used") - - override fun popularAnimeRequest(page: Int): Request { - val formBody = FormBody.Builder() - .add("genre", "any") - .add("minstr", nextPage) - .add("orderby", "popular") - .build() - return POST("https://animixplay.to/api/search", headers, body = formBody) - } - - override fun popularAnimeParse(response: Response): AnimesPage { - val document = response.asJsoup() - val responseJson = json.decodeFromString(document.select("body").text()) - nextPage = responseJson["last"]!!.jsonPrimitive.content - hasNextPage = responseJson["more"]!!.jsonPrimitive.boolean - val animeList = responseJson["result"]!!.jsonArray - val animes = animeList.map { element -> - popularAnimeFromElement(element.jsonObject) - } - - return AnimesPage(animes, hasNextPage) - } - - override fun popularAnimeFromElement(element: Element) = throw Exception("not used") - - private fun popularAnimeFromElement(animeJson: JsonObject): SAnime { - val anime = SAnime.create() - anime.setUrlWithoutDomain(animeJson["url"]!!.jsonPrimitive.content.substringBefore("/ep")) - anime.thumbnail_url = animeJson["picture"]!!.jsonPrimitive.content - anime.title = animeJson["title"]!!.jsonPrimitive.content - return anime - } - - override fun popularAnimeNextPageSelector(): String = throw Exception("not used") - - override fun episodeListSelector() = throw Exception("not used") - - override fun episodeListParse(response: Response): List { - return if (response.request.url.toString().contains(".json")) { - val document = response.asJsoup() - val animeJson = json.decodeFromString(document.select("body").text()) - val malId = animeJson["mal_id"]!!.jsonPrimitive.int - episodesRequest(malId, document) - } else { - episodeFromResponse(response) - } - } - - private fun episodesRequest(malId: Int, document: Document): List { - // POST data - val body = FormBody.Builder() - .add("recomended", malId.toString()) - .build() - val animeServersJson = json.decodeFromString( - client.newCall( - POST( - "https://animixplay.to/api/search", - body = body, - headers = Headers.headersOf("Referer", document.location()) - ) - ).execute().body!!.string() - ) - val animeSubDubUrls = animeServersJson["data"]!!.jsonArray[0].jsonObject["items"]!!.jsonArray - val newList = mutableListOf() - var preferred = 0 - for (jsonObj in animeSubDubUrls) { - if (jsonObj.toString().contains("dub")) { - newList.add(preferred, jsonObj) - preferred++ - } else { - newList.add(jsonObj) - } - } - newList.reverse() - val urlEndpoint = newList[0].jsonObject["url"]!!.jsonPrimitive.content - val episodesResponse = client.newCall( - GET( - baseUrl + urlEndpoint, - ) - ).execute() - return episodeFromResponse(episodesResponse) - } - private fun episodeFromResponse(response: Response): List { - val document = response.asJsoup() - val episodeListJson = json.decodeFromString(document.select("div#epslistplace").text()) - val url = response.request.url.toString() - val episodeAvailable = episodeListJson["eptotal"]!!.jsonPrimitive.int - val episodeList = mutableListOf() - - for (i in 0 until episodeAvailable) { - episodeList.add(episodeFromJsonElement(url, i)) - } - return episodeList.reversed() - } - override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used") - - private fun episodeFromJsonElement(url: String, number: Int): SEpisode { - val episode = SEpisode.create() - episode.setUrlWithoutDomain("$url/ep$number") - episode.episode_number = number.toFloat() + 1F - episode.name = "Episode ${number + 1}" - return episode - } - - override fun videoListParse(response: Response): List