From eb36315b04399dcd185e38bdf0b9289d79042474 Mon Sep 17 00:00:00 2001
From: Blatzar <46196380+Blatzar@users.noreply.github.com>
Date: Thu, 12 May 2022 17:04:30 +0200
Subject: [PATCH] fixed nicehttp
---
app/build.gradle | 2 +-
app/src/main/AndroidManifest.xml | 2 +-
.../movieproviders/SflixProvider.kt | 6 +-
.../movieproviders/SoaptwoDayProvider.kt | 115 ++++++++++--------
.../cloudstream3/network/WebViewResolver.kt | 6 -
.../syncproviders/providers/MALApi.kt | 12 +-
6 files changed, 75 insertions(+), 68 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index bfab645d..d78fb37d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -156,7 +156,7 @@ dependencies {
// Networking
// implementation "com.squareup.okhttp3:okhttp:4.9.2"
// implementation "com.squareup.okhttp3:okhttp-dnsoverhttps:4.9.1"
- implementation 'com.github.Blatzar:NiceHttp:0.1.8'
+ implementation 'com.github.Blatzar:NiceHttp:0.2.0'
// Util to skip the URI file fuckery 🙏
implementation "com.github.tachiyomiorg:unifile:17bec43"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index dd7a2ec0..6dcd4e1b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -11,7 +11,7 @@
-
+
()
val urls = listOf(
@@ -27,19 +28,21 @@ class SoaptwoDayProvider:MainAPI() {
for ((url, name) in urls) {
try {
val soup = app.get(url).document
- val home = soup.select("div.container div.row div.col-sm-12.col-lg-12 div.row div.col-sm-12.col-lg-12 .col-xs-6").map {
- val title = it.selectFirst("h5 a")!!.text()
- val link = it.selectFirst("a")!!.attr("href")
- TvSeriesSearchResponse(
- title,
- link,
- this.name,
- TvType.TvSeries,
- fixUrl(it.selectFirst("img")!!.attr("src")),
- null,
- null,
- )
- }
+ val home =
+ soup.select("div.container div.row div.col-sm-12.col-lg-12 div.row div.col-sm-12.col-lg-12 .col-xs-6")
+ .map {
+ val title = it.selectFirst("h5 a")!!.text()
+ val link = it.selectFirst("a")!!.attr("href")
+ TvSeriesSearchResponse(
+ title,
+ link,
+ this.name,
+ TvType.TvSeries,
+ fixUrl(it.selectFirst("img")!!.attr("src")),
+ null,
+ null,
+ )
+ }
items.add(HomePageList(name, home))
} catch (e: Exception) {
@@ -51,34 +54,36 @@ class SoaptwoDayProvider:MainAPI() {
override suspend fun search(query: String): List {
val doc = app.get("$mainUrl/search/keyword/$query").document
- return doc.select("div.container div.row div.col-sm-12.col-lg-12 div.row div.col-sm-12.col-lg-12 .col-xs-6").map {
- val title = it.selectFirst("h5 a")!!.text()
- val image = fixUrl(it.selectFirst("img")!!.attr("src"))
- val href = fixUrl(it.selectFirst("a")!!.attr("href"))
- TvSeriesSearchResponse(
- title,
- href,
- this.name,
- TvType.TvSeries,
- image,
- null,
- null
- )
- }
+ return doc.select("div.container div.row div.col-sm-12.col-lg-12 div.row div.col-sm-12.col-lg-12 .col-xs-6")
+ .map {
+ val title = it.selectFirst("h5 a")!!.text()
+ val image = fixUrl(it.selectFirst("img")!!.attr("src"))
+ val href = fixUrl(it.selectFirst("a")!!.attr("href"))
+ TvSeriesSearchResponse(
+ title,
+ href,
+ this.name,
+ TvType.TvSeries,
+ image,
+ null,
+ null
+ )
+ }
}
override suspend fun load(url: String): LoadResponse? {
val soup = app.get(url).document
val title = soup.selectFirst(".hidden-lg > div:nth-child(1) > h4")?.text() ?: ""
val description = soup.selectFirst("p#wrap")?.text()?.trim()
- val poster = soup.selectFirst(".col-md-5 > div:nth-child(1) > div:nth-child(1) > img")?.attr("src")
+ val poster =
+ soup.selectFirst(".col-md-5 > div:nth-child(1) > div:nth-child(1) > img")?.attr("src")
val episodes = mutableListOf()
soup.select("div.alert").forEach {
val season = it?.selectFirst("h4")?.text()?.filter { c -> c.isDigit() }?.toIntOrNull()
it?.select("div > div > a")?.forEach { entry ->
val link = fixUrlNull(entry?.attr("href")) ?: return@forEach
val text = entry?.text() ?: ""
- val name = text.replace(Regex("(^(\\d+)\\.)"),"")
+ val name = text.replace(Regex("(^(\\d+)\\.)"), "")
val epNum = text.substring(0, text.indexOf(".")).toIntOrNull()
episodes.add(
Episode(
@@ -149,7 +154,7 @@ class SoaptwoDayProvider:MainAPI() {
}
}
- data class ServerJson (
+ data class ServerJson(
@JsonProperty("0") val zero: String?,
@JsonProperty("key") val key: Boolean?,
@JsonProperty("val") val stream: String?,
@@ -163,7 +168,7 @@ class SoaptwoDayProvider:MainAPI() {
@JsonProperty("next_epi_url") val nextEpiUrl: String?
)
- data class Subs (
+ data class Subs(
@JsonProperty("id") val id: Int?,
@JsonProperty("movieId") val movieId: Int?,
@JsonProperty("tvId") val tvId: Int?,
@@ -188,16 +193,19 @@ class SoaptwoDayProvider:MainAPI() {
val idplayer2 = doc.selectFirst("#divP")?.text()
val movieid = doc.selectFirst("div.row input#hId")!!.attr("value")
val tvType = try {
- doc.selectFirst(".col-md-5 > div:nth-child(1) > div:nth-child(1) > img")!!.attr("src") ?: ""
+ doc.selectFirst(".col-md-5 > div:nth-child(1) > div:nth-child(1) > img")!!.attr("src")
+ ?: ""
} catch (e: Exception) {
""
}
- val ajaxlink = if (tvType.contains("movie")) "$mainUrl/home/index/GetMInfoAjax" else "$mainUrl/home/index/GetEInfoAjax"
+ val ajaxlink =
+ if (tvType.contains("movie")) "$mainUrl/home/index/GetMInfoAjax" else "$mainUrl/home/index/GetEInfoAjax"
listOf(
idplayer,
idplayer2,
).mapNotNull { playerID ->
- val url = app.post(ajaxlink,
+ val url = app.post(
+ ajaxlink,
headers = mapOf(
"Host" to "secretlink.xyz",
"User-Agent" to USER_AGENT,
@@ -211,32 +219,35 @@ class SoaptwoDayProvider:MainAPI() {
"Referer" to data,
"Sec-Fetch-Dest" to "empty",
"Sec-Fetch-Mode" to "cors",
- "Sec-Fetch-Site" to "same-origin",),
+ "Sec-Fetch-Site" to "same-origin",
+ ),
data = mapOf(
- Pair("pass",movieid),
- Pair("param",playerID),
+ Pair("pass", movieid),
+ Pair("param", playerID ?: ""),
)
- ).text.replace("\\\"","\"").replace("\"{","{").replace("}\"","}")
- .replace("\\\\\\/","\\/")
+ ).text.replace("\\\"", "\"").replace("\"{", "{").replace("}\"", "}")
+ .replace("\\\\\\/", "\\/")
val json = parseJson(url)
listOfNotNull(
json.stream,
json.streambackup
).apmap { stream ->
- val cleanstreamurl = stream.replace("\\/","/").replace("\\\\\\","")
+ val cleanstreamurl = stream.replace("\\/", "/").replace("\\\\\\", "")
if (cleanstreamurl.isNotBlank()) {
- callback(ExtractorLink(
- "Soap2Day",
- "Soap2Day",
- cleanstreamurl,
- "https://soap2day.ac",
- Qualities.Unknown.value,
- isM3u8 = false
- ))
+ callback(
+ ExtractorLink(
+ "Soap2Day",
+ "Soap2Day",
+ cleanstreamurl,
+ "https://soap2day.ac",
+ Qualities.Unknown.value,
+ isM3u8 = false
+ )
+ )
}
}
json.subs?.forEach { subtitle ->
- val sublink = mainUrl+subtitle.path
+ val sublink = mainUrl + subtitle.path
listOf(
sublink,
subtitle.downlink
diff --git a/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt b/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt
index e021bdbe..c6c02e6f 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt
@@ -211,12 +211,6 @@ class WebViewResolver(val interceptUrl: Regex, val additionalUrls: List =
this.method,
webViewUrl,
this.requestHeaders,
- null,
- emptyMap(),
- emptyMap(),
- null,
- 10,
- TimeUnit.MINUTES
)
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/MALApi.kt b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/MALApi.kt
index b73aded2..e00ef53a 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/MALApi.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/MALApi.kt
@@ -613,16 +613,18 @@ class MALApi(index: Int) : AccountManager(index), SyncAPI {
score: Int? = null,
num_watched_episodes: Int? = null,
): String? {
+ val data = mapOf(
+ "status" to status,
+ "score" to score?.toString(),
+ "num_watched_episodes" to num_watched_episodes?.toString()
+ ).filter { it.value != null } as Map
+
return app.put(
"https://api.myanimelist.net/v2/anime/$id/my_list_status",
headers = mapOf(
"Authorization" to "Bearer " + (getAuth() ?: return null)
),
- data = mapOf(
- "status" to status,
- "score" to score?.toString(),
- "num_watched_episodes" to num_watched_episodes?.toString()
- )
+ data = data
).text
}