From e6e1db218462da4d0f47bcd98fd9725a53b47ddb Mon Sep 17 00:00:00 2001 From: Luft21 <40173132+Luft21@users.noreply.github.com> Date: Sun, 3 Oct 2021 02:25:06 +0700 Subject: [PATCH] otakudesu: added quality settings & change vid source (#104) --- src/id/otakudesu/build.gradle | 2 +- .../animeextension/id/otakudesu/OtakuDesu.kt | 112 ++++++++++++++---- 2 files changed, 89 insertions(+), 25 deletions(-) diff --git a/src/id/otakudesu/build.gradle b/src/id/otakudesu/build.gradle index 3a7f83e1f..4d2dd3418 100644 --- a/src/id/otakudesu/build.gradle +++ b/src/id/otakudesu/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'OtakuDesu' pkgNameSuffix = 'id.otakudesu' extClass = '.OtakuDesu' - extVersionCode = 1 + extVersionCode = 2 libVersion = '12' } diff --git a/src/id/otakudesu/src/eu/kanade/tachiyomi/animeextension/id/otakudesu/OtakuDesu.kt b/src/id/otakudesu/src/eu/kanade/tachiyomi/animeextension/id/otakudesu/OtakuDesu.kt index f3195efb0..6be90875c 100644 --- a/src/id/otakudesu/src/eu/kanade/tachiyomi/animeextension/id/otakudesu/OtakuDesu.kt +++ b/src/id/otakudesu/src/eu/kanade/tachiyomi/animeextension/id/otakudesu/OtakuDesu.kt @@ -1,5 +1,10 @@ package eu.kanade.tachiyomi.animeextension.id.otakudesu +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 @@ -9,12 +14,16 @@ import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.util.asJsoup import okhttp3.OkHttpClient import okhttp3.Request +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 import java.text.SimpleDateFormat -class OtakuDesu : ParsedAnimeHttpSource() { +class OtakuDesu : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val name = "OtakuDesu" @@ -26,6 +35,10 @@ class OtakuDesu : ParsedAnimeHttpSource() { override val client: OkHttpClient = network.cloudflareClient + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + override fun animeDetailsParse(document: Document): SAnime { val anime = SAnime.create() val zing = document.select("div.infozingle") @@ -62,15 +75,11 @@ class OtakuDesu : ParsedAnimeHttpSource() { override fun episodeFromElement(element: Element): SEpisode { val episode = SEpisode.create() episode.setUrlWithoutDomain(element.select("span > a").attr("href")) - episode.episode_number = getNumberFromEpsString(element.select("span > a").text()).toFloat() episode.name = element.select("span > a").text() episode.date_upload = reconstructDate(element.select("span.zeebr").text()) return episode } - private fun getNumberFromEpsString(epsStr: String): String { - return epsStr.filter { it.isDigit() } - } private fun reconstructDate(Str: String): Long { val newStr = Str.replace("Januari", "Jan").replace("Februari", "Feb").replace("Maret", "Mar").replace("April", "Apr").replace("Mei", "May").replace("Juni", "Jun").replace("Juli", "Jul").replace("Agustus", "Aug").replace("September", "Sep").replace("Oktober", "Oct").replace("November", "Nov").replace("Desember", "Dec") @@ -127,27 +136,82 @@ class OtakuDesu : ParsedAnimeHttpSource() { override fun searchAnimeSelector(): String = "#venkonten > div > div.venser > div > div > ul > li" - override fun videoFromElement(element: Element): Video { - val iframe = client.newCall(GET(element.attr("src"))).execute() - val res = iframe.asJsoup() - val source = res.select("#mediaplayer > source") - - return if (!source.isNullOrEmpty()) { - val url = source.attr("src") - Video(url, "360p", url, null) - } else { - val htmlbody = res.body().html() - val pattern1 = htmlbody.substringAfter("\"file\":").substringBefore("\",\"").replace("\"", "") - val pattern2 = htmlbody.substringAfter("'file':").substringBefore("','").replace("'", "") - when { - htmlbody.contains("\"file\":") -> Video(pattern1, "360p", pattern1, null) - htmlbody.contains("'file':") -> Video(pattern2, "360p", pattern2, null) - else -> throw Exception("couldn't find stream link,you can download it manually from the web") - } - } + override fun videoListParse(response: Response): List