From 2204564de90ea2d09f1f8314705607d4ff48763f Mon Sep 17 00:00:00 2001
From: tuan041 <30403510+tuan041@users.noreply.github.com>
Date: Mon, 14 Feb 2022 06:50:59 +0700
Subject: [PATCH 1/3] Updated Vietnamese translation (#649)
---
app/src/main/res/values-vi/strings.xml | 33 +++++++++++++++++++-------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index 41809a6f..299d6a4a 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -79,7 +79,7 @@
Kiểu viền
Độ nâng
Kiểu chữ
- Kích thước chữ
+ Kích thước chữ
Tìm kiếm theo nhà cung cấp
Tìm kiếm theo thể loại
@@ -97,7 +97,9 @@
Bạn có thể sẽ cần sử dụng VPN để xem phim này.
Phim này được chiếu dưới dạng Torrent. Hãy sử dụng VPN để xem nhé
-
+
+ Siêu dữ liệu không được cung cấp bởi trang web, quá trình tải video sẽ không thành công nếu nó không tồn tại trên trang web.
+
Thông tin phim
Đang cập nhật
Không tìm thấy thông tin
@@ -108,16 +110,20 @@
Điều này sẽ xóa khoảng đen của phim
Phụ đề
Cài đặt phụ đề
+ Phụ đề Chromecast
+ Cài đặt phụ đề Chromecast
+
Điều chỉnh tốc độ khi xem phim
Có thể điều chỉnh tốc độ phát phim
Vuốt để tua nhanh
Bạn có thể vuốt trái hoặc phải để tua nhanh khi đang xem phim
Vuốt để điều chỉnh âm lượng và độ sáng
Vuốt từ dưới lên trên ở bên trái hoặc phải đều điều chỉnh độ sáng và âm lượng
- Nhấn 2 lần đề tua
+ Nhấn 2 lần để tua
+ Chạm 2 lần để tạm dừng
Nhấn 2 lần vào bên trái hoặc màn hình để tua trước hoặc sau
- Nhấn vào giữa để tạm dừng
+ Nhấn vào giữa để tạm dừng
Sử dụng độ sáng hệ thống
Sử dụng độ sáng hệ thống trong trình phát ứng dụng
@@ -154,14 +160,16 @@
Không có mùa nào
Tập
Tập
- S
- E
+ M
+ T
+ Không thấy tập
Xóa Tệp
Xóa
Tạm Dừng
Tiếp Tục
Điều này sẽ xóa %s\nBạn có chắc chắn muốn xóa?
+ %dm\ncòn lại
Đang Chiếu
Hoàn Thành
@@ -187,6 +195,7 @@
Hoạt Hình
Anime
Torrent
+ Phim Tài Liệu
Phim Lẻ
@@ -215,7 +224,7 @@
Bạn đang dùng phiên bản mới nhất
Kiểm tra cập nhật phiển bản mới
- Khóa Màn Hình
+ Khóa
Thu Phóng
Phụ Đề
Tua Nhanh
@@ -223,6 +232,8 @@
Không hiển thị lại
Cập nhật
Tự động chọn chất lượng phim
+ Kích thước video cache
+ Rất hữu ích để bỏ chặn ISP
Đường dẫn tải xuống
@@ -232,7 +243,7 @@
Kéo dãn
Phóng to
- Tổng quan
+ Tổng quan
Ngôn ngữ nhà cung cấp
Giao diện App
Thể loại ưu tiên
@@ -242,7 +253,7 @@
Giao diện điện thoại
Màu chính
- Chủ đề ứng dụng
+ Chủ đề App
tài khoản
@@ -275,5 +286,9 @@
Đã tải %s
Chọn tệp
Tệp đã tải
+ Chính
+ Hỗ trợ
+ Lý lịch
+ Nguồn
From 5ba3b1f6854dfc5da722ab3aa16cb8ff08e67d52 Mon Sep 17 00:00:00 2001
From: Blatzar <46196380+Blatzar@users.noreply.github.com>
Date: Mon, 14 Feb 2022 13:50:05 +0100
Subject: [PATCH 2/3] improved the Sflix bypass
---
.../movieproviders/SflixProvider.kt | 45 ++++++++++++++-----
1 file changed, 35 insertions(+), 10 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt
index 9b0cb2a0..c22c4bbb 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt
@@ -7,6 +7,7 @@ import com.lagradost.cloudstream3.APIHolder.unixTimeMS
import com.lagradost.cloudstream3.LoadResponse.Companion.addActors
import com.lagradost.cloudstream3.LoadResponse.Companion.setDuration
import com.lagradost.cloudstream3.mvvm.suspendSafeApiCall
+import com.lagradost.cloudstream3.network.AppResponse
import com.lagradost.cloudstream3.network.WebViewResolver
import com.lagradost.cloudstream3.network.getRequestCreator
import com.lagradost.cloudstream3.network.text
@@ -365,17 +366,41 @@ class SflixProvider(providerUrl: String, providerName: String) : MainAPI() {
return code.reversed()
}
+
+ /**
+ * Generates a session
+ * */
+ private suspend fun negotiateNewSid(baseUrl: String): PollingData? {
+ // Tries multiple times
+ for (i in 1..5) {
+ val jsonText =
+ app.get("$baseUrl&t=${generateTimeStamp()}").text.replaceBefore("{", "")
+// println("Negotiated sid $jsonText")
+ parseJson(jsonText)?.let { return it }
+ delay(1000L * i)
+ }
+ return null
+ }
+
+ /**
+ * Generates a new session if the request fails
+ * */
+ private suspend fun getUpdatedData(response: AppResponse, data: PollingData, baseUrl: String) : PollingData {
+ if (!response.response.isSuccessful){
+ return negotiateNewSid(baseUrl) ?: data
+ }
+ return data
+ }
+
override suspend fun extractorVerifierJob(extractorData: String?) {
if (extractorData == null) return
- val jsonText =
- app.get("$extractorData&t=${generateTimeStamp()}").text.replaceBefore("{", "")
- val data = parseJson(jsonText)
val headers = mapOf(
"User-Agent" to USER_AGENT,
"Referer" to "https://rabbitstream.net/"
)
+ var data = negotiateNewSid(extractorData) ?: return
// 40 is hardcoded, dunno how it's generated, but it seems to work everywhere.
// This request is obligatory
app.post(
@@ -389,7 +414,7 @@ class SflixProvider(providerUrl: String, providerName: String) : MainAPI() {
"$extractorData&t=${generateTimeStamp()}&sid=${data.sid}",
headers = headers
)
- //.also { println("First get ${it.text}") }
+// .also { println("First get ${it.text}") }
.text.replaceBefore("{", "")
).sid
// This response is used in the post requests. Same contents in all it seems.
@@ -406,14 +431,13 @@ class SflixProvider(providerUrl: String, providerName: String) : MainAPI() {
// Prevents them from fucking us over with doing a while(true){} loop
val interval = maxOf(data.pingInterval?.toLong()?.plus(2000) ?: return, 10000L)
var reconnect = false
- // New SID can be negotiated as above, but not implemented yet as it seems rare.
while (true) {
val authData = if (reconnect) """
42["_reconnect", "$reconnectSid"]
""".trimIndent() else authInt
val url = "${extractorData}&t=${generateTimeStamp()}&sid=${data.sid}"
- app.post(url, data = authData, headers = headers)
+ data = getUpdatedData(app.post(url, data = authData, headers = headers), data, extractorData)
//.also { println("Sflix post job ${it.text}") }
Log.d(this.name, "Running Sflix job $url")
@@ -423,15 +447,16 @@ class SflixProvider(providerUrl: String, providerName: String) : MainAPI() {
"${extractorData}&t=${generateTimeStamp()}&sid=${data.sid}",
timeout = 60,
headers = headers
- ).text //.also { println("Sflix get job $it") }
- if (getResponse.contains("sid")) {
+ )
+// .also { println("Sflix get job ${it.text}") }
+ if (getResponse.text.contains("sid")) {
reconnect = true
-// println("Reconnecting")
+// println("Reconnecting")
}
}
// Always waits even if the get response is instant, to prevent a while true loop.
if (time < interval - 4000)
- delay(interval)
+ delay(4000)
}
}
From 08c3350666f1ff5a54fd0df97a2edd22ff2086b3 Mon Sep 17 00:00:00 2001
From: Blatzar <46196380+Blatzar@users.noreply.github.com>
Date: Mon, 14 Feb 2022 14:37:17 +0100
Subject: [PATCH 3/3] moar fixes
---
.../com/lagradost/cloudstream3/MainAPI.kt | 1 -
.../movieproviders/SflixProvider.kt | 39 ++++++++++++++-----
.../cloudstream3/network/WebViewResolver.kt | 2 +
3 files changed, 31 insertions(+), 11 deletions(-)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
index f60cbba6..c19a1292 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt
@@ -36,7 +36,6 @@ object APIHolder {
AllAnimeProvider(),
AnimekisaProvider(),
//ShiroProvider(), // v2 fucked me
- //AnimePaheProvider(), //ddos guard
AnimeFlickProvider(),
AnimeflvnetProvider(),
diff --git a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt
index c22c4bbb..6b9c6592 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/movieproviders/SflixProvider.kt
@@ -308,7 +308,7 @@ class SflixProvider(providerUrl: String, providerName: String) : MainAPI() {
// Some smarter ws11 or w10 selection might be required in the future.
val extractorData =
- "https://ws10.rabbitstream.net/socket.io/?EIO=4&transport=polling"
+ "https://ws11.rabbitstream.net/socket.io/?EIO=4&transport=polling"
val sources = resolved.first?.let { app.baseClient.newCall(it).execute().text }
?: return@suspendSafeApiCall
@@ -384,19 +384,25 @@ class SflixProvider(providerUrl: String, providerName: String) : MainAPI() {
/**
* Generates a new session if the request fails
+ * @return the data and if it is new.
* */
- private suspend fun getUpdatedData(response: AppResponse, data: PollingData, baseUrl: String) : PollingData {
- if (!response.response.isSuccessful){
- return negotiateNewSid(baseUrl) ?: data
+ private suspend fun getUpdatedData(
+ response: AppResponse,
+ data: PollingData,
+ baseUrl: String
+ ): Pair {
+ if (!response.response.isSuccessful) {
+ return negotiateNewSid(baseUrl)?.let {
+ it to true
+ } ?: data to false
}
- return data
+ return data to false
}
override suspend fun extractorVerifierJob(extractorData: String?) {
if (extractorData == null) return
val headers = mapOf(
- "User-Agent" to USER_AGENT,
"Referer" to "https://rabbitstream.net/"
)
@@ -431,13 +437,26 @@ class SflixProvider(providerUrl: String, providerName: String) : MainAPI() {
// Prevents them from fucking us over with doing a while(true){} loop
val interval = maxOf(data.pingInterval?.toLong()?.plus(2000) ?: return, 10000L)
var reconnect = false
+ var newAuth = false
while (true) {
- val authData = if (reconnect) """
- 42["_reconnect", "$reconnectSid"]
- """.trimIndent() else authInt
+ val authData =
+ when {
+ newAuth -> "40"
+ reconnect -> """42["_reconnect", "$reconnectSid"]"""
+ else -> authInt
+ }
val url = "${extractorData}&t=${generateTimeStamp()}&sid=${data.sid}"
- data = getUpdatedData(app.post(url, data = authData, headers = headers), data, extractorData)
+
+ getUpdatedData(
+ app.post(url, data = authData, headers = headers),
+ data,
+ extractorData
+ ).also {
+ newAuth = it.second
+ data = it.first
+ }
+
//.also { println("Sflix post job ${it.text}") }
Log.d(this.name, "Running Sflix job $url")
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 9aa44a08..095bb3f2 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/network/WebViewResolver.kt
@@ -125,6 +125,8 @@ class WebViewResolver(val interceptUrl: Regex, val additionalUrls: List =
".srt",
".ts",
".gif",
+ // Warning, this might fuck some future sites, but it's used to make Sflix work.
+ "wss://"
)
/** NOTE! request.requestHeaders is not perfect!