refactor: Refactor extensions and bump AGP (#2764)

This commit is contained in:
Claudemirovsky 2024-01-16 18:28:53 -03:00 committed by GitHub
parent 8936f7746e
commit 5532818846
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
326 changed files with 1120 additions and 2114 deletions

View file

@ -211,6 +211,10 @@ src/<lang>/<mysourcename>/
13 directories, 9 files
```
`<lang>` should be an ISO 639-1 compliant language code (two letters or `all`). `<mysourcename>`
should be adapted from the site name, and can only contain lowercase ASCII letters and digits.
Your extension code must be placed in the package `eu.kanade.tachiyomi.animeextension.<lang>.<mysourcename>`.
#### AndroidManifest.xml
A minimal [Android manifest file](https://developer.android.com/guide/topics/manifest/manifest-intro) is needed for Android to recognize a extension when it's compiled into an APK file. You can also add intent filters inside this file (see [URL intent filter](#url-intent-filter) for more information).
@ -218,12 +222,8 @@ A minimal [Android manifest file](https://developer.android.com/guide/topics/man
Make sure that your new extension's `build.gradle` file follows the following structure:
```gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = '<My source name>'
pkgNameSuffix = '<lang>.<mysourcename>'
extClass = '.<MySourceName>'
extVersionCode = 1
containsNsfw = true
@ -234,8 +234,7 @@ apply from: "$rootDir/common.gradle"
| Field | Description |
| ----- | ----------- |
| `extName` | The name of the extension. |
| `pkgNameSuffix` | A unique suffix added to `eu.kanade.tachiyomi.animeextension`. The language and the site name should be enough. Remember your extension code implementation must be placed in this package. |
| `extName` | The name of the extension. Should be romanized if site name is not in English.|
| `extClass` | Points to the class that implements `AnimeSource`. You can use a relative path starting with a dot (the package name is the base path). This is used to find and instantiate the source(s). |
| `extVersionCode` | The extension version code. This must be a positive integer and incremented with any change to the code. |
| `libVersion` | (Optional, defaults to `14`) The version of the [extensions library](https://github.com/aniyomiorg/extensions-lib) used. |
@ -408,7 +407,7 @@ open class UriPartFilter(displayName: String, private val vals: Array<Pair<Strin
### Misc notes
- Sometimes you may find no use for some inherited methods. If so just override them and throw exceptions: `throw UnsupportedOperationException("Not used.")`
- Sometimes you may find no use for some inherited methods. If so just override them and throw exceptions: `throw UnsupportedOperationException()`
- You probably will find `getUrlWithoutDomain` useful when parsing the target source URLs. Keep in mind there's a current issue with spaces in the URL though, so if you use it, replace all spaces with URL encoded characters (like `%20`).
- If possible try to stick to the general workflow from `AnimeHttpSource`/`AnimeParsedHttpSource`; breaking them may cause you more headache than necessary.
- By implementing `ConfigurableAnimeSource` you can add settings to your source, which is backed by [`SharedPreferences`](https://developer.android.com/reference/android/content/SharedPreferences).

View file

@ -1,3 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
apply plugin: 'org.jmailen.kotlinter'
android {
@ -21,11 +24,11 @@ android {
defaultConfig {
minSdkVersion AndroidConfig.minSdk
targetSdkVersion AndroidConfig.targetSdk
applicationIdSuffix pkgNameSuffix
applicationIdSuffix project.parent.name + "." + project.name
versionCode extVersionCode
versionName project.ext.properties.getOrDefault("libVersion", "14") + ".$extVersionCode"
base {
archivesName = "aniyomi-$pkgNameSuffix-v$versionName"
archivesName = "aniyomi-$applicationIdSuffix-v$versionName"
}
def readmes = project.projectDir.listFiles({ File file ->
file.name.equals("README.md") ||

View file

@ -21,3 +21,5 @@ org.gradle.caching=true
# Enable AndroidX dependencies
android.useAndroidX=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

View file

@ -1,5 +1,5 @@
[versions]
agp_version = "8.0.2"
agp_version = "8.2.1"
coroutines_version = "1.7.1"
kotlin_version = "1.8.22"
serialization_version = "1.5.1"

Binary file not shown.

View file

@ -1,6 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

22
gradlew vendored
View file

@ -83,7 +83,8 @@ done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@ -130,10 +131,13 @@ location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
@ -141,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
@ -149,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC3045
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@ -198,11 +202,11 @@ fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \

View file

@ -20,7 +20,6 @@ import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.lang.Exception
class FrenchAnime : DataLifeEngine(
"French Anime",
@ -82,9 +81,9 @@ class FrenchAnime : DataLifeEngine(
return episodeList.reversed()
}
override fun episodeListSelector(): String = throw Exception("not used")
override fun episodeListSelector(): String = throw UnsupportedOperationException()
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
// ============================ Video Links =============================
override suspend fun getVideoList(episode: SEpisode): List<Video> {
@ -109,9 +108,9 @@ class FrenchAnime : DataLifeEngine(
return list
}
override fun videoFromElement(element: Element): Video = throw Exception("Not Used")
override fun videoFromElement(element: Element): Video = throw UnsupportedOperationException()
override fun videoListSelector(): String = throw Exception("Not Used")
override fun videoListSelector(): String = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document): String = throw Exception("Not Used")
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException()
}

View file

@ -95,9 +95,9 @@ class Wiflix : DataLifeEngine(
return list
}
override fun videoFromElement(element: Element): Video = throw Exception("Not Used")
override fun videoFromElement(element: Element): Video = throw UnsupportedOperationException()
override fun videoListSelector(): String = throw Exception("Not Used")
override fun videoListSelector(): String = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document): String = throw Exception("Not Used")
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException()
}

View file

@ -361,9 +361,9 @@ abstract class AnimeStream(
return emptyList()
}
override fun videoFromElement(element: Element) = throw Exception("Not Used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("Not Used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -50,13 +50,13 @@ abstract class DataLifeEngine(
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not Used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not Used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not Used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not Used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
// =============================== Search ===============================
@ -139,7 +139,7 @@ abstract class DataLifeEngine(
}
}
override fun animeDetailsParse(document: Document): SAnime = throw Exception("Not used")
override fun animeDetailsParse(document: Document): SAnime = throw UnsupportedOperationException()
private fun animeDetailsParse(response: Response, baseAnime: SAnime): SAnime {
val document = response.asJsoup()

View file

@ -21,7 +21,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
import java.text.SimpleDateFormat
import java.util.Locale
@ -124,7 +123,7 @@ abstract class DooPlay(
}
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
protected open fun episodeFromElement(element: Element, seasonName: String): SEpisode {
return SEpisode.create().apply {
@ -145,13 +144,13 @@ abstract class DooPlay(
}
// ============================ Video Links =============================
override fun videoListParse(response: Response): List<Video> = throw Exception("not used")
override fun videoListParse(response: Response): List<Video> = throw UnsupportedOperationException()
override fun videoListSelector(): String = throw Exception("not used")
override fun videoListSelector(): String = throw UnsupportedOperationException()
override fun videoFromElement(element: Element): Video = throw Exception("not used")
override fun videoFromElement(element: Element): Video = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document): String = throw Exception("not used")
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException()
// =============================== Search ===============================

View file

@ -125,7 +125,7 @@ abstract class DopeFlix(
}
// ============================== Episodes ==============================
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.use { it.asJsoup() }
@ -154,7 +154,7 @@ abstract class DopeFlix(
}
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
private fun parseEpisodesFromSeries(element: Element): List<SEpisode> {
val seasonId = element.attr("data-id")
@ -245,11 +245,11 @@ abstract class DopeFlix(
).reversed()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -242,11 +242,11 @@ abstract class ZoroTheme(
return emptyList()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================= Utilities ==============================
private fun Set<String>.contains(s: String, ignoreCase: Boolean): Boolean {

View file

@ -69,23 +69,18 @@ interface ThemeSourceGenerator {
gradle.writeText(
"""
|// THIS FILE IS AUTO-GENERATED; DO NOT EDIT
|plugins {
| alias(libs.plugins.android.application)
| alias(libs.plugins.kotlin.android)
| alias(libs.plugins.kotlin.serialization)
|}
|
|ext {
| extName = '${source.name}'
| pkgNameSuffix = '${pkgNameSuffix(source, ".")}'
| extClass = '.${source.className}'
| extFactory = '$themePkg'
| extVersionCode = ${baseVersionCode + source.overrideVersionCode + MULTISRC_LIBRARY_VERSION}
| ${if (source.isNsfw) "containsNsfw = true\n" else ""}
|}
|
|apply from: "${'$'}rootDir/common.gradle"
|
|$defaultAdditionalGradleText
|$additionalGradleOverrideText
|apply from: "${'$'}rootDir/common.gradle"
|
|android {
| defaultConfig {

View file

@ -1,12 +1,5 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'AnimeOnsen'
pkgNameSuffix = 'all.animeonsen'
extClass = '.AnimeOnsen'
extVersionCode = 7
}

View file

@ -27,7 +27,6 @@ import okhttp3.Response
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import kotlin.Exception
class AnimeOnsen : ConfigurableAnimeSource, AnimeHttpSource() {
@ -70,8 +69,8 @@ class AnimeOnsen : ConfigurableAnimeSource, AnimeHttpSource() {
}
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int) = throw Exception("not used")
override fun latestUpdatesParse(response: Response) = throw Exception("not used")
override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException()
override fun latestUpdatesParse(response: Response) = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList) =
@ -133,7 +132,7 @@ class AnimeOnsen : ConfigurableAnimeSource, AnimeHttpSource() {
override fun videoListRequest(episode: SEpisode) = GET("$apiUrl/content/${episode.url}")
override fun videoUrlParse(response: Response) = throw Exception("not used")
override fun videoUrlParse(response: Response) = throw UnsupportedOperationException()
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -1,18 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'AnimeWorld India'
pkgNameSuffix = 'all.animeworldindia'
extClass = '.AnimeWorldIndiaFactory'
extVersionCode = 8
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(":lib-playlist-utils"))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -21,7 +21,6 @@ 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
class AnimeWorldIndia(
final override val lang: String,
@ -109,9 +108,9 @@ class AnimeWorldIndia(
}
// ============================== Episodes ==============================
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
@Serializable
data class SeasonDto(val episodes: EpisodeTypeDto)
@ -173,11 +172,11 @@ class AnimeWorldIndia(
}
// ============================ Video Links =============================
override fun videoFromElement(element: Element): Video = throw Exception("not used")
override fun videoFromElement(element: Element): Video = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
@Serializable
private data class PlayerDto(

View file

@ -1,18 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'Google Drive'
pkgNameSuffix = 'all.googledrive'
extClass = '.GoogleDrive'
extVersionCode = 14
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-googledrive-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -91,17 +91,17 @@ class GoogleDrive : ConfigurableAnimeSource, AnimeHttpSource() {
)
}
override fun popularAnimeParse(response: Response): AnimesPage = throw Exception("Not used")
override fun popularAnimeParse(response: Response): AnimesPage = throw UnsupportedOperationException()
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesParse(response: Response): AnimesPage = throw Exception("Not used")
override fun latestUpdatesParse(response: Response): AnimesPage = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun searchAnimeParse(response: Response): AnimesPage = throw Exception("Not used")
override fun searchAnimeParse(response: Response): AnimesPage = throw UnsupportedOperationException()
override suspend fun getSearchAnime(
page: Int,
@ -251,7 +251,7 @@ class GoogleDrive : ConfigurableAnimeSource, AnimeHttpSource() {
return anime
}
override fun animeDetailsParse(response: Response): SAnime = throw Exception("Not used")
override fun animeDetailsParse(response: Response): SAnime = throw UnsupportedOperationException()
// ============================== Episodes ==============================
@ -352,7 +352,7 @@ class GoogleDrive : ConfigurableAnimeSource, AnimeHttpSource() {
return episodeList.reversed()
}
override fun episodeListParse(response: Response): List<SEpisode> = throw Exception("Not used")
override fun episodeListParse(response: Response): List<SEpisode> = throw UnsupportedOperationException()
// ============================ Video Links =============================

View file

@ -1,10 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'GoogleDriveIndex'
pkgNameSuffix = 'all.googledriveindex'
extClass = '.GoogleDriveIndex'
extVersionCode = 7
}

View file

@ -110,13 +110,13 @@ class GoogleDriveIndex : ConfigurableAnimeSource, AnimeHttpSource() {
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesParse(response: Response): AnimesPage = throw Exception("Not used")
override fun latestUpdatesParse(response: Response): AnimesPage = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun searchAnimeParse(response: Response): AnimesPage = throw Exception("Not used")
override fun searchAnimeParse(response: Response): AnimesPage = throw UnsupportedOperationException()
override suspend fun getSearchAnime(
page: Int,
@ -304,7 +304,7 @@ class GoogleDriveIndex : ConfigurableAnimeSource, AnimeHttpSource() {
return anime
}
override fun animeDetailsParse(response: Response): SAnime = throw Exception("Not used")
override fun animeDetailsParse(response: Response): SAnime = throw UnsupportedOperationException()
// ============================== Episodes ==============================
@ -441,7 +441,7 @@ class GoogleDriveIndex : ConfigurableAnimeSource, AnimeHttpSource() {
return episodeList.reversed()
}
override fun episodeListParse(response: Response): List<SEpisode> = throw Exception("Not used")
override fun episodeListParse(response: Response): List<SEpisode> = throw UnsupportedOperationException()
// ============================ Video Links =============================

View file

@ -1,16 +1,12 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'Jav Guru'
pkgNameSuffix = 'all.javguru'
extClass = '.JavGuru'
extVersionCode = 10
containsNsfw = true
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamwish-extractor'))
implementation(project(':lib-streamtape-extractor'))
@ -19,6 +15,4 @@ dependencies {
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
implementation(project(':lib-playlist-utils'))
implementation(project(':lib-javcoverfetcher'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -375,6 +375,6 @@ class JavGuru : AnimeHttpSource(), ConfigurableAnimeSource {
}
override fun episodeListParse(response: Response): List<SEpisode> {
throw UnsupportedOperationException("Not used")
throw UnsupportedOperationException()
}
}

View file

@ -1,12 +1,5 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'Jellyfin'
pkgNameSuffix = 'all.jellyfin'
extClass = '.JellyfinFactory'
extVersionCode = 11
}

View file

@ -133,7 +133,7 @@ class Jellyfin(private val suffix: String) : ConfigurableAnimeSource, AnimeHttpS
// ============================== Popular ===============================
override fun popularAnimeParse(response: Response): AnimesPage = throw Exception("Not used")
override fun popularAnimeParse(response: Response): AnimesPage = throw UnsupportedOperationException()
override suspend fun getPopularAnime(page: Int): AnimesPage {
return client.newCall(popularAnimeRequest(page))
@ -173,7 +173,7 @@ class Jellyfin(private val suffix: String) : ConfigurableAnimeSource, AnimeHttpS
// =============================== Latest ===============================
override fun latestUpdatesParse(response: Response) = throw Exception("Not used")
override fun latestUpdatesParse(response: Response) = throw UnsupportedOperationException()
override suspend fun getLatestUpdates(page: Int): AnimesPage {
return client.newCall(latestUpdatesRequest(page))
@ -207,9 +207,9 @@ class Jellyfin(private val suffix: String) : ConfigurableAnimeSource, AnimeHttpS
// =============================== Search ===============================
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request = throw Exception("Not used")
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request = throw UnsupportedOperationException()
override fun searchAnimeParse(response: Response) = throw Exception("Not used")
override fun searchAnimeParse(response: Response) = throw UnsupportedOperationException()
override suspend fun getSearchAnime(page: Int, query: String, filters: AnimeFilterList): AnimesPage {
require(parentId.isNotEmpty()) { "Select library in the extension settings." }

View file

@ -1,12 +1,5 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'Yomiroll'
pkgNameSuffix = 'all.kamyroll'
extClass = '.Yomiroll'
extVersionCode = 29
}

View file

@ -188,7 +188,7 @@ class Yomiroll : ConfigurableAnimeSource, AnimeHttpSource() {
return info.data.first().toSAnimeOrNull(anime) ?: anime
}
override fun animeDetailsParse(response: Response): SAnime = throw Exception("not used")
override fun animeDetailsParse(response: Response): SAnime = throw UnsupportedOperationException()
// ============================== Episodes ==============================

View file

@ -1,20 +1,14 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'MissAV'
pkgNameSuffix = 'all.missav'
extClass = '.MissAV'
extVersionCode = 6
containsNsfw = true
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-unpacker'))
implementation(project(':lib-playlist-utils'))
implementation(project(':lib-javcoverfetcher'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -177,7 +177,7 @@ class MissAV : AnimeHttpSource(), ConfigurableAnimeSource {
}
override fun episodeListParse(response: Response): List<SEpisode> {
throw UnsupportedOperationException("Not Used")
throw UnsupportedOperationException()
}
private inline fun <reified T> List<*>.firstInstanceOrNull(): T? =

View file

@ -1,21 +1,15 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'SupJav'
pkgNameSuffix = 'all.supjav'
extClass = '.SupJavFactory'
extVersionCode = 2
containsNsfw = true
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(":lib-streamtape-extractor"))
implementation(project(":lib-streamwish-extractor"))
implementation(project(":lib-voe-extractor"))
implementation(project(":lib-playlist-utils"))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -65,19 +65,19 @@ class SupJav(override val lang: String = "en") : ConfigurableAnimeSource, Parsed
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int): Request {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun latestUpdatesSelector(): String {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun latestUpdatesFromElement(element: Element): SAnime {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun latestUpdatesNextPageSelector(): String? {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
// =============================== Search ===============================
@ -134,11 +134,11 @@ class SupJav(override val lang: String = "en") : ConfigurableAnimeSource, Parsed
}
override fun episodeListSelector(): String {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun episodeFromElement(element: Element): SEpisode {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
// ============================ Video Links =============================
@ -190,15 +190,15 @@ class SupJav(override val lang: String = "en") : ConfigurableAnimeSource, Parsed
}
override fun videoListSelector(): String {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun videoFromElement(element: Element): Video {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun videoUrlParse(document: Document): String {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
// ============================== Settings ==============================

View file

@ -1,9 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'أكوام'
pkgNameSuffix = 'ar.akwam'
extClass = '.Akwam'
extVersionCode = 9
}

View file

@ -21,7 +21,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class Akwam : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -129,7 +128,7 @@ class Akwam : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -191,13 +190,13 @@ class Akwam : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// Filters

View file

@ -1,16 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'Anime4up'
pkgNameSuffix = 'ar.anime4up'
extClass = '.Anime4Up'
extVersionCode = 53
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-gdriveplayer-extractor'))
@ -21,6 +16,4 @@ dependencies {
implementation(project(':lib-vidbom-extractor'))
implementation(project(':lib-voe-extractor'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
}
apply from: "$rootDir/common.gradle"
}

View file

@ -69,10 +69,10 @@ class Anime4Up : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun popularAnimeNextPageSelector() = "ul.pagination > li > a.next"
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int) = throw Exception("not used")
override fun latestUpdatesSelector() = throw Exception("not used")
override fun latestUpdatesFromElement(element: Element) = throw Exception("not used")
override fun latestUpdatesNextPageSelector() = throw Exception("not used")
override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException()
override fun latestUpdatesSelector() = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element) = throw UnsupportedOperationException()
override fun latestUpdatesNextPageSelector() = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun getFilterList() = Anime4UpFilters.FILTER_LIST
@ -187,9 +187,9 @@ class Anime4Up : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} ?: emptyList()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -1,18 +1,12 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'أنمي بالكوم'
pkgNameSuffix = 'ar.animeblkom'
extClass = '.AnimeBlkom'
extVersionCode = 17
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-mp4upload-extractor'))
implementation(project(":lib-okru-extractor"))
}
apply from: "$rootDir/common.gradle"

View file

@ -54,13 +54,13 @@ class AnimeBlkom : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun popularAnimeNextPageSelector() = "ul.pagination li.page-item a[rel=next]"
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun searchAnimeFromElement(element: Element) = popularAnimeFromElement(element)
@ -168,7 +168,7 @@ class AnimeBlkom : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return Video(videoUrl, "Blkom - " + element.attr("label"), videoUrl, headers)
}
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================== Filters ===============================
override fun getFilterList() = AnimeFilterList(

View file

@ -1,10 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Animeiat'
pkgNameSuffix = 'ar.animeiat'
extClass = '.Animeiat'
extVersionCode = 1
}

View file

@ -1,20 +1,14 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'AnimeLek'
pkgNameSuffix = 'ar.animelek'
extClass = '.AnimeLek'
extVersionCode = 28
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-okru-extractor'))
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-vidbom-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -23,7 +23,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class AnimeLek : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -112,9 +111,9 @@ class AnimeLek : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}.flatten()
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// =============================== Search ===============================
// TODO: Add search filters

View file

@ -1,15 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'Animerco'
pkgNameSuffix = 'ar.animerco'
extClass = '.Animerco'
extVersionCode = 35
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-uqload-extractor'))
implementation(project(':lib-gdriveplayer-extractor'))
@ -20,6 +16,4 @@ dependencies {
implementation(project(':lib-streamwish-extractor'))
implementation(project(':lib-yourupload-extractor'))
implementation(project(':lib-okru-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -31,7 +31,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -61,10 +60,10 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun popularAnimeNextPageSelector() = "ul.pagination li a:has(i.fa-left-long)"
// =============================== Latest ===============================
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList) = GET("$baseUrl/page/$page/?s=$query")
@ -148,7 +147,7 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
episode_number = "$seasonNum.${epNum.padStart(3, '0')}".toFloatOrNull() ?: 1F
}
override fun episodeFromElement(element: Element) = throw Exception("not used")
override fun episodeFromElement(element: Element) = throw UnsupportedOperationException()
// ============================ Video Links =============================
override fun videoListParse(response: Response): List<Video> {
@ -210,9 +209,9 @@ class Animerco : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!!

View file

@ -1,12 +1,5 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'ArabAnime'
pkgNameSuffix = 'ar.arabanime'
extClass = '.ArabAnime'
extVersionCode = 2
}

View file

@ -1,19 +1,13 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'عرب سيد'
pkgNameSuffix = 'ar.arabseed'
extClass = '.ArabSeed'
extVersionCode = 10
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(":lib-dood-extractor"))
implementation(project(":lib-voe-extractor"))
implementation(project(":lib-streamwish-extractor"))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -118,8 +118,8 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} ?: emptyList()
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!!
@ -202,10 +202,10 @@ class ArabSeed : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
)
// =============================== Latest ===============================
override fun latestUpdatesNextPageSelector(): String? = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String? = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// =============================== Preferences ===============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -1,15 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'asia2tv'
pkgNameSuffix = 'ar.asia2tv'
extClass = '.Asia2TV'
extVersionCode = 16
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-okru-extractor'))
@ -17,6 +13,4 @@ dependencies {
implementation(project(':lib-streamwish-extractor'))
implementation(project(':lib-uqload-extractor'))
implementation(project(':lib-vidbom-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -119,9 +119,9 @@ class Asia2TV : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} ?: emptyList()
}
override fun videoFromElement(element: Element): Video = throw Exception("not used")
override fun videoFromElement(element: Element): Video = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document): String = throw Exception("not used")
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException()
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString("preferred_quality", null)
@ -194,13 +194,13 @@ class Asia2TV : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
// =============================== Latest ===============================
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// ============================== Filters ===============================
override fun getFilterList() = AnimeFilterList(

View file

@ -1,17 +1,13 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'Egy Dead'
pkgNameSuffix = 'ar.egydead'
extClass = '.EgyDead'
extVersionCode = 11
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-mixdrop-extractor'))
implementation(project(':lib-streamwish-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -177,7 +177,7 @@ class EgyDead : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun videoListSelector() = "ul.serversList li"
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString("preferred_quality", "1080p")
@ -197,7 +197,7 @@ class EgyDead : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ================================== search ==================================

View file

@ -1,9 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'فاصل اعلاني'
pkgNameSuffix = 'ar.faselhd'
extClass = '.FASELHD'
extVersionCode = 14
}

View file

@ -21,7 +21,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -107,7 +106,7 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Video urls
override fun videoListSelector() = throw UnsupportedOperationException("Not used.")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoListParse(response: Response): List<Video> {
val document = response.asJsoup()
@ -143,9 +142,9 @@ class FASELHD : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// search

View file

@ -1,9 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'موفيز فور يو'
pkgNameSuffix = 'ar.movies4u'
extClass = '.Movies4U'
extVersionCode = 4
}

View file

@ -60,7 +60,7 @@ class Movies4U : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Episodes
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -90,7 +90,7 @@ class Movies4U : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return episodeList.reversed()
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
private fun parseEpisodesFromSeries(element: Element): List<SEpisode> {
val seasonId = element.select("div.card__content h3.card__title a").attr("href")
@ -161,9 +161,9 @@ class Movies4U : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -238,13 +238,13 @@ class Movies4U : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String? = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String? = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// preferred quality settings

View file

@ -1,15 +1,11 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'MY CIMA'
pkgNameSuffix = 'ar.mycima'
extClass = '.MyCima'
extVersionCode = 20
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-uqload-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -108,7 +108,7 @@ class MyCima : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return episode
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
private fun getNumberFromEpsString(epsStr: String): String {
return epsStr.filter { it.isDigit() }
@ -174,9 +174,9 @@ class MyCima : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed()
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================== search ==============================

View file

@ -1,21 +1,15 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'Okanime'
pkgNameSuffix = 'ar.okanime'
extClass = '.Okanime'
extVersionCode = 6
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(":lib-dood-extractor"))
implementation(project(":lib-voe-extractor"))
implementation(project(":lib-okru-extractor"))
implementation(project(":lib-vidbom-extractor"))
implementation(project(":lib-mp4upload-extractor"))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -182,15 +182,15 @@ class Okanime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
override fun videoListSelector(): String {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun videoFromElement(element: Element): Video {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun videoUrlParse(document: Document): String {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun List<Video>.sort(): List<Video> {

View file

@ -1,13 +1,11 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'توك توك سينما'
pkgNameSuffix = 'ar.tuktukcinema'
extClass = '.Tuktukcinema'
extVersionCode = 16
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-uqload-extractor'))
implementation(project(':lib-okru-extractor'))
@ -16,6 +14,4 @@ dependencies {
implementation(project(':lib-vidbom-extractor'))
implementation(project(':lib-playlist-utils'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
}
apply from: "$rootDir/common.gradle"
}

View file

@ -128,7 +128,7 @@ class Tuktukcinema : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun episodeListSelector() = "link[rel=canonical]"
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
// ============================ video links ============================
override fun videoListRequest(episode: SEpisode): Request {
@ -183,9 +183,9 @@ class Tuktukcinema : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed()
}
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
private fun videosFromMain(url: String): List<Video> {
val jsE = client.newCall(GET(url)).execute().asJsoup().selectFirst("script:containsData(player)")!!.data()

View file

@ -1,21 +1,15 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'WIT ANIME'
pkgNameSuffix = 'ar.witanime'
extClass = '.WitAnime'
extVersionCode = 48
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-dailymotion-extractor'))
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-okru-extractor'))
implementation(project(':lib-mp4upload-extractor'))
implementation(project(':lib-vidbom-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -25,7 +25,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -201,9 +200,9 @@ class WitAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
}
override fun videoListSelector() = throw Exception("not used")
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!!

View file

@ -1,9 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'XS Anime'
pkgNameSuffix = 'ar.xsanime'
extClass = '.XsAnime'
extVersionCode = 10
}

View file

@ -21,7 +21,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class XsAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -92,7 +91,7 @@ class XsAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return Video(element.attr("src"), "Default: If you want to change the quality go to extension settings", element.attr("src"))
}
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -195,13 +194,13 @@ class XsAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String? = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String? = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// Preferences

View file

@ -1,9 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
ext {
extName = 'XS Movie'
pkgNameSuffix = 'ar.xsmovie'
extClass = '.XsMovie'
extVersionCode = 5
}

View file

@ -19,7 +19,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class XsMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -80,7 +79,7 @@ class XsMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return Video(element.attr("src"), "Default: If you want to change the quality go to extension settings", element.attr("src"))
}
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -119,13 +118,13 @@ class XsMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String? = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String? = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// Preferences

View file

@ -1,19 +1,14 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Aniflix'
pkgNameSuffix = 'de.aniflix'
extClass = '.Aniflix'
extVersionCode = 25
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamlare-extractor'))
implementation(project(':lib-voe-extractor'))
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-dood-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -247,7 +247,7 @@ class Aniflix : ConfigurableAnimeSource, AnimeHttpSource() {
return newList
}
override fun videoUrlParse(response: Response) = throw Exception("not used")
override fun videoUrlParse(response: Response) = throw UnsupportedOperationException()
@Suppress("UNCHECKED_CAST")
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -1,19 +1,12 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'Aniking'
pkgNameSuffix = 'de.aniking'
extClass = '.Aniking'
extVersionCode = 16
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-dood-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -22,7 +22,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import kotlin.Exception
class Aniking : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -52,7 +51,7 @@ class Aniking : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun popularAnimeNextPageSelector() = "div.pagination i#nextpagination"
// ============================== Episodes ==============================
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.use { it.asJsoup() }
@ -73,7 +72,7 @@ class Aniking : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not Used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
private fun episodeFromString(string: String) = SEpisode.create().apply {
val season = string.substringAfter("\"s").substringBefore("_")
@ -145,11 +144,11 @@ class Aniking : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// =============================== Search ===============================
// TODO: Implement search filters
@ -179,13 +178,13 @@ class Aniking : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
// =============================== Latest ===============================
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -1,21 +1,15 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'Anime-Base'
pkgNameSuffix = 'de.animebase'
extClass = '.AnimeBase'
extVersionCode = 19
containsNsfw = true
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(":lib-voe-extractor"))
implementation(project(":lib-streamwish-extractor"))
implementation(project(":lib-playlist-utils"))
implementation("dev.datlag.jsunpacker:jsunpacker:1.0.1")
}
apply from: "$rootDir/common.gradle"
}

View file

@ -241,11 +241,11 @@ class AnimeBase : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -1,19 +1,14 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Anime-Loads'
pkgNameSuffix = 'de.animeloads'
extClass = '.AnimeLoads'
extVersionCode = 12
containsNsfw = true
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-voe-extractor'))
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-dood-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -67,7 +67,7 @@ class AnimeLoads : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// episodes
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -93,7 +93,7 @@ class AnimeLoads : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return episodeElement.map { episodeFromElement(it, url) }
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not Used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
private fun episodeFromElement(element: Element, url: String): SEpisode {
val episode = SEpisode.create()
@ -785,11 +785,11 @@ class AnimeLoads : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -822,13 +822,13 @@ class AnimeLoads : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// Preferences

View file

@ -1,10 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Anime-Stream'
pkgNameSuffix = 'de.animestream'
extClass = '.AnimeStream'
extVersionCode = 2
}

View file

@ -13,7 +13,6 @@ import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.api.get
import kotlin.Exception
class AnimeStream : ParsedAnimeHttpSource() {
@ -43,7 +42,7 @@ class AnimeStream : ParsedAnimeHttpSource() {
// episodes
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -67,7 +66,7 @@ class AnimeStream : ParsedAnimeHttpSource() {
return episode
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
// Video Extractor
@ -87,11 +86,11 @@ class AnimeStream : ParsedAnimeHttpSource() {
return videoList.reversed()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -129,11 +128,11 @@ class AnimeStream : ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String = throw Exception("not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
}

View file

@ -1,19 +1,14 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'AnimeToast'
pkgNameSuffix = 'de.animetoast'
extClass = '.AnimeToast'
extVersionCode = 11
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-voe-extractor'))
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-filemoon-extractor'))
implementation(project(':lib-mp4upload-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -55,7 +55,7 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// episodes
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -275,11 +275,11 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -321,13 +321,13 @@ class AnimeToast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// Preferences

View file

@ -1,18 +1,13 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'AniWorld (experimental)'
pkgNameSuffix = 'de.aniworld'
extClass = '.AniWorld'
extVersionCode = 20
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-voe-extractor'))
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-dood-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -120,9 +120,9 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
.build()
return POST("$baseUrl/ajax/search", body = FormBody.Builder().add("keyword", query).build(), headers = headers)
}
override fun searchAnimeSelector() = throw UnsupportedOperationException("Not used.")
override fun searchAnimeSelector() = throw UnsupportedOperationException()
override fun searchAnimeNextPageSelector() = throw UnsupportedOperationException("Not used.")
override fun searchAnimeNextPageSelector() = throw UnsupportedOperationException()
override fun searchAnimeParse(response: Response): AnimesPage {
val body = response.body.string()
@ -149,7 +149,7 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return anime
}
override fun searchAnimeFromElement(element: Element) = throw UnsupportedOperationException("Not used.")
override fun searchAnimeFromElement(element: Element) = throw UnsupportedOperationException()
// ===== ANIME DETAILS =====
override fun animeDetailsParse(document: Document): SAnime {
@ -168,7 +168,7 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
// ===== EPISODE =====
override fun episodeListSelector() = throw UnsupportedOperationException("Not used.")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -221,7 +221,7 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
// ===== VIDEO SOURCES =====
override fun videoListSelector() = throw UnsupportedOperationException("Not used.")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoListParse(response: Response): List<Video> {
val document = response.asJsoup()
@ -312,7 +312,7 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
}
override fun videoFromElement(element: Element): Video = throw Exception("not Used")
override fun videoFromElement(element: Element): Video = throw UnsupportedOperationException()
override fun List<Video>.sort(): List<Video> {
val hoster = preferences.getString(AWConstants.PREFERRED_HOSTER, null)
@ -352,7 +352,7 @@ class AniWorld : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return newList
}
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException("Not used.")
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException()
// ===== PREFERENCES ======
@Suppress("UNCHECKED_CAST")

View file

@ -1,14 +1,11 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'CineClix'
pkgNameSuffix = 'de.cineclix'
extClass = '.CineClix'
extVersionCode = 8
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-mixdrop-extractor'))
@ -17,6 +14,3 @@ dependencies {
implementation(project(':lib-playlist-utils'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
}
apply from: "$rootDir/common.gradle"

View file

@ -30,7 +30,6 @@ import okhttp3.Request
import okhttp3.Response
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import kotlin.Exception
class CineClix : ConfigurableAnimeSource, AnimeHttpSource() {
@ -332,9 +331,9 @@ class CineClix : ConfigurableAnimeSource, AnimeHttpSource() {
// Latest
override fun latestUpdatesParse(response: Response): AnimesPage = throw Exception("not Used")
override fun latestUpdatesParse(response: Response): AnimesPage = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
// Preferences

View file

@ -1,15 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'Einfach'
pkgNameSuffix = 'de.einfach'
extClass = '.Einfach'
extVersionCode = 2
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(":lib-dood-extractor"))
implementation(project(":lib-filemoon-extractor"))
@ -19,6 +15,4 @@ dependencies {
implementation(project(":lib-streamwish-extractor"))
implementation(project(":lib-voe-extractor"))
implementation("dev.datlag.jsunpacker:jsunpacker:1.0.1")
}
apply from: "$rootDir/common.gradle"
}

View file

@ -211,11 +211,11 @@ class Einfach : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
override fun videoFromElement(element: Element): Video {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
override fun videoUrlParse(document: Document): String {
throw UnsupportedOperationException("Not used.")
throw UnsupportedOperationException()
}
// ============================== Settings ==============================

View file

@ -1,18 +1,12 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'FilmPalast'
pkgNameSuffix = 'de.filmpalast'
extClass = '.FilmPalast'
extVersionCode = 14
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-filemoon-extractor'))
implementation(project(':lib-voe-extractor'))
}
apply from: "$rootDir/common.gradle"

View file

@ -25,7 +25,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class FilmPalast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -58,7 +57,7 @@ class FilmPalast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// episodes
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -71,7 +70,7 @@ class FilmPalast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return episodeList.reversed()
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
// Video Extractor
@ -161,11 +160,11 @@ class FilmPalast : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search

View file

@ -1,18 +1,13 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Kool'
pkgNameSuffix = 'de.kool'
extClass = '.Kool'
extVersionCode = 7
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-filemoon-extractor'))
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-voe-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -728,9 +728,9 @@ class Kool : ConfigurableAnimeSource, AnimeHttpSource() {
// Latest
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesParse(response: Response): AnimesPage = throw Exception("not Used")
override fun latestUpdatesParse(response: Response): AnimesPage = throw UnsupportedOperationException()
// Preferences

View file

@ -1,16 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'Moflix-Stream'
pkgNameSuffix = 'de.moflixstream'
extClass = '.MoflixStream'
extVersionCode = 4
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamvid-extractor'))
implementation(project(':lib-streamwish-extractor'))
@ -18,6 +13,3 @@ dependencies {
implementation(project(':lib-playlist-utils'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
}
apply from: "$rootDir/common.gradle"

View file

@ -69,9 +69,9 @@ class MoflixStream : ConfigurableAnimeSource, AnimeHttpSource() {
}
// =============================== Latest ===============================
override fun latestUpdatesParse(response: Response) = throw Exception("not Used")
override fun latestUpdatesParse(response: Response) = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int) = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList) = GET(

View file

@ -1,20 +1,14 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Movie2k'
pkgNameSuffix = 'de.movie2k'
extClass = '.Movie2k'
extVersionCode = 5
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-mixdrop-extractor'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
}
apply from: "$rootDir/common.gradle"

View file

@ -24,7 +24,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import kotlin.Exception
class Movie2k : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -56,7 +55,7 @@ class Movie2k : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// episodes
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -70,7 +69,7 @@ class Movie2k : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return episodeList.reversed()
}
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
// Video Extractor
@ -180,11 +179,11 @@ class Movie2k : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// Search
@ -217,13 +216,13 @@ class Movie2k : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// Latest
override fun latestUpdatesNextPageSelector(): String = throw Exception("Not used")
override fun latestUpdatesNextPageSelector(): String = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element): SAnime = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element): SAnime = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesSelector(): String = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw UnsupportedOperationException()
// Preferences

View file

@ -1,17 +1,12 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Movie4k'
pkgNameSuffix = 'de.movie4k'
extClass = '.Movie4k'
extVersionCode = 7
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-voe-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -418,9 +418,9 @@ class Movie4k : ConfigurableAnimeSource, AnimeHttpSource() {
// Latest
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException()
override fun latestUpdatesParse(response: Response): AnimesPage = throw Exception("not Used")
override fun latestUpdatesParse(response: Response): AnimesPage = throw UnsupportedOperationException()
// Preferences

View file

@ -1,18 +1,13 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlinx-serialization'
ext {
extName = 'Serienstream'
pkgNameSuffix = 'de.serienstream'
extClass = '.Serienstream'
extVersionCode = 14
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-voe-extractor'))
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-dood-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -119,9 +119,9 @@ class Serienstream : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
.build()
return POST("$baseUrl/ajax/search", body = FormBody.Builder().add("keyword", query).build(), headers = headers)
}
override fun searchAnimeSelector() = throw UnsupportedOperationException("Not used.")
override fun searchAnimeSelector() = throw UnsupportedOperationException()
override fun searchAnimeNextPageSelector() = throw UnsupportedOperationException("Not used.")
override fun searchAnimeNextPageSelector() = throw UnsupportedOperationException()
override fun searchAnimeParse(response: Response): AnimesPage {
val body = response.body.string()
@ -147,7 +147,7 @@ class Serienstream : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return anime
}
override fun searchAnimeFromElement(element: Element) = throw UnsupportedOperationException("Not used.")
override fun searchAnimeFromElement(element: Element) = throw UnsupportedOperationException()
// ===== ANIME DETAILS =====
override fun animeDetailsParse(document: Document): SAnime {
@ -165,7 +165,7 @@ class Serienstream : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
// ===== EPISODE =====
override fun episodeListSelector() = throw UnsupportedOperationException("Not used.")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup()
@ -218,7 +218,7 @@ class Serienstream : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
// ===== VIDEO SOURCES =====
override fun videoListSelector() = throw UnsupportedOperationException("Not used.")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoListParse(response: Response): List<Video> {
val document = response.asJsoup()
@ -281,7 +281,7 @@ class Serienstream : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
}
}
override fun videoFromElement(element: Element): Video = throw Exception("not Used")
override fun videoFromElement(element: Element): Video = throw UnsupportedOperationException()
override fun List<Video>.sort(): List<Video> {
val hoster = preferences.getString(SConstants.PREFERRED_HOSTER, null)
@ -321,7 +321,7 @@ class Serienstream : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return newList
}
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException("Not used.")
override fun videoUrlParse(document: Document): String = throw UnsupportedOperationException()
// ===== PREFERENCES ======
@Suppress("UNCHECKED_CAST")

View file

@ -1,19 +1,13 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
ext {
extName = 'StreamCloud'
pkgNameSuffix = 'de.streamcloud'
extClass = '.StreamCloud'
extVersionCode = 7
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-dood-extractor'))
implementation(project(':lib-streamtape-extractor'))
implementation(project(':lib-mixdrop-extractor'))
}
apply from: "$rootDir/common.gradle"
}

View file

@ -20,7 +20,6 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.lang.Exception
class StreamCloud : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -52,13 +51,13 @@ class StreamCloud : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun popularAnimeNextPageSelector() = null
// =============================== Latest ===============================
override fun latestUpdatesNextPageSelector() = throw Exception("Not used")
override fun latestUpdatesNextPageSelector() = throw UnsupportedOperationException()
override fun latestUpdatesFromElement(element: Element) = throw Exception("Not used")
override fun latestUpdatesFromElement(element: Element) = throw UnsupportedOperationException()
override fun latestUpdatesRequest(page: Int) = throw Exception("Not used")
override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException()
override fun latestUpdatesSelector() = throw Exception("Not used")
override fun latestUpdatesSelector() = throw UnsupportedOperationException()
// =============================== Search ===============================
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList) =
@ -95,9 +94,9 @@ class StreamCloud : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return listOf(episode)
}
override fun episodeListSelector() = throw Exception("not used")
override fun episodeListSelector() = throw UnsupportedOperationException()
override fun episodeFromElement(element: Element): SEpisode = throw Exception("not used")
override fun episodeFromElement(element: Element): SEpisode = throw UnsupportedOperationException()
// ============================ Video Links =============================
private val streamtapeExtractor by lazy { StreamTapeExtractor(client) }
@ -145,11 +144,11 @@ class StreamCloud : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
).reversed()
}
override fun videoListSelector() = throw Exception("not used")
override fun videoListSelector() = throw UnsupportedOperationException()
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoFromElement(element: Element) = throw UnsupportedOperationException()
override fun videoUrlParse(document: Document) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw UnsupportedOperationException()
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {

View file

@ -1,16 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.serialization)
}
ext {
extName = 'AllAnime'
pkgNameSuffix = 'en.allanime'
extClass = '.AllAnime'
extVersionCode = 31
}
apply from: "$rootDir/common.gradle"
dependencies {
implementation(project(':lib-streamlare-extractor'))
implementation(project(':lib-mp4upload-extractor'))
@ -19,6 +14,3 @@ dependencies {
implementation(project(':lib-gogostream-extractor'))
implementation "dev.datlag.jsunpacker:jsunpacker:1.0.1"
}
apply from: "$rootDir/common.gradle"

Some files were not shown because too many files have changed in this diff Show more