diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d8b2472db..362ad066b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -238,10 +238,10 @@ apply from: "$rootDir/common.gradle" | `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. | | `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 `13`) The version of the [extensions library](https://github.com/aniyomiorg/extensions-lib) used. | +| `libVersion` | (Optional, defaults to `14`) The version of the [extensions library](https://github.com/aniyomiorg/extensions-lib) used. | | `containsNsfw` | (Optional, defaults to `false`) Flag to indicate that a source contains NSFW content. | -The extension's version name is generated automatically by concatenating `libVersion` and `extVersionCode`. With the example used above, the version would be `13`. +The extension's version name is generated automatically by concatenating `libVersion` and `extVersionCode`. With the example used above, the version would be `14`. ### Core dependencies @@ -680,7 +680,7 @@ class AnimeSource : AnimeTheme( return this } - override val client: OkHttpClient = network.cloudflareClient.newBuilder() + override val client: OkHttpClient = network.client.newBuilder() .ignoreAllSSLErrors() .proxy(Proxy(Proxy.Type.HTTP, InetSocketAddress("10.0.2.2", 8080))) .build() diff --git a/build.gradle.kts b/build.gradle.kts index c4abc2659..939c49821 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ plugins { alias(libs.plugins.android.application) apply false - alias(libs.plugins.kotlin.android) apply false - alias(libs.plugins.kotlin.serialization) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.serialization) apply false alias(libs.plugins.kotlinter) apply false } diff --git a/lib/burstcloud-extractor/src/main/java/eu/kanade/tachiyomi/lib/burstcloudextractor/BurstCloudExtractor.kt b/lib/burstcloud-extractor/src/main/java/eu/kanade/tachiyomi/lib/burstcloudextractor/BurstCloudExtractor.kt index f8150169d..e57d5e30f 100644 --- a/lib/burstcloud-extractor/src/main/java/eu/kanade/tachiyomi/lib/burstcloudextractor/BurstCloudExtractor.kt +++ b/lib/burstcloud-extractor/src/main/java/eu/kanade/tachiyomi/lib/burstcloudextractor/BurstCloudExtractor.kt @@ -38,7 +38,6 @@ class BurstCloudExtractor(private val client: OkHttpClient) { } else { null } - }.getOrNull().orEmpty() } } diff --git a/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt b/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt index f59fbca1a..98c6dd5ac 100644 --- a/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt +++ b/lib/chillx-extractor/src/main/java/eu/kanade/tachiyomi/lib/chillxextractor/ChillxExtractor.kt @@ -23,7 +23,7 @@ class ChillxExtractor(private val client: OkHttpClient, private val headers: Hea private val REGEX_EVAL_KEY by lazy { Regex("""eval\(\S+\("(\S+)",\d+,"(\S+)",(\d+),(\d+),""") } private val REGEX_SOURCES by lazy { Regex("""sources:\s*\[\{"file":"([^"]+)""") } private val REGEX_FILE by lazy { Regex("""file: ?"([^"]+)"""") } - private val REGEX_SOURCE by lazy { Regex("""source = ?"([^"]+)"""")} + private val REGEX_SOURCE by lazy { Regex("""source = ?"([^"]+)"""") } // matches "[language]https://...," private val REGEX_SUBS by lazy { Regex("""\[(.*?)\](.*?)"?\,""") } @@ -100,7 +100,6 @@ class ChillxExtractor(private val client: OkHttpClient, private val headers: Hea return bits.joinToString("") { Char(it.toInt(index) - offset).toString() } } - @Serializable data class CryptoInfo( @SerialName("ct") diff --git a/lib/dailymotion-extractor/src/main/java/eu/kanade/tachiyomi/lib/dailymotionextractor/DailymotionExtractor.kt b/lib/dailymotion-extractor/src/main/java/eu/kanade/tachiyomi/lib/dailymotionextractor/DailymotionExtractor.kt index 0ea500b0a..447003d89 100644 --- a/lib/dailymotion-extractor/src/main/java/eu/kanade/tachiyomi/lib/dailymotionextractor/DailymotionExtractor.kt +++ b/lib/dailymotion-extractor/src/main/java/eu/kanade/tachiyomi/lib/dailymotionextractor/DailymotionExtractor.kt @@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST -import kotlinx.serialization.decodeFromString +import eu.kanade.tachiyomi.util.parseAs import kotlinx.serialization.json.Json import okhttp3.FormBody import okhttp3.Headers @@ -13,7 +13,6 @@ import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.RequestBody.Companion.toRequestBody -import okhttp3.Response import uy.kohesive.injekt.injectLazy class DailymotionExtractor(private val client: OkHttpClient, private val headers: Headers) { @@ -133,8 +132,4 @@ class DailymotionExtractor(private val client: OkHttpClient, private val headers videoNameGen = { "$prefix$it" }, ) } - - private inline fun Response.parseAs(): T { - return use { it.body.string() }.let(json::decodeFromString) - } } diff --git a/lib/fastream-extractor/src/main/java/eu/kanade/tachiyomi/lib/fastreamextractor/FastreamExtractor.kt b/lib/fastream-extractor/src/main/java/eu/kanade/tachiyomi/lib/fastreamextractor/FastreamExtractor.kt index 7aba71fd3..b90d630fb 100644 --- a/lib/fastream-extractor/src/main/java/eu/kanade/tachiyomi/lib/fastreamextractor/FastreamExtractor.kt +++ b/lib/fastream-extractor/src/main/java/eu/kanade/tachiyomi/lib/fastreamextractor/FastreamExtractor.kt @@ -1,15 +1,15 @@ package eu.kanade.tachiyomi.lib.fastreamextractor +import dev.datlag.jsunpacker.JsUnpacker import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST -import okhttp3.FormBody import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.FormBody import okhttp3.Headers import okhttp3.OkHttpClient import okhttp3.internal.commonEmptyHeaders -import dev.datlag.jsunpacker.JsUnpacker class FastreamExtractor(private val client: OkHttpClient, private val headers: Headers = commonEmptyHeaders) { private val videoHeaders by lazy { @@ -35,8 +35,7 @@ class FastreamExtractor(private val client: OkHttpClient, private val headers: H }.build() val doc = client.newCall(POST(url, videoHeaders, body = form)).execute().use { it.asJsoup() } doc.selectFirst("script:containsData(jwplayer):containsData(vplayer)") ?: return emptyList() - } - else { + } else { firstDoc.selectFirst("script:containsData(jwplayer):containsData(vplayer)") ?: return emptyList() } diff --git a/lib/filemoon-extractor/src/main/java/eu/kanade/tachiyomi/lib/filemoonextractor/FilemoonExtractor.kt b/lib/filemoon-extractor/src/main/java/eu/kanade/tachiyomi/lib/filemoonextractor/FilemoonExtractor.kt index be38d17a5..f8fc201da 100644 --- a/lib/filemoon-extractor/src/main/java/eu/kanade/tachiyomi/lib/filemoonextractor/FilemoonExtractor.kt +++ b/lib/filemoon-extractor/src/main/java/eu/kanade/tachiyomi/lib/filemoonextractor/FilemoonExtractor.kt @@ -3,11 +3,11 @@ package eu.kanade.tachiyomi.lib.filemoonextractor import dev.datlag.jsunpacker.JsUnpacker import eu.kanade.tachiyomi.animesource.model.Track import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json -import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient diff --git a/lib/fusevideo-extractor/src/main/java/eu/kanade/tachiyomi/lib/fusevideoextractor/FusevideoExtractor.kt b/lib/fusevideo-extractor/src/main/java/eu/kanade/tachiyomi/lib/fusevideoextractor/FusevideoExtractor.kt index fc3d99a2b..78bbc0c49 100644 --- a/lib/fusevideo-extractor/src/main/java/eu/kanade/tachiyomi/lib/fusevideoextractor/FusevideoExtractor.kt +++ b/lib/fusevideo-extractor/src/main/java/eu/kanade/tachiyomi/lib/fusevideoextractor/FusevideoExtractor.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.lib.fusevideoextractor +import android.util.Base64 import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup -import android.util.Base64 -import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient @@ -28,5 +28,4 @@ class FusevideoExtractor(private val client: OkHttpClient, private val headers: PlaylistUtils(client, newHeaders).extractFromHls(videoUrl, videoNameGen = { "${prefix}Fusevideo - $it" }) }.getOrDefault(emptyList()) } - } diff --git a/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractor.kt b/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractor.kt index 1fc0f1fb5..4540c58b0 100644 --- a/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractor.kt +++ b/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractor.kt @@ -2,20 +2,19 @@ package eu.kanade.tachiyomi.lib.gogostreamextractor import android.util.Base64 import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup import kotlinx.serialization.json.Json import okhttp3.Headers -import eu.kanade.tachiyomi.lib.playlistutils.PlaylistUtils import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient -import java.lang.Exception -import java.util.Locale import org.jsoup.nodes.Element +import uy.kohesive.injekt.injectLazy +import java.lang.Exception import javax.crypto.Cipher import javax.crypto.spec.IvParameterSpec import javax.crypto.spec.SecretKeySpec -import uy.kohesive.injekt.injectLazy class GogoStreamExtractor(private val client: OkHttpClient) { private val json: Json by injectLazy() diff --git a/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractorDto.kt b/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractorDto.kt index e89305aa7..8d6d8e5b2 100644 --- a/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractorDto.kt +++ b/lib/gogostream-extractor/src/main/java/eu/kanade/tachiyomi/lib/gogostreamextractor/GogoStreamExtractorDto.kt @@ -1,6 +1,5 @@ package eu.kanade.tachiyomi.lib.gogostreamextractor -import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable diff --git a/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt b/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt index 56e8e3e6e..7d76dd660 100644 --- a/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt +++ b/lib/googledrive-extractor/src/main/java/eu/kanade/tachiyomi/lib/googledriveextractor/GoogleDriveExtractor.kt @@ -7,8 +7,8 @@ import eu.kanade.tachiyomi.util.asJsoup import okhttp3.Cookie import okhttp3.CookieJar import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.internal.commonEmptyRequestBody @@ -37,7 +37,7 @@ class GoogleDriveExtractor(private val client: OkHttpClient, private val headers }.build() val docResp = noRedirectClient.newCall( - GET(itemUrl, headers = docHeaders) + GET(itemUrl, headers = docHeaders), ).execute() if (docResp.isRedirect) { @@ -60,7 +60,7 @@ class GoogleDriveExtractor(private val client: OkHttpClient, private val headers }.build() val newUrl = noRedirectClient.newCall( - POST(downloadUrl, headers = postHeaders, body = commonEmptyRequestBody) + POST(downloadUrl, headers = postHeaders, body = commonEmptyRequestBody), ).execute().use { it.headers["location"] ?: downloadUrl } return videoFromRedirect(newUrl, videoName, itemSize, cookieJar) @@ -70,7 +70,7 @@ class GoogleDriveExtractor(private val client: OkHttpClient, private val headers downloadUrl: String, videoName: String, itemSize: String, - cookieJar: GDriveCookieJar + cookieJar: GDriveCookieJar, ): List