diff --git a/src/en/seez/build.gradle b/src/en/seez/build.gradle deleted file mode 100644 index be94a097..00000000 --- a/src/en/seez/build.gradle +++ /dev/null @@ -1,12 +0,0 @@ -ext { - extName = 'Seez' - extClass = '.Seez' - extVersionCode = 11 -} - -apply from: "$rootDir/common.gradle" - -dependencies { - implementation(project(':lib:vidsrc-extractor')) - implementation(project(':lib:filemoon-extractor')) -} diff --git a/src/en/seez/res/mipmap-hdpi/ic_launcher.png b/src/en/seez/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 41ef17c3..00000000 Binary files a/src/en/seez/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/seez/res/mipmap-mdpi/ic_launcher.png b/src/en/seez/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 40273788..00000000 Binary files a/src/en/seez/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/seez/res/mipmap-xhdpi/ic_launcher.png b/src/en/seez/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 6bf2ef21..00000000 Binary files a/src/en/seez/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/seez/res/mipmap-xxhdpi/ic_launcher.png b/src/en/seez/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 272e5ed3..00000000 Binary files a/src/en/seez/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/seez/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/seez/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 8f181f6b..00000000 Binary files a/src/en/seez/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/src/en/seez/res/web_hi_res_512.png b/src/en/seez/res/web_hi_res_512.png deleted file mode 100644 index 54897318..00000000 Binary files a/src/en/seez/res/web_hi_res_512.png and /dev/null differ diff --git a/src/en/seez/src/eu/kanade/tachiyomi/animeextension/en/seez/Seez.kt b/src/en/seez/src/eu/kanade/tachiyomi/animeextension/en/seez/Seez.kt deleted file mode 100644 index f5ce8d51..00000000 --- a/src/en/seez/src/eu/kanade/tachiyomi/animeextension/en/seez/Seez.kt +++ /dev/null @@ -1,434 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.en.seez - -import android.app.Application -import android.content.SharedPreferences -import android.util.Base64 -import androidx.preference.ListPreference -import androidx.preference.PreferenceScreen -import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource -import eu.kanade.tachiyomi.animesource.model.AnimeFilter -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.AnimeHttpSource -import eu.kanade.tachiyomi.lib.filemoonextractor.FilemoonExtractor -import eu.kanade.tachiyomi.lib.vidsrcextractor.VidsrcExtractor -import eu.kanade.tachiyomi.network.GET -import eu.kanade.tachiyomi.util.asJsoup -import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking -import eu.kanade.tachiyomi.util.parseAs -import kotlinx.serialization.encodeToString -import kotlinx.serialization.json.Json -import okhttp3.HttpUrl -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 -import java.net.URLDecoder -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale -import javax.crypto.Cipher -import javax.crypto.spec.SecretKeySpec - -class Seez : ConfigurableAnimeSource, AnimeHttpSource() { - - override val name = "Seez" - - override val baseUrl = "https://seez.su" - - private val embedUrl = "https://vidsrc.to" - - override val lang = "en" - - override val supportsLatest = false - - private val json: Json by injectLazy() - - private val preferences: SharedPreferences by lazy { - Injekt.get().getSharedPreferences("source_$id", 0x0000) - } - - private val apiKey by lazy { - val jsUrl = client.newCall(GET(baseUrl, headers)).execute().asJsoup() - .select("script[defer][src]")[1].attr("abs:src") - - val jsBody = client.newCall(GET(jsUrl, headers)).execute().body.string() - Regex("""f="(\w{20,})"""").find(jsBody)!!.groupValues[1] - } - - private val apiHeaders = headers.newBuilder().apply { - add("Accept", "application/json, text/javascript, */*; q=0.01") - add("Host", "api.themoviedb.org") - add("Origin", baseUrl) - add("Referer", "$baseUrl/") - }.build() - - // ============================== Popular =============================== - - override fun popularAnimeRequest(page: Int): Request { - val url = TMDB_URL.newBuilder().apply { - addPathSegment("movie") - addPathSegment("popular") - addQueryParameter("language", "en-US") - addQueryParameter("page", page.toString()) - }.buildAPIUrl() - - return GET(url, headers = apiHeaders) - } - - override fun popularAnimeParse(response: Response): AnimesPage { - val data = response.parseAs() - - val animeList = data.results.map { ani -> - val name = ani.title ?: ani.name ?: "Title N/A" - - SAnime.create().apply { - title = name - url = LinkData(ani.id, "movie").toJsonString() - thumbnail_url = ani.posterPath?.let { IMG_URL + it } ?: FALLBACK_IMG - } - } - - return AnimesPage(animeList, data.page < data.totalPages) - } - - // =============================== Latest =============================== - - override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException() - - override fun latestUpdatesParse(response: Response): AnimesPage = throw UnsupportedOperationException() - - // =============================== Search =============================== - - override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { - val filterList = if (filters.isEmpty()) getFilterList() else filters - val typeFilter = filterList.find { it is TypeFilter } as TypeFilter - val collectionFilter = filterList.find { it is CollectionFilter } as CollectionFilter - val orderFilter = filterList.find { it is OrderFilter } as OrderFilter - - val url = if (query.isNotBlank()) { - TMDB_URL.newBuilder().apply { - addPathSegment("search") - addPathSegment("multi") - addQueryParameter("query", query) - addQueryParameter("page", page.toString()) - }.buildAPIUrl() - } else { - TMDB_URL.newBuilder().apply { - addPathSegment(typeFilter.toUriPart()) - addPathSegment(orderFilter.toUriPart()) - if (collectionFilter.state != 0) { - addQueryParameter("with_networks", collectionFilter.toUriPart()) - } - addQueryParameter("language", "en-US") - addQueryParameter("page", page.toString()) - }.buildAPIUrl() - } - - return GET(url, headers = apiHeaders) - } - - override fun searchAnimeParse(response: Response): AnimesPage { - val data = response.parseAs() - - val animeList = data.results.map { ani -> - val name = ani.title ?: ani.name ?: "Title N/A" - - SAnime.create().apply { - title = name - url = LinkData(ani.id, ani.mediaType).toJsonString() - thumbnail_url = ani.posterPath?.let { IMG_URL + it } ?: FALLBACK_IMG - status = if (ani.mediaType == "movie") SAnime.COMPLETED else SAnime.UNKNOWN - } - } - - return AnimesPage(animeList, data.page < data.totalPages) - } - - // ============================== Filters =============================== - - override fun getFilterList(): AnimeFilterList = AnimeFilterList( - AnimeFilter.Header("NOTE: Filters are going to be ignored if using search text"), - TypeFilter(), - CollectionFilter(), - OrderFilter(), - ) - - private class TypeFilter : UriPartFilter( - "Type", - arrayOf( - Pair("Movies", "movie"), - Pair("TV-shows", "tv"), - ), - ) - - private class CollectionFilter : UriPartFilter( - "Collection", - arrayOf( - Pair("