changes for new extensions-lib
This commit is contained in:
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'أنمي بالكوم'
|
extName = 'أنمي بالكوم'
|
||||||
pkgNameSuffix = 'ar.animeblkom'
|
pkgNameSuffix = 'ar.animeblkom'
|
||||||
extClass = '.AnimeBlkom'
|
extClass = '.AnimeBlkom'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'MY CIMA'
|
extName = 'MY CIMA'
|
||||||
pkgNameSuffix = 'ar.mycima'
|
pkgNameSuffix = 'ar.mycima'
|
||||||
extClass = '.MyCima'
|
extClass = '.MyCima'
|
||||||
extVersionCode = 3
|
extVersionCode = 4
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'MY CIMA MOVIES'
|
extName = 'MY CIMA MOVIES'
|
||||||
pkgNameSuffix = 'ar.mycimamovie'
|
pkgNameSuffix = 'ar.mycimamovie'
|
||||||
extClass = '.MyCimaMovie'
|
extClass = '.MyCimaMovie'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'WIT ANIME'
|
extName = 'WIT ANIME'
|
||||||
pkgNameSuffix = 'ar.witanime'
|
pkgNameSuffix = 'ar.witanime'
|
||||||
extClass = '.WitAnime'
|
extClass = '.WitAnime'
|
||||||
extVersionCode = 8
|
extVersionCode = 9
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'XS Anime'
|
extName = 'XS Anime'
|
||||||
pkgNameSuffix = 'ar.xsanime'
|
pkgNameSuffix = 'ar.xsanime'
|
||||||
extClass = '.XsAnime'
|
extClass = '.XsAnime'
|
||||||
extVersionCode = 4
|
extVersionCode = 5
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'XS Movie'
|
extName = 'XS Movie'
|
||||||
pkgNameSuffix = 'ar.xsmovie'
|
pkgNameSuffix = 'ar.xsmovie'
|
||||||
extClass = '.XsMovie'
|
extClass = '.XsMovie'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ ext {
|
|||||||
extName = 'Aniflix'
|
extName = 'Aniflix'
|
||||||
pkgNameSuffix = 'de.aniflix'
|
pkgNameSuffix = 'de.aniflix'
|
||||||
extClass = '.Aniflix'
|
extClass = '.Aniflix'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
package eu.kanade.tachiyomi.animeextension.de.aniflix
|
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.AnimeDetailsDto
|
||||||
import eu.kanade.tachiyomi.animeextension.de.aniflix.dto.AnimeDto
|
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.Episode
|
||||||
import eu.kanade.tachiyomi.animeextension.de.aniflix.dto.Release
|
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.AnimeFilterList
|
||||||
import eu.kanade.tachiyomi.animesource.model.AnimesPage
|
import eu.kanade.tachiyomi.animesource.model.AnimesPage
|
||||||
import eu.kanade.tachiyomi.animesource.model.SAnime
|
import eu.kanade.tachiyomi.animesource.model.SAnime
|
||||||
@ -20,8 +25,10 @@ import okhttp3.OkHttpClient
|
|||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.RequestBody.Companion.toRequestBody
|
import okhttp3.RequestBody.Companion.toRequestBody
|
||||||
import okhttp3.Response
|
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"
|
override val name = "Aniflix"
|
||||||
|
|
||||||
@ -33,10 +40,14 @@ class Aniflix : AnimeHttpSource() {
|
|||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient
|
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("User-Agent", "Aniyomi")
|
||||||
add("Referer", "https://dood.la/")
|
add("Referer", "https://dood.la/")
|
||||||
}
|
}.build()
|
||||||
|
|
||||||
private val json = Json {
|
private val json = Json {
|
||||||
isLenient = true
|
isLenient = true
|
||||||
@ -156,12 +167,43 @@ class Aniflix : AnimeHttpSource() {
|
|||||||
for (stream in streams) {
|
for (stream in streams) {
|
||||||
val quality = "${stream.hoster!!.name}, ${stream.lang!!}"
|
val quality = "${stream.hoster!!.name}, ${stream.lang!!}"
|
||||||
if (stream.link!!.contains("https://dood.la/e/")) {
|
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
|
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 {
|
override fun videoUrlParse(response: Response): String {
|
||||||
val url = response.request.url.toString()
|
val url = response.request.url.toString()
|
||||||
response.priorResponse
|
response.priorResponse
|
||||||
@ -188,4 +230,39 @@ class Aniflix : AnimeHttpSource() {
|
|||||||
.map { allowedChars.random() }
|
.map { allowedChars.random() }
|
||||||
.joinToString("")
|
.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'
|
extName = 'AnimePahe'
|
||||||
pkgNameSuffix = 'en.animepahe'
|
pkgNameSuffix = 'en.animepahe'
|
||||||
extClass = '.AnimePahe'
|
extClass = '.AnimePahe'
|
||||||
extVersionCode = 4
|
extVersionCode = 5
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'Gogoanime'
|
extName = 'Gogoanime'
|
||||||
pkgNameSuffix = 'en.gogoanime'
|
pkgNameSuffix = 'en.gogoanime'
|
||||||
extClass = '.GogoAnime'
|
extClass = '.GogoAnime'
|
||||||
extVersionCode = 12
|
extVersionCode = 13
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,10 @@
|
|||||||
package eu.kanade.tachiyomi.animeextension.en.gogoanime
|
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.AnimeFilterList
|
||||||
import eu.kanade.tachiyomi.animesource.model.SAnime
|
import eu.kanade.tachiyomi.animesource.model.SAnime
|
||||||
import eu.kanade.tachiyomi.animesource.model.SEpisode
|
import eu.kanade.tachiyomi.animesource.model.SEpisode
|
||||||
@ -14,9 +19,11 @@ import okhttp3.Response
|
|||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import org.jsoup.select.Elements
|
import org.jsoup.select.Elements
|
||||||
|
import uy.kohesive.injekt.Injekt
|
||||||
|
import uy.kohesive.injekt.api.get
|
||||||
import java.lang.Exception
|
import java.lang.Exception
|
||||||
|
|
||||||
class GogoAnime : ParsedAnimeHttpSource() {
|
class GogoAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||||
|
|
||||||
override val name = "Gogoanime"
|
override val name = "Gogoanime"
|
||||||
|
|
||||||
@ -28,10 +35,14 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
|||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient
|
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("User-Agent", "Aniyomi")
|
||||||
add("Referer", "https://streamani.io/")
|
add("Referer", "https://streamani.io/")
|
||||||
}
|
}.build()
|
||||||
|
|
||||||
override fun popularAnimeSelector(): String = "div.img a"
|
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 quality = element.text().substringAfter("Download (").replace("P - mp4)", "p")
|
||||||
val url = element.attr("href")
|
val url = element.attr("href")
|
||||||
return if (url.startsWith("https://storage.googleapis.com")) {
|
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 {
|
} else {
|
||||||
Video(url, quality, videoUrlParse(url), null)
|
Video(url, quality, videoUrlParse(url), null, videoHeaders)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,6 +135,24 @@ class GogoAnime : ParsedAnimeHttpSource() {
|
|||||||
return videoUrl ?: url
|
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 {
|
override fun searchAnimeFromElement(element: Element): SAnime {
|
||||||
val anime = SAnime.create()
|
val anime = SAnime.create()
|
||||||
anime.setUrlWithoutDomain(element.attr("href"))
|
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)
|
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 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'
|
extName = 'haho.moe'
|
||||||
pkgNameSuffix = 'en.hahomoe'
|
pkgNameSuffix = 'en.hahomoe'
|
||||||
extClass = '.HahoMoe'
|
extClass = '.HahoMoe'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'hanime.tv'
|
extName = 'hanime.tv'
|
||||||
pkgNameSuffix = 'en.hanime'
|
pkgNameSuffix = 'en.hanime'
|
||||||
extClass = '.Hanime'
|
extClass = '.Hanime'
|
||||||
extVersionCode = 8
|
extVersionCode = 9
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'tenshi.moe'
|
extName = 'tenshi.moe'
|
||||||
pkgNameSuffix = 'en.tenshimoe'
|
pkgNameSuffix = 'en.tenshimoe'
|
||||||
extClass = '.TenshiMoe'
|
extClass = '.TenshiMoe'
|
||||||
extVersionCode = 20
|
extVersionCode = 21
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ ext {
|
|||||||
extName = 'twist.moe'
|
extName = 'twist.moe'
|
||||||
pkgNameSuffix = 'en.twistmoe'
|
pkgNameSuffix = 'en.twistmoe'
|
||||||
extClass = '.TwistMoe'
|
extClass = '.TwistMoe'
|
||||||
extVersionCode = 6
|
extVersionCode = 7
|
||||||
libVersion = '12'
|
libVersion = '12'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user