From 999bad65f0ee8238c11dbc30604ad1ff9e75e1eb Mon Sep 17 00:00:00 2001 From: LuftVerbot <97435834+LuftVerbot@users.noreply.github.com> Date: Thu, 25 Aug 2022 21:10:27 +0200 Subject: [PATCH] add Serienstream(S.to) extension (#803) * add Serienstream(S.to) extension * Update Serienstream.kt * Update Serienstream.kt --- src/de/serienstream/AndroidManifest.xml | 2 + src/de/serienstream/build.gradle | 13 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3094 bytes .../mipmap-hdpi/ic_launcher_adaptive_back.png | Bin 0 -> 839 bytes .../mipmap-hdpi/ic_launcher_adaptive_fore.png | Bin 0 -> 5239 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1870 bytes .../mipmap-mdpi/ic_launcher_adaptive_back.png | Bin 0 -> 446 bytes .../mipmap-mdpi/ic_launcher_adaptive_fore.png | Bin 0 -> 2764 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4858 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 1304 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 7289 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8414 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 2936 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 13693 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 13066 bytes .../ic_launcher_adaptive_back.png | Bin 0 -> 4219 bytes .../ic_launcher_adaptive_fore.png | Bin 0 -> 20735 bytes .../de/serienstream/DdosGuardInterceptor.kt | 72 ++++ .../de/serienstream/RedirectInterceptor.kt | 89 ++++ .../de/serienstream/SConstants.kt | 40 ++ .../de/serienstream/Serienstream.kt | 399 ++++++++++++++++++ .../serienstream/SerienstreamInterceptor.kt | 78 ++++ .../serienstream/extractors/DoodExtractor.kt | 42 ++ .../extractors/StreamTapeExtractor.kt | 18 + .../serienstream/extractors/VoeExtractor.kt | 17 + 25 files changed, 770 insertions(+) create mode 100644 src/de/serienstream/AndroidManifest.xml create mode 100644 src/de/serienstream/build.gradle create mode 100644 src/de/serienstream/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/de/serienstream/res/mipmap-hdpi/ic_launcher_adaptive_back.png create mode 100644 src/de/serienstream/res/mipmap-hdpi/ic_launcher_adaptive_fore.png create mode 100644 src/de/serienstream/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/de/serienstream/res/mipmap-mdpi/ic_launcher_adaptive_back.png create mode 100644 src/de/serienstream/res/mipmap-mdpi/ic_launcher_adaptive_fore.png create mode 100644 src/de/serienstream/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/de/serienstream/res/mipmap-xhdpi/ic_launcher_adaptive_back.png create mode 100644 src/de/serienstream/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png create mode 100644 src/de/serienstream/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/de/serienstream/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png create mode 100644 src/de/serienstream/res/mipmap-xxhdpi/ic_launcher_adaptive_fore.png create mode 100644 src/de/serienstream/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/de/serienstream/res/mipmap-xxxhdpi/ic_launcher_adaptive_back.png create mode 100644 src/de/serienstream/res/mipmap-xxxhdpi/ic_launcher_adaptive_fore.png create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/DdosGuardInterceptor.kt create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/RedirectInterceptor.kt create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/SConstants.kt create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/Serienstream.kt create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/SerienstreamInterceptor.kt create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/extractors/DoodExtractor.kt create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/extractors/StreamTapeExtractor.kt create mode 100644 src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/extractors/VoeExtractor.kt diff --git a/src/de/serienstream/AndroidManifest.xml b/src/de/serienstream/AndroidManifest.xml new file mode 100644 index 000000000..acb4de356 --- /dev/null +++ b/src/de/serienstream/AndroidManifest.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/de/serienstream/build.gradle b/src/de/serienstream/build.gradle new file mode 100644 index 000000000..b589acf48 --- /dev/null +++ b/src/de/serienstream/build.gradle @@ -0,0 +1,13 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' + +ext { + extName = 'Serienstream' + pkgNameSuffix = 'de.serienstream' + extClass = '.Serienstream' + extVersionCode = 1 + libVersion = '13' +} + +apply from: "$rootDir/common.gradle" diff --git a/src/de/serienstream/res/mipmap-hdpi/ic_launcher.png b/src/de/serienstream/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..f4cad2d4a39185288ca3254bdf7cf2c4fcd5a65a GIT binary patch literal 3094 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 K2Um@?iTEGaGk}i( literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-mdpi/ic_launcher.png b/src/de/serienstream/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cb826057dc76656cc4f6eb6b216dcea5d641292d GIT binary patch literal 1870 zcmV-U2eJ5xP)V0t4%GiRwZe|z^IDX=G9t?o{K6fX_oQc!Ne;PTm z^ZlFGE`5)f5i$d|Wy=-=AH4sO=eOR!@tv0vJ^jot74e_E+X;KhZ!^OL!?Gct9^rrN ze0AH%51(#E+(-eB{#DPuyX^J7FZ(&y_lr4n2Yz}k9%xm=?qEho%ouv}x%Wnn?|X%H zEn4#E@~uA~jdk~wJhxynhO(K%2j@OFV{y-Q($>J{6_2r{8{Rs+S{ean-+o5ygT)5b5;z@%fu65w1MxWQKJy2KNGi-BX{ zHbelwq^@H&j6zwH0(xv1*vj209`Eh1pTHF095XF>u1qNKW5k>7Bq9kECPo@0PywER z6Ygm|ApuVz(+(m{5zv4N=<4}QQWEI#4;7rKS6U&`3V{&31Wr|4$R}_|SvtxC3Mj4Z zBGNDc1y)%ep9|oW4e&J|SFHA68Gz@Kh6GF=ppqXZh>%DNG144?GH3;!aUXI;A8f|K zHaKJoJ|rv#F_VEWL?f*(KpSNunpc##0)^F?#v3CLm{gYzHdojI5_k`m^;xiKc@mN_ z1CFI`!ND^QjORS)j$6P?LlD909>}L+m4L%w*TB~z(hvb%J_tOpKCYgRs|S0Y?1Ovf zTVYAK>J;JQ!AUrLF$*4opO>(JGZP<@fT27gS7mt-A9a#wiU5Kp&6D*BxQo{BO91SD z>MrQC(ZVu>Q9a@qxR!&D2FBsnzYCDCEl9*H@P&-|5K9a-mQTN|$gDuGA9J`8O9b@X25rQrK!G6E@hkiLyc>)bLiwN(Oo~ z$g9bzX#yl6@&L{XM4&hB!-2JTLo$vMiPT=oMyjuM@*eCRO2ZdtGvK%kx;t%j0uqrP z!NExcc|fR4r0j`Ea5qIj>7NE2d=%WG@W6p}i>eY(UiXlQl2t10!giF^vD8guXJUNB zFg8e1(i@UUO%inzs20E#1keNP7SBjP#Rhpq5jkPw2uIK zVEsKcJrGSIdVEmL*z@}&e0}j2R2JaTh)qaNxJm z5_Dq9rPv7MBm-Mk^&npd^FZx(dYTvrB;-Ob5;)ib0f_}=6U2v$5&yz><8UR*A&%)* zWu~ABr0gVup$!ClBv5D%0p$$>Pd(HdCs0n83((VHi+B(L({=*0K3@6Gf|VLv^_x- zLl}F%JZ!JGhG8Cfu2b3@=JHvoaIQO{>4D;fR&>&S$8uEbd1t}x(5^b#@ygcp;(S3a)IN&p| zaXW=3F_G}YF>$KS1E_WGMCeSKCZO%iskks`SB?aR>O$P2JrIXVfnhtWUZa(U6z!1S&MHdt)YmwcgV`(9|WSY8J2cqmAmk4iDu2!AndnUF54pq@AE6Stz{7 zcgJ65z2h%*lV|SeTMhmXH+xjQ-Nwe-ZH&2ayNxI_)8B6MFHbJBGpaJJB>(^b07*qo IM6N<$f~$X8;{X5v literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-mdpi/ic_launcher_adaptive_back.png b/src/de/serienstream/res/mipmap-mdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..11c72b22a5895149055459019e57973ef801152c GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p|}=Ft&QSIEGZjy}ioF$zZ^9FYWfaGl9LY RoPhDd;OXk;vd$@?2>_ver*{AV literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-mdpi/ic_launcher_adaptive_fore.png b/src/de/serienstream/res/mipmap-mdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c1856cc5c69ebed6756a880753cd06b1f84610 GIT binary patch literal 2764 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 literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-xhdpi/ic_launcher.png b/src/de/serienstream/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..306969f1acccd3879918157a20ff091142c5121b GIT binary patch literal 4858 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 literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-xhdpi/ic_launcher_adaptive_back.png b/src/de/serienstream/res/mipmap-xhdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..0f79019111f88e325baa0c9f1e6f61dbe7a3abc3 GIT binary patch literal 1304 zcmeAS@N?(olHy`uVBq!ia0vp^H$a$!4M=t>=)PrOV7c$<;uum9_x7?OFM|OO%f>eQ z7t6HTZ_6;)N9^4BzE9afK~SPmb)6e$4P#>^3)8}e15PoQSy-O2bF?rqaTodu3(SyL z5a8m_Ib!PTkWkm)prNoq;JOK8<4?v>#iOAynl?sr$^aGx35=hEVwcGafA|P2@fbW^ L{an^LB{Ts516hev literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png b/src/de/serienstream/res/mipmap-xhdpi/ic_launcher_adaptive_fore.png new file mode 100644 index 0000000000000000000000000000000000000000..25655d879e44ec1de99aa220db4603ca5ce22b10 GIT binary patch literal 7289 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 literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-xxhdpi/ic_launcher.png b/src/de/serienstream/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bbd7ae77c262444efcc1454b4321c260ffbeee GIT binary patch literal 8414 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 literal 0 HcmV?d00001 diff --git a/src/de/serienstream/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png b/src/de/serienstream/res/mipmap-xxhdpi/ic_launcher_adaptive_back.png new file mode 100644 index 0000000000000000000000000000000000000000..e598be57e10e2b592d0aae37d18a7517206ea860 GIT binary patch literal 2936 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 XZo=3-8q;8@qa7bl|1+FZ5%>QEVdCl6 literal 0 HcmV?d00001 diff --git a/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/DdosGuardInterceptor.kt b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/DdosGuardInterceptor.kt new file mode 100644 index 000000000..923c6738d --- /dev/null +++ b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/DdosGuardInterceptor.kt @@ -0,0 +1,72 @@ +package eu.kanade.tachiyomi.animeextension.de.serienstream + +import android.webkit.CookieManager +import eu.kanade.tachiyomi.network.GET +import okhttp3.Cookie +import okhttp3.HttpUrl +import okhttp3.Interceptor +import okhttp3.OkHttpClient +import okhttp3.Response + +class DdosGuardInterceptor(private val client: OkHttpClient) : Interceptor { + + private val cookieManager by lazy { CookieManager.getInstance() } + + override fun intercept(chain: Interceptor.Chain): Response { + val originalRequest = chain.request() + val response = chain.proceed(originalRequest) + + // Check if DDos-GUARD is on + if (response.code !in ERROR_CODES || response.header("Server") !in SERVER_CHECK) { + return response + } + + response.close() + val cookies = cookieManager.getCookie(originalRequest.url.toString()) + val oldCookie = if (cookies != null && cookies.isNotEmpty()) { + cookies.split(";").mapNotNull { Cookie.parse(originalRequest.url, it) } + } else { + emptyList() + } + val ddg2Cookie = oldCookie.firstOrNull { it.name == "__ddg2_" } + if (!ddg2Cookie?.value.isNullOrEmpty()) { + return chain.proceed(originalRequest) + } + + val newCookie = getNewCookie(originalRequest.url) ?: return chain.proceed(originalRequest) + val newCookieHeader = buildString { + (oldCookie + newCookie).forEachIndexed { index, cookie -> + if (index > 0) append("; ") + append(cookie.name).append('=').append(cookie.value) + } + } + + return chain.proceed(originalRequest.newBuilder().addHeader("cookie", newCookieHeader).build()) + } + + fun getNewCookie(url: HttpUrl): Cookie? { + val cookies = cookieManager.getCookie(url.toString()) + val oldCookie = if (cookies != null && cookies.isNotEmpty()) { + cookies.split(";").mapNotNull { Cookie.parse(url, it) } + } else { + emptyList() + } + val ddg2Cookie = oldCookie.firstOrNull { it.name == "__ddg2_" } + if (!ddg2Cookie?.value.isNullOrEmpty()) { + return ddg2Cookie + } + val wellKnown = client.newCall(GET("https://check.ddos-guard.net/check.js")) + .execute().body!!.string() + .substringAfter("'", "") + .substringBefore("'", "") + val checkUrl = "${url.scheme}://${url.host + wellKnown}" + return client.newCall(GET(checkUrl)).execute().header("set-cookie")?.let { + Cookie.parse(url, it) + } + } + + companion object { + private val ERROR_CODES = listOf(403) + private val SERVER_CHECK = listOf("ddos-guard") + } +} diff --git a/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/RedirectInterceptor.kt b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/RedirectInterceptor.kt new file mode 100644 index 000000000..e4c130f16 --- /dev/null +++ b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/RedirectInterceptor.kt @@ -0,0 +1,89 @@ +package eu.kanade.tachiyomi.animeextension.de.serienstream + +import android.annotation.SuppressLint +import android.app.Application +import android.os.Handler +import android.os.Looper +import android.webkit.WebResourceRequest +import android.webkit.WebResourceResponse +import android.webkit.WebView +import android.webkit.WebViewClient +import eu.kanade.tachiyomi.network.GET +import okhttp3.Headers.Companion.toHeaders +import okhttp3.Interceptor +import okhttp3.Request +import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit + +class RedirectInterceptor : Interceptor { + + private val context = Injekt.get() + private val handler by lazy { Handler(Looper.getMainLooper()) } + + override fun intercept(chain: Interceptor.Chain): Response { + val originalRequest = chain.request() + + val newRequest = resolveWithWebView(originalRequest) ?: throw Exception("Bitte Captcha in WebView lösen") + + return chain.proceed(newRequest) + } + + @SuppressLint("SetJavaScriptEnabled") + private fun resolveWithWebView(request: Request): Request? { + // We need to lock this thread until the WebView finds the challenge solution url, because + // OkHttp doesn't support asynchronous interceptors. + val latch = CountDownLatch(1) + + var webView: WebView? = null + + val origRequestUrl = request.url.toString() + val headers = request.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" }.toMutableMap() + + var newRequest: Request? = null + + handler.post { + val webview = WebView(context) + webView = webview + with(webview.settings) { + javaScriptEnabled = true + domStorageEnabled = true + databaseEnabled = true + useWideViewPort = false + loadWithOverviewMode = false + userAgentString = // request.header("User-Agent") + // ?: "\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63\"" + "Mozilla/5.0 (Linux; Android 12; Pixel 5 Build/SP2A.220405.004; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Safari/537.36" + } + + webview.webViewClient = object : WebViewClient() { + override fun shouldInterceptRequest( + view: WebView, + request: WebResourceRequest, + ): WebResourceResponse? { + if (request.url.toString().contains("token") || request.url.toString().contains("https://dood.") || + request.url.toString().contains("https://streamtape") || request.url.toString().contains("https://voe") + ) { + newRequest = GET(request.url.toString(), request.requestHeaders.toHeaders()) + latch.countDown() + } + return super.shouldInterceptRequest(view, request) + } + } + webView?.loadUrl(origRequestUrl, headers) + } + // Wait a reasonable amount of time to retrieve the solution. The minimum should be + // around 4 seconds but it can take more due to slow networks or server issues. + latch.await(12, TimeUnit.SECONDS) + + handler.post { + webView?.stopLoading() + webView?.destroy() + webView = null + } + + return newRequest + } +} diff --git a/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/SConstants.kt b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/SConstants.kt new file mode 100644 index 000000000..6f84dd7ce --- /dev/null +++ b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/SConstants.kt @@ -0,0 +1,40 @@ +package eu.kanade.tachiyomi.animeextension.de.serienstream + +import android.content.SharedPreferences + +object SConstants { + const val NAME_DOOD = "Doodstream" + const val NAME_STAPE = "Streamtape" + const val NAME_VOE = "VOE" + + const val URL_DOOD = "https://dood" + const val URL_STAPE = "https://streamtape.com" + const val URL_VOE = "https://voe" + + val HOSTER_NAMES = arrayOf(NAME_VOE, NAME_DOOD, NAME_STAPE) + val HOSTER_URLS = arrayOf(URL_VOE, URL_DOOD, URL_STAPE) + + const val KEY_GER_DUB = 1 + const val KEY_ENG_SUB = 2 + const val KEY_GER_SUB = 3 + + const val LANG_GER_SUB = "Deutscher Sub" + const val LANG_GER_DUB = "Deutscher Dub" + const val LANG_ENG_SUB = "Englischer Sub" + + val LANGS = arrayOf(LANG_GER_SUB, LANG_GER_DUB, LANG_ENG_SUB) + + const val PREFERRED_HOSTER = "preferred_hoster" + const val PREFERRED_LANG = "preferred_lang" + const val HOSTER_SELECTION = "hoster_selection" + + const val LOGIN_TITLE = "E-Mail-Adresse" + const val LOGIN_DEFAULT = "" + const val PASSWORD_TITLE = "Passwort" + const val PASSWORD_DEFAULT = "" + + const val LOGIN_URL = "https://s.to/login" + + fun getPrefBaseLogin(preferences: SharedPreferences): String = preferences.getString(LOGIN_TITLE, LOGIN_DEFAULT)!! + fun getPrefBasePassword(preferences: SharedPreferences): String = preferences.getString(PASSWORD_TITLE, PASSWORD_DEFAULT)!! +} diff --git a/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/Serienstream.kt b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/Serienstream.kt new file mode 100644 index 000000000..05afb0230 --- /dev/null +++ b/src/de/serienstream/src/eu/kanade/tachiyomi/animeextension/de/serienstream/Serienstream.kt @@ -0,0 +1,399 @@ +package eu.kanade.tachiyomi.animeextension.de.serienstream + +import android.app.Application +import android.content.SharedPreferences +import android.text.InputType +import android.util.Log +import android.widget.Toast +import androidx.preference.EditTextPreference +import androidx.preference.ListPreference +import androidx.preference.MultiSelectListPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animeextension.de.serienstream.DdosGuardInterceptor +import eu.kanade.tachiyomi.animeextension.de.serienstream.RedirectInterceptor +import eu.kanade.tachiyomi.animeextension.de.serienstream.SConstants +import eu.kanade.tachiyomi.animeextension.de.serienstream.SerienstreamInterceptor +import eu.kanade.tachiyomi.animeextension.de.serienstream.extractors.DoodExtractor +import eu.kanade.tachiyomi.animeextension.de.serienstream.extractors.StreamTapeExtractor +import eu.kanade.tachiyomi.animeextension.de.serienstream.extractors.VoeExtractor +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 +import eu.kanade.tachiyomi.animesource.model.SEpisode +import eu.kanade.tachiyomi.animesource.model.Video +import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import okhttp3.FormBody +import okhttp3.Headers +import okhttp3.OkHttpClient +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 uy.kohesive.injekt.injectLazy + +class Serienstream : ConfigurableAnimeSource, ParsedAnimeHttpSource() { + + override val name = "Serienstream" + + override val baseUrl = "https://s.to" + + private val baseLogin by lazy { SConstants.getPrefBaseLogin(preferences) } + private val basePassword by lazy { SConstants.getPrefBasePassword(preferences) } + + override val lang = "de" + + override val supportsLatest = true + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + override val client: OkHttpClient = network.client.newBuilder() + .addInterceptor(DdosGuardInterceptor(network.client)) + .build() + + private val authClient = network.client.newBuilder() + .addInterceptor(SerienstreamInterceptor(client, preferences)) + .build() + + private val json: Json by injectLazy() + + val context = Injekt.get() + + // ===== POPULAR ANIME ===== + override fun popularAnimeSelector(): String = "div.seriesListContainer div" + + override fun popularAnimeNextPageSelector(): String? = null + + override fun popularAnimeRequest(page: Int): Request { + return GET("$baseUrl/beliebte-serien") + } + + override fun popularAnimeFromElement(element: Element): SAnime { + context + val anime = SAnime.create() + val linkElement = element.selectFirst("a") + anime.url = linkElement.attr("href") + anime.thumbnail_url = linkElement.selectFirst("img").attr("data-src") + anime.title = element.selectFirst("h3").text() + return anime + } + + // ===== LATEST ANIME ===== + override fun latestUpdatesSelector(): String = "div.seriesListContainer div" + + override fun latestUpdatesNextPageSelector(): String? = null + + override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/neu") + + override fun latestUpdatesFromElement(element: Element): SAnime { + val anime = SAnime.create() + val linkElement = element.selectFirst("a") + anime.url = linkElement.attr("href") + anime.thumbnail_url = baseUrl + linkElement.selectFirst("img").attr("data-src") + anime.title = element.selectFirst("h3").text() + return anime + } + + // ===== SEARCH ===== + + override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { + val headers = Headers.Builder() + .add("Referer", "https://s.to/search") + .add("origin", baseUrl) + .add("connection", "keep-alive") + .add("user-agent", "Mozilla/5.0 (Linux; Android 12; Pixel 5 Build/SP2A.220405.004; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.127 Safari/537.36") + .add("Upgrade-Insecure-Requests", "1") + .add("content-length", query.length.plus(8).toString()) + .add("cache-control", "") + .add("accept", "*/*") + .add("content-type", "application/x-www-form-urlencoded; charset=UTF-8") + .add("x-requested-with", "XMLHttpRequest") + .build() + return POST("$baseUrl/ajax/search", body = FormBody.Builder().add("keyword", query).build(), headers = headers) + } + override fun searchAnimeSelector() = throw UnsupportedOperationException("Not used.") + + override fun searchAnimeNextPageSelector() = throw UnsupportedOperationException("Not used.") + + override fun searchAnimeParse(response: Response): AnimesPage { + val body = response.body!!.string() + val results = json.decodeFromString(body) + val animes = results.filter { + val link = it.jsonObject["link"]!!.jsonPrimitive.content + link.startsWith("/serie/stream/") && + link.count { c -> c == '/' } == 3 + }.map { + animeFromSearch(it.jsonObject) + } + return AnimesPage(animes, false) + } + + private fun animeFromSearch(result: JsonObject): SAnime { + val anime = SAnime.create() + val title = result["title"]!!.jsonPrimitive.content + val link = result["link"]!!.jsonPrimitive.content + anime.title = title.replace("", "").replace("", "") + val thumpage = client.newCall(GET("$baseUrl$link")).execute().asJsoup() + anime.thumbnail_url = thumpage.selectFirst("div.seriesCoverBox img").attr("data-src") + anime.url = link + return anime + } + + override fun searchAnimeFromElement(element: Element) = throw UnsupportedOperationException("Not used.") + + // ===== ANIME DETAILS ===== + override fun animeDetailsParse(document: Document): SAnime { + val anime = SAnime.create() + anime.title = document.selectFirst("div.series-title h1 span").text() + anime.thumbnail_url = document.selectFirst("div.seriesCoverBox img").attr("data-src") + anime.genre = document.select("div.genres ul li").joinToString { it.text() } + anime.description = document.selectFirst("p.seri_des").attr("data-full-description") + document.selectFirst("div.cast li:contains(Produzent:) ul")?.let { + val author = it.select("li").joinToString { li -> li.text() } + anime.author = author + } + anime.status = SAnime.UNKNOWN + return anime + } + + // ===== EPISODE ===== + override fun episodeListSelector() = throw UnsupportedOperationException("Not used.") + + override fun episodeListParse(response: Response): List { + val document = response.asJsoup() + val episodeList = mutableListOf() + val seasonsElements = document.select("#stream > ul:nth-child(1) > li > a") + if (seasonsElements.attr("href").contains("/filme")) { + seasonsElements.forEach { + val seasonEpList = parseMoviesFromSeries(it) + episodeList.addAll(seasonEpList) + } + } else { + seasonsElements.forEach { + val seasonEpList = parseEpisodesFromSeries(it) + episodeList.addAll(seasonEpList) + } + } + return episodeList.reversed() + } + + private fun parseEpisodesFromSeries(element: Element): List { + val seasonId = element.attr("abs:href") + val episodesHtml = authClient.newCall(GET(seasonId)).execute().asJsoup() + val episodeElements = episodesHtml.select("table.seasonEpisodesList tbody tr") + return episodeElements.map { episodeFromElement(it) } + } + + private fun parseMoviesFromSeries(element: Element): List { + val seasonId = element.attr("abs:href") + val episodesHtml = authClient.newCall(GET(seasonId)).execute().asJsoup() + val episodeElements = episodesHtml.select("table.seasonEpisodesList tbody tr") + return episodeElements.map { episodeFromElement(it) } + } + + override fun episodeFromElement(element: Element): SEpisode { + val episode = SEpisode.create() + if (element.select("td.seasonEpisodeTitle a").attr("href").contains("/film")) { + val num = element.attr("data-episode-season-id") + episode.name = "Film $num" + " : " + element.select("td.seasonEpisodeTitle a span").text() + episode.episode_number = element.attr("data-episode-season-id").toFloat() + episode.url = element.selectFirst("td.seasonEpisodeTitle a").attr("href") + } else { + val season = element.select("td.seasonEpisodeTitle a").attr("href") + .substringAfter("staffel-").substringBefore("/episode") + val num = element.attr("data-episode-season-id") + episode.name = "Staffel $season Folge $num" + " : " + element.select("td.seasonEpisodeTitle a span").text() + episode.episode_number = element.select("td meta").attr("content").toFloat() + episode.url = element.selectFirst("td.seasonEpisodeTitle a").attr("href") + } + return episode + } + + // ===== VIDEO SOURCES ===== + override fun videoListSelector() = throw UnsupportedOperationException("Not used.") + + override fun videoListParse(response: Response): List