diff --git a/src/en/aniplay/build.gradle b/src/en/aniplay/build.gradle deleted file mode 100644 index f8264495..00000000 --- a/src/en/aniplay/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -ext { - extName = 'AniPlay' - extClass = '.AniPlay' - extVersionCode = 1 -} - -apply from: "$rootDir/common.gradle" - -dependencies { - implementation(project(":lib-multisrc:anilist")) - implementation(project(":lib:playlist-utils")) -} diff --git a/src/en/aniplay/ic_launcher-playstore.png b/src/en/aniplay/ic_launcher-playstore.png deleted file mode 100644 index 7e70c67f..00000000 Binary files a/src/en/aniplay/ic_launcher-playstore.png and /dev/null differ diff --git a/src/en/aniplay/res/drawable/ic_launcher_foreground.xml b/src/en/aniplay/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index d150c0b4..00000000 --- a/src/en/aniplay/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - diff --git a/src/en/aniplay/res/mipmap-anydpi-v26/ic_launcher.xml b/src/en/aniplay/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 7353dbd1..00000000 --- a/src/en/aniplay/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/en/aniplay/res/mipmap-anydpi-v26/ic_launcher_round.xml b/src/en/aniplay/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 7353dbd1..00000000 --- a/src/en/aniplay/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/en/aniplay/res/mipmap-hdpi/ic_launcher.webp b/src/en/aniplay/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index 940e0da3..00000000 Binary files a/src/en/aniplay/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-hdpi/ic_launcher_round.webp b/src/en/aniplay/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index 2387abfc..00000000 Binary files a/src/en/aniplay/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-mdpi/ic_launcher.webp b/src/en/aniplay/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 87d7ecc9..00000000 Binary files a/src/en/aniplay/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-mdpi/ic_launcher_round.webp b/src/en/aniplay/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 4f02183c..00000000 Binary files a/src/en/aniplay/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-xhdpi/ic_launcher.webp b/src/en/aniplay/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 16243651..00000000 Binary files a/src/en/aniplay/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-xhdpi/ic_launcher_round.webp b/src/en/aniplay/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index d883f306..00000000 Binary files a/src/en/aniplay/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-xxhdpi/ic_launcher.webp b/src/en/aniplay/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index faf5bdf2..00000000 Binary files a/src/en/aniplay/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-xxhdpi/ic_launcher_round.webp b/src/en/aniplay/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 712e3abf..00000000 Binary files a/src/en/aniplay/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-xxxhdpi/ic_launcher.webp b/src/en/aniplay/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index 04d7c07b..00000000 Binary files a/src/en/aniplay/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/src/en/aniplay/res/mipmap-xxxhdpi/ic_launcher_round.webp b/src/en/aniplay/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index ad17c1ba..00000000 Binary files a/src/en/aniplay/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/src/en/aniplay/res/values/ic_launcher_background.xml b/src/en/aniplay/res/values/ic_launcher_background.xml deleted file mode 100644 index de1841dc..00000000 --- a/src/en/aniplay/res/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #05010D - \ No newline at end of file diff --git a/src/en/aniplay/res/web_hi_res_512.png b/src/en/aniplay/res/web_hi_res_512.png deleted file mode 100644 index 11b79914..00000000 Binary files a/src/en/aniplay/res/web_hi_res_512.png and /dev/null differ diff --git a/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt b/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt deleted file mode 100644 index d86dfaed..00000000 --- a/src/en/aniplay/src/eu/kanade/tachiyomi/animeextension/en/aniplay/AniPlay.kt +++ /dev/null @@ -1,375 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.en.aniplay - -import android.app.Application -import android.util.Base64 -import android.widget.Toast -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -import androidx.preference.SwitchPreferenceCompat -import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource -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.lib.playlistutils.PlaylistUtils -import eu.kanade.tachiyomi.multisrc.anilist.AniListAnimeHttpSource -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.network.POST -import eu.kanade.tachiyomi.util.parallelFlatMapBlocking -import eu.kanade.tachiyomi.util.parseAs -import kotlinx.serialization.encodeToString -import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.MediaType.Companion.toMediaType -import okhttp3.Request -import okhttp3.RequestBody.Companion.toRequestBody -import okhttp3.Response -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import java.text.SimpleDateFormat -import java.util.Locale - -class AniPlay : AniListAnimeHttpSource(), ConfigurableAnimeSource { - override val name = "AniPlay" - override val lang = "en" - - override val baseUrl: String - get() = "https://${preferences.getString(PREF_DOMAIN_KEY, PREF_DOMAIN_DEFAULT)}" - - private val playlistUtils by lazy { PlaylistUtils(client, headers) } - - private val preferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - /* ================================= AniList configurations ================================= */ - - override fun mapAnimeDetailUrl(animeId: Int): String { - return "$baseUrl/anime/info/$animeId" - } - - override fun mapAnimeId(animeDetailUrl: String): Int { - val httpUrl = animeDetailUrl.toHttpUrl() - - return httpUrl.pathSegments[2].toInt() - } - - override fun getPreferredTitleLanguage(): TitleLanguage { - val preferredLanguage = preferences.getString(PREF_TITLE_LANGUAGE_KEY, PREF_TITLE_LANGUAGE_DEFAULT) - - return when (preferredLanguage) { - "romaji" -> TitleLanguage.ROMAJI - "english" -> TitleLanguage.ENGLISH - "native" -> TitleLanguage.NATIVE - else -> TitleLanguage.ROMAJI - } - } - - /* ====================================== Episode List ====================================== */ - - override fun episodeListRequest(anime: SAnime): Request { - val httpUrl = anime.url.toHttpUrl() - val animeId = httpUrl.pathSegments[2] - - return GET("$baseUrl/api/anime/episode/$animeId") - } - - override fun episodeListParse(response: Response): List { - val isMarkFiller = preferences.getBoolean(PREF_MARK_FILLER_EPISODE_KEY, PREF_MARK_FILLER_EPISODE_DEFAULT) - val episodeListUrl = response.request.url - val animeId = episodeListUrl.pathSegments[3] - val providers = response.parseAs>() - val episodes = mutableMapOf() - val episodeExtras = mutableMapOf>() - - providers.forEach { provider -> - provider.episodes.forEach { episode -> - if (!episodes.containsKey(episode.number)) { - episodes[episode.number] = episode - } - val existingEpisodeExtras = episodeExtras.getOrElse(episode.number) { emptyList() } - val episodeExtra = EpisodeExtra( - source = provider.providerId, - episodeId = episode.id, - hasDub = episode.hasDub, - ) - episodeExtras[episode.number] = existingEpisodeExtras + listOf(episodeExtra) - } - } - - return episodes.map { episodeMap -> - val episode = episodeMap.value - val episodeNumber = episode.number - val episodeExtra = episodeExtras.getValue(episodeNumber) - val episodeExtraString = json.encodeToString(episodeExtra) - .let { Base64.encode(it.toByteArray(), Base64.DEFAULT) } - .toString(Charsets.UTF_8) - - val url = baseUrl.toHttpUrl().newBuilder() - .addPathSegment("anime") - .addPathSegment("watch") - .addQueryParameter("id", animeId) - .addQueryParameter("ep", episodeNumber.toString()) - .addQueryParameter("extras", episodeExtraString) - .build() - - val name = parseEpisodeName(episodeNumber, episode.title) - val uploadDate = parseDate(episode.createdAt) - val dub = when { - episodeExtra.any { it.hasDub } -> ", Dub" - else -> "" - } - val filler = when { - episode.isFiller && isMarkFiller -> " • Filler Episode" - else -> "" - } - val scanlator = "Sub$dub$filler" - - SEpisode.create().apply { - this.url = url.toString() - this.name = name - this.date_upload = uploadDate - this.episode_number = episodeNumber.toFloat() - this.scanlator = scanlator - } - }.reversed() - } - - /* ======================================= Video List ======================================= */ - - override suspend fun getVideoList(episode: SEpisode): List