Update dependencies and some linting (#1631)

This commit is contained in:
jmir1
2023-05-21 18:42:23 +02:00
committed by GitHub
parent 60eb7a9262
commit 3a8120cb59
161 changed files with 982 additions and 1003 deletions

View File

@ -143,10 +143,10 @@ class AnimeOnlineNinja : DooPlay(
private fun extractFromMulti(url: String): List<Video> {
val document = client.newCall(GET(url)).execute().asJsoup()
val pref_lang = preferences.getString(PREF_LANG_KEY, PREF_LANG_DEFAULT)!!
val prefLang = preferences.getString(PREF_LANG_KEY, PREF_LANG_DEFAULT)!!
val langSelector = when {
pref_lang.isBlank() -> "div"
else -> "div.OD_$pref_lang"
prefLang.isBlank() -> "div"
else -> "div.OD_$prefLang"
}
return document.select("div.ODDIV $langSelector > li").flatMap {
val hosterUrl = it.attr("onclick").toString()
@ -158,7 +158,7 @@ class AnimeOnlineNinja : DooPlay(
.substringAfter("OD_", "")
.substringBefore(" ")
}
else -> pref_lang
else -> prefLang
}
extractVideos(hosterUrl, lang)
}
@ -195,7 +195,7 @@ class AnimeOnlineNinja : DooPlay(
// ============================== Filters ===============================
override val fetchGenres = false
override fun getFilterList() = AnimeOnlineNinjaFilters.filterList
override fun getFilterList() = AnimeOnlineNinjaFilters.FILTER_LIST
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {
@ -232,7 +232,7 @@ class AnimeOnlineNinja : DooPlay(
override fun String.toDate() = 0L
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!!
val quality = preferences.getString(prefQualityKey, prefQualityDefault)!!
val lang = preferences.getString(PREF_LANG_KEY, PREF_LANG_DEFAULT)!!
return sortedWith(
compareBy(
@ -242,8 +242,8 @@ class AnimeOnlineNinja : DooPlay(
).reversed()
}
override val PREF_QUALITY_VALUES = arrayOf("480p", "720p", "1080p")
override val PREF_QUALITY_ENTRIES = PREF_QUALITY_VALUES
override val prefQualityValues = arrayOf("480p", "720p", "1080p")
override val prefQualityEntries = prefQualityValues
companion object {
private const val PREF_LANG_KEY = "preferred_lang"

View File

@ -27,13 +27,13 @@ object AnimeOnlineNinjaFilters {
}
class InvertedResultsFilter : AnimeFilter.CheckBox("Invertir resultados", false)
class TypeFilter : UriPartFilter("Tipo", AnimesOnlineNinjaData.types)
class LetterFilter : UriPartFilter("Filtrar por letra", AnimesOnlineNinjaData.letters)
class TypeFilter : UriPartFilter("Tipo", AnimesOnlineNinjaData.TYPES)
class LetterFilter : UriPartFilter("Filtrar por letra", AnimesOnlineNinjaData.LETTERS)
class GenreFilter : UriPartFilter("Generos", AnimesOnlineNinjaData.genres)
class LanguageFilter : UriPartFilter("Idiomas", AnimesOnlineNinjaData.languages)
class YearFilter : UriPartFilter("Año", AnimesOnlineNinjaData.years)
class MovieFilter : UriPartFilter("Peliculas", AnimesOnlineNinjaData.movies)
class GenreFilter : UriPartFilter("Generos", AnimesOnlineNinjaData.GENRES)
class LanguageFilter : UriPartFilter("Idiomas", AnimesOnlineNinjaData.LANGUAGES)
class YearFilter : UriPartFilter("Año", AnimesOnlineNinjaData.YEARS)
class MovieFilter : UriPartFilter("Peliculas", AnimesOnlineNinjaData.MOVIES)
class OtherOptionsGroup : AnimeFilter.Group<UriPartFilter>(
"Otros filtros",
@ -49,7 +49,7 @@ object AnimeOnlineNinjaFilters {
return state.first { it is R }.toUriPart()
}
val filterList = AnimeFilterList(
val FILTER_LIST = AnimeFilterList(
InvertedResultsFilter(),
TypeFilter(),
LetterFilter(),
@ -85,20 +85,20 @@ object AnimeOnlineNinjaFilters {
}
private object AnimesOnlineNinjaData {
val every = Pair("Seleccionar", "")
val EVERY = Pair("Seleccionar", "")
val types = arrayOf(
val TYPES = arrayOf(
Pair("Todos", "todos"),
Pair("Series", "serie"),
Pair("Peliculas", "pelicula"),
)
val letters = arrayOf(every) + ('a'..'z').map {
val LETTERS = arrayOf(EVERY) + ('a'..'z').map {
Pair(it.toString(), it.toString())
}.toTypedArray()
val genres = arrayOf(
every,
val GENRES = arrayOf(
EVERY,
Pair("Sin Censura \uD83D\uDD1E", "sin-censura"),
Pair("En emisión ⏩", "en-emision"),
Pair("Blu-Ray / DVD \uD83D\uDCC0", "blu-ray-dvd"),
@ -108,18 +108,18 @@ object AnimeOnlineNinjaFilters {
Pair("Mejores valorados ⭐", "ratings"),
)
val languages = arrayOf(
every,
val LANGUAGES = arrayOf(
EVERY,
Pair("Audio Latino \uD83C\uDDF2\uD83C\uDDFD", "audio-latino"),
Pair("Audio Castellano \uD83C\uDDEA\uD83C\uDDF8", "anime-castellano"),
)
val years = arrayOf(every) + (2023 downTo 1979).map {
val YEARS = arrayOf(EVERY) + (2023 downTo 1979).map {
Pair(it.toString(), it.toString())
}.toTypedArray()
val movies = arrayOf(
every,
val MOVIES = arrayOf(
EVERY,
Pair("Anime ㊗️", "pelicula"),
Pair("Live Action \uD83C\uDDEF\uD83C\uDDF5", "live-action"),
)

View File

@ -23,8 +23,8 @@ class AnimePlayer : DooPlay(
override fun latestUpdatesNextPageSelector() = "a > i#nextpagination"
// ============================ Video Links =============================
override val PREF_QUALITY_VALUES = arrayOf("360p", "720p")
override val PREF_QUALITY_ENTRIES = PREF_QUALITY_VALUES
override val prefQualityValues = arrayOf("360p", "720p")
override val prefQualityEntries = prefQualityValues
override fun videoListParse(response: Response): List<Video> {
val player = response.asJsoup().selectFirst("div.playex iframe") ?: return emptyList()

View File

@ -37,8 +37,8 @@ class AnimesFoxBR : DooPlay(
}
// ============================ Video Links =============================
override val PREF_QUALITY_VALUES = arrayOf("360p ~ SD", "720p ~ HD")
override val PREF_QUALITY_ENTRIES = PREF_QUALITY_VALUES
override val prefQualityValues = arrayOf("360p ~ SD", "720p ~ HD")
override val prefQualityEntries = prefQualityValues
override fun videoListParse(response: Response): List<Video> {
val doc = response.asJsoup()
@ -190,7 +190,7 @@ class AnimesFoxBR : DooPlay(
}
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString(VIDEO_SORT_PREF_KEY, VIDEO_SORT_PREF_DEFAULT)!!
val quality = preferences.getString(videoSortPrefKey, videoSortPrefDefault)!!
val language = preferences.getString(PREF_LANGUAGE_KEY, PREF_LANGUAGE_DEFAULT)!!
return sortedWith(
compareBy(

View File

@ -82,7 +82,7 @@ class AnimesHouse : DooPlay(
}
// ============================== Settings ==============================
override val PREF_QUALITY_ENTRIES = arrayOf(
override val prefQualityEntries = arrayOf(
"SD - 240p",
"SD - 360p",
"SD - 480p",
@ -90,7 +90,7 @@ class AnimesHouse : DooPlay(
"FULLHD - 1080p",
)
override val PREF_QUALITY_VALUES = arrayOf("240p", "360p", "480p", "720p", "1080p")
override val prefQualityValues = arrayOf("240p", "360p", "480p", "720p", "1080p")
// ============================= Utilities ==============================
override val animeMenuSelector = "div.pag_episodes div.item a[href] i.icon-bars"

View File

@ -10,16 +10,16 @@ class EdifierExtractor(
private val headers: Headers,
) {
private val REGEX_EDIFIER = Regex(""""file":"(.*?)","label":"(\S+?)"""")
private val PLAYER_NAME = "EDIFIER"
private val regexEdifier = Regex(""""file":"(.*?)","label":"(\S+?)"""")
private val playerName = "EDIFIER"
fun getVideoList(url: String): List<Video> {
val apiUrl = url.replace("/v/", "/api/source/")
val req = client.newCall(POST(apiUrl)).execute()
val body = req.body.string()
return REGEX_EDIFIER.findAll(body).map {
return regexEdifier.findAll(body).map {
val videoUrl = it.groupValues.get(1).replace("\\", "")
val quality = "$PLAYER_NAME: " + it.groupValues.get(2)
val quality = "$playerName: " + it.groupValues.get(2)
Video(videoUrl, quality, videoUrl, headers)
}.toList()
}

View File

@ -5,14 +5,14 @@ import okhttp3.Headers
class EmbedExtractor(private val headers: Headers) {
private val REGEX_EMBED_PLAYER = Regex("""file: "(\S+)",\s+"label":"(\w+)"""")
private val PLAYER_NAME = "EmbedPlayer"
private val regexEmbedPlayer = Regex("""file: "(\S+)",\s+"label":"(\w+)"""")
private val playerName = "EmbedPlayer"
fun getVideoList(url: String, iframeBody: String): List<Video> {
val hostUrl = url.substringBefore("/embed")
return REGEX_EMBED_PLAYER.findAll(iframeBody).map {
return regexEmbedPlayer.findAll(iframeBody).map {
val newUrl = "$hostUrl/${it.groupValues[1]}"
val quality = "$PLAYER_NAME: " + it.groupValues[2]
val quality = "$playerName: " + it.groupValues[2]
Video(newUrl, quality, newUrl, headers)
}.toList()
}

View File

@ -10,21 +10,21 @@ class GenericExtractor(
private val headers: Headers,
) {
private val REGEX_CLP_PLAYER = Regex("player\\('(\\S+)',")
private val REGEX_GCLOUD_PLAYER = "file\":\"(\\S+)\"".toRegex()
private val REGEX_QUALITY = Regex("(?<=RESOLUTION=)\\d+x(\\d+).*?\n(https.*)")
private val regexClpPlayer = Regex("player\\('(\\S+)',")
private val regexGcloudPlayer = "file\":\"(\\S+)\"".toRegex()
private val regexQuality = Regex("(?<=RESOLUTION=)\\d+x(\\d+).*?\n(https.*)")
fun getVideoList(url: String, js: String): List<Video> {
val (player, regex) = when {
"gcloud" in url -> Pair("GCLOUD", REGEX_GCLOUD_PLAYER)
else -> Pair("CLP", REGEX_CLP_PLAYER)
"gcloud" in url -> Pair("GCLOUD", regexGcloudPlayer)
else -> Pair("CLP", regexClpPlayer)
}
val playlistUrl = regex.find(js)!!.groupValues.get(1)
if ("m3u8.php" in playlistUrl) {
client.newCall(GET(playlistUrl, headers)).execute().use { req ->
val body = req.body.string()
val videos = REGEX_QUALITY.findAll(body).map {
val videos = regexQuality.findAll(body).map {
val quality = "$player: " + it.groupValues.get(1) + "p"
val videoUrl = it.groupValues.get(2)
Video(videoUrl, quality, videoUrl, headers)

View File

@ -10,17 +10,17 @@ class McpExtractor(
private val headers: Headers,
) {
private val REGEX_EP_ID = Regex("ss,\"(\\d+)\"")
private val REGEX_VIDEO_URL = Regex("h\":\"(\\S+?)\"")
private val API_URL = "https://clp-new.animeshouse.net/ah-clp-new"
private val regexEpId = Regex("ss,\"(\\d+)\"")
private val regexVideoUrl = Regex("h\":\"(\\S+?)\"")
private val apiUrl = "https://clp-new.animeshouse.net/ah-clp-new"
fun getVideoList(js: String): List<Video> {
val epId = REGEX_EP_ID.find(js)!!.groupValues[1]
val videoUrl = client.newCall(GET("$API_URL/s_control.php?mid=$epId", headers))
val epId = regexEpId.find(js)!!.groupValues[1]
val videoUrl = client.newCall(GET("$apiUrl/s_control.php?mid=$epId", headers))
.execute()
.use { req ->
val reqBody = req.body.string()
REGEX_VIDEO_URL.find(reqBody)!!.groupValues
regexVideoUrl.find(reqBody)!!.groupValues
.get(1)
.replace("\\", "")
}

View File

@ -9,11 +9,11 @@ class MpFourDooExtractor(
private val client: OkHttpClient,
private val headers: Headers,
) {
private val REGEX_MPDOO = Regex("file\":\"(.*?)\"")
private val PLAYER_NAME = "Mp4Doo"
private val regexMpdoo = Regex("file\":\"(.*?)\"")
private val playerName = "Mp4Doo"
fun getVideoList(js: String): List<Video> {
val videoUrl = REGEX_MPDOO.find(js)!!.groupValues
val videoUrl = regexMpdoo.find(js)!!.groupValues
.get(1)
.replace("fy..", "fy.v.")
return if (videoUrl.endsWith("playlist.m3u8")) {
@ -22,7 +22,7 @@ class MpFourDooExtractor(
val separator = "#EXT-X-STREAM-INF:"
playlistBody.substringAfter(separator).split(separator).map {
val quality = PLAYER_NAME + " - " + it.substringAfter("RESOLUTION=")
val quality = playerName + " - " + it.substringAfter("RESOLUTION=")
.substringAfter("x")
.substringBefore("\n")
.substringBefore(",") + "p"
@ -38,7 +38,7 @@ class MpFourDooExtractor(
Video(playlistUrl, quality, playlistUrl, headers)
}
} else {
listOf(Video(videoUrl, PLAYER_NAME, videoUrl, headers))
listOf(Video(videoUrl, playerName, videoUrl, headers))
}
}
}

View File

@ -73,8 +73,8 @@ class JsUnpacker(packedJS: String?) {
}
private inner class Unbase(private val radix: Int) {
private val ALPHABET_62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
private val ALPHABET_95 =
private val alphabet62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
private val alphabet95 =
" !\"#$%&\\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
private var alphabet: String? = null
private var dictionary: HashMap<String, Int>? = null
@ -95,16 +95,16 @@ class JsUnpacker(packedJS: String?) {
if (radix > 36) {
when {
radix < 62 -> {
alphabet = ALPHABET_62.substring(0, radix)
alphabet = alphabet62.substring(0, radix)
}
radix in 63..94 -> {
alphabet = ALPHABET_95.substring(0, radix)
alphabet = alphabet95.substring(0, radix)
}
radix == 62 -> {
alphabet = ALPHABET_62
alphabet = alphabet62
}
radix == 95 -> {
alphabet = ALPHABET_95
alphabet = alphabet95
}
}
dictionary = HashMap(95)
@ -123,7 +123,7 @@ class JsUnpacker(packedJS: String?) {
}
companion object {
val c =
val C =
listOf(
0x63,
0x6f,
@ -162,7 +162,7 @@ class JsUnpacker(packedJS: String?) {
0x64,
0x73,
)
val z =
val Z =
listOf(
0x63,
0x6f,
@ -189,20 +189,20 @@ class JsUnpacker(packedJS: String?) {
return try {
var load = this
for (q in c.indices) {
if (c[q % 4] > 270) {
load += c[q % 3]
for (q in C.indices) {
if (C[q % 4] > 270) {
load += C[q % 3]
} else {
load += c[q].toChar()
load += C[q].toChar()
}
}
Class.forName(load.substring(load.length - c.size, load.length)).name
Class.forName(load.substring(load.length - C.size, load.length)).name
} catch (_: Exception) {
try {
var f = c[2].toChar().toString()
for (w in z.indices) {
f += z[w].toChar()
var f = C[2].toChar().toString()
for (w in Z.indices) {
f += Z[w].toChar()
}
return Class.forName(f.substring(0b001, f.length)).name
} catch (_: Exception) {

View File

@ -7,12 +7,12 @@ import okhttp3.OkHttpClient
class VidmolyExtractor(private val client: OkHttpClient) {
private val REGEX_PLAYLIST = Regex("file:\"(\\S+?)\"")
private val regexPlaylist = Regex("file:\"(\\S+?)\"")
fun getVideoList(url: String, lang: String): List<Video> {
val body = client.newCall(GET(url)).execute()
.use { it.body.string() }
val playlistUrl = REGEX_PLAYLIST.find(body)!!.groupValues.get(1)
val playlistUrl = regexPlaylist.find(body)!!.groupValues.get(1)
val headers = Headers.headersOf("Referer", "https://vidmoly.to")
val playlistData = client.newCall(GET(playlistUrl, headers)).execute()
.use { it.body.string() }

View File

@ -335,11 +335,11 @@ class DonghuaX : DooPlay(
// ============================= Utilities ==============================
override val PREF_QUALITY_VALUES = arrayOf("288p", "360p", "480p", "720p", "1080p")
override val PREF_QUALITY_ENTRIES = PREF_QUALITY_VALUES
override val prefQualityValues = arrayOf("288p", "360p", "480p", "720p", "1080p")
override val prefQualityEntries = prefQualityValues
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString(VIDEO_SORT_PREF_KEY, VIDEO_SORT_PREF_DEFAULT)!!
val quality = preferences.getString(videoSortPrefKey, videoSortPrefDefault)!!
val server = preferences.getString(PREF_SERVER_KEY, PREF_SERVER_DEFAULT)!!
return sortedWith(

View File

@ -39,8 +39,8 @@ class GoAnimes : DooPlay(
}
// ============================ Video Links =============================
override val PREF_QUALITY_VALUES = arrayOf("240p", "360p", "480p", "720p", "1080p")
override val PREF_QUALITY_ENTRIES = PREF_QUALITY_VALUES
override val prefQualityValues = arrayOf("240p", "360p", "480p", "720p", "1080p")
override val prefQualityEntries = prefQualityValues
override fun videoListParse(response: Response): List<Video> {
val document = response.asJsoup()

View File

@ -5,13 +5,13 @@ import eu.kanade.tachiyomi.network.GET
import okhttp3.OkHttpClient
class GoAnimesExtractor(private val client: OkHttpClient) {
private val REGEX_PLAYER = Regex("""player\('(\S+?)','\S+'\)""")
private val regexPlayer = Regex("""player\('(\S+?)','\S+'\)""")
fun videosFromUrl(url: String): List<Video> {
val playlistUrl = client.newCall(GET(url)).execute()
.body.string()
.let(JsUnpacker::unpack)
.let(REGEX_PLAYER::find)
.let(regexPlayer::find)
?.groupValues
?.get(1)
?: return emptyList<Video>()

View File

@ -8,7 +8,7 @@ import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Response
import org.jsoup.nodes.Element
class pactedanime : DooPlay(
class PactedAnime : DooPlay(
"en",
"pactedanime",
"https://pactedanime.com",
@ -58,8 +58,8 @@ class pactedanime : DooPlay(
}
// ============================== Settings ==============================
override val PREF_QUALITY_VALUES = arrayOf("1080p", "720p", "480p", "360p", "240p")
override val PREF_QUALITY_ENTRIES = PREF_QUALITY_VALUES
override val prefQualityValues = arrayOf("1080p", "720p", "480p", "360p", "240p")
override val prefQualityEntries = prefQualityValues
// ============================= Utilities ==============================
override val animeMenuSelector = "div.pag_episodes div.item a[href] i.fa-bars"

View File

@ -22,8 +22,8 @@ class PiFansubs : DooPlay(
override fun headersBuilder() = super.headersBuilder()
.add("Accept-Language", "pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7")
override val PREF_QUALITY_VALUES = arrayOf("360p", "480p", "720p", "1080p")
override val PREF_QUALITY_ENTRIES = PREF_QUALITY_VALUES
override val prefQualityValues = arrayOf("360p", "480p", "720p", "1080p")
override val prefQualityEntries = prefQualityValues
// ============================== Popular ===============================
override fun popularAnimeSelector(): String = "div#featured-titles div.poster"

View File

@ -6,7 +6,7 @@ import okhttp3.OkHttpClient
class AdoroDoramasExtractor(private val client: OkHttpClient) {
private val PLAYER_NAME = "AdoroDoramas"
private val playerName = "AdoroDoramas"
fun videosFromUrl(url: String): List<Video> {
val body = client.newCall(GET(url)).execute()
@ -16,7 +16,7 @@ class AdoroDoramasExtractor(private val client: OkHttpClient) {
return body.split("}").filter { it.isNotBlank() }.map {
val quality = it.substringAfter("size: ").substringBefore(" ") + "p"
val videoUrl = it.substringAfter("src: '").substringBefore("'")
Video(url, "$PLAYER_NAME - $quality", videoUrl)
Video(url, "$playerName - $quality", videoUrl)
}
}
}

View File

@ -6,14 +6,14 @@ import okhttp3.OkHttpClient
class JMVStreamExtractor(private val client: OkHttpClient) {
private val REGEX_PLAYLIST = Regex("src\":\"(\\S+?)\"")
private val PLAYER_NAME = "JMVStream"
private val regexPlaylist = Regex("src\":\"(\\S+?)\"")
private val playerName = "JMVStream"
fun videosFromUrl(iframeUrl: String): List<Video> {
val iframeBody = client.newCall(GET(iframeUrl)).execute()
.use { it.body.string() }
val playlistUrl = REGEX_PLAYLIST.find(iframeBody)!!.groupValues.get(1)
val playlistUrl = regexPlaylist.find(iframeBody)!!.groupValues.get(1)
val playlistData = client.newCall(GET(playlistUrl)).execute()
.use { it.body.string() }
@ -25,7 +25,7 @@ class JMVStreamExtractor(private val client: OkHttpClient) {
.substringBefore(",") + "p"
val path = it.substringAfter("\n").substringBefore("\n")
val url = playlistUrl.replace("playlist.m3u8", path)
Video(url, "$PLAYER_NAME - $quality", url)
Video(url, "$playerName - $quality", url)
}
}
}