changes for new extensions-lib
This commit is contained in:
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'أنمي بالكوم'
|
||||
pkgNameSuffix = 'ar.animeblkom'
|
||||
extClass = '.AnimeBlkom'
|
||||
extVersionCode = 2
|
||||
extVersionCode = 3
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'MY CIMA'
|
||||
pkgNameSuffix = 'ar.mycima'
|
||||
extClass = '.MyCima'
|
||||
extVersionCode = 3
|
||||
extVersionCode = 4
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'MY CIMA MOVIES'
|
||||
pkgNameSuffix = 'ar.mycimamovie'
|
||||
extClass = '.MyCimaMovie'
|
||||
extVersionCode = 2
|
||||
extVersionCode = 3
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'WIT ANIME'
|
||||
pkgNameSuffix = 'ar.witanime'
|
||||
extClass = '.WitAnime'
|
||||
extVersionCode = 8
|
||||
extVersionCode = 9
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'XS Anime'
|
||||
pkgNameSuffix = 'ar.xsanime'
|
||||
extClass = '.XsAnime'
|
||||
extVersionCode = 4
|
||||
extVersionCode = 5
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'XS Movie'
|
||||
pkgNameSuffix = 'ar.xsmovie'
|
||||
extClass = '.XsMovie'
|
||||
extVersionCode = 1
|
||||
extVersionCode = 2
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@ ext {
|
||||
extName = 'Aniflix'
|
||||
pkgNameSuffix = 'de.aniflix'
|
||||
extClass = '.Aniflix'
|
||||
extVersionCode = 1
|
||||
extVersionCode = 2
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,14 @@
|
||||
package eu.kanade.tachiyomi.animeextension.de.aniflix
|
||||
|
||||
import android.app.Application
|
||||
import android.content.SharedPreferences
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import eu.kanade.tachiyomi.animeextension.de.aniflix.dto.AnimeDetailsDto
|
||||
import eu.kanade.tachiyomi.animeextension.de.aniflix.dto.AnimeDto
|
||||
import eu.kanade.tachiyomi.animeextension.de.aniflix.dto.Episode
|
||||
import eu.kanade.tachiyomi.animeextension.de.aniflix.dto.Release
|
||||
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
|
||||
import eu.kanade.tachiyomi.animesource.model.AnimesPage
|
||||
import eu.kanade.tachiyomi.animesource.model.SAnime
|
||||
@ -20,8 +25,10 @@ import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import okhttp3.Response
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
class Aniflix : AnimeHttpSource() {
|
||||
class Aniflix : ConfigurableAnimeSource, AnimeHttpSource() {
|
||||
|
||||
override val name = "Aniflix"
|
||||
|
||||
@ -33,10 +40,14 @@ class Aniflix : AnimeHttpSource() {
|
||||
|
||||
override val client: OkHttpClient = network.cloudflareClient
|
||||
|
||||
override fun headersBuilder() = Headers.Builder().apply {
|
||||
private val preferences: SharedPreferences by lazy {
|
||||
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||
}
|
||||
|
||||
private val doodHeaders = Headers.Builder().apply {
|
||||
add("User-Agent", "Aniyomi")
|
||||
add("Referer", "https://dood.la/")
|
||||
}
|
||||
}.build()
|
||||
|
||||
private val json = Json {
|
||||
isLenient = true
|
||||
@ -156,12 +167,43 @@ class Aniflix : AnimeHttpSource() {
|
||||
for (stream in streams) {
|
||||
val quality = "${stream.hoster!!.name}, ${stream.lang!!}"
|
||||
if (stream.link!!.contains("https://dood.la/e/")) {
|
||||
videoList.add(Video(stream.link, quality, null, null))
|
||||
videoList.add(Video(stream.link, quality, null, null, doodHeaders))
|
||||
}
|
||||
}
|
||||
return videoList
|
||||
}
|
||||
|
||||
override fun List<Video>.sort(): List<Video> {
|
||||
val hoster = preferences.getString("preferred_hoster", null)
|
||||
val subPreference = preferences.getString("preferred_sub", "SUB")!!
|
||||
val hosterList = mutableListOf<Video>()
|
||||
val otherList = mutableListOf<Video>()
|
||||
if (hoster != null) {
|
||||
for (video in this) {
|
||||
if (video.url.contains(hoster)) {
|
||||
hosterList.add(video)
|
||||
} else {
|
||||
otherList.add(video)
|
||||
}
|
||||
}
|
||||
} else otherList += this
|
||||
val newList = mutableListOf<Video>()
|
||||
var preferred = 0
|
||||
for (video in hosterList) {
|
||||
if (video.quality.contains(subPreference)) {
|
||||
newList.add(preferred, video)
|
||||
preferred++
|
||||
} else newList.add(video)
|
||||
}
|
||||
for (video in otherList) {
|
||||
if (video.quality.contains(subPreference)) {
|
||||
newList.add(preferred, video)
|
||||
preferred++
|
||||
} else newList.add(video)
|
||||
}
|
||||
return newList
|
||||
}
|
||||
|
||||
override fun videoUrlParse(response: Response): String {
|
||||
val url = response.request.url.toString()
|
||||
response.priorResponse
|
||||
@ -188,4 +230,39 @@ class Aniflix : AnimeHttpSource() {
|
||||
.map { allowedChars.random() }
|
||||
.joinToString("")
|
||||
}
|
||||
|
||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||
val hosterPref = ListPreference(screen.context).apply {
|
||||
key = "preferred_hoster"
|
||||
title = "Standard-Hoster"
|
||||
entries = arrayOf("Doodstream")
|
||||
entryValues = arrayOf("https://dood.la/e/")
|
||||
setDefaultValue("https://dood.la/e/")
|
||||
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()
|
||||
}
|
||||
}
|
||||
val subPref = ListPreference(screen.context).apply {
|
||||
key = "preferred_sub"
|
||||
title = "Standardmäßig Sub oder Dub?"
|
||||
entries = arrayOf("Sub", "Dub")
|
||||
entryValues = arrayOf("SUB", "DUB")
|
||||
setDefaultValue("SUB")
|
||||
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(subPref)
|
||||
screen.addPreference(hosterPref)
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'AnimePahe'
|
||||
pkgNameSuffix = 'en.animepahe'
|
||||
extClass = '.AnimePahe'
|
||||
extVersionCode = 4
|
||||
extVersionCode = 5
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'Gogoanime'
|
||||
pkgNameSuffix = 'en.gogoanime'
|
||||
extClass = '.GogoAnime'
|
||||
extVersionCode = 12
|
||||
extVersionCode = 13
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,10 @@
|
||||
package eu.kanade.tachiyomi.animeextension.en.gogoanime
|
||||
|
||||
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.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import org.jsoup.select.Elements
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.lang.Exception
|
||||
|
||||
class GogoAnime : ParsedAnimeHttpSource() {
|
||||
class GogoAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||
|
||||
override val name = "Gogoanime"
|
||||
|
||||
@ -28,10 +35,14 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
||||
|
||||
override val client: OkHttpClient = network.cloudflareClient
|
||||
|
||||
override fun headersBuilder() = Headers.Builder().apply {
|
||||
private val preferences: SharedPreferences by lazy {
|
||||
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||
}
|
||||
|
||||
private val videoHeaders = Headers.Builder().apply {
|
||||
add("User-Agent", "Aniyomi")
|
||||
add("Referer", "https://streamani.io/")
|
||||
}
|
||||
}.build()
|
||||
|
||||
override fun popularAnimeSelector(): String = "div.img a"
|
||||
|
||||
@ -102,9 +113,15 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
||||
val quality = element.text().substringAfter("Download (").replace("P - mp4)", "p")
|
||||
val url = element.attr("href")
|
||||
return if (url.startsWith("https://storage.googleapis.com")) {
|
||||
Video(url, quality, url, null)
|
||||
val parsedQuality = "Google server: " + when (quality) {
|
||||
"FullHDp" -> "1080p"
|
||||
"HDp" -> "720p"
|
||||
"SDp" -> "360p"
|
||||
else -> quality
|
||||
}
|
||||
Video(url, parsedQuality, url, null)
|
||||
} else {
|
||||
Video(url, quality, videoUrlParse(url), null)
|
||||
Video(url, quality, videoUrlParse(url), null, videoHeaders)
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,6 +135,24 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
||||
return videoUrl ?: url
|
||||
}
|
||||
|
||||
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 searchAnimeFromElement(element: Element): SAnime {
|
||||
val anime = SAnime.create()
|
||||
anime.setUrlWithoutDomain(element.attr("href"))
|
||||
@ -165,4 +200,23 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
||||
GET("https://ajax.gogo-load.com/ajax/page-recent-release-ongoing.html?page=$page&type=1", headers)
|
||||
|
||||
override fun latestUpdatesSelector(): String = "div.added_series_body.popular li a:has(div)"
|
||||
|
||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||
val videoQualityPref = ListPreference(screen.context).apply {
|
||||
key = "preferred_quality"
|
||||
title = "Preferred quality"
|
||||
entries = arrayOf("1080p", "720p", "480p", "360p")
|
||||
entryValues = arrayOf("1080", "720", "480", "360")
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'haho.moe'
|
||||
pkgNameSuffix = 'en.hahomoe'
|
||||
extClass = '.HahoMoe'
|
||||
extVersionCode = 2
|
||||
extVersionCode = 3
|
||||
libVersion = '12'
|
||||
containsNsfw = true
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'hanime.tv'
|
||||
pkgNameSuffix = 'en.hanime'
|
||||
extClass = '.Hanime'
|
||||
extVersionCode = 8
|
||||
extVersionCode = 9
|
||||
libVersion = '12'
|
||||
containsNsfw = true
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'tenshi.moe'
|
||||
pkgNameSuffix = 'en.tenshimoe'
|
||||
extClass = '.TenshiMoe'
|
||||
extVersionCode = 20
|
||||
extVersionCode = 21
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
@ -5,7 +5,7 @@ ext {
|
||||
extName = 'twist.moe'
|
||||
pkgNameSuffix = 'en.twistmoe'
|
||||
extClass = '.TwistMoe'
|
||||
extVersionCode = 6
|
||||
extVersionCode = 7
|
||||
libVersion = '12'
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user