add preferred quality settings to 3 sources (#91)

* animeblkom: add quality settings

* mycima: add quality settings

* mycimamovies: add quality settings

* some clean up
This commit is contained in:
Ahmed gamal
2021-09-22 01:14:35 +02:00
committed by GitHub
parent 708aa3f3c2
commit 7e527d2d71
6 changed files with 156 additions and 6 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'أنمي بالكوم'
pkgNameSuffix = 'ar.animeblkom'
extClass = '.AnimeBlkom'
extVersionCode = 3
extVersionCode = 4
libVersion = '12'
}

View File

@ -1,6 +1,11 @@
package eu.kanade.tachiyomi.animeextension.ar.animeblkom
import android.util.Log
import android.app.Application
import android.content.SharedPreferences
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.SAnime
import eu.kanade.tachiyomi.animesource.model.SEpisode
@ -14,9 +19,11 @@ import okhttp3.Request
import okhttp3.Response
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 AnimeBlkom : ParsedAnimeHttpSource() {
class AnimeBlkom : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "أنمي بالكوم"
@ -28,6 +35,10 @@ class AnimeBlkom : ParsedAnimeHttpSource() {
override val client: OkHttpClient = network.cloudflareClient
private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
}
override fun headersBuilder(): Headers.Builder {
return super.headersBuilder()
.add("Referer", "https://animeblkom.net")
@ -82,6 +93,24 @@ class AnimeBlkom : ParsedAnimeHttpSource() {
return Video(element.attr("src").replace("watch", "download"), element.attr("res") + "p", element.attr("src").replace("watch", "download"), null)
}
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString("preferred_quality", null)
if (quality != null) {
val newList = mutableListOf<Video>()
var preferred = 0
for (video in this) {
if (video.quality.contains(quality)) {
newList.add(preferred, video)
preferred++
} else {
newList.add(video)
}
}
return newList
}
return this
}
override fun videoUrlParse(document: Document) = throw Exception("not used")
// Search
@ -129,4 +158,25 @@ class AnimeBlkom : ParsedAnimeHttpSource() {
override fun latestUpdatesRequest(page: Int): Request = throw Exception("Not used")
override fun latestUpdatesSelector(): String = throw Exception("Not used")
// preferred quality settings
override fun setupPreferenceScreen(screen: PreferenceScreen) {
val videoQualityPref = ListPreference(screen.context).apply {
key = "preferred_quality"
title = "Preferred quality"
entries = arrayOf("1080p", "720p", "480p", "360p", "240p")
entryValues = arrayOf("1080", "720", "480", "360", "240")
setDefaultValue("1080")
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(videoQualityPref)
}
}

View File

@ -5,7 +5,7 @@ ext {
extName = 'MY CIMA'
pkgNameSuffix = 'ar.mycima'
extClass = '.MyCima'
extVersionCode = 4
extVersionCode = 5
libVersion = '12'
}

View File

@ -1,6 +1,11 @@
package eu.kanade.tachiyomi.animeextension.ar.mycima
import android.app.Application
import android.content.SharedPreferences
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import com.google.gson.JsonParser
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.SAnime
@ -15,9 +20,11 @@ import okhttp3.Request
import okhttp3.Response
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 MyCima : ParsedAnimeHttpSource() {
class MyCima : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "MY Cima"
@ -29,6 +36,10 @@ class MyCima : ParsedAnimeHttpSource() {
override val client: OkHttpClient = network.cloudflareClient
private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
}
// Popular Anime
override fun popularAnimeSelector(): String = "div.Grid--MycimaPosts div.GridItem div.Thumb--GridItem"
@ -116,6 +127,24 @@ class MyCima : ParsedAnimeHttpSource() {
return listOf(Video(sourceTag.attr("src"), "Default", sourceTag.attr("src"), null))
}
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString("preferred_quality", null)
if (quality != null) {
val newList = mutableListOf<Video>()
var preferred = 0
for (video in this) {
if (video.quality.contains(quality)) {
newList.add(preferred, video)
preferred++
} else {
newList.add(video)
}
}
return newList
}
return this
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw Exception("not used")
@ -208,4 +237,25 @@ class MyCima : ParsedAnimeHttpSource() {
CatUnit("series"),
CatUnit("tv")
)
// preferred quality settings
override fun setupPreferenceScreen(screen: PreferenceScreen) {
val videoQualityPref = ListPreference(screen.context).apply {
key = "preferred_quality"
title = "Preferred quality"
entries = arrayOf("1080p", "720p", "480p", "360p", "240p")
entryValues = arrayOf("1080", "720", "480", "360", "240")
setDefaultValue("1080")
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(videoQualityPref)
}
}

View File

@ -5,7 +5,7 @@ ext {
extName = 'MY CIMA MOVIES'
pkgNameSuffix = 'ar.mycimamovie'
extClass = '.MyCimaMovie'
extVersionCode = 3
extVersionCode = 4
libVersion = '12'
}

View File

@ -1,6 +1,11 @@
package eu.kanade.tachiyomi.animeextension.ar.mycimamovie
import android.app.Application
import android.content.SharedPreferences
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import com.google.gson.JsonParser
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.SAnime
@ -15,9 +20,11 @@ import okhttp3.Request
import okhttp3.Response
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 MyCimaMovie : ParsedAnimeHttpSource() {
class MyCimaMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "MY Cima Movies"
@ -29,6 +36,10 @@ class MyCimaMovie : ParsedAnimeHttpSource() {
override val client: OkHttpClient = network.cloudflareClient
private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
}
// Popular Anime
override fun popularAnimeSelector(): String = "div.Grid--MycimaPosts div.GridItem div.Thumb--GridItem"
@ -96,6 +107,24 @@ class MyCimaMovie : ParsedAnimeHttpSource() {
return listOf(Video(sourceTag.attr("src"), "Default", sourceTag.attr("src"), null))
}
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString("preferred_quality", null)
if (quality != null) {
val newList = mutableListOf<Video>()
var preferred = 0
for (video in this) {
if (video.quality.contains(quality)) {
newList.add(preferred, video)
preferred++
} else {
newList.add(video)
}
}
return newList
}
return this
}
override fun videoFromElement(element: Element) = throw Exception("not used")
override fun videoUrlParse(document: Document) = throw Exception("not used")
@ -187,4 +216,25 @@ class MyCimaMovie : ParsedAnimeHttpSource() {
CatUnit("category/افلام-كرتون"),
CatUnit("movies/best")
)
// preferred quality settings
override fun setupPreferenceScreen(screen: PreferenceScreen) {
val videoQualityPref = ListPreference(screen.context).apply {
key = "preferred_quality"
title = "Preferred quality"
entries = arrayOf("1080p", "720p", "480p", "360p", "240p")
entryValues = arrayOf("1080", "720", "480", "360", "240")
setDefaultValue("1080")
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(videoQualityPref)
}
}