Sflix & DopeBox: Added Subtitle preference (#846)

* Added sub preference to DopeBox

* Update build.gradle

* Add subs preference to Sflix

* Update build.gradle
This commit is contained in:
Rohit Mane
2022-09-06 16:34:22 +05:30
committed by GitHub
parent 366d95c315
commit 9d1069deb5
4 changed files with 77 additions and 7 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'DopeBox' extName = 'DopeBox'
pkgNameSuffix = 'en.dopebox' pkgNameSuffix = 'en.dopebox'
extClass = '.DopeBox' extClass = '.DopeBox'
extVersionCode = 8 extVersionCode = 9
libVersion = '13' libVersion = '13'
} }

View File

@ -186,6 +186,7 @@ class DopeBox : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
subsList.add(Track(subUrl, subLang)) subsList.add(Track(subUrl, subLang))
} catch (e: Error) {} } catch (e: Error) {}
} }
val prefSubsList = subLangOrder(subsList)
if (masterUrl.contains("playlist.m3u8")) { if (masterUrl.contains("playlist.m3u8")) {
val masterPlaylist = client.newCall(GET(masterUrl)).execute().body!!.string() val masterPlaylist = client.newCall(GET(masterUrl)).execute().body!!.string()
val videoList = mutableListOf<Video>() val videoList = mutableListOf<Video>()
@ -194,7 +195,7 @@ class DopeBox : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val videoUrl = it.substringAfter("\n").substringBefore("\n") val videoUrl = it.substringAfter("\n").substringBefore("\n")
videoList.add( videoList.add(
try { try {
Video(videoUrl, quality, videoUrl, subtitleTracks = subsList) Video(videoUrl, quality, videoUrl, subtitleTracks = prefSubsList)
} catch (e: Error) { } catch (e: Error) {
Video(videoUrl, quality, videoUrl) Video(videoUrl, quality, videoUrl)
} }
@ -204,7 +205,7 @@ class DopeBox : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} else if (masterUrl.contains("index.m3u8")) { } else if (masterUrl.contains("index.m3u8")) {
return listOf( return listOf(
try { try {
Video(masterUrl, "Default", masterUrl, subtitleTracks = subsList) Video(masterUrl, "Default", masterUrl, subtitleTracks = prefSubsList)
} catch (e: Error) { } catch (e: Error) {
Video(masterUrl, "Default", masterUrl) Video(masterUrl, "Default", masterUrl)
} }
@ -231,7 +232,25 @@ class DopeBox : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
return this return this
} }
private fun subLangOrder(tracks: List<Track>): List<Track> {
val language = preferences.getString("preferred_subLang", null)
if (language != null) {
val newList = mutableListOf<Track>()
var preferred = 0
for (track in tracks) {
if (track.lang.contains(language)) {
newList.add(preferred, track)
preferred++
} else {
newList.add(track)
}
}
return newList
}
return tracks
}
override fun videoListSelector() = throw Exception("not used") override fun videoListSelector() = throw Exception("not used")
override fun videoFromElement(element: Element) = throw Exception("not used") override fun videoFromElement(element: Element) = throw Exception("not used")
@ -336,8 +355,24 @@ class DopeBox : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
preferences.edit().putString(key, entry).commit() preferences.edit().putString(key, entry).commit()
} }
} }
val subLangPref = ListPreference(screen.context).apply {
key = "preferred_subLang"
title = "Preferred sub language"
entries = arrayOf("Arabic", "English", "French", "German", "Hungarian", "Italian", "Japanese", "Portuguese", "Romanian", "Russian", "Spanish")
entryValues = arrayOf("Arabic", "English", "French", "German", "Hungarian", "Italian", "Japanese", "Portuguese", "Romanian", "Russian", "Spanish")
setDefaultValue("English")
summary = "%s"
setOnPreferenceChangeListener { _, newValue ->
val selected = newValue as String
val index = findIndexOfValue(selected)
val entry = entryValues[index] as String
preferences.edit().putString(key, entry).commit()
}
}
screen.addPreference(domainPref) screen.addPreference(domainPref)
screen.addPreference(videoQualityPref) screen.addPreference(videoQualityPref)
screen.addPreference(subLangPref)
} }
// Filter // Filter

View File

@ -5,7 +5,7 @@ ext {
extName = 'Sflix' extName = 'Sflix'
pkgNameSuffix = 'en.sflix' pkgNameSuffix = 'en.sflix'
extClass = '.SFlix' extClass = '.SFlix'
extVersionCode = 8 extVersionCode = 9
libVersion = '13' libVersion = '13'
} }

View File

@ -186,6 +186,7 @@ class SFlix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
subsList.add(Track(subUrl, subLang)) subsList.add(Track(subUrl, subLang))
} catch (e: Error) {} } catch (e: Error) {}
} }
val prefSubsList = subLangOrder(subsList)
if (masterUrl.contains("playlist.m3u8")) { if (masterUrl.contains("playlist.m3u8")) {
val masterPlaylist = client.newCall(GET(masterUrl)).execute().body!!.string() val masterPlaylist = client.newCall(GET(masterUrl)).execute().body!!.string()
val videoList = mutableListOf<Video>() val videoList = mutableListOf<Video>()
@ -194,7 +195,7 @@ class SFlix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
val videoUrl = it.substringAfter("\n").substringBefore("\n") val videoUrl = it.substringAfter("\n").substringBefore("\n")
videoList.add( videoList.add(
try { try {
Video(videoUrl, quality, videoUrl, subtitleTracks = subsList) Video(videoUrl, quality, videoUrl, subtitleTracks = prefSubsList)
} catch (e: Error) { } catch (e: Error) {
Video(videoUrl, quality, videoUrl) Video(videoUrl, quality, videoUrl)
} }
@ -204,7 +205,7 @@ class SFlix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} else if (masterUrl.contains("index.m3u8")) { } else if (masterUrl.contains("index.m3u8")) {
return listOf( return listOf(
try { try {
Video(masterUrl, "Default", masterUrl, subtitleTracks = subsList) Video(masterUrl, "Default", masterUrl, subtitleTracks = prefSubsList)
} catch (e: Error) { } catch (e: Error) {
Video(masterUrl, "Default", masterUrl) Video(masterUrl, "Default", masterUrl)
} }
@ -232,6 +233,24 @@ class SFlix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
return this return this
} }
private fun subLangOrder(tracks: List<Track>): List<Track> {
val language = preferences.getString("preferred_subLang", null)
if (language != null) {
val newList = mutableListOf<Track>()
var preferred = 0
for (track in tracks) {
if (track.lang.contains(language)) {
newList.add(preferred, track)
preferred++
} else {
newList.add(track)
}
}
return newList
}
return tracks
}
override fun videoListSelector() = throw Exception("not used") override fun videoListSelector() = throw Exception("not used")
override fun videoFromElement(element: Element) = throw Exception("not used") override fun videoFromElement(element: Element) = throw Exception("not used")
@ -336,8 +355,24 @@ class SFlix : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
preferences.edit().putString(key, entry).commit() preferences.edit().putString(key, entry).commit()
} }
} }
val subLangPref = ListPreference(screen.context).apply {
key = "preferred_subLang"
title = "Preferred sub language"
entries = arrayOf("Arabic", "English", "French", "German", "Hungarian", "Italian", "Japanese", "Portuguese", "Romanian", "Russian", "Spanish")
entryValues = arrayOf("Arabic", "English", "French", "German", "Hungarian", "Italian", "Japanese", "Portuguese", "Romanian", "Russian", "Spanish")
setDefaultValue("English")
summary = "%s"
setOnPreferenceChangeListener { _, newValue ->
val selected = newValue as String
val index = findIndexOfValue(selected)
val entry = entryValues[index] as String
preferences.edit().putString(key, entry).commit()
}
}
screen.addPreference(domainPref) screen.addPreference(domainPref)
screen.addPreference(videoQualityPref) screen.addPreference(videoQualityPref)
screen.addPreference(subLangPref)
} }
// Filter // Filter