forked from AlmightyHak/extensions-source
(all/hikari) provider selection and hiki mirrors (#970)
* Update Hikari.kt * Update build.gradle
This commit is contained in:
parent
2f53d6b581
commit
5d902c3576
2 changed files with 57 additions and 3 deletions
|
@ -1,7 +1,7 @@
|
||||||
ext {
|
ext {
|
||||||
extName = 'Hikari'
|
extName = 'Hikari'
|
||||||
extClass = '.Hikari'
|
extClass = '.Hikari'
|
||||||
extVersionCode = 18
|
extVersionCode = 19
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.animeextension.all.hikari
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import androidx.preference.ListPreference
|
import androidx.preference.ListPreference
|
||||||
|
import androidx.preference.MultiSelectListPreference
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||||
|
@ -159,21 +160,37 @@ class Hikari : AnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
override fun videoListParse(response: Response): List<Video> {
|
override fun videoListParse(response: Response): List<Video> {
|
||||||
val data = response.parseAs<List<EmbedDto>>()
|
val data = response.parseAs<List<EmbedDto>>()
|
||||||
|
|
||||||
|
val selectedProviders = preferences.getStringSet(PREF_PROVIDER_KEY, PREF_PROVIDERS_DEFAULT)?.map(String::lowercase)?.toSet() ?: emptySet()
|
||||||
|
|
||||||
return data.parallelCatchingFlatMapBlocking { embed ->
|
return data.parallelCatchingFlatMapBlocking { embed ->
|
||||||
val prefix = getEmbedTypeName(embed.embedType) + embed.embedName
|
|
||||||
val embedName = embed.embedName.lowercase()
|
val embedName = embed.embedName.lowercase()
|
||||||
|
|
||||||
|
if (embedName !in selectedProviders) return@parallelCatchingFlatMapBlocking emptyList()
|
||||||
|
|
||||||
|
val prefix = getEmbedTypeName(embed.embedType) + embed.embedName
|
||||||
|
|
||||||
when (embedName) {
|
when (embedName) {
|
||||||
"streamwish" -> streamwishExtractor.videosFromUrl(embed.embedFrame, videoNameGen = { "$prefix - $it" })
|
"streamwish" -> streamwishExtractor.videosFromUrl(embed.embedFrame, videoNameGen = { "$prefix - $it" })
|
||||||
"filemoon" -> filemoonExtractor.videosFromUrl(embed.embedFrame, "$prefix - ")
|
"filemoon" -> filemoonExtractor.videosFromUrl(embed.embedFrame, "$prefix - ")
|
||||||
"sv" -> savefileExtractor.videosFromUrl(embed.embedFrame, "$prefix - ")
|
"sv" -> savefileExtractor.videosFromUrl(embed.embedFrame, "$prefix - ")
|
||||||
"playerx" -> chillxExtractor.videoFromUrl(embed.embedFrame, "$prefix - ")
|
"playerx" -> chillxExtractor.videoFromUrl(embed.embedFrame, "$prefix - ")
|
||||||
"hiki" -> buzzheavierExtractor.videosFromUrl(embed.embedFrame, "$prefix - ", proxyUrl)
|
"hiki" -> hikiExtraction(embed.embedFrame, "$prefix - ")
|
||||||
else -> emptyList()
|
else -> emptyList()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun hikiExtraction(url: String, prefix: String): List<Video> {
|
||||||
|
val hikiMirror = preferences.getString(PREF_HIKI_KEY, PREF_HIKI_DEFAULT)!!
|
||||||
|
|
||||||
|
if (hikiMirror == "hiki") {
|
||||||
|
return buzzheavierExtractor.videosFromUrl(url, prefix, proxyUrl)
|
||||||
|
}
|
||||||
|
val id = url.toHttpUrl().pathSegments[0]
|
||||||
|
val videoUrl = "https://$hikiMirror/$id"
|
||||||
|
return buzzheavierExtractor.videosFromUrl(videoUrl, prefix)
|
||||||
|
}
|
||||||
|
|
||||||
override fun List<Video>.sort(): List<Video> {
|
override fun List<Video>.sort(): List<Video> {
|
||||||
val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!!
|
val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!!
|
||||||
val type = preferences.getString(PREF_TYPE_KEY, PREF_TYPE_DEFAULT)!!
|
val type = preferences.getString(PREF_TYPE_KEY, PREF_TYPE_DEFAULT)!!
|
||||||
|
@ -215,6 +232,21 @@ class Hikari : AnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
private const val PREF_HOSTER_DEFAULT = ""
|
private const val PREF_HOSTER_DEFAULT = ""
|
||||||
private val PREF_HOSTER_VALUES = arrayOf("") + HOSTER_LIST
|
private val PREF_HOSTER_VALUES = arrayOf("") + HOSTER_LIST
|
||||||
private val PREF_HOSTER_ENTRIES = arrayOf("Any") + HOSTER_LIST
|
private val PREF_HOSTER_ENTRIES = arrayOf("Any") + HOSTER_LIST
|
||||||
|
|
||||||
|
private const val PREF_HIKI_KEY = "preferred_hiki_mirror"
|
||||||
|
private const val PREF_HIKI_DEFAULT = "hiki"
|
||||||
|
private val PREF_HIKI_VALUES = arrayOf("hiki", "buzzheavier.com", "bzzhr.co", "fuckingfast.net")
|
||||||
|
private val PREF_HIKI_ENTRIES = PREF_HIKI_VALUES
|
||||||
|
|
||||||
|
// Provider
|
||||||
|
private const val PREF_PROVIDER_KEY = "provider_selection"
|
||||||
|
private val PREF_PROVIDERS = arrayOf("Streamwish", "Filemoon", "SV", "PlayerX", "Hiki")
|
||||||
|
|
||||||
|
private val PREF_PROVIDERS_VALUE = arrayOf("streamwish", "filemoon", "sv", "playerx", "hiki")
|
||||||
|
|
||||||
|
private val PREF_DEFAULT_PROVIDERS_VALUE = arrayOf("streamwish", "filemoon", "sv", "playerx", "hiki")
|
||||||
|
|
||||||
|
private val PREF_PROVIDERS_DEFAULT = PREF_DEFAULT_PROVIDERS_VALUE.toSet()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================== Settings ==============================
|
// ============================== Settings ==============================
|
||||||
|
@ -256,6 +288,28 @@ class Hikari : AnimeHttpSource(), ConfigurableAnimeSource {
|
||||||
summary = "%s"
|
summary = "%s"
|
||||||
}.also(screen::addPreference)
|
}.also(screen::addPreference)
|
||||||
|
|
||||||
|
MultiSelectListPreference(screen.context).apply {
|
||||||
|
key = PREF_PROVIDER_KEY
|
||||||
|
title = "Enable/Disable Video Providers"
|
||||||
|
entries = PREF_PROVIDERS
|
||||||
|
entryValues = PREF_PROVIDERS_VALUE
|
||||||
|
setDefaultValue(PREF_PROVIDERS_DEFAULT)
|
||||||
|
|
||||||
|
setOnPreferenceChangeListener { _, newValue ->
|
||||||
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
preferences.edit().putStringSet(key, newValue as Set<String>).commit()
|
||||||
|
}
|
||||||
|
}.also(screen::addPreference)
|
||||||
|
|
||||||
|
ListPreference(screen.context).apply {
|
||||||
|
key = PREF_HIKI_KEY
|
||||||
|
title = "Hiki provider mirrors"
|
||||||
|
entries = PREF_HIKI_ENTRIES
|
||||||
|
entryValues = PREF_HIKI_VALUES
|
||||||
|
setDefaultValue(PREF_HIKI_DEFAULT)
|
||||||
|
summary = "%s"
|
||||||
|
}.also(screen::addPreference)
|
||||||
|
|
||||||
FilemoonExtractor.addSubtitlePref(screen)
|
FilemoonExtractor.addSubtitlePref(screen)
|
||||||
SavefileExtractor.addSubtitlePref(screen)
|
SavefileExtractor.addSubtitlePref(screen)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue