diff --git a/.github/downloads.jpg b/.github/downloads.jpg
deleted file mode 100644
index ca14a664..00000000
Binary files a/.github/downloads.jpg and /dev/null differ
diff --git a/.github/home.jpg b/.github/home.jpg
deleted file mode 100644
index 72370d3c..00000000
Binary files a/.github/home.jpg and /dev/null differ
diff --git a/.github/locales.py b/.github/locales.py
index 1c79c093..7d6d6b90 100644
--- a/.github/locales.py
+++ b/.github/locales.py
@@ -1,6 +1,7 @@
import re
import glob
import requests
+import lxml.etree as ET # builtin library doesn't preserve comments
SETTINGS_PATH = "app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt"
@@ -45,4 +46,18 @@ open(SETTINGS_PATH, "w+",encoding='utf-8').write(
"\n" +
END_MARKER +
after_src
-)
\ No newline at end of file
+)
+
+# Go through each values.xml file and fix escaped \@string
+for file in glob.glob(f"{XML_NAME}*/strings.xml"):
+ try:
+ tree = ET.parse(file)
+ for child in tree.getroot():
+ if child.text.startswith("\\@string/"):
+ print(f"[{file}] fixing {child.attrib['name']}")
+ child.text = child.text.replace("\\@string/", "@string/")
+ with open(file, 'wb') as fp:
+ fp.write(b'\n')
+ tree.write(fp, encoding="utf-8", method="xml", pretty_print=True, xml_declaration=False)
+ except ET.ParseError as ex:
+ print(f"[{file}] {ex}")
diff --git a/.github/player.jpg b/.github/player.jpg
deleted file mode 100644
index f6959cf3..00000000
Binary files a/.github/player.jpg and /dev/null differ
diff --git a/.github/results.jpg b/.github/results.jpg
deleted file mode 100644
index 4dbc9b8d..00000000
Binary files a/.github/results.jpg and /dev/null differ
diff --git a/.github/search.jpg b/.github/search.jpg
deleted file mode 100644
index 784bec89..00000000
Binary files a/.github/search.jpg and /dev/null differ
diff --git a/.github/workflows/update_locales.yml b/.github/workflows/update_locales.yml
index 93cdca44..628e9bc9 100644
--- a/.github/workflows/update_locales.yml
+++ b/.github/workflows/update_locales.yml
@@ -1,4 +1,4 @@
-name: Update locale lists
+name: Fix locale issues
on:
workflow_dispatch:
@@ -9,7 +9,7 @@ on:
- master
concurrency:
- group: "locale-list"
+ group: "locale"
cancel-in-progress: true
jobs:
@@ -26,6 +26,9 @@ jobs:
- uses: actions/checkout@v2
with:
token: ${{ steps.generate_token.outputs.token }}
+ - name: Install dependencies
+ run: |
+ pip3 install lxml
- name: Edit files
run: |
python3 .github/locales.py
@@ -35,5 +38,5 @@ jobs:
git config --local user.name "recloudstream[bot]"
git add .
# "echo" returns true so the build succeeds, even if no changed files
- git commit -m 'update list of locales' || echo
+ git commit -m 'chore(locales): fix locale issues' || echo
git push
diff --git a/README.md b/README.md
index 3430d626..e3d033ba 100644
--- a/README.md
+++ b/README.md
@@ -12,12 +12,7 @@
+ Download and stream movies, tv-shows and anime
+ Chromecast
-### Screenshots:
-
-
-
-
### Supported languages:
-
\ No newline at end of file
+
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 9cbccbe5..ebde6187 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -47,8 +47,8 @@ android {
minSdk = 21
targetSdk = 33
- versionCode = 57
- versionName = "4.0.0"
+ versionCode = 59
+ versionName = "4.0.1"
resValue("string", "app_version", "${defaultConfig.versionName}${versionNameSuffix ?: ""}")
@@ -159,6 +159,8 @@ dependencies {
implementation("com.google.android.exoplayer:extension-cast:2.18.2")
implementation("com.google.android.exoplayer:extension-mediasession:2.18.2")
implementation("com.google.android.exoplayer:extension-okhttp:2.18.2")
+ // Use the Jellyfin ffmpeg extension for easy ffmpeg audio decoding in exoplayer. Thank you Jellyfin <3
+// implementation("org.jellyfin.exoplayer:exoplayer-ffmpeg-extension:2.18.2+1")
//implementation("com.google.android.exoplayer:extension-leanback:2.14.0")
@@ -214,8 +216,8 @@ dependencies {
// slow af yt
//implementation("com.github.HaarigerHarald:android-youtubeExtractor:master-SNAPSHOT")
- // newpipe yt taken from https://github.com/TeamNewPipe/NewPipe/blob/dev/app/build.gradle#L190
- implementation("com.github.TeamNewPipe:NewPipeExtractor:9ffdd0948b2ecd82655f5ff2a3e127b2b7695d5b")
+ // newpipe yt taken from https://github.com/TeamNewPipe/NewPipe/blob/dev/app/build.gradle#L204
+ implementation("com.github.TeamNewPipe:NewPipeExtractor:master-SNAPSHOT")
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.6")
// Library/extensions searching with Levenshtein distance
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 871c4f69..563c82f8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -98,6 +98,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
index a7449255..d054f504 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/MainActivity.kt
@@ -5,6 +5,8 @@ import android.content.Context
import android.content.Intent
import android.content.res.ColorStateList
import android.content.res.Configuration
+import android.net.Uri
+import android.os.Build
import android.os.Bundle
import android.util.AttributeSet
import android.util.Log
@@ -34,7 +36,6 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.navigationrail.NavigationRailView
import com.google.android.material.snackbar.Snackbar
import com.jaredrummler.android.colorpicker.ColorPickerDialogListener
-import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.APIHolder.allProviders
import com.lagradost.cloudstream3.APIHolder.apis
import com.lagradost.cloudstream3.APIHolder.getApiDubstatusSettings
@@ -57,6 +58,7 @@ import com.lagradost.cloudstream3.receivers.VideoDownloadRestartReceiver
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.OAuth2Apis
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.accountManagers
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.appString
+import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.appStringPlayer
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.appStringRepo
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.appStringResumeWatching
import com.lagradost.cloudstream3.syncproviders.AccountManager.Companion.appStringSearch
@@ -65,6 +67,9 @@ import com.lagradost.cloudstream3.ui.APIRepository
import com.lagradost.cloudstream3.ui.WatchType
import com.lagradost.cloudstream3.ui.download.DOWNLOAD_NAVIGATE_TO
import com.lagradost.cloudstream3.ui.home.HomeViewModel
+import com.lagradost.cloudstream3.ui.player.BasicLink
+import com.lagradost.cloudstream3.ui.player.GeneratorPlayer
+import com.lagradost.cloudstream3.ui.player.LinkGenerator
import com.lagradost.cloudstream3.ui.result.ResultViewModel2
import com.lagradost.cloudstream3.ui.result.START_ACTION_RESUME_LATEST
import com.lagradost.cloudstream3.ui.result.setImage
@@ -170,7 +175,12 @@ open class ResultResume(
val VLC = object : ResultResume(
VLC_PACKAGE,
- "org.videolan.vlc.player.result",
+ // Android 13 intent restrictions fucks up specifically launching the VLC player
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
+ "org.videolan.vlc.player.result"
+ } else {
+ Intent.ACTION_VIEW
+ },
"extra_position",
"extra_duration",
) {
@@ -269,6 +279,8 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
isWebview: Boolean
): Boolean =
with(activity) {
+ // TODO MUCH BETTER HANDLING
+
// Invalid URIs can crash
fun safeURI(uri: String) = normalSafeApiCall { URI(uri) }
@@ -324,6 +336,20 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
// It might be better to use the QuickSearch.
nav_view?.selectedItemId = R.id.navigation_search
nav_rail_view?.selectedItemId = R.id.navigation_search
+ } else if (safeURI(str)?.scheme == appStringPlayer) {
+ val uri = Uri.parse(str)
+ val name = uri.getQueryParameter("name")
+ val url = URLDecoder.decode(uri.authority, "UTF-8")
+
+ navigate(
+ R.id.global_to_navigation_player,
+ GeneratorPlayer.newInstance(
+ LinkGenerator(
+ listOf(BasicLink(url, name)),
+ extract = true,
+ )
+ )
+ )
} else if (safeURI(str)?.scheme == appStringResumeWatching) {
val id =
str.substringAfter("$appStringResumeWatching://").toIntOrNull()
@@ -733,15 +759,16 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
} else {
this.setKey(getString(R.string.jsdelivr_proxy_key), true)
val parentView: View = findViewById(android.R.id.content)
- Snackbar.make(parentView, R.string.jsdelivr_enabled, Snackbar.LENGTH_LONG).let { snackbar ->
- snackbar.setAction(R.string.revert) {
- setKey(getString(R.string.jsdelivr_proxy_key), false)
+ Snackbar.make(parentView, R.string.jsdelivr_enabled, Snackbar.LENGTH_LONG)
+ .let { snackbar ->
+ snackbar.setAction(R.string.revert) {
+ setKey(getString(R.string.jsdelivr_proxy_key), false)
+ }
+ snackbar.setBackgroundTint(colorFromAttribute(R.attr.primaryGrayBackground))
+ snackbar.setTextColor(colorFromAttribute(R.attr.textColor))
+ snackbar.setActionTextColor(colorFromAttribute(R.attr.colorPrimary))
+ snackbar.show()
}
- snackbar.setBackgroundTint(colorFromAttribute(R.attr.primaryGrayBackground))
- snackbar.setTextColor(colorFromAttribute(R.attr.textColor))
- snackbar.setActionTextColor(colorFromAttribute(R.attr.colorPrimary))
- snackbar.show()
- }
}
}
@@ -1123,7 +1150,10 @@ class MainActivity : AppCompatActivity(), ColorPickerDialogListener {
suspend fun checkGithubConnectivity(): Boolean {
return try {
- app.get("https://raw.githubusercontent.com/recloudstream/.github/master/connectivitycheck", timeout = 5).text.trim() == "ok"
+ app.get(
+ "https://raw.githubusercontent.com/recloudstream/.github/master/connectivitycheck",
+ timeout = 5
+ ).text.trim() == "ok"
} catch (t: Throwable) {
false
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Chillx.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Chillx.kt
new file mode 100644
index 00000000..1c548e74
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Chillx.kt
@@ -0,0 +1,135 @@
+package com.lagradost.cloudstream3.extractors
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.lagradost.cloudstream3.*
+import com.lagradost.cloudstream3.utils.AppUtils
+import com.lagradost.cloudstream3.utils.ExtractorApi
+import com.lagradost.cloudstream3.utils.ExtractorLink
+import com.lagradost.cloudstream3.utils.Qualities
+import javax.crypto.Cipher
+import javax.crypto.SecretKeyFactory
+import javax.crypto.spec.IvParameterSpec
+import javax.crypto.spec.PBEKeySpec
+import javax.crypto.spec.SecretKeySpec
+
+class Bestx : Chillx() {
+ override val name = "Bestx"
+ override val mainUrl = "https://bestx.stream"
+}
+
+class Watchx : Chillx() {
+ override val name = "Watchx"
+ override val mainUrl = "https://watchx.top"
+}
+open class Chillx : ExtractorApi() {
+ override val name = "Chillx"
+ override val mainUrl = "https://chillx.top"
+ override val requiresReferer = true
+
+ companion object {
+ private const val KEY = "4VqE3#N7zt&HEP^a"
+ }
+
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+ val master = Regex("MasterJS\\s*=\\s*'([^']+)").find(
+ app.get(
+ url,
+ referer = referer
+ ).text
+ )?.groupValues?.get(1)
+ val encData = AppUtils.tryParseJson(base64Decode(master ?: return))
+ val decrypt = cryptoAESHandler(encData ?: return, KEY, false)
+
+ val source = Regex("""sources:\s*\[\{"file":"([^"]+)""").find(decrypt)?.groupValues?.get(1)
+ val tracks = Regex("""tracks:\s*\[(.+)]""").find(decrypt)?.groupValues?.get(1)
+
+ // required
+ val headers = mapOf(
+ "Accept" to "*/*",
+ "Connection" to "keep-alive",
+ "Sec-Fetch-Dest" to "empty",
+ "Sec-Fetch-Mode" to "cors",
+ "Sec-Fetch-Site" to "cross-site",
+ "Origin" to mainUrl,
+ )
+
+ callback.invoke(
+ ExtractorLink(
+ name,
+ name,
+ source ?: return,
+ "$mainUrl/",
+ Qualities.P1080.value,
+ headers = headers,
+ isM3u8 = true
+ )
+ )
+
+ AppUtils.tryParseJson>("[$tracks]")
+ ?.filter { it.kind == "captions" }?.map { track ->
+ subtitleCallback.invoke(
+ SubtitleFile(
+ track.label ?: "",
+ track.file ?: return@map null
+ )
+ )
+ }
+ }
+
+ private fun cryptoAESHandler(
+ data: AESData,
+ pass: String,
+ encrypt: Boolean = true
+ ): String {
+ val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA512")
+ val spec = PBEKeySpec(
+ pass.toCharArray(),
+ data.salt?.hexToByteArray(),
+ data.iterations?.toIntOrNull() ?: 1,
+ 256
+ )
+ val key = factory.generateSecret(spec)
+ val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
+ return if (!encrypt) {
+ cipher.init(
+ Cipher.DECRYPT_MODE,
+ SecretKeySpec(key.encoded, "AES"),
+ IvParameterSpec(data.iv?.hexToByteArray())
+ )
+ String(cipher.doFinal(base64DecodeArray(data.ciphertext.toString())))
+ } else {
+ cipher.init(
+ Cipher.ENCRYPT_MODE,
+ SecretKeySpec(key.encoded, "AES"),
+ IvParameterSpec(data.iv?.hexToByteArray())
+ )
+ base64Encode(cipher.doFinal(data.ciphertext?.toByteArray()))
+ }
+ }
+
+ private fun String.hexToByteArray(): ByteArray {
+ check(length % 2 == 0) { "Must have an even length" }
+ return chunked(2)
+ .map { it.toInt(16).toByte() }
+
+ .toByteArray()
+ }
+
+ data class AESData(
+ @JsonProperty("ciphertext") val ciphertext: String? = null,
+ @JsonProperty("iv") val iv: String? = null,
+ @JsonProperty("salt") val salt: String? = null,
+ @JsonProperty("iterations") val iterations: String? = null,
+ )
+
+ data class Tracks(
+ @JsonProperty("file") val file: String? = null,
+ @JsonProperty("label") val label: String? = null,
+ @JsonProperty("kind") val kind: String? = null,
+ )
+}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt
index 84fd0552..4c1791a8 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Filesim.kt
@@ -5,6 +5,25 @@ import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.utils.*
import com.lagradost.cloudstream3.utils.M3u8Helper.Companion.generateM3u8
+class Moviesm4u : Filesim() {
+ override val mainUrl = "https://moviesm4u.com"
+ override val name = "Moviesm4u"
+}
+
+class FileMoonIn : Filesim() {
+ override val mainUrl = "https://filemoon.in"
+ override val name = "FileMoon"
+}
+
+class StreamhideCom : Filesim() {
+ override var name: String = "Streamhide"
+ override var mainUrl: String = "https://streamhide.com"
+}
+
+class Movhide : Filesim() {
+ override var name: String = "Movhide"
+ override var mainUrl: String = "https://movhide.pro"
+}
class Ztreamhub : Filesim() {
override val mainUrl: String = "https://ztreamhub.com" //Here 'cause works
@@ -35,7 +54,7 @@ open class Filesim : ExtractorApi() {
response.select("script[type=text/javascript]").map { script ->
if (script.data().contains(Regex("eval\\(function\\(p,a,c,k,e,[rd]"))) {
val unpackedscript = getAndUnpack(script.data())
- val m3u8Regex = Regex("file.\\\"(.*?m3u8.*?)\\\"")
+ val m3u8Regex = Regex("file.\"(.*?m3u8.*?)\"")
val m3u8 = m3u8Regex.find(unpackedscript)?.destructured?.component1() ?: ""
if (m3u8.isNotEmpty()) {
generateM3u8(
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Gofile.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Gofile.kt
new file mode 100644
index 00000000..2ec185e0
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Gofile.kt
@@ -0,0 +1,59 @@
+package com.lagradost.cloudstream3.extractors
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.lagradost.cloudstream3.SubtitleFile
+import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.utils.ExtractorApi
+import com.lagradost.cloudstream3.utils.ExtractorLink
+import com.lagradost.cloudstream3.utils.Qualities
+
+open class Gofile : ExtractorApi() {
+ override val name = "Gofile"
+ override val mainUrl = "https://gofile.io"
+ override val requiresReferer = false
+ private val mainApi = "https://api.gofile.io"
+
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+ val id = Regex("/(?:\\?c=|d/)([\\da-zA-Z]+)").find(url)?.groupValues?.get(1)
+ val token = app.get("$mainApi/createAccount").parsedSafe()?.data?.get("token")
+ app.get("$mainApi/getContent?contentId=$id&token=$token&websiteToken=12345")
+ .parsedSafe()?.data?.contents?.forEach {
+ callback.invoke(
+ ExtractorLink(
+ this.name,
+ this.name,
+ it.value["link"] ?: return,
+ "",
+ getQuality(it.value["name"]),
+ headers = mapOf(
+ "Cookie" to "accountToken=$token"
+ )
+ )
+ )
+ }
+
+ }
+
+ private fun getQuality(str: String?): Int {
+ return Regex("(\\d{3,4})[pP]").find(str ?: "")?.groupValues?.getOrNull(1)?.toIntOrNull()
+ ?: Qualities.Unknown.value
+ }
+
+ data class Account(
+ @JsonProperty("data") val data: HashMap? = null,
+ )
+
+ data class Data(
+ @JsonProperty("contents") val contents: HashMap>? = null,
+ )
+
+ data class Source(
+ @JsonProperty("data") val data: Data? = null,
+ )
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Krakenfiles.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Krakenfiles.kt
new file mode 100644
index 00000000..b6887259
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Krakenfiles.kt
@@ -0,0 +1,37 @@
+package com.lagradost.cloudstream3.extractors
+
+import com.lagradost.cloudstream3.SubtitleFile
+import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.utils.ExtractorApi
+import com.lagradost.cloudstream3.utils.ExtractorLink
+import com.lagradost.cloudstream3.utils.Qualities
+import com.lagradost.cloudstream3.utils.httpsify
+
+open class Krakenfiles : ExtractorApi() {
+ override val name = "Krakenfiles"
+ override val mainUrl = "https://krakenfiles.com"
+ override val requiresReferer = false
+
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+ val id = Regex("/(?:view|embed-video)/([\\da-zA-Z]+)").find(url)?.groupValues?.get(1)
+ val doc = app.get("$mainUrl/embed-video/$id").document
+ val link = doc.selectFirst("source")?.attr("src")
+
+ callback.invoke(
+ ExtractorLink(
+ this.name,
+ this.name,
+ httpsify(link ?: return),
+ "",
+ Qualities.Unknown.value
+ )
+ )
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt
index b7477242..3d2a81b7 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/StreamSB.kt
@@ -6,6 +6,26 @@ import com.lagradost.cloudstream3.app
import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.M3u8Helper
+import kotlin.random.Random
+
+class Vidgomunimesb : StreamSB() {
+ override var mainUrl = "https://vidgomunimesb.xyz"
+}
+
+class Sbasian : StreamSB() {
+ override var mainUrl = "https://sbasian.pro"
+ override var name = "Sbasian"
+}
+
+class Sbnet : StreamSB() {
+ override var name = "Sbnet"
+ override var mainUrl = "https://sbnet.one"
+}
+
+class Keephealth : StreamSB() {
+ override var name = "Keephealth"
+ override var mainUrl = "https://keephealth.info"
+}
class Sbspeed : StreamSB() {
override var name = "Sbspeed"
@@ -81,24 +101,66 @@ class StreamSB11 : StreamSB() {
override var mainUrl = "https://sbbrisk.com"
}
-// This is a modified version of https://github.com/jmir1/aniyomi-extensions/blob/master/src/en/genoanime/src/eu/kanade/tachiyomi/animeextension/en/genoanime/extractors/StreamSBExtractor.kt
-// The following code is under the Apache License 2.0 https://github.com/jmir1/aniyomi-extensions/blob/master/LICENSE
+class Sblongvu : StreamSB() {
+ override var mainUrl = "https://sblongvu.com"
+}
+
open class StreamSB : ExtractorApi() {
override var name = "StreamSB"
override var mainUrl = "https://watchsb.com"
override val requiresReferer = false
+ private val alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
- private val hexArray = "0123456789ABCDEF".toCharArray()
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+ val regexID =
+ Regex("(embed-[a-zA-Z\\d]{0,8}[a-zA-Z\\d_-]+|/e/[a-zA-Z\\d]{0,8}[a-zA-Z\\d_-]+)")
+ val id = regexID.findAll(url).map {
+ it.value.replace(Regex("(embed-|/e/)"), "")
+ }.first()
+ val master = "$mainUrl/375664356a494546326c4b797c7c6e756577776778623171737/${encodeId(id)}"
+ val headers = mapOf(
+ "watchsb" to "sbstream",
+ )
+ val mapped = app.get(
+ master.lowercase(),
+ headers = headers,
+ referer = url,
+ ).parsedSafe()
+ M3u8Helper.generateM3u8(
+ name,
+ mapped?.streamData?.file ?: return,
+ url,
+ headers = headers
+ ).forEach(callback)
- private fun bytesToHex(bytes: ByteArray): String {
- val hexChars = CharArray(bytes.size * 2)
- for (j in bytes.indices) {
- val v = bytes[j].toInt() and 0xFF
-
- hexChars[j * 2] = hexArray[v ushr 4]
- hexChars[j * 2 + 1] = hexArray[v and 0x0F]
+ mapped.streamData.subs?.map {sub ->
+ subtitleCallback.invoke(
+ SubtitleFile(
+ sub.label.toString(),
+ sub.file ?: return@map null,
+ )
+ )
+ }
+ }
+
+ private fun encodeId(id: String): String {
+ val code = "${createHashTable()}||$id||${createHashTable()}||streamsb"
+ return code.toCharArray().joinToString("") { char ->
+ char.code.toString(16)
+ }
+ }
+
+ private fun createHashTable(): String {
+ return buildString {
+ repeat(12) {
+ append(alphabet[Random.nextInt(alphabet.length)])
+ }
}
- return String(hexChars)
}
data class Subs (
@@ -122,42 +184,4 @@ open class StreamSB : ExtractorApi() {
@JsonProperty("status_code") val statusCode: Int,
)
- override suspend fun getUrl(
- url: String,
- referer: String?,
- subtitleCallback: (SubtitleFile) -> Unit,
- callback: (ExtractorLink) -> Unit
- ) {
- val regexID =
- Regex("(embed-[a-zA-Z0-9]{0,8}[a-zA-Z0-9_-]+|/e/[a-zA-Z0-9]{0,8}[a-zA-Z0-9_-]+)")
- val id = regexID.findAll(url).map {
- it.value.replace(Regex("(embed-|/e/)"), "")
- }.first()
-// val master = "$mainUrl/sources48/6d6144797752744a454267617c7c${bytesToHex.lowercase()}7c7c4e61755a56456f34385243727c7c73747265616d7362/6b4a33767968506e4e71374f7c7c343837323439333133333462353935333633373836643638376337633462333634663539343137373761333635313533333835333763376333393636363133393635366136323733343435323332376137633763373337343732363536313664373336327c7c504d754478413835306633797c7c73747265616d7362"
- val master = "$mainUrl/sources51/" + bytesToHex("||$id||||streamsb".toByteArray()) + "/"
- val headers = mapOf(
- "watchsb" to "sbstream",
- )
- val mapped = app.get(
- master.lowercase(),
- headers = headers,
- referer = url,
- ).parsedSafe()
- // val urlmain = mapped.streamData.file.substringBefore("/hls/")
- M3u8Helper.generateM3u8(
- name,
- mapped?.streamData?.file ?: return,
- url,
- headers = headers
- ).forEach(callback)
-
- mapped.streamData.subs?.map {sub ->
- subtitleCallback.invoke(
- SubtitleFile(
- sub.label.toString(),
- sub.file ?: return@map null,
- )
- )
- }
- }
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Uservideo.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Uservideo.kt
new file mode 100644
index 00000000..37a7edb5
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Uservideo.kt
@@ -0,0 +1,51 @@
+package com.lagradost.cloudstream3.extractors
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.lagradost.cloudstream3.SubtitleFile
+import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.utils.AppUtils
+import com.lagradost.cloudstream3.utils.ExtractorApi
+import com.lagradost.cloudstream3.utils.ExtractorLink
+import com.lagradost.cloudstream3.utils.Qualities
+
+open class Uservideo : ExtractorApi() {
+ override val name: String = "Uservideo"
+ override val mainUrl: String = "https://uservideo.xyz"
+ override val requiresReferer = false
+
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+ val script = app.get(url).document.selectFirst("script:containsData(hosts =)")?.data()
+ val host = script?.substringAfter("hosts = [\"")?.substringBefore("\"];")
+ val servers = script?.substringAfter("servers = \"")?.substringBefore("\";")
+
+ val sources = app.get("$host/s/$servers").text.substringAfter("\"sources\":[").substringBefore("],").let {
+ AppUtils.tryParseJson>("[$it]")
+ }
+ val quality = Regex("(\\d{3,4})[Pp]").find(url)?.groupValues?.getOrNull(1)?.toIntOrNull()
+
+ sources?.map { source ->
+ callback.invoke(
+ ExtractorLink(
+ name,
+ name,
+ source.src ?: return@map null,
+ url,
+ quality ?: Qualities.Unknown.value,
+ )
+ )
+ }
+
+ }
+
+ data class Sources(
+ @JsonProperty("src") val src: String? = null,
+ @JsonProperty("type") val type: String? = null,
+ @JsonProperty("label") val label: String? = null,
+ )
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Vicloud.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Vicloud.kt
new file mode 100644
index 00000000..c8b2ae07
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Vicloud.kt
@@ -0,0 +1,51 @@
+package com.lagradost.cloudstream3.extractors
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.lagradost.cloudstream3.SubtitleFile
+import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.utils.ExtractorApi
+import com.lagradost.cloudstream3.utils.ExtractorLink
+import com.lagradost.cloudstream3.utils.getQualityFromName
+
+open class Vicloud : ExtractorApi() {
+ override val name: String = "Vicloud"
+ override val mainUrl: String = "https://vicloud.sbs"
+ override val requiresReferer = false
+
+ override suspend fun getUrl(
+ url: String,
+ referer: String?,
+ subtitleCallback: (SubtitleFile) -> Unit,
+ callback: (ExtractorLink) -> Unit
+ ) {
+ val id = Regex("\"apiQuery\":\"(.*?)\"").find(app.get(url).text)?.groupValues?.getOrNull(1)
+ app.get(
+ "$mainUrl/api/?$id=&_=${System.currentTimeMillis()}",
+ headers = mapOf(
+ "X-Requested-With" to "XMLHttpRequest"
+ ),
+ referer = url
+ ).parsedSafe()?.sources?.map { source ->
+ callback.invoke(
+ ExtractorLink(
+ name,
+ name,
+ source.file ?: return@map null,
+ url,
+ getQualityFromName(source.label),
+ )
+ )
+ }
+
+ }
+
+ private data class Sources(
+ @JsonProperty("file") val file: String? = null,
+ @JsonProperty("label") val label: String? = null,
+ )
+
+ private data class Responses(
+ @JsonProperty("sources") val sources: List? = arrayListOf(),
+ )
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt
index 12a76a9b..2c6998de 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/Voe.kt
@@ -6,6 +6,10 @@ import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.M3u8Helper
+class Tubeless : Voe() {
+ override var mainUrl = "https://tubelessceliolymph.com"
+}
+
open class Voe : ExtractorApi() {
override val name = "Voe"
override val mainUrl = "https://voe.sx"
@@ -18,8 +22,8 @@ open class Voe : ExtractorApi() {
callback: (ExtractorLink) -> Unit
) {
val res = app.get(url, referer = referer).document
- val link = res.select("script").find { it.data().contains("const sources") }?.data()
- ?.substringAfter("\"hls\": \"")?.substringBefore("\",")
+ val script = res.select("script").find { it.data().contains("sources =") }?.data()
+ val link = Regex("[\"']hls[\"']:\\s*[\"'](.*)[\"']").find(script ?: return)?.groupValues?.get(1)
M3u8Helper.generateM3u8(
name,
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/VoeExtractor.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/VoeExtractor.kt
deleted file mode 100644
index ad3f0150..00000000
--- a/app/src/main/java/com/lagradost/cloudstream3/extractors/VoeExtractor.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.lagradost.cloudstream3.extractors
-
-import com.fasterxml.jackson.annotation.JsonProperty
-import com.lagradost.cloudstream3.app
-import com.lagradost.cloudstream3.utils.AppUtils.parseJson
-import com.lagradost.cloudstream3.utils.ExtractorApi
-import com.lagradost.cloudstream3.utils.ExtractorLink
-import com.lagradost.cloudstream3.utils.getQualityFromName
-
-open class VoeExtractor : ExtractorApi() {
- override val name: String = "Voe"
- override val mainUrl: String = "https://voe.sx"
- override val requiresReferer = false
-
- private data class ResponseLinks(
- @JsonProperty("hls") val hls: String?,
- @JsonProperty("mp4") val mp4: String?,
- @JsonProperty("video_height") val label: Int?
- //val type: String // Mp4
- )
-
- override suspend fun getUrl(url: String, referer: String?): List {
- val html = app.get(url).text
- if (html.isNotBlank()) {
- val src = html.substringAfter("const sources =").substringBefore(";")
- // Remove last comma, it is not proper json otherwise
- .replace("0,", "0")
- // Make json use the proper quotes
- .replace("'", "\"")
-
- //Log.i(this.name, "Result => (src) ${src}")
- parseJson(src)?.let { voeLink ->
- //Log.i(this.name, "Result => (voeLink) ${voeLink}")
-
- // Always defaults to the hls link, but returns the mp4 if null
- val linkUrl = voeLink.hls ?: voeLink.mp4
- val linkLabel = voeLink.label?.toString() ?: ""
- if (!linkUrl.isNullOrEmpty()) {
- return listOf(
- ExtractorLink(
- name = this.name,
- source = this.name,
- url = linkUrl,
- quality = getQualityFromName(linkLabel),
- referer = url,
- isM3u8 = voeLink.hls != null
- )
- )
- }
- }
- }
- return emptyList()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/XStreamCdn.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/XStreamCdn.kt
index 15ff0436..ccb2fde7 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/extractors/XStreamCdn.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/XStreamCdn.kt
@@ -8,6 +8,16 @@ import com.lagradost.cloudstream3.utils.ExtractorApi
import com.lagradost.cloudstream3.utils.ExtractorLink
import com.lagradost.cloudstream3.utils.getQualityFromName
+class StreamM4u : XStreamCdn() {
+ override val name: String = "StreamM4u"
+ override val mainUrl: String = "https://streamm4u.club"
+}
+
+class Fembed9hd : XStreamCdn() {
+ override var mainUrl = "https://fembed9hd.com"
+ override var name = "Fembed9hd"
+}
+
class Cdnplayer: XStreamCdn() {
override val name: String = "Cdnplayer"
override val mainUrl: String = "https://cdnplayer.online"
diff --git a/app/src/main/java/com/lagradost/cloudstream3/extractors/helper/GogoHelper.kt b/app/src/main/java/com/lagradost/cloudstream3/extractors/helper/GogoHelper.kt
new file mode 100644
index 00000000..1766af6c
--- /dev/null
+++ b/app/src/main/java/com/lagradost/cloudstream3/extractors/helper/GogoHelper.kt
@@ -0,0 +1,158 @@
+package com.lagradost.cloudstream3.extractors.helper
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.lagradost.cloudstream3.app
+import com.lagradost.cloudstream3.base64Decode
+import com.lagradost.cloudstream3.base64DecodeArray
+import com.lagradost.cloudstream3.base64Encode
+import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
+import com.lagradost.cloudstream3.mvvm.safeApiCall
+import com.lagradost.cloudstream3.utils.AppUtils
+import com.lagradost.cloudstream3.utils.ExtractorLink
+import com.lagradost.cloudstream3.utils.M3u8Helper
+import com.lagradost.cloudstream3.utils.getQualityFromName
+import org.jsoup.nodes.Document
+import java.net.URI
+import javax.crypto.Cipher
+import javax.crypto.spec.IvParameterSpec
+import javax.crypto.spec.SecretKeySpec
+
+object GogoHelper {
+
+ /**
+ * @param id base64Decode(show_id) + IV
+ * @return the encryption key
+ * */
+ private fun getKey(id: String): String? {
+ return normalSafeApiCall {
+ id.map {
+ it.code.toString(16)
+ }.joinToString("").substring(0, 32)
+ }
+ }
+
+ // https://github.com/saikou-app/saikou/blob/45d0a99b8a72665a29a1eadfb38c506b842a29d7/app/src/main/java/ani/saikou/parsers/anime/extractors/GogoCDN.kt#L97
+ // No Licence on the function
+ private fun cryptoHandler(
+ string: String,
+ iv: String,
+ secretKeyString: String,
+ encrypt: Boolean = true
+ ): String {
+ //println("IV: $iv, Key: $secretKeyString, encrypt: $encrypt, Message: $string")
+ val ivParameterSpec = IvParameterSpec(iv.toByteArray())
+ val secretKey = SecretKeySpec(secretKeyString.toByteArray(), "AES")
+ val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
+ return if (!encrypt) {
+ cipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameterSpec)
+ String(cipher.doFinal(base64DecodeArray(string)))
+ } else {
+ cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec)
+ base64Encode(cipher.doFinal(string.toByteArray()))
+ }
+ }
+
+ /**
+ * @param iframeUrl something like https://gogoplay4.com/streaming.php?id=XXXXXX
+ * @param mainApiName used for ExtractorLink names and source
+ * @param iv secret iv from site, required non-null if isUsingAdaptiveKeys is off
+ * @param secretKey secret key for decryption from site, required non-null if isUsingAdaptiveKeys is off
+ * @param secretDecryptKey secret key to decrypt the response json, required non-null if isUsingAdaptiveKeys is off
+ * @param isUsingAdaptiveKeys generates keys from IV and ID, see getKey()
+ * @param isUsingAdaptiveData generate encrypt-ajax data based on $("script[data-name='episode']")[0].dataset.value
+ * */
+ suspend fun extractVidstream(
+ iframeUrl: String,
+ mainApiName: String,
+ callback: (ExtractorLink) -> Unit,
+ iv: String?,
+ secretKey: String?,
+ secretDecryptKey: String?,
+ // This could be removed, but i prefer it verbose
+ isUsingAdaptiveKeys: Boolean,
+ isUsingAdaptiveData: Boolean,
+ // If you don't want to re-fetch the document
+ iframeDocument: Document? = null
+ ) = safeApiCall {
+ if ((iv == null || secretKey == null || secretDecryptKey == null) && !isUsingAdaptiveKeys)
+ return@safeApiCall
+
+ val id = Regex("id=([^&]+)").find(iframeUrl)!!.value.removePrefix("id=")
+
+ var document: Document? = iframeDocument
+ val foundIv =
+ iv ?: (document ?: app.get(iframeUrl).document.also { document = it })
+ .select("""div.wrapper[class*=container]""")
+ .attr("class").split("-").lastOrNull() ?: return@safeApiCall
+ val foundKey = secretKey ?: getKey(base64Decode(id) + foundIv) ?: return@safeApiCall
+ val foundDecryptKey = secretDecryptKey ?: foundKey
+
+ val uri = URI(iframeUrl)
+ val mainUrl = "https://" + uri.host
+
+ val encryptedId = cryptoHandler(id, foundIv, foundKey)
+ val encryptRequestData = if (isUsingAdaptiveData) {
+ // Only fetch the document if necessary
+ val realDocument = document ?: app.get(iframeUrl).document
+ val dataEncrypted =
+ realDocument.select("script[data-name='episode']").attr("data-value")
+ val headers = cryptoHandler(dataEncrypted, foundIv, foundKey, false)
+ "id=$encryptedId&alias=$id&" + headers.substringAfter("&")
+ } else {
+ "id=$encryptedId&alias=$id"
+ }
+
+ val jsonResponse =
+ app.get(
+ "$mainUrl/encrypt-ajax.php?$encryptRequestData",
+ headers = mapOf("X-Requested-With" to "XMLHttpRequest")
+ )
+ val dataencrypted =
+ jsonResponse.text.substringAfter("{\"data\":\"").substringBefore("\"}")
+ val datadecrypted = cryptoHandler(dataencrypted, foundIv, foundDecryptKey, false)
+ val sources = AppUtils.parseJson(datadecrypted)
+
+ suspend fun invokeGogoSource(
+ source: GogoSource,
+ sourceCallback: (ExtractorLink) -> Unit
+ ) {
+ if (source.file.contains(".m3u8")) {
+ M3u8Helper.generateM3u8(
+ mainApiName,
+ source.file,
+ mainUrl,
+ headers = mapOf("Origin" to "https://plyr.link")
+ ).forEach(sourceCallback)
+ } else {
+ sourceCallback.invoke(
+ ExtractorLink(
+ mainApiName,
+ mainApiName,
+ source.file,
+ mainUrl,
+ getQualityFromName(source.label),
+ )
+ )
+ }
+ }
+
+ sources.source?.forEach {
+ invokeGogoSource(it, callback)
+ }
+ sources.sourceBk?.forEach {
+ invokeGogoSource(it, callback)
+ }
+ }
+
+ data class GogoSources(
+ @JsonProperty("source") val source: List?,
+ @JsonProperty("sourceBk") val sourceBk: List?,
+ )
+
+ data class GogoSource(
+ @JsonProperty("file") val file: String,
+ @JsonProperty("label") val label: String?,
+ @JsonProperty("type") val type: String?,
+ @JsonProperty("default") val default: String? = null
+ )
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt b/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt
index 742bf308..b80a590e 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/plugins/RepositoryManager.kt
@@ -95,15 +95,11 @@ object RepositoryManager {
}
} else if (fixedUrl.matches("^[a-zA-Z0-9!_-]+$".toRegex())) {
suspendSafeApiCall {
- app.get("https://l.cloudstream.cf/${fixedUrl}", allowRedirects = false).let {
- it.headers["Location"]?.let { url ->
- return@suspendSafeApiCall if (!url.startsWith("https://cutt.ly/branded-domains")) url
- else null
- }
- app.get("https://cutt.ly/${fixedUrl}", allowRedirects = false).let { it2 ->
- it2.headers["Location"]?.let { url ->
- return@suspendSafeApiCall if (url.startsWith("https://cutt.ly/404")) url else null
- }
+ app.get("https://cutt.ly/${fixedUrl}", allowRedirects = false).let { it2 ->
+ it2.headers["Location"]?.let { url ->
+ if (url.startsWith("https://cutt.ly/404")) return@suspendSafeApiCall null
+ if (url.removeSuffix("/") == "https://cutt.ly") return@suspendSafeApiCall null
+ return@suspendSafeApiCall url
}
}
}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/AccountManager.kt b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/AccountManager.kt
index f17086c1..8ce6bae2 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/AccountManager.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/AccountManager.kt
@@ -45,6 +45,7 @@ abstract class AccountManager(private val defIndex: Int) : AuthAPI {
const val appString = "cloudstreamapp"
const val appStringRepo = "cloudstreamrepo"
+ const val appStringPlayer = "cloudstreamplayer"
// Instantly start the search given a query
const val appStringSearch = "cloudstreamsearch"
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt
index f0340845..e80a8fa5 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/download/DownloadFragment.kt
@@ -24,7 +24,6 @@ import com.lagradost.cloudstream3.mvvm.observe
import com.lagradost.cloudstream3.ui.download.DownloadButtonSetup.handleDownloadClick
import com.lagradost.cloudstream3.ui.player.GeneratorPlayer
import com.lagradost.cloudstream3.ui.player.LinkGenerator
-import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTvSettings
import com.lagradost.cloudstream3.utils.AppUtils.loadResult
import com.lagradost.cloudstream3.utils.Coroutines.main
import com.lagradost.cloudstream3.utils.DOWNLOAD_EPISODE_CACHE
@@ -40,6 +39,7 @@ import kotlinx.android.synthetic.main.stream_input.*
import android.text.format.Formatter.formatShortFileSize
import androidx.core.widget.doOnTextChanged
import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
+import com.lagradost.cloudstream3.ui.player.BasicLink
import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.isTrueTvSettings
import java.net.URI
@@ -225,7 +225,7 @@ class DownloadFragment : Fragment() {
R.id.global_to_navigation_player,
GeneratorPlayer.newInstance(
LinkGenerator(
- listOf(url),
+ listOf(BasicLink(url)),
extract = true,
referer = referer,
isM3u8 = dialog.hls_switch?.isChecked
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt
index e6999c9e..58c6dbe0 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeParentItemAdapter.kt
@@ -185,7 +185,7 @@ open class ParentItemAdapter(
) :
RecyclerView.ViewHolder(itemView) {
val title: TextView = itemView.home_child_more_info
- val recyclerView: RecyclerView = itemView.home_child_recyclerview
+ private val recyclerView: RecyclerView = itemView.home_child_recyclerview
fun update(expand: HomeViewModel.ExpandableHomepageList) {
val info = expand.list
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/AbstractPlayerFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/AbstractPlayerFragment.kt
index 21047db3..52f0b760 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/AbstractPlayerFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/AbstractPlayerFragment.kt
@@ -184,7 +184,7 @@ abstract class AbstractPlayerFragment(
isInPIPMode = isInPictureInPictureMode
if (isInPictureInPictureMode) {
// Hide the full-screen UI (controls, etc.) while in picture-in-picture mode.
- player_holder?.alpha = 0f
+ piphide?.isVisible = false
pipReceiver = object : BroadcastReceiver() {
override fun onReceive(
context: Context,
@@ -212,7 +212,7 @@ abstract class AbstractPlayerFragment(
updateIsPlaying(Pair(isPlayingValue, isPlayingValue))
} else {
// Restore the full-screen UI.
- player_holder?.alpha = 1f
+ piphide?.isVisible = true
exitedPipMode()
pipReceiver?.let {
activity?.unregisterReceiver(it)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt
index 782e3fa4..9ec18b9c 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt
@@ -9,8 +9,11 @@ import android.widget.FrameLayout
import androidx.preference.PreferenceManager
import com.google.android.exoplayer2.*
import com.google.android.exoplayer2.C.*
+import com.google.android.exoplayer2.DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON
+import com.google.android.exoplayer2.DefaultRenderersFactory.EXTENSION_RENDERER_MODE_PREFER
import com.google.android.exoplayer2.database.StandaloneDatabaseProvider
import com.google.android.exoplayer2.ext.okhttp.OkHttpDataSource
+import com.google.android.exoplayer2.mediacodec.MediaCodecSelector
import com.google.android.exoplayer2.source.*
import com.google.android.exoplayer2.text.TextRenderer
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
@@ -538,7 +541,8 @@ class CS3IPlayer : IPlayer {
}
// Do no include empty referer, if the provider wants those they can use the header map.
- val refererMap = if (link.referer.isBlank()) emptyMap() else mapOf("referer" to link.referer)
+ val refererMap =
+ if (link.referer.isBlank()) emptyMap() else mapOf("referer" to link.referer)
val headers = mapOf(
"accept" to "*/*",
"sec-ch-ua" to "\"Chromium\";v=\"91\", \" Not;A Brand\";v=\"99\"",
@@ -669,23 +673,27 @@ class CS3IPlayer : IPlayer {
val exoPlayerBuilder =
ExoPlayer.Builder(context)
.setRenderersFactory { eventHandler, videoRendererEventListener, audioRendererEventListener, textRendererOutput, metadataRendererOutput ->
- DefaultRenderersFactory(context).createRenderers(
- eventHandler,
- videoRendererEventListener,
- audioRendererEventListener,
- textRendererOutput,
- metadataRendererOutput
- ).map {
- if (it is TextRenderer) {
- currentTextRenderer = CustomTextRenderer(
- subtitleOffset,
- textRendererOutput,
- eventHandler.looper,
- CustomSubtitleDecoderFactory()
- )
- currentTextRenderer!!
- } else it
- }.toTypedArray()
+ DefaultRenderersFactory(context).apply {
+// setEnableDecoderFallback(true)
+ // Enable Ffmpeg extension
+// setExtensionRendererMode(EXTENSION_RENDERER_MODE_ON)
+ }.createRenderers(
+ eventHandler,
+ videoRendererEventListener,
+ audioRendererEventListener,
+ textRendererOutput,
+ metadataRendererOutput
+ ).map {
+ if (it is TextRenderer) {
+ currentTextRenderer = CustomTextRenderer(
+ subtitleOffset,
+ textRendererOutput,
+ eventHandler.looper,
+ CustomSubtitleDecoderFactory()
+ )
+ currentTextRenderer!!
+ } else it
+ }.toTypedArray()
}
.setTrackSelector(
trackSelector ?: getTrackSelector(
@@ -704,6 +712,10 @@ class CS3IPlayer : IPlayer {
if (cacheSize > Int.MAX_VALUE) Int.MAX_VALUE else cacheSize.toInt()
}
)
+ .setBackBuffer(
+ 30000,
+ true
+ )
.setBufferDurationsMs(
DefaultLoadControl.DEFAULT_MIN_BUFFER_MS,
if (videoBufferMs <= 0) {
@@ -977,12 +989,19 @@ class CS3IPlayer : IPlayer {
// If the Network fails then ignore the exception if the duration is set.
// This is to switch mirrors automatically if the stream has not been fetched, but
// allow playing the buffer without internet as then the duration is fetched.
- if (error.errorCode == PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_FAILED
- && exoPlayer?.duration != TIME_UNSET
- ) {
- exoPlayer?.prepare()
- } else {
- playerError?.invoke(error)
+ when {
+ error.errorCode == PlaybackException.ERROR_CODE_IO_NETWORK_CONNECTION_FAILED
+ && exoPlayer?.duration != TIME_UNSET -> {
+ exoPlayer?.prepare()
+ }
+ error.errorCode == PlaybackException.ERROR_CODE_BEHIND_LIVE_WINDOW -> {
+ // Re-initialize player at the current live window default position.
+ exoPlayer?.seekToDefaultPosition()
+ exoPlayer?.prepare()
+ }
+ else -> {
+ playerError?.invoke(error)
+ }
}
super.onPlayerError(error)
@@ -1196,10 +1215,10 @@ class CS3IPlayer : IPlayer {
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.socketFactory)
}
- val mime = if (link.isM3u8) {
- MimeTypes.APPLICATION_M3U8
- } else {
- MimeTypes.VIDEO_MP4
+ val mime = when {
+ link.isM3u8 -> MimeTypes.APPLICATION_M3U8
+ link.isDash -> MimeTypes.APPLICATION_MPD
+ else -> MimeTypes.VIDEO_MP4
}
val mediaItems = if (link is ExtractorLinkPlayList) {
@@ -1249,4 +1268,4 @@ class CS3IPlayer : IPlayer {
loadOfflinePlayer(context, it)
}
}
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt
index 690d3706..974a5d26 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CustomSubtitleDecoderFactory.kt
@@ -4,13 +4,16 @@ import android.content.Context
import android.util.Log
import androidx.preference.PreferenceManager
import com.google.android.exoplayer2.Format
-import com.google.android.exoplayer2.text.SubtitleDecoder
-import com.google.android.exoplayer2.text.SubtitleDecoderFactory
-import com.google.android.exoplayer2.text.SubtitleInputBuffer
-import com.google.android.exoplayer2.text.SubtitleOutputBuffer
+import com.google.android.exoplayer2.text.*
+import com.google.android.exoplayer2.text.cea.Cea608Decoder
+import com.google.android.exoplayer2.text.cea.Cea708Decoder
+import com.google.android.exoplayer2.text.dvb.DvbDecoder
+import com.google.android.exoplayer2.text.pgs.PgsDecoder
import com.google.android.exoplayer2.text.ssa.SsaDecoder
import com.google.android.exoplayer2.text.subrip.SubripDecoder
import com.google.android.exoplayer2.text.ttml.TtmlDecoder
+import com.google.android.exoplayer2.text.tx3g.Tx3gDecoder
+import com.google.android.exoplayer2.text.webvtt.Mp4WebvttDecoder
import com.google.android.exoplayer2.text.webvtt.WebvttDecoder
import com.google.android.exoplayer2.util.MimeTypes
import com.lagradost.cloudstream3.R
@@ -19,7 +22,11 @@ import org.mozilla.universalchardet.UniversalDetector
import java.nio.ByteBuffer
import java.nio.charset.Charset
-class CustomDecoder : SubtitleDecoder {
+/**
+ * @param fallbackFormat used to create a decoder based on mimetype if the subtitle string is not
+ * enough to identify the subtitle format.
+ **/
+class CustomDecoder(private val fallbackFormat: Format?) : SubtitleDecoder {
companion object {
fun updateForcedEncoding(context: Context) {
val settingsManager = PreferenceManager.getDefaultSharedPreferences(context)
@@ -139,7 +146,7 @@ class CustomDecoder : SubtitleDecoder {
val inputString = getStr(inputBuffer)
if (realDecoder == null && !inputString.isNullOrBlank()) {
var str: String = inputString
- // this way we read the subtitle file and decide what decoder to use instead of relying on mimetype
+ // this way we read the subtitle file and decide what decoder to use instead of relying fully on mimetype
Log.i(TAG, "Got data from queueInputBuffer")
//https://github.com/LagradOst/CloudStream-2/blob/ddd774ee66810137ff7bd65dae70bcf3ba2d2489/CloudStreamForms/CloudStreamForms/Script/MainChrome.cs#L388
realDecoder = when {
@@ -148,8 +155,31 @@ class CustomDecoder : SubtitleDecoder {
(str.startsWith(
"[Script Info]",
ignoreCase = true
- ) || str.startsWith("Title:", ignoreCase = true)) -> SsaDecoder()
+ ) || str.startsWith("Title:", ignoreCase = true)) -> SsaDecoder(fallbackFormat?.initializationData)
str.startsWith("1", ignoreCase = true) -> SubripDecoder()
+ fallbackFormat != null -> {
+ when (val mimeType = fallbackFormat.sampleMimeType) {
+ MimeTypes.TEXT_VTT -> WebvttDecoder()
+ MimeTypes.TEXT_SSA -> SsaDecoder(fallbackFormat.initializationData)
+ MimeTypes.APPLICATION_MP4VTT -> Mp4WebvttDecoder()
+ MimeTypes.APPLICATION_TTML -> TtmlDecoder()
+ MimeTypes.APPLICATION_SUBRIP -> SubripDecoder()
+ MimeTypes.APPLICATION_TX3G -> Tx3gDecoder(fallbackFormat.initializationData)
+ MimeTypes.APPLICATION_CEA608, MimeTypes.APPLICATION_MP4CEA608 -> Cea608Decoder(
+ mimeType,
+ fallbackFormat.accessibilityChannel,
+ Cea608Decoder.MIN_DATA_CHANNEL_TIMEOUT_MS
+ )
+ MimeTypes.APPLICATION_CEA708 -> Cea708Decoder(
+ fallbackFormat.accessibilityChannel,
+ fallbackFormat.initializationData
+ )
+ MimeTypes.APPLICATION_DVBSUBS -> DvbDecoder(fallbackFormat.initializationData)
+ MimeTypes.APPLICATION_PGS -> PgsDecoder()
+ MimeTypes.TEXT_EXOPLAYER_CUES -> ExoplayerCuesDecoder()
+ else -> null
+ }
+ }
else -> null
}
Log.i(
@@ -246,28 +276,6 @@ class CustomSubtitleDecoderFactory : SubtitleDecoderFactory {
}
override fun createDecoder(format: Format): SubtitleDecoder {
- return CustomDecoder()
- //return when (val mimeType = format.sampleMimeType) {
- // MimeTypes.TEXT_VTT -> WebvttDecoder()
- // MimeTypes.TEXT_SSA -> SsaDecoder(format.initializationData)
- // MimeTypes.APPLICATION_MP4VTT -> Mp4WebvttDecoder()
- // MimeTypes.APPLICATION_TTML -> TtmlDecoder()
- // MimeTypes.APPLICATION_SUBRIP -> SubripDecoder()
- // MimeTypes.APPLICATION_TX3G -> Tx3gDecoder(format.initializationData)
- // MimeTypes.APPLICATION_CEA608, MimeTypes.APPLICATION_MP4CEA608 -> return Cea608Decoder(
- // mimeType,
- // format.accessibilityChannel,
- // Cea608Decoder.MIN_DATA_CHANNEL_TIMEOUT_MS
- // )
- // MimeTypes.APPLICATION_CEA708 -> Cea708Decoder(
- // format.accessibilityChannel,
- // format.initializationData
- // )
- // MimeTypes.APPLICATION_DVBSUBS -> DvbDecoder(format.initializationData)
- // MimeTypes.APPLICATION_PGS -> PgsDecoder()
- // MimeTypes.TEXT_EXOPLAYER_CUES -> ExoplayerCuesDecoder()
- // // Default WebVttDecoder
- // else -> WebvttDecoder()
- //}
+ return CustomDecoder(format)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt
index dc1bbba3..6f40e145 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/DownloadedPlayerActivity.kt
@@ -42,7 +42,7 @@ class DownloadedPlayerActivity : AppCompatActivity() {
R.id.global_to_navigation_player, GeneratorPlayer.newInstance(
LinkGenerator(
listOf(
- url
+ BasicLink(url)
)
)
)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/LinkGenerator.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/LinkGenerator.kt
index 1f242481..0b560857 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/LinkGenerator.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/LinkGenerator.kt
@@ -5,8 +5,15 @@ import com.lagradost.cloudstream3.mvvm.normalSafeApiCall
import com.lagradost.cloudstream3.utils.*
import java.net.URI
+/**
+ * Used to open the player more easily with the LinkGenerator
+ **/
+data class BasicLink(
+ val url: String,
+ val name: String? = null,
+)
class LinkGenerator(
- private val links: List,
+ private val links: List,
private val extract: Boolean = true,
private val referer: String? = null,
private val isM3u8: Boolean? = null
@@ -47,7 +54,7 @@ class LinkGenerator(
offset: Int
): Boolean {
links.amap { link ->
- if (!extract || !loadExtractor(link, referer, {
+ if (!extract || !loadExtractor(link.url, referer, {
subtitleCallback(PlayerSubtitleHelper.getSubtitleData(it))
}) {
callback(it to null)
@@ -57,11 +64,11 @@ class LinkGenerator(
callback(
ExtractorLink(
"",
- link,
- unshortenLinkSafe(link), // unshorten because it might be a raw link
+ link.name ?: link.url,
+ unshortenLinkSafe(link.url), // unshorten because it might be a raw link
referer ?: "",
Qualities.Unknown.value, isM3u8 ?: normalSafeApiCall {
- URI(link).path?.substringAfterLast(".")?.contains("m3u")
+ URI(link.url).path?.substringAfterLast(".")?.contains("m3u")
} ?: false
) to null
)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/LinearListLayout.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/LinearListLayout.kt
index 59a46264..affbcbb4 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/LinearListLayout.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/LinearListLayout.kt
@@ -7,13 +7,13 @@ import androidx.recyclerview.widget.RecyclerView
import com.lagradost.cloudstream3.mvvm.logError
fun RecyclerView?.setLinearListLayout(isHorizontal: Boolean = true) {
- if(this == null) return
+ if (this == null) return
this.layoutManager =
this.context?.let { LinearListLayout(it).apply { if (isHorizontal) setHorizontal() else setVertical() } }
?: this.layoutManager
}
-class LinearListLayout(context: Context?) :
+open class LinearListLayout(context: Context?) :
LinearLayoutManager(context) {
fun setHorizontal() {
@@ -24,7 +24,8 @@ class LinearListLayout(context: Context?) :
orientation = VERTICAL
}
- private fun getCorrectParent(focused: View): View? {
+ private fun getCorrectParent(focused: View?): View? {
+ if (focused == null) return null
var current: View? = focused
val last: ArrayList = arrayListOf(focused)
while (current != null && current !is RecyclerView) {
@@ -54,10 +55,17 @@ class LinearListLayout(context: Context?) :
linearSmoothScroller.targetPosition = position
startSmoothScroll(linearSmoothScroller)
}*/
-
override fun onInterceptFocusSearch(focused: View, direction: Int): View? {
val dir = if (orientation == HORIZONTAL) {
- if (direction == View.FOCUS_DOWN || direction == View.FOCUS_UP) return null
+ if (direction == View.FOCUS_DOWN || direction == View.FOCUS_UP) {
+ // This scrolls the recyclerview before doing focus search, which
+ // allows the focus search to work better.
+
+ // Without this the recyclerview focus location on the screen
+ // would change when scrolling between recyclerviews.
+ (focused.parent as? RecyclerView)?.focusSearch(direction)
+ return null
+ }
if (direction == View.FOCUS_RIGHT) 1 else -1
} else {
if (direction == View.FOCUS_RIGHT || direction == View.FOCUS_LEFT) return null
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt
index bdef14b5..5a3e28b4 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultFragment.kt
@@ -22,6 +22,7 @@ import androidx.core.view.isVisible
import androidx.core.widget.doOnTextChanged
import androidx.lifecycle.ViewModelProvider
import androidx.preference.PreferenceManager
+import androidx.recyclerview.widget.RecyclerView
import com.discord.panels.OverlappingPanelsLayout
import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipDrawable
@@ -531,6 +532,25 @@ open class ResultFragment : ResultTrailerPlayer() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ result_cast_items?.layoutManager = object : LinearListLayout(view.context) {
+ override fun onRequestChildFocus(
+ parent: RecyclerView,
+ state: RecyclerView.State,
+ child: View,
+ focused: View?
+ ): Boolean {
+ // Make the cast always focus the first visible item when focused
+ // from somewhere else. Otherwise it jumps to the last item.
+ return if (parent.focusedChild == null) {
+ scrollToPosition(this.findFirstCompletelyVisibleItemPosition())
+ true
+ } else {
+ super.onRequestChildFocus(parent, state, child, focused)
+ }
+ }
+ }.apply {
+ this.orientation = RecyclerView.HORIZONTAL
+ }
result_cast_items?.adapter = ActorAdaptor()
updateUIListener = ::updateUI
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt
index 2983b41d..46a8c9f6 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/result/ResultViewModel2.kt
@@ -3,6 +3,7 @@ package com.lagradost.cloudstream3.ui.result
import android.app.Activity
import android.content.*
import android.net.Uri
+import android.os.Build
import android.os.Bundle
import android.util.Log
import android.widget.Toast
@@ -1125,7 +1126,12 @@ class ResultViewModel2 : ViewModel() {
1L
}
- component = VLC_COMPONENT
+ // Component no longer safe to use in A13 for VLC
+ // https://code.videolan.org/videolan/vlc-android/-/issues/2776
+ // This will likely need to be updated once VLC fixes their documentation.
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
+ component = VLC_COMPONENT
+ }
putExtra("from_start", !resume)
putExtra("position", position)
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsAccount.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsAccount.kt
index f9627e46..1ef3cb55 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsAccount.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsAccount.kt
@@ -157,6 +157,28 @@ class SettingsAccount : PreferenceFragmentCompat() {
)
dialog.dismissSafe()
}
+
+ val displayedItems = listOf(
+ dialog.login_username_input,
+ dialog.login_email_input,
+ dialog.login_server_input,
+ dialog.login_password_input
+ ).filter { it.isVisible }
+
+ displayedItems.foldRight(displayedItems.firstOrNull()) { item, previous ->
+ item?.id?.let { previous?.nextFocusDownId = it }
+ previous?.id?.let { item?.nextFocusUpId = it }
+ item
+ }
+
+ displayedItems.firstOrNull()?.let {
+ dialog.create_account?.nextFocusDownId = it.id
+ it.nextFocusUpId = dialog.create_account.id
+ }
+ dialog.apply_btt?.id?.let {
+ displayedItems.lastOrNull()?.nextFocusDownId = it
+ }
+
dialog.text1?.text = api.name
if (api.storesPasswordInPlainText) {
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt
index 078419e2..ee262eec 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsGeneral.kt
@@ -57,6 +57,7 @@ fun getCurrentLocale(context: Context): String {
val appLanguages = arrayListOf(
/* begin language list */
Triple("", "العربية", "ar"),
+ Triple("", "ars", "ars"),
Triple("", "български", "bg"),
Triple("", "বাংলা", "bn"),
Triple("\uD83C\uDDE7\uD83C\uDDF7", "português brasileiro", "bp"),
@@ -76,11 +77,15 @@ val appLanguages = arrayListOf(
Triple("\uD83C\uDDEE\uD83C\uDDF1", "עברית", "iw"),
Triple("", "日本語 (にほんご)", "ja"),
Triple("", "ಕನ್ನಡ", "kn"),
+ Triple("", "한국어", "ko"),
+ Triple("", "latviešu valoda", "lv"),
Triple("", "македонски", "mk"),
Triple("", "മലയാളം", "ml"),
+ Triple("", "bahasa Melayu", "ms"),
Triple("", "Nederlands", "nl"),
Triple("", "norsk nynorsk", "nn"),
Triple("", "norsk bokmål", "no"),
+ Triple("", "ଓଡ଼ିଆ", "or"),
Triple("", "polski", "pl"),
Triple("\uD83C\uDDF5\uD83C\uDDF9", "português", "pt"),
Triple("\uD83E\uDD8D", "mmmm... monke", "qt"),
@@ -96,7 +101,7 @@ val appLanguages = arrayListOf(
Triple("", "اردو", "ur"),
Triple("", "Tiếng Việt", "vi"),
Triple("", "中文", "zh"),
- Triple("\uD83C\uDDF9\uD83C\uDDFC", "文言", "zh-rTW"),
+ Triple("\uD83C\uDDF9\uD83C\uDDFC", "正體中文(臺灣)", "zh-rTW"),
/* end language list */
).sortedBy { it.second.lowercase() } //ye, we go alphabetical, so ppl don't put their lang on top
diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt
index 7e60910d..045ed92d 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/extensions/ExtensionsFragment.kt
@@ -1,6 +1,5 @@
package com.lagradost.cloudstream3.ui.settings.extensions
-import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.DialogInterface
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt
index 9ca540e2..f6373dce 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/ExtractorApi.kt
@@ -52,7 +52,7 @@ data class ExtractorLinkPlayList(
)
-open class ExtractorLink(
+open class ExtractorLink constructor(
open val source: String,
open val name: String,
override val url: String,
@@ -62,7 +62,24 @@ open class ExtractorLink(
override val headers: Map = mapOf(),
/** Used for getExtractorVerifierJob() */
open val extractorData: String? = null,
+ open val isDash: Boolean = false,
) : VideoDownloadManager.IDownloadableMinimum {
+ /**
+ * Old constructor without isDash, allows for backwards compatibility with extensions.
+ * Should be removed after all extensions have updated their cloudstream.jar
+ **/
+ constructor(
+ source: String,
+ name: String,
+ url: String,
+ referer: String,
+ quality: Int,
+ isM3u8: Boolean = false,
+ headers: Map = mapOf(),
+ /** Used for getExtractorVerifierJob() */
+ extractorData: String? = null
+ ) : this(source, name, url, referer, quality, isM3u8, headers, extractorData, false)
+
override fun toString(): String {
return "ExtractorLink(name=$name, url=$url, referer=$referer, isM3u8=$isM3u8)"
}
@@ -227,6 +244,7 @@ val extractorApis: MutableList = arrayListOf(
XStreamCdn(),
StreamSB(),
+ Vidgomunimesb(),
StreamSB1(),
StreamSB2(),
StreamSB3(),
@@ -266,7 +284,6 @@ val extractorApis: MutableList = arrayListOf(
Uqload2(),
Evoload(),
Evoload1(),
- VoeExtractor(),
UpstreamExtractor(),
Tomatomatela(),
@@ -333,6 +350,24 @@ val extractorApis: MutableList = arrayListOf(
DesuOdvip(),
DesuDrive(),
+ Chillx(),
+ Watchx(),
+ Bestx(),
+ Keephealth(),
+ Sbnet(),
+ Sbasian(),
+ Sblongvu(),
+ Fembed9hd(),
+ StreamM4u(),
+ Krakenfiles(),
+ Gofile(),
+ Vicloud(),
+ Uservideo(),
+
+ Movhide(),
+ StreamhideCom(),
+ FileMoonIn(),
+ Moviesm4u(),
Filesim(),
FileMoon(),
FileMoonSx(),
@@ -348,6 +383,7 @@ val extractorApis: MutableList = arrayListOf(
Vidmoly(),
Vidmolyme(),
Voe(),
+ Tubeless(),
Moviehab(),
MoviehabNet(),
Jeniusplay(),
diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt
index 2902b76b..c18ff48f 100644
--- a/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt
+++ b/app/src/main/java/com/lagradost/cloudstream3/utils/VideoDownloadManager.kt
@@ -1388,7 +1388,7 @@ object VideoDownloadManager {
}
}
- if (link.isM3u8 || URI(link.url).path.endsWith(".m3u8")) {
+ if (link.isM3u8 || URL(link.url).path.endsWith(".m3u8")) {
val startIndex = if (tryResume) {
context.getKey(
KEY_DOWNLOAD_INFO,
@@ -1474,6 +1474,8 @@ object VideoDownloadManager {
if (connectionResult != null && connectionResult > 0) { // SUCCESS
removeKey(KEY_RESUME_PACKAGES, id.toString())
break
+ } else if (index == item.links.lastIndex) {
+ downloadStatusEvent.invoke(Pair(id, DownloadType.IsFailed))
}
}
} catch (e: Exception) {
diff --git a/app/src/main/res/layout/fragment_result_tv.xml b/app/src/main/res/layout/fragment_result_tv.xml
index a29dc192..5eacdbe2 100644
--- a/app/src/main/res/layout/fragment_result_tv.xml
+++ b/app/src/main/res/layout/fragment_result_tv.xml
@@ -199,17 +199,13 @@
android:id="@+id/result_back"
android:layout_width="30dp"
android:layout_height="30dp"
-
android:layout_gravity="center_vertical"
android:layout_marginEnd="10dp"
-
android:background="?android:attr/selectableItemBackgroundBorderless"
android:clickable="true"
android:contentDescription="@string/go_back"
-
android:focusable="true"
android:gravity="center_vertical"
-
android:nextFocusDown="@id/result_description"
android:src="@drawable/ic_baseline_arrow_back_24"
app:tint="?attr/white" />
@@ -385,8 +381,8 @@
@@ -423,11 +419,11 @@
@@ -568,6 +564,7 @@
android:layout_weight="1"
android:minWidth="250dp"
android:nextFocusLeft="@id/result_movie_progress_downloaded_holder"
+ android:nextFocusRight="@id/result_bookmark_button"
android:nextFocusDown="@id/result_resume_series_button_play"
android:text="@string/type_none"
android:visibility="visible" />
diff --git a/app/src/main/res/layout/homepage_parent_tv.xml b/app/src/main/res/layout/homepage_parent_tv.xml
index d0c88c39..9dcf0bae 100644
--- a/app/src/main/res/layout/homepage_parent_tv.xml
+++ b/app/src/main/res/layout/homepage_parent_tv.xml
@@ -2,33 +2,30 @@
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
\ No newline at end of file
diff --git a/app/src/main/res/layout/player_custom_layout.xml b/app/src/main/res/layout/player_custom_layout.xml
index 683a1077..54f92d1f 100644
--- a/app/src/main/res/layout/player_custom_layout.xml
+++ b/app/src/main/res/layout/player_custom_layout.xml
@@ -8,17 +8,6 @@
android:screenOrientation="landscape"
tools:orientation="vertical">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="match_parent"
+ android:background="@color/black_overlay" />
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:gravity="center"
+ android:shadowColor="@android:color/black"
+ android:shadowRadius="10.0"
+ android:textColor="@android:color/white"
+ android:textSize="30sp"
+ tools:text="+100" />
+
-
- android:nextFocusRight="@id/exo_ffwd"
-
- android:nextFocusUp="@id/player_go_back"
- android:nextFocusDown="@id/player_lock"
-
- android:src="@drawable/netflix_pause"
- app:tint="@color/white"
- tools:ignore="ContentDescription" />
-
+
+ android:layout_height="match_parent">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -->
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/player_custom_layout_tv.xml b/app/src/main/res/layout/player_custom_layout_tv.xml
index 405b606f..62b359b6 100644
--- a/app/src/main/res/layout/player_custom_layout_tv.xml
+++ b/app/src/main/res/layout/player_custom_layout_tv.xml
@@ -9,8 +9,9 @@
android:tag="television"
tools:orientation="vertical">
+
@@ -19,359 +20,365 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/player_gradient_tv" />
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
--->
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ android:layout_gravity="center"
-
+ android:clickable="false"
+ android:focusable="false"
+ android:focusableInTouchMode="false"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:indeterminate="true"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:visibility="visible" />
+ android:layout_gravity="bottom"
+ android:layout_marginBottom="20dp"
+ android:gravity="center"
+ android:orientation="horizontal"
+ android:paddingTop="4dp"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent">
-
-
-
-
+
+
+
+
+
+
+
-
-
-
+ android:layout_height="0dp"
+ android:tintMode="src_in"
+ app:tint="?attr/colorPrimaryDark"
+ tools:ignore="ContentDescription" />
+
-
+ android:layout_marginStart="64dp"
+ android:layout_marginEnd="64dp"
+ android:layout_marginBottom="10dp"
+ android:gravity="center_vertical"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent">
-
+
+ android:src="@drawable/netflix_pause"
+ app:tint="@color/player_button_tv"
+ tools:ignore="ContentDescription" />
-
+
+
- android:visibility="gone"
- app:icon="@drawable/ic_outline_subtitles_24"
- tools:visibility="visible" />
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml
index cfd761e3..c1f07d6c 100644
--- a/app/src/main/res/values-ar/strings.xml
+++ b/app/src/main/res/values-ar/strings.xml
@@ -119,16 +119,16 @@
وضع إيغنغرافييضيف خيار السرعة في المُشغلالسحب لتقديم
- إسحب إلى اليسار أو اليمين للتحكم في الوقت في مُشغل الفيديو
+ اسحب من جانب إلى آخر للتحكم في موضعك في مقطع فيديوالسحب لتغيير الإعدادات
- إسحب على الجانب الأيسر أو الأيمن لتغيير السطوع أو مستوى الصوت
+ مرر لأعلى أو لأسفل على الجانب الأيسر أو الأيمن لتغيير السطوع أو مستوى الصوتتشغيل الحلقة التالية تلقائيًاتبدأ الحلقة التالية عندما تنتهي الحاليةالنقر مرتان للتقديم للأمام أو للخلفالضغط مرتان لإيقاف مؤقت
- التحكم في مدى تقديم المُشغل
+ التحكم في مدى تقديم المُشغل(ثوان)إضغط مرتين على الجانب الأيمن أو الأيسر للتقديم للأمام أو للخلف
- إضغط في الوسط لإيقاف مؤقت
+ اضغط مرتين في المنتصف للتوقفاستخدم سطوع النظاماستخدم سطوع النظام في مُشغل التطبيق بدلاً من التراكب الداكنتحديث تقدم المشاهدة
@@ -155,7 +155,7 @@
تحديث الإضافات تلقائيًاتنزيل الإضافات تلقائيًاالتحديث التلقائي
- البحث تلقائيًا عن التحديثات الجديدة عند البداية
+ ابحث تلقائيا عن التحديثات الجديدة بعد بدء التطبيق.التحديث إلى الاصدارات التجريبية (بيتا)البحث عن التحديثات التجريبية بدلاً من الإصدارات الكاملة فقطغيت هاب
@@ -218,8 +218,8 @@
فيلممسلسلكرتون
- أنمي
- اوفا
+ أنيمي
+ أوفاتورنتوثائقيدراما آسيوية
@@ -342,7 +342,7 @@
الكلالحد الاقصيالحد الأدنى
- \@string/none
+ @string/noneالخطوط المحيطةالنمط المنخفضظل
@@ -366,7 +366,7 @@
تحميل من الانترنتالملف الذي تم تنزيلهرئيسي
- مساعد
+ ممثل مساعدالخلفيةمصدرعشوائي
@@ -525,12 +525,12 @@
اختر المكتبةالمتصفحمحدث (من الأحدث إلى الأقدم)
- يبدو أن هذه القائمة فارغة ، حاول التبديل إلى قائمة أخرى
+ هذه القائمة فارغة ، حاول التبديل إلى قائمة أخرى.التقييم (من الأعلى إلى الأدنى)التقييم (من الأدنى إلى الأعلى)الترتيب الأبجدي (من ي إلى أ)
- يبدو أن مكتبتك فارغة :(
-\nتسجيل الدخول إلى حساب مكتبة أو إضافة عروض إلى مكتبتك المحلية
+ مكتبتك فارغة :(
+\nقم بتسجيل الدخول على حساب مكتبة أو أضف عروضا إلى مكتبتك المحلية.محدث (من القديم إلى الجديد)فرز حسبافرز
@@ -557,8 +557,8 @@
مشترك في %sتجاوز مزود خدمة الإنترنتاسترجاع
- فشل الوصول إلى GitHub ، وتمكين وكيل jsdelivr.
+ تعذر الوصول إلى جيثب. تشغيل وكيل jsDelivr …تجاوز حظر GitHub باستخدام jsdelivr ، قد يتسبب في تأخير التحديثات لبضعة أيام.وكيل raw.githubusercontent.comجودة المشاهدة المفضلة (بيانات الجوال)
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-ars/strings.xml b/app/src/main/res/values-ars/strings.xml
new file mode 100644
index 00000000..42eba3cc
--- /dev/null
+++ b/app/src/main/res/values-ars/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml
index f1f512a1..0543a94e 100644
--- a/app/src/main/res/values-bg/strings.xml
+++ b/app/src/main/res/values-bg/strings.xml
@@ -1,5 +1,5 @@
-
+%s еп. %dАктьори: %s
@@ -105,7 +105,7 @@
Продължете да гледатеПремахванеПовече информация
- \@string/home_play
+ @string/home_playМоже да е необходим VPN, за да работи правилно този доставчикТози доставчик е торент, препоръчва се VPNМетаданните не се предоставят от сайта, зареждането на видео ще бъде неуспешно, ако не съществува на сайта.
@@ -223,8 +223,8 @@
ФилмСерияАнимационен филм
- \@string/anime
- \@string/ova
+ @string/anime
+ @string/ovaТорентДокументален филмАзиатска драма
@@ -497,4 +497,4 @@
Приложението ще се актуализира при изход от негоЗапочна АктуализацияПремахване от гледани
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-bn/strings.xml b/app/src/main/res/values-bn/strings.xml
index 7e0448d6..12752938 100644
--- a/app/src/main/res/values-bn/strings.xml
+++ b/app/src/main/res/values-bn/strings.xml
@@ -143,9 +143,9 @@
হালনাগাদ ও ব্যাকআপঅ্যাপ এর হালনাগাদ দেখানখুঁজতে সোয়াইপ করুন
- \@string/result_poster_img_des
- \@string/home_play
+ @string/result_poster_img_des
+ @string/home_playআগাতে ডবল ট্যাপ করুনআইজেনগ্রাভি মোডআপডেট শুরু হয়েছে
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-bp/strings.xml b/app/src/main/res/values-bp/strings.xml
index 2c2e1303..38424e56 100644
--- a/app/src/main/res/values-bp/strings.xml
+++ b/app/src/main/res/values-bp/strings.xml
@@ -1,5 +1,5 @@
-
+%s Ep %d
@@ -10,7 +10,7 @@
%dmPoster
- \@string/result_poster_img_des
+ @string/result_poster_img_desEpisode PosterMain PosterNext Random
@@ -108,7 +108,7 @@
Continue AssistindoRemoverMais Info
- \@string/home_play
+ @string/home_playUma VPN pode ser necessária para esse fornecedor funcionar corretamenteEsse fornecedor é um torrent, uma VPN é recomendadaMetadados não são oferecidas pelo site, o carregamento do video pode falhar se ele não existir no site.
@@ -222,8 +222,8 @@
FilmeSérieDesenho Animado
- \@string/anime
- \@string/ova
+ @string/anime
+ @string/ovaTorrentDocumentárioDrama Asiático
@@ -428,4 +428,4 @@
Começa o próximo episódio quando o atual terminaAtivar NSFW em fornecedores compatíveisFornecedores
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml
index e99e1010..16ceff2d 100644
--- a/app/src/main/res/values-cs/strings.xml
+++ b/app/src/main/res/values-cs/strings.xml
@@ -1,5 +1,5 @@
-
+%s Ep %d
@@ -103,7 +103,7 @@
Pokračovat ve sledováníOdebratDalší informace
- \@string/home_play
+ @string/home_playAby tento poskytovatel fungoval správně, budete možná potřebovat VPNTento poskytovatel je torrent, je doporučená VPNWeb neposkytnul žádná metadata, načítání videa selže, pokud na webu neexistuje.
@@ -122,16 +122,16 @@
Rychlostní režimPřidá do přehrávače možnost rychlostiPřejet pro posun
- Přejeďte prstem vlevo nebo vpravo pro ovládání času v přehrávači
+ Přejeďte prstem ze strany na stranu pro ovládání své pozice ve videuPřejet pro změnu nastavení
- Přejeďte prstem na levé nebo pravé straně pro změnu jasu nebo hlasitosti
+ Přejeďte prstem nahoru nebo dolů na levé nebo pravé straně pro změnu jasu nebo hlasitostiDvojité klepnutí pro posunDvojité klepnutí pro pozastavení
- Množství času k posunu
+ Množství času k posunu (sekundy)Klepněte dvakrát vpravo nebo vlevo pro posun vpřed nebo vzad
- Klepněte doprostřed pro pozastavení
+ Klepněte dvakrát doprostřed pro pozastaveníPoužít systémový jas
- V přehrávači použít systémov překrytí
+ V přehrávači použít systémový jas namísto tmavého překrytíAktualizovat postup sledováníAutomaticky synchronizovat postup sledování současné epizodyObnovit data ze zálohy
@@ -151,7 +151,7 @@
Nebude odesílat žádná dataZobrazit výplňové epizody u animeZobrazit aktualizace aplikace
- Při spuštění automaticky zkontrolovat nové aktualizace
+ Při spuštění aplikace automaticky zkontrolovat nové aktualizace.Aktualizovat na předběžná vydáníKontrolovat aktualizace předběžných vydání, místo normálních plných vydáníGitHub
@@ -211,8 +211,8 @@
FilmSeriálAnimovaný
- \@string/anime
- \@string/ova
+ Anime
+ OVATorrentDokumentAsijské drama
@@ -472,15 +472,15 @@
Nepodařilo se nainstalovat novou verzi aplikacePůvodníAplikace bude po ukončení aktualizována
- Vypadá to, že vaše knihovna je prázdná :(
-\nPřihlaste se k účtu v knihovně nebo přidejte pořady do místní knihovny
+ Vaše knihovna je prázdná :(
+\nPřihlaste se k účtu v knihovně nebo přidejte pořady do místní knihovny.Vybrat knihovnuHodnocení (od nejvyššího)Hodnocení (od nejnižšího)Abecedně (od Z do A)Seřadit podleŘazení
- Vypadá to, že tento seznam je prázdný, zkuste přepnout na jiný
+ Tento seznam je prázdný. Zkuste přepnout na jiný.Nalezen soubor bezpečného režimu!
\nDo odebrání souboru nebudeme načítat žádná rozšíření.Aktualizováno (od nejnovějšího)
@@ -548,9 +548,9 @@
Byla vydána epizoda %d!OdebíránoProxy raw.githubusercontent.com
- Nepodařilo se připojit ke GitHubu, povolování proxy jsdelivr.
+ Nelze se připojit k serveru GitHub. Zapínání proxy jsDelivr…Upřednostněná kvalita sledování (mobilní data)Vrátit zpět
- Obchází blokování GitHubu pomocí jsdelivr, může způsobit zpoždění aktualizací o několik dní.
+ Obchází blokování GitHubu pomocí jsDelivr. Může způsobit zpoždění aktualizací o několik dní.Obcházení ISP
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index c5e74a60..e0a9594c 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -41,7 +41,7 @@
Suche %s…Keine Daten vorhandenMehr Optionen
- Nächste Epsisode
+ Nächste EpisodeGenresTeilenIn Browser öffnen
@@ -115,7 +115,7 @@
WeiterschauenEntfernenMehr Infos
- \@string/home_play
+ @string/home_playDamit dieser Anbieter korrekt funktioniert, ist möglicherweise ein VPN erforderlichDieser Anbieter bietet Torrents an, ein VPN wird dringend empfohlenMetadaten werden nicht von der Website bereitgestellt, das Laden des Videos schlägt fehl, wenn sie auf der Website nicht vorhanden sind.
@@ -136,14 +136,14 @@
Wischen zum vor- und zurückspulenNach links oder rechts wischen, um die Zeit im Videoplayer zu steuernWischen, um Einstellungen zu ändern
- Links oder rechts wischen, um die Helligkeit oder Lautstärke zu ändern
+ Links oder rechts nach oben oder unten wischen, um die Helligkeit oder Lautstärke zu ändernNächste Episode automatisch abspielenNächste Episode wird gestartet, sobald die aktuelle Episode endetDoppeltippen zum vor- und zurückspulenDoppeltippen zum Pausieren
- Zeit für vor- und zurückspulen im Player
+ Zeit für vor- und zurückspulen im Player (Sekunden)Zweimal auf die rechte oder linke Seite tippen, um vor- oder zurückzuspulen
- In die Mitte tippen, um zu pausieren
+ Doppelt in die Mitte tippen, um zu pausierenSystemhelligkeit verwendenSystemhelligkeit anstelle eines dunklen Overlay im Player verwendenEpisodenfortschritt aktualisieren
@@ -166,7 +166,7 @@
Ausgewählte Videoqualität bei Suchergebnissen ausblendenAutomatische Plugin-UpdatesApp-Updates anzeigen
- Automatisches Suchen nach neuen Updates beim Start
+ Automatisches Suchen nach neuen Updates nach dem Start.Auf Vorabversionen updatenSuche nach Vorabversionen statt nur nach VollversionenGithub
@@ -246,7 +246,7 @@
In Browser wiedergebenLink kopierenAuto-Download
- Download-Mirror
+ Alternativer DownloadLinks neu ladenUntertitel herunterladenQualitätsanzeige
@@ -286,7 +286,7 @@
HaftungsausschlussAllgemeinZufalls-Button
- Zufallsbutton auf der Startseite anzeigen
+ Zeige Zufallsgenerator Schaltfläche auf der StartseiteAnbieter-SprachenApp-LayoutBevorzugte Medien
@@ -501,9 +501,9 @@
Alphabetisch (Z bis A)Bibliothek auswählenÖffnen mit
- Sieht aus, als wäre deine Bibliothek leer :(
-\nMelde dich mit einem Bibliothekskonto an oder füge Titel zu deiner lokalen Bibliothek hinzu
- Diese Liste scheint leer zu sein. Versuche, zu einer anderen Liste zu wechseln.
+ Deine Bibliothek ist leer :(
+\nMelde dich mit einem Bibliothekskonto an oder füge Titel zu deiner lokalen Bibliothek hinzu.
+ Diese Liste ist leer. Versuche zu einer anderen Liste zu wechseln.Datei für abgesicherten Modus gefunden!
\nBeim Start werden keine Erweiterungen geladen, bis die Datei entfernt wird.Player ausgeblendet - Betrag zum vor- und zurückspulen
@@ -519,14 +519,14 @@
StartNeustartenBevorzugte Videoqualität (mobile Daten)
- Umgehung der GitHub Sperre mit jsdelivr, kann zu einigen Tagen Verzögerung bei Updates führen.
+ Umgehung der GitHub Sperre mit jsdelivr. Kann zu einigen Tagen Verzögerung bei Updates führen.%s abonniert%s deabonniertEpisode %d erschienen!raw.githubusercontent.com Proxy
- GitHub kann nicht erreicht werden, der jsdelivr-Proxy wird aktiviert.
- Aktualisierung abonnierter Sendungen
+ GitHub konnte nicht erreicht werden. Der jsDelivr-Proxy wird aktiviert …
+ Abonnierte Serien werden aktualisiertRückgängigAbonniertISP-Umgehungen
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml
index 5e9dafd8..5e02924f 100644
--- a/app/src/main/res/values-el/strings.xml
+++ b/app/src/main/res/values-el/strings.xml
@@ -1,5 +1,5 @@
-
+CloudStreamΑρχικήΑναζήτηση
@@ -387,7 +387,7 @@
ΚλείσιμοΕκκαθάρισηΓλώσσα υποτίτλων
- \@string/home_play
+ @string/home_playΔεν έχουν παρασχεθεί μεταδεδομένα από τον ιστότοπο, η φόρτωση του βίντεο θα αποτύχει αν δεν υπάρχει στον ιστότοπο.Διπλό πάτημα για παύσηΜέγεθος αναζήτησης στο πρόγραμμα αναπαραγωγής
@@ -452,7 +452,7 @@
Ανάμεικτοι τίτλοι τέλους-30Κριτική
- \@string/ova
+ @string/ovaΕνημερώσεις εφαρμογήςΑντίγραφο ασφαλείαςExtensions
@@ -464,7 +464,7 @@
Προεπιλεγμένα%s %sΜέγεθος γραμματοσειράς
- \@string/anime
+ @string/animeΣύνδεσμοιΕμφάνισηΧαρακτηριστικά
@@ -508,4 +508,4 @@
\nΣυνδέσου σε έναν λογαριασμό που έχει βιβλιοθήκη, ή πρόσθεσε σειρές στην τοπική βιβλιοθήκη σουΒρέθηκε αρχείο Ασφαλούς Λειτουργίας!
\nΔεν πρόκειται να φορτωθούν extensions κατά το ξεκίνημα μέχρι να διαγραφεί το αρχείο.
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml
index 09e6941d..49f025d0 100644
--- a/app/src/main/res/values-eo/strings.xml
+++ b/app/src/main/res/values-eo/strings.xml
@@ -78,4 +78,4 @@
Rapido (%.2fx)Serĉi…Elŝuti
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index 18647ef8..d248044d 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -51,10 +51,10 @@
ElevadoUse esto si los subtítulos se muestran %d ms muy prontoUse esto si los subtítulos se muestran %d ms tarde
- Desliza el dedo hacia la izquierda o hacia la derecha para controlar el tiempo en el reproductor de video
+ Desliza el dedo de lado a lado para controlar la posición en un videoFiltrar por idioma de medios preferidoEliminar Closed Captions (CC) de los subtítulos
- Cantidad de tiempo de búsqueda en el reproductor (en segundos)
+ Cantidad de búsquedas del reproductor (segundos)Use el brillo del sistema en el reproductor de la app en lugar de una superposición oscuraResolución del reproductor de videoMPV
@@ -194,7 +194,7 @@
Continuar ViendoRemoverMás info
- \@string/home_play
+ @string/home_playUna VPN puede ser necesaria para que este proveedor funcione correctamenteEste proveedor es un torrent, se recomienda una VPNEl sitio no proporciona los metadatos, la carga del video fallará si no existe en el sitio.
@@ -205,16 +205,16 @@
Modo EigengravyDeslice para avanzar/retrocederDeslice para cambiar la configuración
- Deslice el dedo hacia la izquierda o hacia la derecha para cambiar el brillo o el volumen
+ Deslice hacia arriba o hacia abajo en el lado izquierdo o derecho para cambiar el brillo o el volumenToca dos veces para buscarTocar dos veces para pausarToque dos veces en el lado derecho o izquierdo para buscar hacia adelante o hacia atrás
- Toque en el medio para pausar
+ Toque dos veces en el medio para hacer una pausaUsar brillo del sistemaRestaurar datos desde el backupHacer copia de los datos (backup)Archivo de backup cargado
- Buscar automáticamente nuevas actualizaciones al inicio
+ Busque automáticamente nuevas actualizaciones después de iniciar la aplicación.Rehacer el proceso de configuración inicialMostrar episodio de relleno para AnimeReproducir Episodio
@@ -306,7 +306,7 @@
AspectoCaracterísticasBotón de Al azar
- Muestra un botón de reproducción \"al azar\" en la página de inicio
+ Mostrar el botón aleatorio en la página de iniciocuentaCerrar sesiónCambiar cuenta
@@ -363,8 +363,8 @@
PelículaSerieDibujo animado
- \@string/anime
- \@string/ova
+ Anime
+ OVATorrentDocumentalDrama asiático
@@ -498,19 +498,19 @@
Alfabéticamente (A a Z)NavegadorBiblioteca
- Parece que esta lista está vacía, intenta cambiar a otra
+ Esta lista está vacía. Intenta cambiar a otra.Alfabéticamente (Z a A)Seleccionar bibliotecaAbrir con
- Parece que tu biblioteca está vacía :(
-\nInicia sesión en una cuenta de biblioteca o añade series desde tu biblioteca local
+ Tu biblioteca está vacía :(
+\nRegístrate con una cuenta en la biblioteca o agrega los títulos a tu biblioteca local.¡Se encontró un archivo en modo seguro!
\nNo cargar ninguna extensión al inicio hasta que se elimine el archivo.
- Jugadora mostrada - buscar cantidad
- Jugadora oculta - buscar cantidad
+ Reproductor visible - buscar cantidad
+ Reproductor oculto - buscar cantidadAndroid TV
- La cantidad de búsqueda utilizada cuando la jugadora es visible
- La cantidad de búsqueda utilizada cuando el jugador está oculto
+ Tiempo de búsqueda usado (en segundos) cuando el reproductor está visible
+ Tiempo de búsqueda usado (en segundos) cuando el reproductor está ocultoPararFallóRegistro
@@ -524,9 +524,9 @@
Actualizando los programas suscritos¡Episodio %d publicado!Proxy raw.githubusercontent.com
- No se ha podido acceder a GitHub, activando el proxy jsdelivr.
- Evita el bloqueo de GitHub usando jsdelivr, puede causar que las actualizaciones se retrasen unos días.
+ No se ha podido acceder a GitHub. Activando el proxy jsDelivr…
+ Omite el bloqueo de GitHub mediante jsDelivr. Lo que puede provocar que las actualizaciones se retrasen unos días.RevertirISP BypassesCalidad de visualización preferida (Datos móviles)
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml
index 81853674..2e4b89b3 100644
--- a/app/src/main/res/values-fa/strings.xml
+++ b/app/src/main/res/values-fa/strings.xml
@@ -33,4 +33,16 @@
%dساعت %dدقیقه%dدقیقهپوستر اصلی
-
\ No newline at end of file
+ تورنت
+ آزاد
+ مستند ها
+ انیمیشن ویدیویی اصلی
+ حداکثر
+ فیلمها
+ سریال های تلویزیونی
+ درام های آسیایی
+ انیمه
+ کارتونها
+ استفاده شده
+ برنامه
+
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 18255b3b..36c1cf1f 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -1,5 +1,5 @@
-
+CloudStreamAccueilRechercher
@@ -130,7 +130,7 @@
Nouvelle mise à jour trouvée !
\n%s -> %sÉpisode spécial
- Qualité de visionnage préférée
+ Qualité de visionnage préférée (WiFi)Taille de la mémoire cacheÉtendreNon-responsabilité
@@ -240,7 +240,7 @@
Continuer à regarderRetirerPlus d\'informations
- \@string/home_play
+ @string/home_playUn VPN peut être nécessaire pour que ce fournisseur fonctionne correctementCe fournisseur est un torrent, un VPN est recommandéLes métadonnées ne sont pas fournies par le site, le chargement de la vidéo échouera si elles n\'existent pas sur le site.
@@ -259,16 +259,16 @@
Mode EigengravyAjout d\'une option de vitesse dans le lecteurBalayez pour chercher
- Balayez vers la gauche ou la droite pour contrôler le temps dans le lecteur vidéo
+ Swipez d\'un côté à l\'autre pour contrôler votre position dans une vidéoBalayez pour modifier les paramètresGlissez sur le côté gauche ou droit pour modifier la luminosité ou le volumeLecture automatique du prochain épisodeDémarrer l\'épisode suivant lorsque l\'épisode en cours se termineDouble tape pour chercherDouble tape pour mettre en pause
- Player seek amount
+ Montant recherché par le joueur (Seconde)Tapez deux fois sur le côté droit ou gauche pour aller en avant ou en arrière
- Tapez au milieu pour mettre en pause
+ Tapez deux fois au milieu pour mettre en pauseUtiliser la luminosité du systèmeUtiliser la luminosité du système dans le lecteur d\'applications au lieu du sombreMise à jour de la progression de la veille
@@ -385,8 +385,8 @@
4KWeb-30
- \@string/anime
- \@string/ova
+ @string/anime
+ OAVNSFW%s %sFiltrez par langue préférée
@@ -496,9 +496,9 @@
Note (basse à haute)Note (haut à bas)Alphabétique (A à Z)
- On dirait que votre bibliothèque est vide :(
-\nConnectez-vous à un compte ou ajoutez des séries à votre bibliothèque locale
- Il semble que cette liste soit vide, essayez d\'en choisir une autre
+ Votre bibliothèque est vide :(
+\nConnectez-vous sur un compte de bibliothèque ou ajoutez des spectacles à votre bibliothèque locale.
+ Cette liste est vide. Essayez d\'en changer.Android TVTrié parAlphabétique (Z à A)
@@ -508,4 +508,26 @@
Mis à jour (ancien vers nouveau)Fichier du mode sans échec trouvé !
\nAucune extension ne sera chargée au démarrage avant que le fichier ne soit enlevé.
-
\ No newline at end of file
+ Arrêter
+ Revenir à
+ Enregistrer
+ Qualité de visionnage préférée (données mobiles)
+ Abonné à %s
+ Démarrer
+ Test des fournisseurs
+ Réussi
+ Désabonné de %s
+ Redémarrer
+ Abonné
+ raw.githubusercontent.com Proxy
+ Contournements de FAI
+ L\'épisode %d est sorti !
+ Échouer
+ Le montant de la recherche utilisé lorsque le joueur est caché
+ Updating subscribed shows
+ Contourne le blocage de GitHub en utilisant jsDelivr. Les mises à jour peuvent être retardées de quelques jours.
+ La quantité de recherche utilisée lorsque le joueur est visible
+ Joueur représenté - Montant de la recherche
+ Joueur caché - Montant de la recherche
+ Impossible d\'accéder à GitHub. Activation du proxy jsDelivr…
+
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index f33a2336..1401b3d8 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -1,5 +1,5 @@
-
+रफ्तार (%.2fx)नया अपडेट आया है!
@@ -146,4 +146,13 @@
%dh %dm%dmविज्ञापन
-
\ No newline at end of file
+ अगला रैंडम
+ वापस जाओ
+ पोस्टर
+ पृष्ठभूमि का पूर्वावलोकन करें
+ प्रदाता बदलें
+ Cast: %s
+ मुख्य पोस्टर
+ एपिसोड का पोस्टर
+ %s Ep %d
+
diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml
index b623ec5d..754b7a3a 100644
--- a/app/src/main/res/values-hr/strings.xml
+++ b/app/src/main/res/values-hr/strings.xml
@@ -1,5 +1,5 @@
-
+%d %s | %s%s • %s
@@ -119,7 +119,7 @@
Nastavite s gledanjemMakniViše informacija
- \@string/home_play
+ @string/home_playZa ispravan rad ovog pružatelja usluga može biti potreban VPNOvaj pružatelj usluga je torrent, preporučuje se VPNStranica ne daje metapodatke, učitavanje videozapisa neće uspjeti ako ne postoji na stranici.
@@ -138,16 +138,16 @@
Eigengravy načinDodaje opciju brzine u playeruPrijeđi prstom za traženje
- Prijeđi prstom ulijevo ili udesno za kontrolu vremena u videoplayeru
+ Prijeđite prstom ulijevo ili udesno kako biste kontrolirali playerKlizni za promjenu postavki
- Prijeđi prstom ulijevo ili udesno za promjenu svjetline ili glasnoće
+ Kliznite prstom ulijevo ili udesno za promjenu svjetline ili glasnoćeAutomatski započni sljedeću epizoduZapočne sljedeću epizodu kad trenutna završiDodirni dvaput za traženjeDodirni dvaput za pauziranje
- Iznos preskakanja u playeru
+ Iznos preskakanja u playeru (Sekunde)Dvaput dodirni desnu ili lijevu stranu ekrana za pomicanje naprijed ili natrag
- Dodirni u sredinu zaslona za pauziranje
+ Dodirnite dvaput u sredinu zaslona za pauziranjeKoristi svijetlinu u sustavuKoristi svjetlinu sustava u playeru aplikacija umjesto tamnog preklopaAžuriraj napredak gledanja
@@ -173,7 +173,7 @@
Sakrij odabranu kvalitetu videozapisa u rezultatima pretraživanjaAutomatsko ažuriranje dodatakaPrikaži ažuriranja aplikacije
- Automatski traži nova ažuriranja pri pokretanju aplikacije
+ Automatski traži nova ažuriranja nakon pokretanja aplikacije.Ažuriranje na predizdanjaTražite ažuriranja prije izdanja umjesto samo potpunih izdanjaGithub
@@ -238,8 +238,8 @@
FilmSerijaCrtić
- \@string/anime
- \@string/ova
+ Anime
+ OVATorrentDokumentaracAzijska drama
@@ -299,7 +299,7 @@
Any legal issues regarding the content on this application should be taken up with the actual file hosts and providers themselves as we are not affiliated with them. In case of copyright infringement, please directly contact the responsible parties or the streaming websites. The app is purely for educational and personal use. CloudStream 3 does not host any content on the app, and has no control over what media is put up or taken down. CloudStream 3 functions like any other search engine, such as Google. CloudStream 3 does not host, upload or manage any videos, films or content. It simply crawls, aggregates and displayes links in a convenient, user-friendly interface. It merely scrapes 3rd-party websites that are publicly accessable via any regular web browser. It is the responsibility of user to avoid any actions that might violate the laws governing his/her locality. Use CloudStream 3 at your own risk.OpćenitoRandom gumb
- Prikaži random gumb na početnoj stranici
+ Prikaži gumb za slučajni odabir reprodukcija na početnoj straniciJezici pružatelja uslugaIzgled aplikacijePreferirani mediji
@@ -526,9 +526,9 @@
Abecedno (Ž do A)Odaberite bibliotekuOtvori sa
- Čini se da vam je biblioteka prazna :(
-\nPrijavite se na račun biblioteke ili dodajte serije u svoju lokalnu biblioteku
- Čini se da je ova lista prazna, pokušajte se prebaciti na drugu
+ Vaša je biblioteka prazna :(
+\nPrijavite se na račun biblioteke ili dodajte emisije u svoju lokalnu biblioteku.
+ Ova je lista prazna. Pokušajte se prebaciti na jednu drugu listu.Pronađena datoteka sigurnog načina rada!
\nNe učitavaju se ekstenzije pri pokretanju dok se datoteka ne ukloni.Prikazan player- iznos preskakanja
@@ -543,7 +543,7 @@
NeuspješnoStopTest pružatelja usluga
- Ažuriram pretplaćene serije
+ Ažuriranje pretplaćenih emisijaEpizoda %d izbačena!PretplaćenoPretplaćen na %s
@@ -551,6 +551,7 @@
VraćanjeISP zaobilazniceraw.githubusercontent.com Proxy
- Neuspješno dohvaćanje GitHuba, omogućavanje jsdelivr proxyja.
- Zaobilazi blokiranje GitHuba pomoću jsdelivr, može uzrokovati odgode ažuriranja za nekoliko dana.
-
\ No newline at end of file
+ Neuspješno dohvaćanje GitHuba. Uključuje se jsdelivr proxy …
+ Zaobilazi blokiranje GitHuba koristeći jsdelivr. Može odgoditi ažuriranja za nekoliko dana.
+ Preferirana kvaliteta gledanja (podatkovna mobilna mreža)
+
diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml
index 5b42fd6a..46407f76 100644
--- a/app/src/main/res/values-hu/strings.xml
+++ b/app/src/main/res/values-hu/strings.xml
@@ -57,7 +57,7 @@
Megnyitás böngészőbenBetöltés kihagyásaPoster
- \@string/result_poster_img_des
+ PoszterNézésBefejezveKésőbb megnézés
@@ -101,17 +101,17 @@
Körvonal színHáttér színAblak szín
- Edge típus
+ Él típusaBetűtípusKeresés típusok szerintKeresés szolgáltatók szerint
- %d Banán a fejlesztőknek
+ %d Banán adva a fejlesztőknekNyelvek letöltéseTartsa lenyomva az alapértelmezett érték visszaállításáhozBetűtípusok importálása %sEltávolításTöbb információ
- \@string/home_play
+ @string/home_playVPN szükséges lehet ehhez a szolgáltató megfelelő működéséhezEz a szolgáltató torrent, VPN ajánlottLeírás
@@ -172,11 +172,11 @@
OVAEgyebekSorozat
- \@string/anime
+ @string/animeForráshibaNSFWRajzfilm
- \@string/ova
+ @string/ovaÉlőadásNSFWVideó
@@ -269,10 +269,231 @@
ForrásBevezető intro átugrásaNe mutasd újra
- Az %d epizód ekkor jelenik meg:
+ A(z) %d epizód ekkor jelenik meg:SzüneteltetveElvetveMinőségi jelzésSzinkroncímkeAlcímke
-
\ No newline at end of file
+ Műveletek
+ Random gomb
+ DNS HTTPS-en keresztül
+ Böngésző
+ Android TV
+ kézmozdulatok
+ frissítés kihagyása
+ Alkalmazásfrissítések
+ Szolgáltatók
+ Funkciók
+ Előnyben részesített videóminőség (mobilinternet)
+ Videolejátszó cím max karakterek
+ Nem sikerült elérni a GitHubot, a jsdelivr proxy engedélyezése.
+ Bővítmények
+ Általános
+ Felirat kódolása
+ Elsődleges szín
+ Alkalmazástéma
+ Szolgáltató teszt
+ Sikertelen
+ Problémákat okoz, ha túl magasra van állítva az alacsony tárhellyel rendelkező eszközökön, például az Android TV-n.
+ Korhatáros tartalmak engedélyezése a támogatott szolgáltatóknál
+ Elrendezés
+ raw.githubusercontent.com Proxy
+ A lejátszó funkciói
+ Előnyben részesített videóminőség (WiFi-n)
+ Hasznos az internetszolgáltató blokkjainak megkerüléséhez
+ Elrendezés
+ Sikerült
+ NGINX szerver URL-címe
+ Szinkronizált/feliratozott animék megjelenítése
+ Alapértelmezettek
+ Megjelenít egy gombot a Kezdőlapon, amely egy véletlenszerű filmet vagy TV sorozatot választ a Kezdőlapról
+ Letöltési útvonal
+ Gyorsítótár
+ Szolgáltatók nyelvei
+ Napló
+ Könyvtár
+ internetszolgáltató-kikerülések
+ Videó buffer méret
+ Videó buffer hossza
+ Videolejátszó felbontása
+ Videó gyorsítótár a lemezen
+ Biztonsági mentés
+ Feliratok
+ Előnyben részesített média
+ Hivatkozások
+ Videó és kép gyorsítótár törlése
+ A jsdelivr használatával a GitHub blokkolása megkerülhető. Néhány nappal késleltetheti a frissítéseket.
+ Összeomlást okoz, ha túl magasra van állítva a kevés memóriával rendelkező eszközökön, például az Android TV-n.
+ Betöltés az internetről
+ Videósávok
+ Alkalmazás újraindításkor
+ Az összes bővítményt kikapcsoltuk egy összeomlás miatt, hogy segítsünk megtalálni a problémát okozót.
+ Szerzők
+ Támogatott
+ Alkalmazásfrissítés letöltése…
+ Frissítve (újabbtól a régebbihez)
+ Úgy tűnik, a könyvtárad üres :(
+\nJelentkezz be egy könyvtár fiókba, vagy adj hozzá műsorokat a helyi könyvtárodhoz
+ Úgy tűnik, ez a lista üres, próbálj meg egy másikra váltani
+ Max
+ 4K
+ SDR
+ Fiók létrehozása
+ pelda.com
+ Feliratok szinkronizálása
+ Alkalmazásfrissítés telepítése…
+ Túl sok szöveg. Nem lehet a vágólapra menteni.
+ bővítmény
+ Nincs felirat késleltetés
+ Leírás
+ Frissítés
+ /\?\?
+ Árnyék
+ Filmelőzetes
+ Mit szeretnél látni
+ Minden %s már letöltött
+ Először telepítse a bővítményt
+ Webböngésző
+ Kinézet
+ Alkalmazás elrendezés
+ Szinkronizálás
+ Nem sikerült bejelentkezni a következőként: %s
+ Min
+ 1000 ms
+ Ajánlott
+ Fő
+ Érvénytelen adatok
+ Link a streamhez
+ Nem sikerült betölteni: %s
+ Elkezdődött a(z) %d %s letöltése…
+ Töltse le az összes bővítményt ebből a tárolóból\?
+ Biztonságos mód bekapcsolva
+ Méret
+ MPV
+ Alkalmazás nem található
+ PackageInstaller
+ Rendezés e szerint:
+ Feliratkozott a következőre: %s
+ MenőWeboldalam
+ DVD
+ %d plugin frissítve
+ Értékelés: %s
+ Előzmények törlése
+ Nem
+ Feliratkozva
+ Használd ezt, ha a feliratok %d ms-sel korábban jelennek meg.
+ Lejátszó
+ Felbontás és cím
+ Előnyben részesített videolejátszó
+ Értékelés (alacsonyabbtól a magasabbig)
+ Felirat késleltetése
+ Blu-ray
+ Érvénytelen azonosító
+ Videók megtekintése ezeken a nyelveken
+ Előző
+ %d%s letöltve
+ Batch letöltés
+ bővítmények
+ Legacy
+ Értékelés (magasabbtól az alacsonyig)
+ Feliratkozott műsorok frissítése
+ Megjelent a(z) %d epizód!
+ SD
+ Nyelvkód (hu)
+ /%d
+ Emelt
+ HD
+ HLS lejátszási lista
+ VLC
+ Nem sikerült telepíteni az alkalmazás új verzióját
+ %s hitelesítve
+ Körvonal
+ Betöltés fájlból
+ HDR
+ Az alkalmazás megjelenésének módosítása, hogy az megfeleljen az eszközödnek
+ Összeomlás jelentése
+ Nyilvános lista
+ Állapot
+ Összefoglaló
+ %d / 10
+ Megnyitás a következővel
+ Minden felirat nagybetűs
+ Intro
+ Leiratkozott a következőről: %s
+ Bloat eltávolítása a feliratokról
+ Szűrés előnyben részesített médianyelv szerint
+ Biztos vagy benne, hogy ki akarsz lépni\?
+ Rendezés
+ Visszaállít
+ Érvénytelen URL
+ Zárt feliratok eltávolítása a feliratokból
+ 18+
+ Ez az összes tároló bővítményt is törli
+ A CloudStream alapértelmezés szerint nem telepített webhelyeket. A webhelyeket a tárolókból kell telepítenie.
+\n
+\nA Sky UK Limited agyatlan DMCA letiltása miatt 🤮 nem tudjuk az alkalmazásban linkelni az adattár oldalát.
+\n
+\nCsatlakozz a Discordunkhoz vagy keress online.
+ Verzió
+ Megjelölés megtekintettként
+ Eltávolítás a megnézettek közül
+ Web
+ Következő
+ UHD
+ Felbontás
+ Újraindítás
+ Stop
+ Nincs letöltve: %d
+ Hiba
+ Webhely eltávolítása
+ hello@vilag.com
+ Töltse le a használni kívánt webhelyek listáját
+ Közösségi tárolók megtekintése
+ %s (Letiltva)
+ Hangsávok
+ Összeomlási információk megtekintése
+ Belső lejátszó
+ Minden nyelv
+ %s hozzáadva
+ Bővítmény törölve
+ Nyelv
+ Fiók
+ Extrák
+ Tároló törlése
+ %d letiltva
+ Igen
+ Az alkalmazás kilépéskor frissül
+ Betűrendben (A-tól a Z-ig)
+ Frissítve (régebbitől az újabbig)
+ jelszó123
+ AzÉnMenőFelhasználónevem
+ 127.0.0.1
+ Fiókváltás
+ Fiók hozzáadása
+ Árvíztűrő tükörfúrógép
+ Letöltött fájl
+ Támogató
+ Háttér
+ Forrás
+ Lepj meg
+ Hamarosan…
+ Kész
+ Bővítmények
+ Tároló hozzáadása
+ Tároló neve
+ Tárhely URL címe
+ Bővítmény betöltve
+ Bővítmény letöltve
+ Közreműködők
+ Betűrendben (Z-től az A-ig)
+ Könyvtár kiválasztása
+ Biztonságos módú fájl található!
+\nNem tölt be semmilyen kiterjesztést indításkor, amíg a fájl el nem lesz távolítva.
+ Normál
+ %s betöltve
+ Beállítás kihagyása
+ HQ
+ %d letöltve
+ Start
+
diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml
index 84179352..a8c6a197 100644
--- a/app/src/main/res/values-in/strings.xml
+++ b/app/src/main/res/values-in/strings.xml
@@ -1,5 +1,5 @@
-
+%s Ep %dPemeran: %s
@@ -101,7 +101,7 @@
Lanjutkan MenontonHapusInfo lebih lanjut
- \@string/home_play
+ @string/home_playSebuah VPN mungkin diperlukan agar provider ini bisa bekerja dengan benarProvider ini adalah sebuah torrent, VPN direkomendasikanMetadata tidak disediakan oleh situs, loading video akan gagal jika tidak ada di situs.
@@ -120,14 +120,14 @@
Mode EigengravyMenambahkan opsi kecepatan di pemutarGeser untuk mengubah waktu
- Geser ke kiri atau kanan untuk mengontrol waktu di pemutar video
+ Geser dari sisi ke sisi untuk mengontrol posisi dalam videoGeser untuk mengubah pengaturan
- Geser ke sisi kiri atau kanan untuk mengubah pencerahan atau volume
+ Geser ke atas atau ke bawah di sisi kiri atau kanan untuk mengubah kecerahan atau volumeTekan dua kali untuk mengubah waktuTekan dua kali untuk menjeda
- Jumlah pengubah waktu pemutar
+ Jumlah pengubah waktu pemutar (Detik)Tekan dua kali di sisi kanan atau kiri untuk mengubah waktu ke depan atau ke belakang
- Tekan di tengah untuk menjeda
+ Tekan dua kali di tengah untuk menjedaGunakan pencerahan sistemGunakan pencerahan sistem di pemutar aplikasi dari pada hamparan gelapUpdate progres tontonan
@@ -149,7 +149,7 @@
Tidak mengirim dataTampilkan episode filler untuk animeTampilkan update aplikasi
- Secara otomatis mencari update terbaru saat aplikasi dibuka
+ Secara otomatis mencari update terbaru setelah aplikasi dibuka.Update ke prarilisHanya mencari update prarilis daripada rilis penuhGithub
@@ -209,8 +209,8 @@
MovieSeriKartun
- \@string/anime
- \@string/ova
+ Anime
+ OVATorrentFilm DokumenterDrama Asia
@@ -243,7 +243,7 @@
Jangan tunjukkan lagiSkip Update iniUpdate
- Kualitas tontonan yang lebih diinginkan
+ Kualitas tontonan yang lebih diinginkan (WIFI)Karakter maksimal judul pemutar videoResolusi pemutar videoUkuran buffer video
@@ -515,7 +515,7 @@
BrowserPilih pustakaYahh daftar pustaka kamu kosong :(
-\nMasuk ke akun pustaka atau tambah perlihatkan ke lokal pustaka kamu
+\nMasuk ke akun pustaka atau tambah perlihatkan ke lokal pustaka kamu.PustakaUrutkan berdasarUrutkan
@@ -526,7 +526,7 @@
Abjad (A ke Z)Abjad (Z ke A)Buka dengan
- Yahh daftar ini kosong, coba ganti ke yang lain
+ Yahh daftar ini kosong. Coba ganti ke yang lain.Mode aman file ditemukan!
\nTidak memuat ekstensi pada startup sampai berkas dihapus.Sembunyikan Pemutaran - Geser
@@ -547,8 +547,9 @@
Berhenti berlangganan di %sEpisode %d telah rilis!raw.githubusercontent.com Proksi
- Gagal mencapai GitHub, mengaktifkan proksi jsdelivr.
- Bypass pemblokiran Github menggunakan JSDeliVR, dapat menyebabkan pembaruan tertunda beberapa hari.
+ Tidak dapat menjangkau GitHub. Mengaktifkan proksi jsDelivr…
+ Melewati pemblokiran GitHub menggunakan jsDelivr. Dapat menyebabkan pembaruan tertunda beberapa hari.Bypass ISPPulihkan
-
\ No newline at end of file
+ Nonton dengan kualitas yang di inginkan (Data Seluler)
+
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index d6bdc204..6dca2e3a 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -1,5 +1,5 @@
-
+%s Ep %dCast: %s
@@ -108,7 +108,7 @@
Continua a guardareRimuoviPiù info
- \@string/home_play
+ @string/home_playPotrebbe essere necessaria una VPN per far funzionare correttamente questo providerQuesto provider è un torrent, si raccomanda una VPNI metadati non sono forniti dal sito, il caricamento del video fallirà se non esiste sul sito.
@@ -127,16 +127,16 @@
Modalità EigengravyAggiungi opzione velocità nel playerScorri per mandare avanti/indietro
- Scorri a sinistra o a destra per controllare il tempo del video
+ Scorri da un lato all\'altro per controllare la tua posizione in un videoScorri per cambiare le impostazioni
- Passa il dito sul lato sinistro o destro per cambiare la luminosità o il volume
+ Scorri il dito sul lato sinistro o destro per cambiare la luminosità o il volumeRiproduci automaticamente l\'episodio successivoAvvia l\'episodio successivo al termine di quello in corsoDoppio tocco per andare avanti/indietroDoppio tocco per mettere in pausaTocca due volte il lato destro o sinistro dello schermo per mandare avanti o indietro il video
- Tocca due volte il centro dello schermo per mettere in pausa il video
- Player seek
+ Tocca due volte al centro per mettere in pausa
+ Intervallo di ricerca lettore (secondi)Utilizzare la luminosità del sistemaUtilizzare la luminosità del sistema al posto di una sovrapposizione scura
@@ -162,7 +162,7 @@
Nascondi la qualità video selezionata dai risultati di ricercaAggiorna automaticamente i pluginMostra gli aggiornamenti dell\'app
- Cerca automaticamente nuovi aggiornamenti all\'avvio
+ Cerca automaticamente nuovi aggiornamenti dopo aver avviato l\'app.Aggiorna alle prereleaseCerca per aggiornamenti alle prerelease invice di cercare solo le release completeGitHub
@@ -265,7 +265,7 @@
Non mostrare di nuovoSalta questo aggiornamentoAggiorna
- Risoluzione preferita
+ Qualità di visualizzazione preferita (WiFi)Limita i caratteri del titolo nel playerRisoluzione video playerDimensione cache video
@@ -519,13 +519,13 @@
Aggiornato (Da vecchio a nuovo)Alfabetico (A - Z)Alfabetico (Z - A)
- Sembra che la tua libreria sia vuota :(
-\nAccedi a un account di libreria o aggiungi degli show alla tua libreria locale
+ La tua libreria è vuota :(
+\nAccedi a un account di libreria o aggiungi degli show alla tua libreria locale.Seleziona libreriaApri conLibreriaOrdina
- Sembra che questa lista sia vuota, prova a passare a un\'altra
+ Questo elenco è vuoto. Prova a passare a un altro.File \"safe mode\" trovato!
\nAll\'avvio non sarà caricata alcuna estensione finchè il file non verrà rimosso.Quantità di ricerca usata quando il player è nascosto
@@ -544,10 +544,11 @@
Disiscritto da %sIscrittoIscritto a %s
- Impossibile contattare GitHub, abilitazione proxy jsdelivr avviata.
- Bypassa il blocco di GitHub utilizzando jsdelivr, potrebbe causare un ritardo di alcuni giorni.
+ Impossibile raggiungere GitHub. Attivazione proxy jsDelivr…
+ Aggira il blocco di GitHub usando jsDelivr. Potrebbe causare un ritardo degli aggiornamenti di alcuni giorni.Baypass ISPRipristinaAggiornando shows a cui sei iscrittoL\'episodio %d è stato rilasciato!
-
\ No newline at end of file
+ Qualità di visualizzazione preferita (Dati mobili)
+
diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml
index 11cf77ce..50e96c7c 100644
--- a/app/src/main/res/values-iw/strings.xml
+++ b/app/src/main/res/values-iw/strings.xml
@@ -116,7 +116,7 @@
כתוביות כרומקאסטממשיך ניגון בנגן מינימלי מעל ישומים אחריםכתוביות
- \@string/home_play
+ @string/home_playהיסטוריהמורשתלא
@@ -164,8 +164,8 @@
משומשסדרת טלוויזיהסדרות/סרטים מצוירים
- \@string/אנימה
- \@string/אנימציית וידאו מקורית
+ @string/anime
+ @string/ovaדרמה אסייתיתכרומקאסט את הפרקכרומקאסט את המראה
@@ -506,4 +506,4 @@
אלפביתי (ת\' עד א\')פתח עםנראה שהרשימה הזו ריקה, נסו לעבור לרשימה אחרת
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index a3d1d434..5fcc14da 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -182,4 +182,23 @@
アップデートを確認作品名アプリのアップデートをインストール中…
-
\ No newline at end of file
+ リポジトリURL
+ 字幕ディレイ
+ 登録済み
+ ストリームへのリンク
+ 字幕遅延なし
+ リポジトリ削除
+ このリポジトリからすべてのプラグインをダウンロードしますか?
+ 視聴状態を設定
+ 字幕を同期
+ リポジトリを追加
+ リポジトリ名
+ CloudStreamはデフォルトでサイトがインストールされていません。リポジトリからサイトをインストールする必要があります。
+\n
+\nSky UK Limitedによる無脳なDMCAテイクダウンのため🤮、アプリ内でリポジトリサイトをリンクすることができません。
+\n
+\n私たちのDiscordに参加するか、オンラインで検索してください。
+ バックグラウンドをプレビュー
+ ライブストリームの再生
+ プロバイダーの変更
+
diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml
index 242653be..399aafb1 100644
--- a/app/src/main/res/values-kn/strings.xml
+++ b/app/src/main/res/values-kn/strings.xml
@@ -125,4 +125,11 @@
ಡೌನ್ಲೋಡ್ ಪ್ರಾರಂಭವಾಗಿದೆಡೌನ್ಲೋಡ್ ರದ್ದುಗೊಳಿಸಲಾಗಿದೆಮುಂದಿನ ರಾಂಡಮ್
-
\ No newline at end of file
+ ಮುಂದಕ್ಕೆ ಹೋಗಲು ಸ್ವೈಪ್ ಮಾಡಿ
+ ವೀಡಿಯೊದಲ್ಲಿ ನಿಮ್ಮ ಸ್ಥಾನವನ್ನು ನಿಯಂತ್ರಿಸಲು ಅಕ್ಕಪಕ್ಕಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ
+ ಮುಂದಿನ ಸಂಚಿಕೆಯನ್ನು ಆಟೋ ಪ್ಲೇ ಮಾಡಿ
+ ಮುಂದೂಡಲು ಅಥವಾ ಇಂದೂಡಲು ಎರಡು ಬಾರಿ ಟ್ಯಾಪ್ ಮಾಡಿ
+ Brightness ಅಥವಾ volume ಬದಲಾಯಿಸಲು ಎಡ ಅಥವಾ ಬಲಭಾಗದಲ್ಲಿ ಮೇಲಕ್ಕೆ ಅಥವಾ ಕೆಳಕ್ಕೆ ಸ್ಲೈಡ್ ಮಾಡಿ
+ ಈಗಿನ ಎಪಿಸೋಡ್ ಮುಗಿದಾಗ ಮುಂದಿನ ಎಪಿಸೋಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ
+ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಸ್ವೈಪ್ ಮಾಡಿ
+
diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml
new file mode 100644
index 00000000..74c05d07
--- /dev/null
+++ b/app/src/main/res/values-ko/strings.xml
@@ -0,0 +1,532 @@
+
+
+ 출연: %s
+ 에피소드 %d이(가) 공개됩니다
+ 포스터
+ 에피소드 포스터
+ 메인 포스터
+ 다음 랜덤
+ 뒤로가기
+ 소스 변경
+ 미리보기 배경
+ 속도 (%.2fx)
+ 평점: %.1f
+ 새로운 업데이트!
+\n%s -> %s
+ %d분
+ CloudStream
+ CloudStream에서 재생
+ 홈
+ 다운로드
+ 설정
+ 검색…
+ 검색 %s…
+ 데이터 없음
+ 기타 옵션
+ 다음 에피소드
+ 장르
+ 공유
+ 브라우저에서 열기
+ 브라우저
+ 로딩 건너뛰기
+ 로딩중…
+ 시청
+ 보류
+ 시청 완료
+ 포기
+ 시청 예정
+ 없음
+ 다시보기
+ 영화 재생
+ 예고편 재생
+ 토렌트 재생
+ 소스
+ 자막
+ 연결 재시도…
+ 뒤로가기
+ 에피소드 재생
+ 다운로드
+ 파일 재생
+ 계속 다운로드
+ 다운로드 일시정지
+ 자동 오류 보고 비활성화
+ 상세 정보
+ 닫기
+ 재생
+ 정보
+ 시청 상태 설정
+ 저장
+ 재생 속도
+ 글자 색깔
+ 외곽선 색깔
+ 배경 색깔
+ 창 색깔
+ 가장자리 타입
+ 자막 높이
+ 폰트
+ 폰트 크기
+ 다운로드됨
+ 다운로드중
+ 다운로드 일시정지
+ 다운로드 시작
+ 다운로드 실패
+ 다운로드 취소
+ 다운로드 완료
+ 업데이트 시작
+ 링크 로딩 오류
+ 내부 저장공간
+ 자동 선택 언어
+ 다운로드 언어
+ 자막 언어
+ 길게 눌러 기본값으로 재설정
+ 다음에서 폰트 가져오기 %s
+ 계속 시청
+ 제거
+ -30
+ %s 에피소드 %d
+ 포스터
+ %d일 %d시간 %d분
+ %d시간 %d분
+ %d분
+ 검색
+ 파일 삭제
+ 제거
+ 업데이트 및 백업
+ 백업
+ 더빙
+ 자막
+ 취소
+ 북마크 필터
+ 북마크
+ 제거
+ 적용
+ 복사
+ 닫기
+ 자막 설정
+ 소스로 검색
+ 로그
+ 이 소스가 제대로 작동하려면 VPN이 필요할 수 있습니다
+ 이 소스는 토렌트이므로 VPN을 사용하는 것이 좋습니다
+ 메타데이터는 사이트별로 제공하지 않으며, 메타데이터가 사이트에 없으면 동영상 로딩이 실패합니다.
+ 설명
+ 플레이어 자막 설정
+ Chromecast 자막
+ Chromecast 자막 설정
+ 배속 모드
+ 플레이어에 속도 옵션을 추가합니다
+ 스와이프하여 탐색
+ 좌우로 스와이프하여 동영상 위치 제어하기
+ 스와이프하여 설정 변경
+ 왼쪽 또는 오른쪽으로 밀어서 밝기 또는 볼륨을 변경합니다
+ 다음 에피소드 자동 재생
+ 현재 에피소드가 끝나면 다음 에피소드를 시작합니다
+ 두 번 탭하여 탐색
+ 두 번 탭하여 일시정지
+ 플레이어 탐색 시간 (초)
+ 가운데를 두 번 탭하여 일시중지
+ 시스템 밝기 사용
+ 어두운 오버레이 대신 앱 플레이어의 시스템 밝기를 사용합니다
+ 시청 진행 상황 업데이트
+ 현재 에피소드 진행 상황을 자동으로 동기화합니다
+ 백업에서 데이터 복원
+ 데이터 백업
+ 파일에서 데이터를 복원하지 못했습니다 %s
+ 저장된 데이터
+ 저장소 권한이 없습니다. 다시 시도해 주세요.
+ 백업 중 오류 %s
+ 검색
+ 라이브러리
+ 계정
+ 소스별로 구분된 검색 결과를 제공합니다
+ 예고편 보기
+ Kitsu에서 포스터 보기
+ 검색 결과에서 선택한 동영상 품질 숨기기
+ 플러그인 자동 다운로드
+ 플러그인 자동 업데이트
+ 추가된 저장소에서 아직 설치되지 않은 모든 플러그인을 자동으로 설치합니다.
+ 앱 업데이트 표시
+ 앱을 시작한 후 새 업데이트를 자동으로 검색합니다.
+ 미리보기로 업데이트
+ 정식 릴리즈 대신 미리보기 업데이트만 검색합니다
+ 일부 휴대폰은 새 패키지 설치 프로그램을 지원하지 않습니다. 업데이트가 설치되지 않으면 레거시 옵션을 사용해 보세요.
+ 같은 개발자가 만든 라이트 노벨 앱
+ 같은 개발자가 만든 애니메이션 앱
+ Discord에 참여하기
+ 개발자에게 바나나 주기
+ 바나나 줌
+ 앱 언어
+ 링크를 찾을 수 없음
+ 클립보드에 링크 복사됨
+ 에피소드 재생
+ 기본값으로 재설정
+ 죄송합니다, 애플리케이션이 충돌했습니다. 버그 보고서가 익명으로 개발자에게 전송됩니다
+ 에피소드
+ %d-%d
+ 진행중
+ 시청 완료
+ 상태
+ 년
+ 평점
+ +30
+ %s가 영구 삭제됩니다
+\n정말 삭제하시겠습니까\?
+ %d분
+\n남음
+ 사이트
+ 시간
+ 개요
+ 대기중
+ 자막 없음
+ 기본
+ 남음
+ 사용됨
+ 앱
+ 영화
+ TV 시리즈
+ 카툰
+ 애니
+ 토렌트
+ Chromecast 미러링
+ 앱에서 재생
+ %s에서 재생
+ 브라우저에서 재생
+ 링크 복사
+ 자동 다운로드
+ 다운로드 미러
+ 링크 새로고침
+ 자막 다운로드
+ 화질 탭
+ 더빙 탭
+ 자막 탭
+ 제목
+ 업데이트 확인
+ 잠금
+ 크기 조정
+ 소스
+ 오프닝 건너뛰기
+ 이 업데이트 건너뛰기
+ 선호하는 화질 (WiFi)
+ 선호하는 화질 (모바일 데이터)
+ 동영상 플레이어 해상도
+ 동영상 버퍼 크기
+ 동영상 및 이미지 캐시 지우기
+ DNS over HTTPS
+ GitHub에 연결할 수 없습니다. jsDelivr 프록시를 켜는 중…
+ jsDelivr을 사용하여 GitHub 차단을 우회합니다. 업데이트가 며칠 지연될 수 있습니다.
+ 복제 사이트
+ 사이트 삭제
+ 다른 URL을 사용하여 기존 사이트의 복제본을 추가합니다
+ 다운로드 경로
+ 캐시
+ Android TV
+ 제스처
+ 자막
+ 레이아웃
+ 기본
+ 일반
+ 플레이어 기능
+ 기능
+ 소스 언어
+ 앱 레이아웃
+ 선호하는 미디어
+ 지원되는 공급업체에서 19금 사용 설정
+ 자막 인코딩
+ 소스
+ 소스 테스트
+ 레이아웃
+ 자동
+ TV 레이아웃
+ 휴대폰 레이아웃
+ 에뮬레이터 레이아웃
+ 기본 색상
+ 앱 테마
+ 포스터 제목 위치
+ 이메일
+ IP
+ 로그인
+ 계정 전환
+ 계정 추가
+ 계정 생성
+ 트래커 추가
+ 추가 %s
+ 동기화
+ %d / 10
+ /\?\?
+ /%d
+ %s 인증됨
+ 다음에 로그인할 수 없음 %s
+ 없음
+ 보통
+ 전부
+ 최대
+ 최소
+ 윤곽선
+ 그림자
+ 자막 동기화
+ 1000 ms
+ 자막 딜레이
+ 자막이 %d ms 너무 일찍 표시되는 경우, 이 옵션을 사용하세요
+ 주연
+ 조연
+ 출연
+ 소스
+ 랜덤
+ 포스터 이미지
+ 제목
+ Cam
+ Cam
+ Blu-ray
+ WP
+ DVD
+ 4K
+ SD
+ 해상도 및 제목
+ 해상도
+ 잘못된 ID
+ 잘못된 데이터
+ 잘못된 URL
+ 오류
+ 자막에서 선택 캡션 제거
+ 선호하는 미디어 언어로 필터링
+ 예고편
+ 다음
+ 이전
+ 설정 건너뛰기
+ 기기에 맞게 앱 모양 변경하기
+ 확장 기능
+ 버전
+ 18+
+ 다운로드 시작 %d %s…
+ 다운로드 %d %s
+ 모든 %s가 이미 다운로드되었습니다
+ 일괄 다운로드
+ 플러그인
+ 플러그인
+ 이렇게 하면 모든 저장소의 플러그인도 삭제됩니다
+ 저장소 삭제
+ 사용하려는 사이트 목록 다운로드
+ 다운로드됨: %d
+ CloudStream에는 기본적으로 설치된 사이트가 없습니다. 저장소에서 사이트를 설치해야 합니다.
+\n
+\nSky UK Limited의 무분별한 DMCA 조치로 인해 🤮 앱에서 저장소 사이트를 연결할 수 없습니다.
+\n
+\nDiscord에 가입하거나 온라인에서 검색하세요.
+ 커뮤니티 저장소 보기
+ 공개 목록
+ 모든 자막 대문자화
+ 이 저장소에서 모든 플러그인을 다운로드하시겠습니까\?
+ %s (사용불가)
+ 저장소 추가
+ 저장소 이름
+ 저장소 URL
+ 플러그인이 로드됨
+ 플러그인 다운로드
+ 플러그인 삭제됨
+ 로드할 수 없음 %s
+ 오디오 트랙
+ 동영상 트랙
+ 재시작 시 적용
+ 안전 모드 켜기
+ 충돌로 인해 문제를 일으키는 확장 프로그램을 찾는 데 도움이 되도록 모든 확장 프로그램이 사용 중지되었습니다.
+ 충돌 정보 보기
+ 언어
+ 에피소드 %d 공개!
+ Picture-in-picture
+ 플레이어 크기 조정 버튼
+ 다른 앱 위에 있는 미니어처 플레이어에서 재생을 계속합니다
+ 충돌에 관한 데이터만 전송
+ 검은색 테두리 제거
+ 오른쪽 또는 왼쪽을 두 번 탭하여 앞뒤로 탐색하기
+ 자막
+ 로드된 백업 파일
+ 정보
+ 고급 검색
+ 데이터를 보내지 않음
+ 설정 프로세스 다시 실행
+ APK 인스톨러
+ Github
+ 소스 오류
+ 이 소스는 크롬캐스트를 지원하지 않습니다
+ 시즌 없음
+ 시즌
+ 아시아 드라마
+ 시즌
+ 삭제
+ %s %d%s
+ 파일 삭제
+ 일시정지
+ 에피소드
+ 에피소드
+ %d %s
+ 에피소드를 찾을 수 없음
+ 시작
+ 실패
+ 평점
+ 평점: %s
+ 평점 (높음에서 낮음으로)
+ 평점 (낮음에서 높음으로)
+ 19금
+ 다큐멘터리
+ 라이브 방송
+ 19금
+ 기타
+ OVA
+ 아시아 드라마
+ 라이브 방송
+ 동영상
+ 포스터의 UI 요소 전환
+ 영화
+ 카툰
+ 토렌트
+ 다큐멘터리
+ 렌더러 오류
+ 시리즈
+ 애니
+ OVA
+ 원격 오류
+ 다운로드 오류, 저장 권한 확인
+ Chromecast 에피소드
+ 예기치 않은 플레이어 오류
+ 다시 표시하지 않음
+ 업데이트를 찾을 수 없음
+ 업데이트
+ raw.githubusercontent.com 프록시
+ 동영상 버퍼 길이
+ 저장소에 동영상 캐시
+ Android TV와 같이 메모리가 부족한 디바이스에서 너무 높게 설정하면 충돌이 발생할 수 있습니다.
+ 화면 크기에 맞춤
+ Android TV와 같이 저장 공간이 부족한 기기에서 너무 높게 설정하면 문제가 발생할 수 있습니다.
+ NGINX 서버 URL
+ 확대
+ 링크
+ ISP 차단을 우회하는 데 유용합니다
+ 화면 맞춤
+ 더빙/자막 애니메이션 표시
+ 거부
+ ISP 우회
+ 앱 업데이트
+ 확장 기능
+ 로그아웃
+ 사이트 URL
+ 비밀번호
+ 계정
+ 사용자 이름
+ 언어 코드 (ko)
+ 사이트 이름
+ %s %s
+ 자막이 %d ms 너무 늦게 표시되는 경우, 사용하세요
+ 자막 지연 없음
+ 다운로드한 파일
+ 파일에서 불러오기
+ 추천
+ 인터넷에서 불러오기
+ 로드됨 %s
+ 공개 예정…
+ Cam
+ HD
+ TS
+ 플레이어
+ HDR
+ TC
+ 충돌 보고
+ 완료
+ 다운로드되지 않음: %d
+ HQ
+ UHD
+ 이 언어로 된 동영상 보기
+ SDR
+ Web
+ 비활성화됨: %d
+ 사이즈
+ 제작자
+ 무엇을 보고 싶으신가요
+ 상태
+ %d 플러그인 업데이트
+ 재시작
+ 정지
+ 소개
+ 유형
+ 먼저 확장 프로그램을 설치하세요
+ 웹 브라우저
+ 앱을 찾을 수 없음
+ 모든 언어
+ 건너뛰기 %s
+ 오프닝
+ 엔딩
+ 혼합 엔딩
+ 혼합 오프닝
+ 크레딧
+ 소개
+ 기록 삭제
+ 기록
+ 오프닝/엔딩 시 건너뛰기 팝업 표시
+ 텍스트가 너무 많습니다. 클립보드에 저장할 수 없습니다.
+ 시청에서 삭제
+ 정말 종료하시겠습니까\?
+ 네
+ 아니요
+ 앱 업데이트 다운로드 중…
+ 앱 업데이트 설치 중…
+ 새 버전의 앱을 설치할 수 없습니다
+ 레거시
+ 패키지 인스톨러
+ 앱 종료시 업데이트됩니다
+ 정렬 기준
+ 정렬
+ 업데이트됨 (새로움에서 오래된 순)
+ 업데이트 (오래됨에서 새로운 순)
+ 알파벳순 (A에서 Z)
+ 알파벳순 (Z에서 A)
+ 다음으로 열기
+ 라이브러리가 비어 있습니다 :(
+\n라이브러리 계정으로 로그인하거나 로컬 라이브러리에 프로그램을 추가하세요.
+ 안전 모드 파일을 찾았습니다!
+\n파일이 제거될 때까지 시작 시 확장 프로그램을 로드하지 않습니다.
+ HLS 재생목록
+ 내부 플레이어
+ MPV
+ 선호하는 동영상 플레이어
+ VLC
+ 라이브러리 선택
+ 웹 동영상 캐스트
+ 이 목록이 비어 있습니다. 다른 목록으로 전환해 보세요.
+ 필러
+ 라이브 스트리밍 재생
+ 스트림
+ 유형을 사용하여 검색
+ 개발자에게 %d 바나나 줌
+ 바나나를 주지 않음
+ 상세 정보
+ @string/home_play
+ 플롯을 찾을 수 없음
+ 설명을 찾을 수 없음
+ Logcat 🐈 표시
+ 애니메이션용 필러 에피소드 표시
+ 통과
+ 계속
+ 동영상 플레이어 제목 최대 글자 수
+ 표시된 플레이어 - 빨리 감기 및 되감기 초
+ 플레이어가 보일 때 사용되는 탐색량
+ 플레이어 숨김 - 빨리 감기 및 되감기 초
+ 플레이어가 숨겨져 있을 때 사용되는 탐색량
+ 동작
+ 외형
+ 랜덤 버튼
+ 홈페이지에 랜덤 버튼 표시
+ 포스터 아래에 제목을 이동
+ 내려감
+ 올라감
+ 다람쥐 헌 쳇바퀴에 타고파
+ 자막에서 부풀림 제거
+ 엑스트라
+ 스트림 링크
+ 트랙
+ 레퍼러
+ 요약
+ 시청함으로 표시
+ 되돌리기
+ 구독한 프로그램 업데이트
+ 구독중
+ 구독 %s
+ 구독 취소 %s
+
diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml
new file mode 100644
index 00000000..ddd39942
--- /dev/null
+++ b/app/src/main/res/values-lv/strings.xml
@@ -0,0 +1,532 @@
+
+
+ Plakāts
+ %s Ep %d
+ Cast: %s
+ Plakāts
+ Epizodes plakāts
+ Galvenais plakāts
+ Nākamais random
+ Iet atpakaļ
+ Nomainīt dvēju
+ Apskatīt background
+ Ātrums (%.2fx)
+ Lidzīgi: %.1f
+ Jauns atjauninājums atrasts!
+\n%s -> %s
+ %d galvenais
+ Claudstream
+ Atskaņo ar cloudstream
+ Mājas
+ Meklēt
+ Meklēt %s…
+ Nav datu
+ Vairāk opcijas
+ Nākamā epizode
+ Internets
+ Izlaist ladešanos
+ Lādējas…
+ Skaties
+ Aizturēts
+ Pabeigts
+ Atmests
+ Plāno skatīties
+ Neviena
+ Atkārtoti skatities
+ Palaist Filmu
+ Palaist Trelleri
+ Palaist Livestreamu
+ Skatities Torrentu
+ Devēji
+ Subtitri
+ Atkārtot pieslēgumu…
+ Iet atpakaļ
+ Palaist epizodi
+ Ieladēt
+ Lādēšana pauzēta
+ Lādēšana sakās
+ Ielādēt neizdevās
+ Ielādēšana atcelta
+ Pabeidza ieladēt
+ Atjauninājums sakās
+ Skaties
+ Kļūda padejot linkus
+ Iekšējā atmiņa
+ Dub
+ Dzēst failu
+ Palaist failu
+ Atsākt ielādi
+ Pauzēt ielādi
+ Atslēgt automātisko kļūdu ziņošanu
+ Vairāk informācijas
+ Slēpt
+ Atskaņot
+ Informācija
+ Filtra bookmarks
+ Bookmarks
+ Noņemt
+ Ieliec skatīšanās statusu
+ Izmantot
+ Atcelt
+ Kopēt
+ Saglabāt
+ Atskaņošanas ātrums
+ Subtitru iestādijumi
+ Apkārt krāsa
+ Backgrounds krāsa
+ Līga krāsa
+ Stūra tips
+ Fonts
+ Fonta lielums
+ Meklēt izmantojot devējus
+ Meklēt izmantojot tipus
+ %d Banāni iedoti veidotājiem
+ Episode %d būs izlaista
+ Filtrs
+ Ieladētas
+ Meklēt…
+ Settingi
+ Žanrs
+ Dalities
+ Atvērt internetā
+ Ieladēts
+ Lādējas
+ Aizvērt
+ Sub
+ Nav banāni iedoti
+ Subtitru augstums
+ Iztīrīt
+ Teksta krāsa
+ Automātiski-iestādīt valodu
+ %dh %dm
+ %dm
+ %dd %dh %dm
+ Ielādēt valodas
+ Subtitru valoda
+ Tūri lai restartētu uz sākumu
+ Importēt fontus ieliekot iekšā %s
+ Turpini skatīties
+ Noņemt
+ Vairāk informācijas
+ @string/home_play
+ VPNs varētu būt vajadzīgs lai šis devējs strādātu pareizi
+ Šis devējs ir Torrents vpn ir rekomendēts
+ Dati nav doti no saites, video lādēšanas neizdosies ja neiksestē saitē.
+ Apraksts
+ Nav apraksts atrasts
+ Apraksts nav atrasts
+ Radīt Logcat 🐈
+ Log
+ Bilde bildē
+ Turpina spēlēt mazā lodziņā virs aplikācijām
+ Players izmēra poga
+ Noņemt melnās malas
+ Subtitri
+ Players subtitru iestādijumi
+ Chromecast subtitri
+ Chromecast subtitru iestāfijumi
+ Eigengravy Mode
+ Pievieno atskaņošanas ātrumu playerim
+ Novelc lai paradītu
+ Novelc no māla lidz malai lai pozicionētu video
+ Novēlu lai mainītu iestādījums
+ Novēlu uz augšu vai apakšu pa labi un pa kreisi lai nomainītu gaišumu un skaņu
+ Automātiski nākamo epizodi
+ Sākt nākamo epizodi kad šis bridzas
+ Divreiz uzpied lai paslēptu
+ Divreiz uzpied lai pauzētu
+ Players meklēšanas daudzums (sekundes)
+ Uzpied divreiz pa labi vai kreisi lai palaistu atpakaļ vai uz priekšu
+ Uzpied divreiz vidū lai pauzētu
+ Lietot sistēmas gaišums
+ Lietot sistēmas gaišumu aplikācijas playerī nevis tumšunu
+ Atjaunināt skatīšanos progresu
+ Automātiski sync savu pašreizējo epizodes progresu
+ Atgūt datus no backupa
+ Saglabāt datus
+ Ieladētie atgūtie faili
+ Neizdevās restaurēt datus no faila %s
+ Dati saglabāti
+ Krātuves atļaujas nav. Lūdzu mēģiniet vēlreiz.
+ Kļūda meiģinot saglabāt %s
+ Meklēt
+ Library
+ Konts
+ Atjaunināt un saglabāt
+ Informācija
+ Advancēta meklēšana
+ Dod tev meklēšanas rezultātus citus no devēja
+ Tikai sūtīt datus no kļudām
+ Nesutīt datus
+ Radīt fillera epizodi priekš animē
+ Radīt feel
+ Radīt plakātu no kitsu
+ Slēpt izvēlētos video kvalitāti meklēšanas rezultātus
+ Automātiski papildinājumu atjauninājumi
+ Automātiski ielādēt papildinājumus
+ Automātiski instalēt visus neinstalētos papildinājumus no glabātavas.
+ Radīt aplikācijas atjauninājumus
+ Automātiski meklēt jaunus atjauninājumus kad palaiž aplikāciju.
+ Atsākt uzstādīšanas procesu
+ Atjaunināt uz priekšizlaišanu
+ Dažu telefoni nepieņem jauno aplikāciju instaletāju. Meiģiniet veco opciju ja nevar stjaunināt.
+ Noveles aplikācija no šiem izstrādātājiem
+ Anime aplikāciju no tiem pašiem izstradatājiem
+ Ienāc discordā
+ Iedot banānu izstrādātājiem
+ Iedotie banāni
+ Aplikācijas valoda
+ Šim devējam nav Chromecast pieņemšana
+ Nav linku strastu
+ Links kopēts cliobordā
+ Restartēt uz parasto value
+ Sezona
+ %s %d%s
+ Nav sezonas
+ Epizode
+ Epizodes
+ %d-%d
+ %d %s
+ S
+ E
+ Epizodes netika atrastas
+ Dzēsti faili
+ Dzēst
+ Pauzēt
+ Sākt
+ Neizdevās
+ Nokārtojāt
+ Atsākt
+ -30
+ +30
+ Šis pilnibā dzesīs %s
+\nEsat parliecināts\?
+ %dm
+\natlikušas
+ Pabeigts
+ Statuss
+ gads
+ Reitings
+ Ilgums
+ Saite
+ Synopsis
+ Gaida
+ Lietotie
+ Aplikācija
+ Filmas
+ Seriāli
+ Animācija
+ Anime
+ Torrenti
+ Dokumentārija
+ OVA
+ Āzijas Drāma
+ Livestreami
+ NSFW
+ Citi
+ Filmas
+ Sērijas
+ Animācija
+ Anime
+ OVA
+ Torrenti
+ Documentarijas
+ Āzijas drāma
+ Livestreami
+ NSFW
+ Video
+ Devēja kļūda
+ Remote kļūda
+ Negaidīta atskaņotāja kļūda
+ Ielādēšanas kļūda, pārbaudi atmiņas atļauju
+ Chromecast epizode
+ Chromecast morror
+ Palaist aplikācijā
+ Atskaņot uekšā %s
+ Atskaņot internetā
+ Kopēt linku
+ Automātiski ielādēt
+ Ielādēt spoguli
+ Pārlādēt saites
+ Ielādēt subtitrus
+ Kvalitāte
+ Dub lable
+ Subtirti
+ Nosaukums
+ Render kļūda
+ Pārbaudīt atjauninājumus
+ Slēgt
+ Mainīt lielumu
+ Devējs
+ Izlaist OP
+ Nerādīt atkal
+ Izlaist šo atjauninājumu
+ Atjauninājums
+ Izvēlētā skatīšanās kvalitāte (WiFi)
+ Video players nosaukuma maksimālie burti
+ Video atskaņotāja kvalitāte
+ Video buffer izmērs
+ Video buffering garums
+ Video atkritne diskā
+ Atskaņotājs rāda - seek smount
+ Meklēšanas summa, kas tiek izmantota, kad spēlētājs ir redzams
+ Atskaņotājs paslēpts — meklēšanas summa
+ Izraisa avārijas, ja ierīcēs ar mazu atmiņu ir iestatīta pārāk augsta vērtība, piemēram, Android TV.
+ Izdevīgs lai izlaistu ISO aizturi
+ raw.githubusercontent.com Proxy
+ Apiet GitHub bloķēšanu, izmantojot jsdelivr. Tādēļ atjauninājumi var aizkavēties par dažām dienām.
+ Klonēt saiti
+ Noņemt saiti
+ Pievienojiet esošas vietnes klonu ar citu URL
+ Ielādēšanas ceļš
+ NGINX servera URL
+ Radīt Dubbed/Subbed Anime
+ Ietilpt ekranā
+ Atruna
+ ISP Izlaists
+ Links
+ Aplikācijas atjauninājumus
+ Dublējums
+ Papildinājumi
+ Akcijas
+ Atkritne
+ Android TV
+ Žesti
+ Atskaņošanas funkcijas
+ Subtitri
+ Iskats
+ Parasts
+ Izskats
+ Funkcijas
+ Ģenerāls
+ Randomā poga
+ Rādīt izlases pogu mājaslapā
+ Devēja valodas
+ Aplikācijas izskats
+ Izvēlētā media
+ Iespējojiet NSFW atbalstītajiem pakalpojumu sniedzējiem
+ Subtitru kodējums
+ Devēji
+ Devēju tests
+ Izskats
+ Automātiski
+ Televizora izskats
+ Telefona izskats
+ Emulators izskats
+ Plakāta virsraksta lokācija
+ Parole123
+ MansStilīgaisNosaukums
+ Sveiki@pasaule.com
+ 127.0.0.1
+ ManaForšāSaite
+ Piemērs.com
+ Valodas kods (lv)
+ Konts
+ Iziet
+ Ieiet
+ Mainīt kontu
+ Pievienot kontu
+ Veidot kontu
+ Pievienot izsekošanu
+ Pievienot %s
+ Sync
+ Lidzīgi
+ %d / 10
+ /\?\?
+ /%d
+ %s autentificēts
+ Nevarēja ieiet %s
+ Nekas
+ Normāls
+ Viss
+ Maksimālais
+ Minimālais
+ Apkartlinija
+ Depresija
+ Ēna
+ Paugstināts
+ Sync subs
+ 1000 ms
+ Subtitru pslēninājums
+ Izmantojiet šo, ja subtitri tiek rādīti %d ms pārāk agri
+ Nav subtitru kavēšanās
+ Ātrā brūnā lapsa lec pāri slinkajam sunim
+ Ielādeja %s
+ Lādēt no faila
+ Aplikācijas theme
+ Ielādēt no interneta
+ Ieladētie faili
+ Galvenais
+ Atbalsta
+ Aizmugure
+ Devējs
+ Randoms
+ Camera
+ Kamera
+ HQ
+ HD
+ TS
+ TC
+ Blu-ray
+ WP
+ DVD
+ 4K
+ SD
+ UHD
+ HDR
+ Plakāta bilde
+ Atskaņotājs
+ Rezolūcija un tituls
+ Nederīgs ID
+ Nederīgi dati
+ Nederīgs URL
+ Kļūda
+ Noņemiet slēgtos parakstus no subtitriem
+ Noņemiet uzpūšanos no subtitriem
+ Filtrējiet pēc vēlamās multivides valodas
+ Ekstras
+ Treileris
+ Links uz tstresmu
+ Referents
+ Nākamais
+ Skatieties videoklipus šajās valodās
+ Iepriekšējais
+ Izlaist uzstādīšanu
+ Mainiet lietotnes izskatu, lai tā atbilstu savai ierīcei
+ Avārijas ziņošana
+ Ko tu vēlies redzēt
+ Pabeigts
+ Papildinājumi
+ Pievienot repozitoriju
+ Repository URL
+ Plugin ieladēti
+ Plugins dzēsts
+ Nevarēja ielādēt %s
+ 18+
+ Sākta %d %s lejupielāde…
+ Lejuplādēts %d %s
+ Pakešu lejupielāde
+ Plugins
+ Plugins
+ Tādējādi tiks izdzēsti arī visi repozitorija pluginus
+ Dzēst repozitoriju
+ Lejupielādēt: %d
+ Atspējots: %d
+ Nav lejupielādēts: %d
+ Atjaunināti %d spraudņi
+ Skatīt kopienas krātuves
+ Publisks saraksts
+ Visi subtitri ar lielajiem burtiem
+ Vai lejupielādēt visus spraudņus no šīs krātuves\?
+ %s (atspējots)
+ Tracks
+ Audio dziesmas
+ Video tracks
+ Likt uz restartēšanu
+ Restartēt
+ Pārtraukt
+ Drošais režīms ieslēgts
+ Visi paplašinājumi tika izslēgti avārijas dēļ, lai palīdzētu jums atrast to, kas rada problēmas.
+ Skatīt avārijas informāciju
+ Rating: %s
+ Apraksts
+ Versija
+ Status
+ Izmērs
+ Autors
+ Atbalstīts
+ Valodas
+ HLS atskaņošanas saraksts
+ Vēlamais video atskaņotājs
+ Iekšējais atskaņotājs
+ MPV
+ Web video apraide
+ Aplikācijs nav atrasta
+ Visas valodas
+ Beigas
+ Kopsavilkums
+ Jauktas beigas
+ Jauktais sākums
+ Kredīts
+ Notīrīt vēsturi
+ Vēsture
+ Rādīt izlaižamos uznirstošos logus atvēršanai/beigšanai
+ Pārāk daudz teksta. Nevar saglabāt starpliktuvē.
+ Jā
+ Nē
+ Notiek lietotnes atjauninājuma lejupielāde…
+ Notiek lietotnes atjauninājuma instalēšana…
+ Nevarēja instalēt jauno lietotnes versiju
+ Mantojums
+ Insteletājs
+ Lietotne tiks atjaunināta pēc iziešanas
+ Kārtot pēc
+ Kārtot
+ Vērtējums (no augsta līdz zemam)
+ Atjaunināts (no jauna uz veco)
+ Atjaunināts (no vecā uz jauno)
+ Alfabētiskā secībā (A līdz Z)
+ Alfabētiskā secībā (Z līdz A)
+ Atlasiet Bibliotēka
+ Atvērt ar
+ Šķiet, ka jūsu bibliotēka ir tukša :(
+\nPiesakieties bibliotēkas kontā vai pievienojiet pārraides savai vietējai bibliotēkai.
+ Atgriest
+ Anulēts %s abonements
+ %d sērija izlaista!
+ Meklēt pirmsizlaišanas atjauninājumus nevis tikai pilnos atjauninājumus
+ Apk insteletājs
+ Github
+ Nav subtitru
+ Atskaņot epizodi
+ Piedodiet, bet aplikācijā bija kļūda. Anonīms kļūdas ziņojums tika aizsūtīts izstrādātājiem
+ Iet
+ Bezmaksas
+ Ieslēgt elementus uz plakātiem
+ Parastais
+ Nav atjauninājumi atrasti
+ Izdzēst video un bildes atkritne
+ Izvēlētā skatīšanās kvalitāte (Mobilie Dati)
+ Rada problēmas, ja ierīcēs ar maz vietas krātuvē ir iestatīts pārāk augsts, piemēram, Android TV.
+ Meklēšanas summa, kas tiek izmantota, kad spēlētājs ir paslēpts
+ DNS virs HTTPS
+ Tuvināt
+ Neizdevās sasniegt GitHub. Pieslēdzas starpniekserverim caur jsDelivr…
+ Iztiept
+ Galvenā krāsa
+ %s %s
+ Likt nosaukumu zem plakāta
+ Izmantojiet šo, ja subtitri tiek rādīti %d ms pārāk vēlu
+ Rekomendācijas
+ Drīzumā…
+ Kamera
+ Virsraksts
+ Web
+ SDR
+ Rezulūcija
+ CloudStream pēc noklusējuma nav instalēta neviena vietne. Vietnes jāinstalē no krātuvēm.
+\n
+\nSky UK Limited bezsmadzeņu DMCA noņemšanas dēļ mēs nevaram saistīt ar repozitorija vietni lietotnē.
+\n
+\nPievienojieties mūsu Discord vai meklējiet tiešsaistē.
+ Viss %s jau ir lejupielādēts
+ Repozitorija nosaukums
+ Plugin ielādēti
+ Lejupielādējiet to vietņu sarakstu, kuras vēlaties izmantot
+ Vispirms instalējiet paplašinājumu
+ Atvēršana
+ VLC
+ Interneta mekletājs
+ Sākums
+ Izlaist %s
+ Noņemt no skatītajiem
+ Atzīmēt kā skatītu
+ Vai tiešām vēlaties iziet\?
+ Šķiet, ka šis saraksts ir tukšs, mēģiniet pārslēgties uz citu.
+ Atrasts drošā režīma fails!
+\n Paplašinājumi netiek ielādēti startēšanas laikā, kamēr fails nav noņemts.
+ Vērtējums (no zema līdz augstam)
+ Abonēto šovu atjaunināšana
+ Abonēts
+ Abonēts %s
+
diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml
index 7251d0d7..66a6b9ba 100644
--- a/app/src/main/res/values-mk/strings.xml
+++ b/app/src/main/res/values-mk/strings.xml
@@ -1,5 +1,5 @@
-
+Брзина (%.2fx)Оценето: %.1f
@@ -94,9 +94,9 @@
Режим на EigengravyДодава можност за брзина на снимка во плееротПовлечете за да барате
- Повлечете лево или десно за да го контролирате времето во видеоплеерот
+ Повлечете од страна на страна за да ја контролирате вашата позиција во видеотоПовлечете за да ги промените поставките
- Повлечете на левата или десната страна за да ја промените осветленоста или јачината на звукот
+ Лизгајте нагоре или надолу на левата или десната страна за да ја промените осветленоста или јачината на звукотДопрете двапати за да баратеДопрете двапати на десната или левата страна за да барате напред или назадКористете ја осветленоста на системот
@@ -109,7 +109,7 @@
Не испраќа податоциПрикажи епизода за полнење за анимеПрикажи ажурирања на апликации
- Автоматски пребарувајте нови ажурирања на вклучување на апликацијата
+ Автоматски пребарувајте нови ажурирања откако ќе ја стартувате апликацијата.Ажурирање на пред официјални верзииПребарајте пред официјални верзии наместо ажурирања на само официјални верзииGithub
@@ -178,7 +178,7 @@
Прескокни ОПНе прикажувај повторноАжурирај
- Префериран квалитет на гледање
+ Префериран квалитет на гледање (WiFi)DNS преку HTTPSКорисно за заобиколување на блоковите на интернет провајдеритеПатека на превземање
@@ -187,7 +187,7 @@
ИстегниЗумирајDisclaimer
- Генерално
+ Општи поставкиЈазици на провајдеритеРаспоред на апликацијатаПретпочитани медиуми
@@ -198,8 +198,8 @@
Тема на апликацијата%s %sКорисничко име
- Одјавување
- Логирај Се
+ Одјави се
+ Најавете сеПромени корисничка сметкаДодади корисничка сметка
@@ -213,4 +213,323 @@
СенкаПодигнатИсторија
-
\ No newline at end of file
+ Голема буква на сите преводи
+ Автоматски инсталирајте ги сите сè уште неинсталирани приклучоци од додадените складишта.
+ %d-%d
+ %d %s
+ Пренос во живо
+ NSFW
+ Други
+ Отстранете ја страницата
+ password123
+ Јазичен код (мк)
+ Одложување на титловите
+ Вчитан %s
+ Извор
+ Случајно
+ Грешка
+ Прикажи складишта на заедницата
+ Прескокнете го ова ажурирање
+ Групно преземање
+ Позадина
+ Документарни филмови
+ Следно
+ URL на серверот NGINX
+ Стоп
+ Подознака
+ Изглед на емулатор
+ Видео
+ Исчисти
+ Положен
+ MyCoolSite
+ Неважечки податоци
+ Поддршка
+ Функции на плеерот
+ Серија
+ Сите %s веќе се преземени
+ Дејства
+ Јазик на преводот
+ Опис
+ Апликацијата ќе се ажурира по излегувањето
+ Отпишана е од %s
+ прокси raw.githubusercontent.com
+ TC
+ Претплатен на %s
+ Преводи
+ Да се преземат сите приклучоци од ова складиште\?
+ Недостасуваат дозволи за складирање. Обидете се повторно.
+ Зачувај
+ Вчитај од датотека
+ Ажурирања на апликацијата
+ Прелистувач
+ Вчитана резервна датотека
+ Гестови
+ Двоен допир за да паузирате
+ Прескокни %s
+ Најдена е датотека во безбеден режим!
+\nНе се вчитуваат екстензии при стартување додека датотеката не се отстрани.
+ Врати
+ Подреди
+ Внатрешен плеер
+ Резолуција
+ Кредити
+ Пребарај %s…
+ Приклучокот е избришан
+ Статус
+ Автори
+ Започни
+ Изглед
+ Без доцнење на титловите
+ Ажурирање претплатени емисии
+ Синхронизирај
+ Вчитај од Интернет
+ %s (оневозможено)
+ SD
+ Затвори
+ Наскоро…
+ Верзија
+ Ознака за квалитет
+ приклучок
+ %d / 10
+ Гледајте видеа на овие јазици
+ Прво инсталирајте ја наставката
+ Ажурирајте го напредокот на часовникот
+ Библиотека
+ Износот на барањето што се користи кога плеерот е скриен
+ Преземи преводи
+ Јавна листа
+ MPV
+ Инсталатор на пакети
+ ОВА
+ Ажурирања и резервни копии
+ Вашата библиотека е празна :(
+\nНајавете се на корисничка сметка или додадете серии.
+ Не се пронајдени епизоди
+ Брзата кафеава лисица го прескокнува мрзливото куче
+ Слика на постер
+ Должина на видео баферот
+ Избриши складиште
+ Клонирајте ја страницата
+ Ставете го насловот под постерот
+ Прикажи информации за падот на апликацијата
+ Јазик
+ Торент
+ Скриен плеер - Износ за пребарување
+ Автоматски синхронизирајте го напредокот на вашата тековна епизода
+ Бајпас на интернет провајдерот
+ Препорачано
+ Наслов
+ Префериран квалитет на гледање (мобилни податоци)
+ Тест на провајдер
+ Изберете библиотека
+ Видео песни
+ Азиски драми
+ Приклучокот е вчитан
+ Remove bloat from subtitles
+ Не е преземено: %d
+ Remove closed captions from subtitles
+ Аудио песни
+ Вклучете ги елементите на корисничкиот интерфејс на постерот
+ Оневозможено: %d
+ Легаси
+ Автоматска репродукција на следната епизода
+ Исчистете го кешот на видео и слики
+ Карактеристики
+ Азиска драма
+ Додатоци
+ Се прикажува копче на почетната страница што може да избере случаен филм или ТВ серија од почетната страница
+ Поддржано
+ Сметки
+ Вовед
+ Креирај сметка
+ Отстрани од гледаното
+ Допрете двапати во средината за да паузирате
+ Резервна копија
+ ОВА
+ Пренос во живо
+ Web
+ Ажурирани %d приклучоци
+ Мешано отворање
+ Екстензии
+ Овозможете NSFW на поддржани провајдери
+ Не успеа да стигне до GitHub. Вклучувам jsDelivr прокси…
+ Филтрирајте по претпочитан медиумски јазик
+ @string/home_play
+ Филм
+ Додаден %s
+ приклучоци
+ Подреди по
+ Оваа листа е празна, обидете се да се префрлите на друга.
+ Аниме
+ Износот на барањето што се користи кога плеерот е видлив
+ Dub
+ Автоматско преземање приклучоци
+ Главна
+ Кеш меморија
+ Трејлер
+ Не можев да се најавам на %s
+ Премногу текст. Не може да се зачува во таблата со исечоци.
+ Неважечки ID
+ Преземено %d %s
+ Користете го ова ако преводите се прикажани %d ms премногу рано
+ Неважечка URL адреса
+ Безбедниот режим е вклучен
+ Blu-ray
+ Зачувани податоци
+ Предизвикува падови ако е превисоко поставено на уреди со слаба меморија, како што е Android TV.
+ Се инсталира ажурирање на апликацијата…
+ URL на складиштето
+ Не може да се инсталира новата верзија на апликацијата
+ Прикажи постери од Kitsu
+ Дали сте сигурни дека сакате да излезете\?
+ Предизвикува проблеми ако е превисоко поставено на уреди со мал простор за складирање, како што е Android TV.
+ Користејќи jsDelivr, блокирањето на GitHub може да се заобиколи. Може да ги одложи ажурирањата за неколку дена.
+ Да
+ Азбучно (Ш до А)
+ WP
+ Додајте клон на постоечка локација, со различна URL адреса
+ Преземена датотека
+ Износ на бараниот плеер (секунди)
+ Прикажи Logcat 🐈
+ Преземено: %d
+ Резолуција и наслов
+ Ажурирањето започна
+ Преводи на Chromecast
+ Користете го ова ако преводите се прикажуваат %d ms премногу доцна
+ Случајно копче
+ Инсталатор на APK
+ Екстензии
+ UHD
+ Референт
+ Се отвора
+ 127.0.0.1
+ Ова исто така ќе се избрише сите приклучоци за складиште
+ Направете резервна копија од податоците
+ Етикета за Dub
+ Прикажан плеер - Барај износ
+ Андроид ТВ
+ Не успеа да ги врати податоците од датотеката %s
+ Не успеа
+ Документарец
+ Стрим
+ %d мин
+ Играј со CloudStream
+ Пушти трејлер
+ Поставки за преводи на Chromecast
+ Наслов
+ Копирај
+ Плеер
+ Претплатени
+ 1000 ms
+ NSFW
+ /%d
+ /\?\?
+ hello@world.com
+ +30
+ VLC
+ Рестартирај
+ Цртан филм
+ Почна да презема %d %s…
+ Автоматски ажурирања на приклучоци
+ -30
+ %dm
+\nпреостанува
+ Видео кеш на дискот
+ Поврзување до пренос
+ Готово
+ Додај складиште
+ 18+
+ ХЛС плејлиста
+ Префериран видео плеер
+ Прикажи трејлери
+ Енкодирање на превод
+ Изглед
+ Додајте тракинг
+ Оценет
+ Камера
+ Камера
+ SDR
+ Веб-прелистувач
+ Апликацијата не е пронајдена
+ MyCoolUsername
+ Отвори со
+ %s %d%s
+ Повторете го процесот на поставување
+ Линкови
+ Повторување
+ Sub
+ Log
+ Започнете ја следната епизода кога ќе заврши тековната
+ Грешка при правење резервна копија на %s
+ Сокриј го избраниот квалитет на видеото во резултатите од пребарувањето
+ Некои телефони не го поддржуваат новиот инсталатор на пакети. Испробајте ја наследната опција ако ажурирањата не се инсталираат.
+ Резолуција на видео плеер
+ Големина на видео баферот
+ Распоред
+ Стандардно
+ Провајдери
+ Локација на насловот на постерот
+ HQ
+ HD
+ TS
+ 4K
+ Претходно
+ Прескокнете го поставувањето
+ Променете го изгледот на апликацијата за да одговара на вашиот уред
+ Известување за пад
+ Што сакате да видите
+ Име на складиштето
+ Приклучокот е преземен
+ Не може да се вчита %s
+ Преземете ја листата на сајтови што сакате да ги користите
+ CloudStream нема стандардно инсталирани локации. Треба да ги инсталирате сајтовите од складиштата.
+\n
+\nПоради отстранување на DMCA без мозок од страна на Sky UK Limited 🤮 не можеме да ја поврземе локацијата на складиштето во апликацијата.
+\n
+\nПридружете се на нашиот Discord или барајте онлајн.
+ Песни
+ Сите екстензии беа исклучени поради пад за да ви помогнат да ја пронајдете онаа што предизвикува проблеми.
+ Оцена: %s
+ Големина
+ Веб-видео Cast
+ Сите јазици
+ Исчисти историја
+ Обележи како гледано
+ Прикажи скокачки прозорци за отворање/завршување
+ Не
+ Се презема ажурирање на апликацијата…
+ Оцена (висока до ниска)
+ Оцена (ниска до висока)
+ Ажурирано (ново на старо)
+ Ажурирано (старо во ново)
+ Азбучно (А до Ш)
+ Епизодата %d е објавена!
+ Камера
+ DVD
+ Завршува
+ Измешан крај
+ HDR
+ example.com
+ Синхронизирај преводи
+ Примени при рестартирање
+ Наслов на видео плеер максимални знаци
+ Увезете фонтови ставајќи ги во %s
+ Врати ги податоците од резервна копија
+ Поставете статус на пратење
+ Пушти Livestream
+ %s е автентициран
+ %s Епизода %d
+ %dч %dм
+ %dм
+ Следен рандом
+ Постер
+ Постер
+ %dд %dч %dм
+ Главен постер
+ Епизодата %d ќе биде објавена на
+ Постер за епизода
+ Прегледај позадина
+ Смени провајдер
+ Оди назад
+ Актери: %s
+
diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml
index b6ad3a80..3d6240f9 100644
--- a/app/src/main/res/values-ml/strings.xml
+++ b/app/src/main/res/values-ml/strings.xml
@@ -1,5 +1,5 @@
-
+വേഗം (%.2fx)റേറ്റിംഗ്: %.1f
@@ -169,4 +169,35 @@
ഔചിത്യ വീഡിയോ ക്വാളിറ്റിചരിത്രംകണ്ടതാണെന്ന് അടയാളപ്പെടുത്തുക
-
\ No newline at end of file
+ %dd%
+ yg5t4r%dujyhtg
+ qeWERT
+ %fghj%gf
+ rtf:%
+ അക്കൗണ്ട് ഉണ്ടാക്കുക
+ പുറത്ത്പോകുന്നതോടുകൂടി ആപ് അപ്ഡേറ്റ് ആവുന്നതാണ്
+ ലൈബ്രറി തിരഞ്ഞെടുക്കുക
+ ഇത് ഉപയോഗിച്ച് തുറക്കുക
+ ട്രെയിലർ പ്ലേ ചെയ്യുക
+ ലൈവ് സ്ട്രീം പ്ലേ ചെയ്യുക
+ ഫില്ലർ
+ %d min
+ ക്ലൗഡ് സ്ട്രീം ഉപയോഗിച്ച് കളിക്കുക
+ അടുത്ത ക്രമരഹിതമായ
+ എപ്പിസോഡ് പോസ്റ്റർ
+ അപ്ഡേറ്റ് ആരംഭിച്ചു
+ പ്രധാന പോസ്റ്റർ
+ പോസ്റ്റർ
+ ലോഡിംഗ് ഒഴിവാക്കുക
+ തിരയുക %s…
+ %dm
+ മടങ്ങിപ്പോവുക
+ പശ്ചാത്തല പ്രിവ്യൂ
+ പോസ്റ്റർ
+ ദാതാവിനെ മാറ്റുക
+ ലോഡിംഗ്…
+ ബ്രൗസർ
+ ഒന്നുമില്ല
+ വീണ്ടും കാണുക
+ സ്ട്രീം
+
diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml
new file mode 100644
index 00000000..42eba3cc
--- /dev/null
+++ b/app/src/main/res/values-ms/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml
index c2561914..f56b0bfb 100644
--- a/app/src/main/res/values-nl/strings.xml
+++ b/app/src/main/res/values-nl/strings.xml
@@ -1,5 +1,5 @@
-
+%s Ep %dCast: %s
@@ -9,7 +9,7 @@
%dmPoster
- \@string/result_poster_img_des
+ PosterAflevering PosterHoofdposterVolgende willekeurig
@@ -109,7 +109,7 @@
Doorgaan met kijkenVerwijderMeer Info
- \@string/home_play
+ @string/home_playEen VPN kan nodig zijn om deze provider correct te laten werkenDeze provider is een torrent, een VPN wordt aanbevolenMetadata wordt niet geleverd door de site, het laden van video\'s zal mislukken als deze niet op de site bestaat.
@@ -128,14 +128,14 @@
Eigengravy ModusVoegt een snelheidsoptie toe in de spelerSwipe to seek
- Veeg naar links of rechts om de tijd in de videoplayer te regelen
+ Veeg naar links of rechts om de tijd in de videospeler te regelenVeeg om instellingen te wijzigen
- Veeg naar links of rechts om de helderheid of het volume te wijzigen
+ Veeg omhoog of omlaag aan de linker- of rechterkant om de helderheid of het volume te wijzigenDubbeltik om te zienDubbeltik om te pauzeren
- Speler zoeken bedrag
+ Videospeler aantal zoekenTik twee keer aan de rechter- of linkerkant om vooruit of achteruit te zoeken
- Tik in het midden om te pauzeren
+ Tik twee keer in het midden om te pauzerenSysteemhelderheid gebruikenGebruik systeemhelderheid in de app-speler in plaats van een donkere overlayKijkvoortgang bijwerken
@@ -159,7 +159,7 @@
Toon trailersToon posters van KitsuApp-updates tonen
- Automatisch zoeken naar nieuwe updates bij het opstarten
+ Automatisch zoeken naar nieuwe updates na het starten van de app.Update naar pre-releasesZoeken naar pre-release updates in plaats van alleen volledige releasesGithub
@@ -222,8 +222,8 @@
FilmSerieTekenfilm
- \@string/anime
- \@string/ova
+ Anime
+ OVATorrentDocumentaireAziatisch drama
@@ -257,22 +257,22 @@
Niet meer weergevenDeze update overslaanUpdate
- Gewenste kijkwaliteit
+ Voorkeurskwaliteit voor kijken (WiFi)Maximaal aantal tekens voor titel van videospelerVideospeler ResolutieGrootte videobufferLengte videobufferVideo cache op schijfWis video en beeld cache
- Zal willekeurige crashes veroorzaken als deze te hoog is ingesteld. Verander niet als je weinig RAM hebt, zoals een Android TV of een oude telefoon
- Kan problemen veroorzaken op systemen met weinig opslagruimte, zoals Android TV-apparaten als u deze te hoog instelt
+ Veroorzaakt storingen indien te hoog ingesteld op toestellen met weinig geheugen, zoals Android TV.
+ Veroorzaakt problemen indien te hoog ingesteld op toestellen met weinig opslagruimte, zoals Android TV.DNS over HTTPSHandig om ISP-blokkades te omzeilenKloon siteSite verwijderenVoeg een kloon toe van een bestaande site, met een andere URLDownloadpad
- Nginx server url
+ NGINX server URLWeergave Dubbed/Subbed AnimePas aan het schermUitgerekt
@@ -312,8 +312,8 @@
-->
%s %saccount
- Logout
- Login
+ Log uit
+ Log inWissel accountAccount toevoegenMaak account
@@ -324,8 +324,8 @@
%d / 10/\?\?/%d
- Geauthenticeerd %s
- Mislukt om te verifiëren aan %s
+ %s geverifieerd
+ Kon niet inloggen op %sGeennormaal
@@ -337,10 +337,10 @@
SchaduwVerhoogdSync subs
- 1000ms
+ 1000 msSubtitle vertraging
- Gebruik dit als de ondertitels %dms te vroeg worden getoond
- Gebruik dit als ondertitels %dms te laat worden getoond
+ Gebruik dit als de ondertitels %d ms te vroeg worden getoond
+ Gebruik dit als de ondertitels %d ms te laat worden getoondGeen ondertitelvertraginPlakat
- \@string/result_poster_img_des
+ @string/result_poster_img_desEpisode PlakatMain PlakatNeste tilfeldig
@@ -412,7 +412,7 @@
Slå av/på grensesnittselementer på plakatHopp over denne oppdateringenForårsaker tilfeldige krasj hvis satt for høyt. Ikke endre dette hvis du ikke har lite minne.
- \@string/home_play
+ @string/home_playSikkerhetskopier dataData lagretKunne ikke logge inn på %s
@@ -422,11 +422,11 @@
SensurerbartVevLenke til strøm
- \@string/anime
+ @string/animeSkjul valgt videokvalitet i søkeresultaterLastet inn sikkerhetkopifilOppdateringer og sikkerhetskopi
- \@string/ova
+ @string/ovaAvslutt\?SensurerbartAlle %s er allerede nedlastet
@@ -492,4 +492,45 @@
Oppdatering startetProgramtillegg nedlastetProgrammet vil oppgraderes når du avslutter det
-
\ No newline at end of file
+ Blafringsmengde med synlig avspiller
+ Start på ny
+ raw.githubusercontent.com-mellomtjener
+ Sorter etter
+ Åpne med …
+ Vurdering (høy til lav)
+ Start
+ Alfabetisk (A-Å)
+ Kunne ikke nå GitHub. Skrur på jsDelivr-mellomtjener …
+ Tilbyder-test
+ Bibliotek
+ Nettleser
+ Logg
+ Oppdatert (ny til gammel)
+ Skjult avspiller — blafringsmengde
+ Abonnert
+ Vist avspiller — blafringsmengde
+ Oppdatert (gammel til ny)
+ Vellykket
+ Episode %d sluppet.
+ Foretrukket visningskvalitet (mobildata)
+ Stopp
+ Fjern fra sette
+ Abonnement på %s opphevet
+ Android TV
+ Angre
+ Oppdatert abonnementer
+ Mislykket
+ Alfabetisk (Å-A)
+ Vurdering (lav til høy)
+ Abonnerer på %s
+ Blafringsmengde med skjult avspiller
+ Velg bibliotek
+ Omgår blokkering av GitHub ved bruk av jsDelivr. Kan utsette oppdateringer et par dager.
+ ISP-omgåelser
+ Denne listen er tom. Prøv å bytte til en annen.
+ Sorter
+ Fant fil for trygt modus.
+\nLaster ikke inn noen utvidelser ved oppstart til filen er fjernet.
+ Biblioteket ditt er tomt :(
+\nLogg inn på en bibliotekkonto eller legg til programmer i ditt lokale bibliotek.
+
diff --git a/app/src/main/res/values-or/strings.xml b/app/src/main/res/values-or/strings.xml
new file mode 100644
index 00000000..eaa76652
--- /dev/null
+++ b/app/src/main/res/values-or/strings.xml
@@ -0,0 +1,149 @@
+
+
+ ଅଧିକ ଵିକଳ୍ପ
+ ଦେଖୁଛନ୍ତି
+ %dଦି %dଘ %dମି
+ %dଘ %dମି
+ %dମି
+ ପୁନଃଦେଖୁଛନ୍ତି
+ ଲୁଚାଅ
+ ଚଲାଅ
+ ସୂଚନା
+ ଗୃହ
+ ସନ୍ଧାନ
+ ଧରଣ
+ ସ୍ଥଗିତ
+ ସାରିଛନ୍ତି
+ ସେଟିଂ
+ %d ମିନିଟ୍
+ ଵେଗ (%.2fଗୁଣ)
+ ତ୍ୟାଗିଛନ୍ତି
+ ଦେଖିବା ପାଇଁ ଇଚ୍ଛୁକ
+ କିଛି ନାହିଁ
+ ଅଧିକ ସୂଚନା
+ ପାତ୍ର: %s
+ ପୋଷ୍ଟର୍
+ ପୋଷ୍ଟର୍
+ ଅଧ୍ୟାୟ ଚଲାଅ
+ କୌଣସି ଅଧ୍ୟାୟ ମିଳିଲା ନାହିଁ
+ ଟି ଅଧ୍ୟାୟ
+ ଟିଏ ଅଧ୍ୟାୟ
+ %sରେ ଚଲାଅ
+ ବ୍ରାଉଜର୍ରେ ଚଲାଅ
+ ଉପଶୀର୍ଷକ ଡାଉନଲୋଡ୍ କରିବା
+ /%d
+ /\?\?
+ ଅଧ୍ୟାୟ %d ମୁକ୍ତିଲାଭ କଲା!
+ ସ୍ୱତଃ ଡାଉନଲୋଡ୍
+ ଲିଙ୍କ୍ଗୁଡ଼ିକୁ ପୁନଃଲୋଡ୍ କରିବା
+ ଲିଙ୍କ୍ କପି କରିନେବା
+ ଆପ୍ରେ ଚଲାଅ
+ Chromecast ଅଧ୍ୟାୟ
+ ଅ
+ ଅଧ୍ୟାୟର ପୋଷ୍ଟର୍
+ ମୁଖ୍ୟ ପୋଷ୍ଟର୍
+ ଡିଫଲ୍ଟ
+ ଭାଷା
+ ନାହିଁ
+ ଵର୍ଣ୍ଣନା
+ ହଁ
+ ଲାଇବ୍ରେରୀ
+ ଇତିଵୃତ୍ତି
+ ଲେଖକ
+ %s ବାଦ୍ ଦିଅ
+ ଉପଶୀର୍ଷକ ଭାଷା
+ %s (ଅକ୍ଷମ)
+ ସ୍ଥିତି
+ ଆକାର
+ ସମର୍ଥିତ
+ HLS ଚାଳନାତାଲିକା
+ ଅନ୍ତଃ-ଚାଳକ
+ ଆଦ୍ୟ
+ ପ୍ରାନ୍ତ
+ ଆପ୍ ମିଳିଲା ନାହିଁ
+ ସବୁ ଭାଷା
+ VLC
+ MPV
+ ମିଶ୍ରିତ ପ୍ରାନ୍ତ
+ ମିଶ୍ରିତ ଆଦ୍ୟ
+ ଶ୍ରେୟ
+ ଉପକ୍ରମ
+ ଏହି ଭାଷାଗୁଡ଼ିକରେ ଵିଡ଼ିଓ ଦେଖନ୍ତୁ
+ ସଂସ୍କରଣ
+ ଆପ୍ ଭାଷା
+ ଅଧ୍ୟାୟ ଚଲାଅ
+ ଋ
+ ଚଳିତ
+ ଲିଙ୍କ୍ କ୍ଲିପ୍ବୋର୍ଡରେ କପି କରିନିଆଗଲା
+ ଚଳଚ୍ଚିତ୍ର
+ ସିଧାପ୍ରସାରଣ
+ ଉତ୍ସ
+ କୌଣସି ଅଦ୍ୟତନ ମିଳିଲା ନାହିଁ
+ ସାଧାରଣ
+ ପୁନଃ ଦେଖାଅନି
+ ସ୍ୱତଃ
+ ତ୍ରୁଟି
+ ବ୍ୟାକଅପ୍ରୁ ତଥ୍ୟ ପୁନରୁଦ୍ଧାର କରିବା
+ ଷ୍ଟୋରେଜ୍ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ। ଦୟାକରି ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।
+ ଅଦ୍ୟତନ ଏଵଂ ବ୍ୟାକଅପ୍
+ ବ୍ୟାକଅପ୍
+ ଆଣ୍ଡ୍ରଏଡ୍ ଟିଵି
+ ଅଙ୍ଗଭଙ୍ଗୀ
+ ନୂଆ ଅଦ୍ୟତନ ମିଳିଲା!
+\n%s -> %s
+ ଅଵଧି
+ ଆପ୍
+ ବ୍ୟାକଅପ୍ ଫାଇଲ୍ ଧାରଣ ହେଲା
+ ତଥ୍ୟ ଗଚ୍ଛିତ ହୋଇଛି
+ %s ବ୍ୟାକଅପ୍ ନେବାରେ ତ୍ରୁଟି ଘଟିଲା
+ ଋତୁ
+ କୌଣସି ଋତୁ ନାହିଁ
+ ଫାଇଲ୍ ଵିଲୋପ କରିବେ
+ ପାରିତ ହେଲା
+ -୩୦
+ ସ୍ଥିତି
+ ଵ୍ୟଵହୃତ
+ ଟିଵି ଧାରାଵାହିକ
+ ଏସୀୟ ନାଟକ
+ ଅନ୍ୟାନ୍ୟ
+ ଵିଡ଼ିଓ
+ ଉତ୍ସ ତ୍ରୁଟି
+ ଅପ୍ରତ୍ୟାଶିତ ଚାଳକ ତ୍ରୁଟି
+ ଆଖ୍ୟା
+ ଅଦ୍ୟତନ ପାଇଁ ଯାଞ୍ଚ କରିବା
+ ତାଲା
+ ଆକାର ଠିକ୍ କରିବା
+ ଏହି ଅଦ୍ୟତନଟିକୁ ବାଦ୍ ଦିଅ
+ କୃତ୍ୟ
+ ଉପଶୀର୍ଷକ
+ ଵୈଶିଷ୍ଟ୍ୟସବୁ
+ ଵେଶ
+ ଡିଫଲ୍ଟଗୁଡ଼ା
+ ପ୍ରାଥମିକ ରଙ୍ଗ
+ %s ଯୋଡ଼ାଗଲା
+ ଆଖ୍ୟା
+ ହେଲା
+ ଆପ୍ ଅଦ୍ୟତନ ଡାଉନଲୋଡ୍ ଚାଲିଛି…
+ ଆପ୍ ଅଦ୍ୟତନ ଅଧିସ୍ଥାପନ ଚାଲିଛି…
+ ଆପ୍ର ନୂଆ ସଂସ୍କରଣ ଅଧିସ୍ଥାପନ କରିହେଲା ନାହିଁ
+ ଵିଫଳ ହେଲା
+ ଚାଳକ
+ ତଥ୍ୟର ବ୍ୟାକଅପ୍ ନେବା
+ ଵିଲୋପ କର
+ ଵୃତ୍ତଚିତ୍ର
+ ଅନିମେ
+ ଧାରାଵାହିକ
+ ଚଳଚ୍ଚିତ୍ର
+ ଵୃତ୍ତଚିତ୍ର
+ ଏସୀୟ ନାଟକ
+ ସିଧାପ୍ରସାରଣ
+ ଗୁଣଵତ୍ତା ଲେବଲ୍
+ ଅଦ୍ୟତନ କରିବା
+ ଚାଳକ ଵୈଶିଷ୍ଟ୍ୟସବୁ
+ ଆପ୍ ଥିମ୍
+ ଭାଷା ସ୍ୱତଃ-ଚୟନ
+ ଅନିମେ
+ ଉପଶୀର୍ଷକ
+ +୩୦
+ ଵର୍ଷ
+
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index bbaaec57..2961cb47 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -1,5 +1,5 @@
-
+Prędkość (%.2fx)Ocena: %.1fZnaleziono nową aktualizację!
@@ -117,16 +117,16 @@
Tryb EigengravyUstawienia prędkościPrzesuń aby przewinąć
- Przesuń w lewo lub prawo aby kontrolować czas
+ Przesuwaj w lewo lub prawo, aby kontrolować czas filmuPrzesuń aby zmienić ustawienia
- Przesuń góra-dół z lewej lub prawej aby zmienić jasność i głośność
+ Przesuwaj góra-dół z lewej lub prawej strony ekranu aby zmienić jasność czy głośnośćAutoodtwarzanie następnego odcinkaRozpocznij następny odcinek po skończeniu bieżącego
- Czas przewinięcia przy podwójnym kliknięciu
+ Czas przewinięcia przy podwójnym kliknięciu (w sekundach)Podwójne kliknięcie aby przewinąćKliknij 2 razy z prawej lub lewej strony aby przewinąćKliknij dwukrotnie aby wstrzymać
- Kliknij na środku, aby zatrzymać wideo
+ Kliknij dwukrotnie na środku, aby zatrzymać wideoUżyj jasności systemowejUżyj jasności systemowej w odtwarzaczu aplikacji zamiast ciemnej nakładkiAktualizuj postęp oglądania
@@ -153,7 +153,7 @@
Automatyczne aktualizacje rozszerzeńAutomatyczne pobieranie rozszerzeńPokazuj aktualizacje
- Automatycznie wyszukuj aktualizacje przy starcie
+ Automatycznie wyszukuj aktualizacje przy starcie.Aktualizuj do wersji betaWyszukuj wersji beta, zamiast oficjalnych wydańGithub
@@ -254,7 +254,7 @@
Nie pokazuj ponowniePomiń tę aktualizacjęAktualizacja
- Domyślna jakość
+ Domyślna jakość (WiFi)Maksymalna ilość znaków w tytule odtwarzaczaRozdzielczość odtwarzacza wideoRozmiar bufora wideo
@@ -455,7 +455,7 @@
Instalator APKNiektóre telefony nie obsługują nowego instalatora pakietów. Wypróbuj tryb legacy, jeśli aktualizacje nie zostaną zainstalowane.password123
- \@string/ova
+ @string/ovaMojaFajnaWitrynaMyCoolUsername127.0.0.1
@@ -463,9 +463,9 @@
przyklad.pl/\?\?Instalator pakietów
- \@string/home_play
+ @string/home_playhello@world.com
- \@string/anime
+ @string/animeOpeningEndingMixed opening
@@ -504,9 +504,9 @@
Alfabetycznie (od Z do A)Wybierz bibliotekęBiblioteka
- Wygląda na to, że twoja biblioteka jest pusta :(
-\nZaloguj się na swoje konto lub dodaj programy do swojej lokalnej biblioteki
- Wygląda na to, że ta lista jest pusta, spróbuj przełączyć się na inną
+ Twoja biblioteka jest pusta :(
+\nZaloguj się na swoje konto lub dodaj programy do swojej lokalnej biblioteki.
+ Ta lista jest pusta. Spróbuj przełączyć się na inną.Znaleziono plik trybu bezpiecznego.
\nRozszerzenia nie zostaną wczytane, dopóki plik nie zostanie usunięty.Używana ilość przewijania, gdy widoczny jest odtwarzacz
@@ -529,6 +529,7 @@
Zasubskrybowano %sAnulowano subskrypcję %sZostał wydany odcinek %d!
- Obchodzi blokadę GitHuba za pomocą jsdelivr, może spowodować opóźnienie aktualizacji o kilka dni.
- Nie udało się połączyć z GitHub, włączono serwer pośredniczący jsdelivr.
-
\ No newline at end of file
+ Obchodzi blokadę GitHuba za pomocą jsDelivr. może spowodować opóźnienie aktualizacji o kilka dni.
+ Nie udało się połączyć z GitHub, włączono serwer pośredniczący jsDelivr…
+ Domyślna jakość (dane mobilne)
+
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 3754de8b..705285eb 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -3,63 +3,63 @@
%s Ep %d%dh %dm%dm
- Episódio %d será lançado em
+ O episódio %d será lançado emPoster
- Capa do Episódio
+ Pôster do episódioPoster
- Capa Principal
+ Pôster PrincipalPróximo AleatórioVoltar
- Trocar Provedor
- %d dia(s), %d hora(s) e %d mese(s)
+ Alterar Provedor
+ %dd %dh %dmFonteResoluçãoExtras
- Preview Background
+ Visualizar plano de fundoVelocidade (%.2fx)Classificado: %.1fNova atualização encontrada!
\n%s -> %s
- Enchimento
+ PreenchimentoCloudStream
- Reproduzir com CloudStream
+ Assistir com o CloudStreamInício
- Pesquisa
- Transferências
- Opções
+ Pesquisar
+ Downloads
+ ConfiguraçõesProcurar…
- Procurar em %s…
- Sem Dados
- Mais Opções
+ Pesquisar %s…
+ Sem dados
+ Mais opçõesPróximo episódio
- Géneros
- Partilhar
- Abrir no Navegador
- Saltar Carga
+ Gêneros
+ Compartilhar
+ Abrir no navegador
+ Pular carregamentoCarregando…Assistindo
- Em Espera
+ Em esperaConcluído
- Abandonado
- Planeio Assistir
- Nenhuma
- Assistindo de Novo
- Reproduzir Filme
- Reproduzir Livestream
+ Desistido
+ Pretendo assistir
+ Nenhum
+ Reassistindo
+ Reproduzir filme
+ Reproduzir transmissão ao vivoTransmitir TorrentFontesLegendas
- Voltar a tentar ligação…
- Voltar Atrás
- Reproduzir Episódio
- Transferir
- Transferido
- A Transferir
- Transferência em Pausa
- Transferência Iniciada
- Transferência Falhou
- Transferência Cancelada
- Transferência Completa
+ Tentar conexão novamente…
+ Voltar
+ Reproduzir episódio
+ Download
+ Baixado
+ Baixando
+ Download Pausado
+ Download Iniciado
+ Falha no Download
+ Download cancelado
+ Download concluídoStreamErro a Carregar LinksArmazenamento Interno
@@ -123,16 +123,16 @@
Modo EigengravyAcrescenta uma opção de velocidade no playerDeslize para andar
- Deslize para a esq. ou dir. para controlar o tempo no player
+ Deslize para os lados para controlar a posição em um vídeoDeslize para mudar as configurações
- Deslize do lado esq. ou dir. para ajustar brilho ou volume
+ Deslize para cima ou para baixo, no lado esquerdo ou direito, para ajustar brilho ou volumeReproduzir automaticamente próximo episódioComeça o próximo episódio quando o atual terminaToque duplo para avançarToque duplo para pôr em pausa
- Segundos avançados no player
+ Tempo de busca no player (Segundos)Toque duplo no lado esq. ou dir. para andar para trás ou para a frente
- Toque no meio para pôr em pausa
+ Toque duas vezes no meio para pausarUsar brilho da sistemaUsar brilho do sistema no player em vez de uma sobreposição escuraAtualizar progresso
@@ -142,7 +142,7 @@
Arquivo de backup carregadoFalha ao restaurar dados do ficheiro %sDados guardados com sucesso
- Permissões de armazenamento em falta, por favor tente de novo
+ Permissão de armazenamento não encontrada, por favor tente novamente.Erro no backup de %sProcurarContas
@@ -158,7 +158,7 @@
Esconder qualidades de vídeo selecionadas nos resultados da PesquisaAtualizações de plugin automáticasMostrar atualizações da app
- Procurar novas atualizações automaticamente ao iniciar
+ Procurar automaticamente por novas atualizações depois de iniciar o app.Atualizar para pré-lançamentosProcura atualizações de pré-lançamento em vez de só lançamentos oficiaisGithub
@@ -250,15 +250,15 @@
Não mostrar de novoSaltar esta AtualizaçãoAtualizar
- Qualidade Preferida
- Máximo de caracteres do título de vídeos
+ Qualidade Preferida (WiFi)
+ Máximo de caracteres do título no player de videoResolução do player de vídeoTamanho do buffer do vídeoComprimento do buffer do vídeoCache do vídeo em discoLimpar cache de vídeo e imagem
- Causará travamentos aleatórios se definido muito alto. Não mude se tiver pouca memória RAM, como um Android TV ou um telefone antigo
- Pode causar problemas em sistemas com pouco espaço de armazenamento se definido muito alto, como em dispositivos Android TV
+ Causará travamentos em dispositivos com pouca memória se definido muito alto , como uma Android TV.
+ Pode causar problemas em sistemas com pouco espaço de armazenamento se definido muito alto, como uma Android TV.DNS sobre HTTPSÚtil para contornar bloqueios do fornecedor de internetClonar site
@@ -273,7 +273,7 @@
Aviso LegalGeralBotão Aleatório
- Mostra o botão Aleatório na página inicial
+ Mostrar botão aleatório na página inicialIdioma dos fornecedoresLayout da AppMídia preferida
@@ -363,7 +363,7 @@
Plugin CarregadoPlugin ApagadoFalha ao carregar %s
- Iniciada a transferência %d %s
+ Download iniciado %d %s…Transferido %d %s com sucessoTudo %s já transferidoTransferência em batch
@@ -375,18 +375,22 @@
Transferido: %dDesativado: %dNão transferido: %d
- Adicionar um repositório para instalar extensões de sites
+ O CloudStream não possui sites instalados por padrão. Você precisa instalar os sites a partir de repositórios.
+\n
+\nDevido a uma restrição sem sentido de direitos autorais (DMCA) pela Sky UK Limited 🤮 não podemos vincular o site do repositório no aplicativo.
+\n
+\nJunte-se ao nosso Discord ou pesquise online.Ver repositórios da comunidadeLista públicaTodas as legendas em maiúsculasTransferir todos os plugins deste repositório\?%s (Desativado)Instalador APK
- %d minuto(s)
- Reproduzir trailer
+ %d min
+ Assistir TrailerMarcar como visto/não vistoReproduzir
- Instalar automaticamente todas as extensões dos repositórios cadastrados.
+ Instalar automaticamente todos os plugins ainda não instalados dos repositórios adicionados.Baixar extensões automaticamenteRefazer o processo de configuração-30
@@ -394,9 +398,9 @@
+30%s %d%sElenco: %s
- Atualização em andamento
+ Atualização iniciadaLog
- Alguns aparelhos não possuem suporte para o novo instalador de pacotes. Use a opção legado caso não esteja conseguindo atualizar.
+ Alguns aparelhos não suportam o novo instalador de pacotes. Use a opção legado caso não esteja conseguindo atualizar.%d-%d%d %sIniciar
@@ -408,4 +412,121 @@
OvaAnimePlayer visível - Procurar valor
-
\ No newline at end of file
+ Instalando atualização do app…
+ Você tem certeza que deseja sair\?
+ Versão
+ Encerramento
+ Limpar histórico
+ Abertura
+ Não
+ Ordenar por
+ Sim
+ Baixando atualização do app…
+ Episódio %d lançado!
+ Créditos
+ Descrição
+ Tamanho
+ Parar
+ Modo seguro ligado
+ Histórico
+ Ordenar
+ Player interno
+ Autores
+ Suportado
+ Idioma
+ Instalar a extensão primeiro
+ Playlist HLS
+ Player de vídeo preferido
+ Estado
+ Gestos
+ Faixas
+ WP
+ Cam
+ Abertura
+ Selecionar Biblioteca
+ Ignora o bloqueio do GitHub usando jsDelivr. Pode fazer com que as actualizações sejam atrasadas por alguns dias.
+ VLC
+ Todas as linguagens
+ Atualizado (Novo para Antigo)
+ Inscrito
+ HDR
+ Reiniciar
+ Navegador Web
+ Atualizado (Antigo para Novo)
+ Web Video Cast
+ DVD
+ Instalador de pacotes
+ MPV
+ Remover dos assistidos
+ Não foi possível instalar a nova versão do aplicativo
+ Inscrição cancelada em %s
+ Final misto
+ Avaliações (Decrescente)
+ Aplicar ao reiniciar
+ Referente
+ Player oculto - Quantidade de Busca
+ raw.githubusercontent.com Proxy
+ Blu-ray
+ Aparência
+ 1000 ms
+ SDR
+ 18+
+ Abrir com
+ Teste de provedor
+ UHD
+ Ver informações sobre falha
+ Aplicativo não encontrado
+ Reverter
+ Link para transmitir
+ Plugins baixados
+ %d plugins atualizados
+ Pular %s
+ Abertura mista
+ Alfabético (Z a A)
+ Esta lista está vazia. Tente trocar para outra.
+ Inscrito em %s
+ 4K
+ Faixas de vídeo
+ O aplicativo será atualizado ao sair
+ Atualizando shows inscritos
+ Alfabético (A a Z)
+ Avaliações (Crescente)
+ A sua biblioteca está vazia :(
+\nEntre numa conta da biblioteca ou adicione espectáculos à sua biblioteca local.
+ Arquivo de modo de segurança encontrado!
+\nNenhuma extensão será carregada na inicialização do app até que o arquivo seja removido.
+ Contorno do provedor de serviço de internet (ISP)
+ Links
+ Recursos do Player
+ Recursos
+ Atualizações de aplicativos
+ Qualidade Preferida (Dados Móveis)
+ Quantidade de busca (em segundos) usada quando o player de video está visível
+ Quantidade de busca (em segundos) usada quando o player de video está oculto
+ Não foi possível chegar ao GitHub. Ativando o proxy jsDelivr…
+ Cache
+ Android TV
+ Legendas
+ %s %s
+ TS
+ Cam
+ Cam
+ HQ
+ HD
+ TC
+ Web
+ Nota: %s
+ Legado
+ Todas as extensões foram desativadas devido a uma falha para ajudá-lo a encontrar a que está causando o problema.
+ Recapitular
+ Mostrar pop-ups para pular abertura/encerramento
+ Muito texto. Não é possível salvar na área de transferência.
+ Marcar como assistido
+ Backup
+ Extensões
+ Ações
+ Layout
+ Configurações padrão
+ SD
+ Faixas de áudio
+
diff --git a/app/src/main/res/values-qt/strings.xml b/app/src/main/res/values-qt/strings.xml
index c1119bfc..f763d795 100644
--- a/app/src/main/res/values-qt/strings.xml
+++ b/app/src/main/res/values-qt/strings.xml
@@ -219,4 +219,33 @@
uuuuhhhoouuooog ooaaahhhhuuu uggggooo guggg ooh
-
\ No newline at end of file
+ auuuooohaaaaagh
+ uuuuuuuh aaaoo o
+ ooooooouuuua aa aaagh agh
+ AAAAUUUOH
+ aoughoooaaaa
+ oooouuuh
+ ahaough aaouuuuh-h
+ auughooo
+ ooooooa aauoh
+ aaaaagh oouoo aaaaaaa
+ aaaaaagh uuohuoh
+ aaaaaauo agghhhhhhaoouu
+ uuuuuuuuh
+ ouaaahh
+ ooough aaoough aooou %s aaaa
+ ouooooouuuu oooooo
+ aaaaaaaaaaahhhgh-aooohoooo
+ aau aooooghaao
+ aagh aaaaaaaaaaaa oooh, aaough, ooga oguuu aaaaaaaaaaa ooooooohghh a-a-aaauo
+ %dmmmmmm..
+\naaaaooughugh
+ aooohuohaaaa ooooagh
+ oooooogh-aaaaaogh
+ guuuaaaahhhhhhhaaa
+ woooaaahh ahahaaaauu 🦍
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOOOGGAGHAGHAAA
+ aoaaaaaoooghhh
+ oooooh uuaagh
+ @string/home_play
+
diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml
index 42d9b7c8..294abcfd 100644
--- a/app/src/main/res/values-ro/strings.xml
+++ b/app/src/main/res/values-ro/strings.xml
@@ -1,5 +1,5 @@
-
+%s Ep %dDistribuție: %s
@@ -106,7 +106,7 @@
Continuați să urmărițiEliminațiMai multe informații
- \@string/home_play
+ @string/home_playExistă probabilitatea necesitații unui VPN pentru ca acest furnizor să funcționeze corespunzătorAcest furnizor este un torrent, se recomandă un VPNMetadatele nu sunt furnizate de către site, există posibilitatea ca încărcarea videoclipului să eșueze.
@@ -125,14 +125,14 @@
Modul EigengravyAdăugați opțiunea de viteză în playerDerulați spre înainte/înapoi
- Derulați spre stânga sau spre dreapta pentru a controla timpul de difuzare a videoclipului
+ Glisați dintr-o parte în alta pentru a vă controla poziția într-un videoclipDerulați pentru a modifica setărileGlisați spre stânga sau spre dreapta pentru a schimba luminozitatea sau volumulAtingeți de două ori pentru a merge înainte/înapoiAtingeți de două ori pentru a pune pauzăAtingeți de două ori partea stângă sau dreaptă a ecranului pentru a derula rapid înainte sau înapoi videoclipul
- Atingeți de două ori centrul ecranului pentru a întrerupe înregistrarea video
- Atingeți dublu pentru a căuta
+ Atingeți de două ori în mijloc pentru a pune pauză
+ Cantitatea de căutare al player-ului (secunde)Utilizați luminozitatea sistemuluiUtilizați luminozitatea sistemului în playerul aplicației în loc de o suprapunere întunecată
@@ -156,7 +156,7 @@
Arată trailerulArată afișele de la KitsuAfișați actualizările aplicației
- Căutați automat noi actualizări la pornire
+ Căutați automat noi actualizări după pornirea aplicației.Actualizați la prereleaseCăutați actualizări ale versiunilor preliminare în loc să căutați doar versiunile completeGitHub
@@ -250,22 +250,22 @@
Nu se mai arată din nouTreci peste această actualizareActualizare
- Rezoluția preferată
+ Calitatea preferată (WiFi)Limitarea caracterelor de titlu în playerRezoluția playerului videoDimensiunea cache-ului videoLungimea buffer-ului videoDimensiunea cache-ului video pe discȘtergeți memoria cache de imagine și video
- Dacă este setat la un nivel prea ridicat, poate cauza probleme pe sistemele cu prea puțină memorie RAM. Cum ar fi dispozitivele Android TV sau telefoanele mai vechi
- Dacă este setat la un nivel prea ridicat, poate cauza probleme pe sistemele cu spațiu de stocare intern redus. Ca și dispozitivele Android TV
+ Provoacă blocaje dacă este setată la un nivel prea ridicat pe dispozitive cu memorie redusă, cum ar fi Android TV.
+ Cauzează probleme dacă este setat la un nivel prea ridicat pe dispozitive cu spațiu de stocare redus, cum ar fi Android TV.DNS peste HTTPSFolositor pentru evitarea blocajelor ISPAdaugați site-ulEliminați site-ulAdăugați o copie a unui site existent, cu o adresă URL diferităLocul descărcării
- Adresa URL a serverului Nginx
+ Adresa URL a serverului NGNIXAfișarea anime-urilor dublate/subtitrateAdaptare la ecranÎntindere
@@ -285,7 +285,7 @@
Dispunere telefonicăDispunerea emulatoruluiCuloare primară
- Tema
+ Tema aplicațieiLocația titlului posteruluiLocația titlului de pe poster
@@ -311,7 +311,7 @@
/\?\?/%d%s autentificat
- Imposibil de autentificat la %s
+ Nu s-a putut autentifica la %sNu existăNormal
@@ -323,10 +323,10 @@
UmbrăReliefSincronizare subtitrări
- 1000ms
+ 1000 msDelay subtitrare
- Se utilizează dacă subtitrările sunt afișate %dms prea devremeo
- Se utilizează dacă subtitrările sunt afișate %dms prea târziu
+ Utilizează acesta dacă subtitrările sunt afișate %d ms prea devreme
+ Utilizează acesta dacă subtitrările sunt afișate %d ms prea târziuFără întârziere la subtitrareTrailerIstoric
- Marcare ca vizionat
+ Marcați ca vizionatRedă automat următorul episodCloudStreamVizionează trailerul
@@ -388,4 +388,164 @@
LogBrowserJoacă cu CloudStream
-
\ No newline at end of file
+ Actualizare plugin automată
+ Descarcă plugin-uri automat
+ Altele
+ Trecut
+ Start
+ %d %s
+ NSFW
+ %d-%d
+ Player Afișat - Căutați Suma
+ Player Ascuns - Căutați Suma
+ Livestream-uri
+ NSFW
+ Eșuat
+ Cantitatea de căutare utilizată atunci când playerul este vizibil
+ Livestream
+ Cantitatea de căutare utilizată atunci când playerul este ascuns
+ Calitatea preferată (Date Mobile)
+ Video
+ Instalator APK
+ Instalează automat toate plugin-urile neinstalate din depozite adăugate.
+ %s %d%s
+ Unele telefoane nu acceptă noul program de instalare a pachetului. Încercați opțiunea veche dacă nu se instalează actualizările.
+ Refaceți procesul de configurare
+ Treci peste partea de configurare
+ Descărcare pe loturi
+ 18+
+ Evaluare: %s
+ Treci peste %s
+ Aplicația nu a fost găsită
+ Încheiere mixat
+ Ștergeți istoricul
+ Introducere
+ Da
+ Ce vrei să vezi
+ Recapitulare
+ Alfabetic (A la Z)
+ Încheiere
+ Dezabonat de la %s
+ Nu s-a descărcat: %d
+ Vezi depozite din comunitate
+ PackageInstaller (Instalare a pachetelor)
+ Stare
+ Nu se poate încărca %s
+ Piste audio
+ Referent
+ Deschidere
+ Extensii
+ Layout
+ Prea mult text. Nu s-a putut salva în clipboard.
+ Linkuri
+ Funcții
+ Autori
+ Raportarea accidentelor
+ Adaugă depozit
+ Se pare că biblioteca ta este goală :(
+\nConectează-te la un cont de bibliotecă sau adaugă emisiuni în biblioteca ta locală
+ Eliminați subtitrările închise din subtitrări
+ Descărcați lista de site-uri pe care doriți să le utilizați
+ Evaluare (Ridicat la Scăzut)
+ Extensii
+ Ștergeți depozitul
+ Dimensiune
+ Cache
+ Funcțiile player-ului
+ Plugin încărcat
+ Vezi informații despre accident
+ Deschideți cu
+ Eliminați bloat din subtitrări
+ Actualizat %d plugin-uri
+ Evaluare (Scăzut la Ridicat)
+ Terminat
+ Versiune
+ Backup
+ Suplimente
+ Actualizat (Nou la Vechi)
+ Schimbați aspectul aplicației pentru a se potrivi dispozitivului dvs
+ Nume de depozit
+ %s (Dezactivat)
+ Nu
+ Abonat la %s
+ Aplicația va fi actualizată la ieșire
+ Web Video Cast
+ Ocoliri ISP
+ Anterior
+ Sortează
+ Selectați Biblioteca
+ Filtrați în funcție de limba media preferată
+ Episodul %d lansat!
+ Android TV
+ VLC
+ Urmăriți videoclipuri în aceste limbi
+ Reveniți
+ Acțiuni
+ Alfabetic (Z la A)
+ URL invalid
+ Toate extensiile au fost dezactivate din cauza unei defecțiuni pentru a vă ajuta să o găsiți pe cea care cauzează probleme.
+ Se descarcă actualizarea aplicației…
+ Browser web
+ CloudStream nu are niciun site instalat în mod implicit. Trebuie să instalați site-urile din depozite.
+\n
+\nDin cauza unui DMCA takedown fără creier de către Sky UK Limited 🤮 nu putem lega site-ul de depozit în aplicație.
+\n
+\nAlăturați-vă Discordului nostru sau căutați online.
+ A început să descarce %d %s…
+ Mod sigur pornit
+ Fișier Mod Sigur găsit!
+\nNu încarcă nicio extensie la pornire până când fișierul nu este eliminat.
+ Scoateți de la urmărit
+ Actualizat (Vechi la Nou)
+ Aplică la repornire
+ Descriere
+ Plugin Descărcat
+ Sunteți sigur că vreți să ieșiți\?
+ Se pare că această listă este goală, încercați să treceți la o alta
+ Sortați după
+ Player intern
+ Prestabile
+ URL-ul depozitului
+ Oprește
+ Aspecturi
+ Plugin Șters
+ Gesturi
+ Nu s-a putut instala noua versiune a aplicației
+ Piste
+ Repornește
+ Activează NSFW la furnizori suportate
+ Nu s-a putut ajunge la GitHub. Se activează proxy-ul jsDelivr…
+ Proxy raw.githubusercontent.com
+ Depășește blocarea GitHub folosind jsdelivr, poate cauza întârzieri de câteva zile la actualizări.
+ Următorul
+ Toate %s deja descărcate
+ S-a descărcat: %d
+ Dezactivat: %d
+ Toate subtitrările cu majuscule
+ Descărcați toate plugin-urile din acest depozit\?
+ Se actualizează emisiunile abonate
+ Abonat
+ Lista publică
+ MPV
+ Moştenit
+ Test de furnizor
+ Furnizori
+ Link către stream
+ Acest lucru va șterge, de asemenea, toate plugin-urile din depozit
+ Se instalează actualizarea aplicației…
+ S-a descărcat %d %s
+ Suportat
+ Playlist HLS
+ Piste video
+ Arată Afișați pop-up-uri de săritură pentru deschidere/încheiere
+ Toate limbile
+ Deschidere mixat
+ Credite
+ Limbă
+ plugin
+ plugin-uri
+ Instalați mai întâi extensia
+ Player video preferat
+ Actualizări al aplicației
+ Subtitrări
+
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 2812667a..bcd3fc0f 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -142,10 +142,10 @@
Добавляет опцию скорости в проигрывателеПроведите пальцем для поискаПроведите пальцем для изменения настроек
- Проведите пальцем по левой или правой стороне для изменения яркости или громкости
+ Проведите вверх или вниз по левой или правой стороне, чтобы изменить яркость или громкостьАвтопроиграть следующего серияПоток торрент
- Проведите пальцем влево или вправо, чтобы управлять временем в видеоплеере
+ Проведите пальцем из стороны в сторону, чтобы управлять свое место в видеороликеНачните следующий серию, когда закончится текущийЗагружена резервная копияНе удалось восстановить данные из %s
@@ -159,7 +159,7 @@
Автоматическое обновление плагиновАвтоматическая загрузка плагиновПоказать обновления приложения
- Автоматически проверять обновления при старте
+ Автоматически проверять обновления при старте приложения.Обновится до пре-релизаAPK установщикGithub
@@ -227,7 +227,7 @@
ИспользованоДвойное нажатие для паузыКоснитесь дважды правой или левой стороны для поиска вперед или назад
- Нажмите в центре для паузы
+ Нажмите дважды в центре, чтобы сделать паузуИспользовать системную яркостьАвтоматически синхронизировать текущий прогресс эпизодаОшибка резервного копирования %s
@@ -318,7 +318,7 @@
ТитрыОтметить как просмотренноеРазрешение видеоплеера
- Желаемое качество видео
+ Предпочтительное качество видео (WiFi)Максимум символовДлинна буфераКеш видео на диске
@@ -363,7 +363,7 @@
РасширенияURL репозиторияПлагин загружен
- \@string/home_play
+ @string/home_playПеремотка двойным нажатием/\?\?/%d
@@ -408,8 +408,8 @@
Съешь ещё этих мягких французских булок, да выпей же чаюРекомендуетсяЗагружено %s
- \@нить/аниме
- \@нить/ova
+ Аниме
+ OVAЭтикетка DubСайтФункции
@@ -439,8 +439,8 @@
Алфавитный (Я до А)Выбрать библиотекуОткрыть с
- Похоже, ваша библиотека пуста :(
-\nВойдите в аккаунт с библиотекой или добавьте сериалы в локальную библиотеку
+ Ваша библиотека пуста :(
+\nВойдите в аккаунт с библиотекой или добавьте сериалы в локальную библиотеку.СортировкаОткрытый списокРейтинг (высокий - низкий)
@@ -487,7 +487,7 @@
Файл безопасного режима найден!
\nНе загружаются никакие расширения при запуске, пока файл не будет удален.Приложение будет обновлено после выхода
- Похоже, этот список пуст, попробуйте переключиться на другой
+ Этот список пуст, попробуйте переключиться на другой.Все субтитры заглавнымиПоказывать всплывающие окна для пропуска вступления/заключенияФильтровать по предпочитаемому языку медиа
@@ -501,7 +501,7 @@
Перезагрузить ссылкиПредпочтительные медиаОпущенные
- Объем перемотки плеера
+ Объем перемотки плеера (секундах)Объем перемотка, используемый, когда плеер виденПлеер показан - Перемотки объемПлеер спрятан - Перемотки объем
@@ -518,4 +518,15 @@
НеудачныйПрекратитьПерезапустить
-
\ No newline at end of file
+ Вернуться
+ Подписался на %s
+ Предпочтительное качество видео (Мобильный интернет)
+ raw.githubusercontent.com Прокси-сервер
+ Не удалось подключиться к GitHub. Включаем проксирование через jsdelivr…
+ Эпизод %d выпущен!
+ Обходы провайдера
+ Обновление подписки на фильмы и сериалы
+ Обход ограничения доступа к GitHub с помощью jsDelivr может задержать обновления на несколько дней.
+ Подписные
+ Отказались от подписки на %s
+
diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml
index 66d8ada9..e0cc27d0 100644
--- a/app/src/main/res/values-sk/strings.xml
+++ b/app/src/main/res/values-sk/strings.xml
@@ -99,9 +99,261 @@
Tento poskytovateľ je torrent, odporúča sa VPNImportovať písma ich umiestnením do %sViac informácií
- \@string/home_play
+ @string/home_playPokračovať v sledovaníNa správne fungovanie tohto poskytovateľa môže byť potrebná VPNStránka neposkytla žiadne metadáta, načítanie videa zlyhá, ak na stránke neexistuje.Popis
-
\ No newline at end of file
+ Pokračuje v prehrávaní v miniatúrnom prehrávači nad ostatnými aplikáciami
+ Zopakujte pripojenie…
+ Upustené
+ Obraz v obraze
+ Streamovať torrent
+ Náhľad pozadia
+ Tlačidlo na zmenu veľkosti prehrávača
+ Sledujem
+ Popis sa nenašiel
+ Ďalší náhodný
+ Stream
+ Podržané
+ Zobraziť Logcat 🐈
+ Protokol
+ Prehliadač
+ Zhrnutie sa nenašlo
+ Dvojitým ťuknutím pozastaviť
+ Aktualizácie a zálohovanie
+ Informácie
+ Rozšírené vyhľadávanie
+ Zobraziť plagáty z Kitsu
+ Automatická aktualizácia doplnkov
+ Skryť vybranú kvalitu videa vo výsledkoch vyhľadávania
+ Zobraziť výplňovú epizódu pre anime
+ APK inštalátor
+ Niektoré telefóny nepodporujú nový inštalátor balíčkov. Ak sa aktualizácie nenainštalujú, skúste použiť staršiu možnosť.
+ Nenáročná aplikácia pre romány od rovnakých vývojárov
+ Jazyk aplikácie
+ Nenašli sa žiadne odkazy
+ Darujte benén vývojárom
+ Benén darovaný
+ Tento poskytovateľ nepodporuje Chromecast
+ Súbor zálohy načítaný
+ Automaticky synchronizovať priebeh sledovania súčasnej epizódy
+ Ťuknite dvakrát vpravo alebo vľavo pre pretočenie vpred alebo vzad
+ Potiahnutím zmeniť nastavenia
+ Posunutím nahor alebo nadol na ľavej alebo pravej strane zmeníte jas alebo hlasitosť
+ Dĺžka pretočenia (sekundy)
+ Zopakovať proces nastavenia
+ Titulky
+ Dáta uložené
+ Anime aplikácia od rovnakých vývojárov
+ Zálohovať dáta
+ Odkaz skopírovaný do schránky
+ Použiť systémový jas
+ Obnoviť dáta zo zálohy
+ Dvojitým ťuknutím pretočiť
+ Pridá možnosť rýchlosti do prehrávača
+ Automaticky sťahovať doplnky
+ Pripojte sa na Discord
+ Neodosiela žiadne dáta
+ Odstrániť čierne okraje
+ Automaticky vyhľadať nové aktualizácie po spustení aplikácie.
+ Prehrať epizódu
+ Chýbajú povolenia k úložisku. Skúste to prosím znova.
+ Nastavenia titulkov prehrávača
+ Spustiť ďalšiu epizódu po skončení aktuálnej
+ Chromecast titulky
+ Eigengravy režim
+ Potiahnutím pretočiť
+ Automaticky prehrať ďalšiu epizódu
+ Aktualizovať priebeh sledovania
+ Ťuknite dvakrát do stredu pre pozastavenie
+ V prehrávači použiť systémový jas namiesto tmavého prekrytia
+ Zobraziť upútavky
+ Automaticky nainštalovať všetky ešte nenainštalované doplnky z pridaných repozitárov.
+ Odosiela dáta len pri pádoch
+ Knižnica
+ GitHub
+ Hľadať
+ Účty
+ Nastavenia Chromecast titulkov
+ Potiahnutím zo strany na stranu môžete ovládať svoju pozíciu vo videu
+ Nepodarilo sa obnoviť dáta zo súboru %s
+ Chyba pri zálohovaní %s
+ Poskytne vám výsledky vyhľadávania rozdelené podľa poskytovateľa
+ Zobraziť aktualizácie aplikácie
+ Aktualizácia na predbežné vydania
+ Vyhľadať aktualizácie predbežných vydaní namiesto plných vydaní
+ Ospravedlňujeme sa, aplikácia spadla. Vývojárom bude odoslané anonymné hlásenie o páde
+ Obnoviť predvolenú hodnotu
+ Sezóna
+ Synopsa
+ vo fronte
+ Žiadne titulky
+ Anime
+ Kreslené
+ Skopírovať odkaz
+ Automaticky stiahnuť
+ Zrkadlo sťahovania
+ Zamknúť
+ Nenašla sa žiadna aktualizácia
+ Skontrolovať aktualizáciu
+ Zmeniť veľkosť
+ DNS cez HTTPS
+ Odstrániť stránku
+ Pridá klon existujúcej stránky s inou URL adresou
+ Cesta sťahovania
+ Android TV
+ Gestá
+ Funkcie prehrávača
+ Všeobecné
+ Náhodné tlačidlo
+ Prihlásiť sa
+ Prepnúť účet
+ Pridať účet
+ Rozloženie aplikácie
+ ahoj@svet.sk
+ Úspešné
+ MojeSuperMeno
+ Seriály
+ Seriál
+ E
+ Roztiahnuť
+ Záloha
+ Zdroj
+ Voľné
+ Veľkosť vyrovnávacej pamäte videa
+ Aktualizácie aplikácie
+ Umiestnenie názvu plagátu
+ Živý prenos
+ heslo123
+ S
+ Pokračovať
+ NSFW
+ Akcie
+ Pozastaviť
+ Zobraziť anime dabované/s titulkami
+ Titulky
+ Synchronizovať
+ Prehrať v aplikácii
+ %d-%d
+ Spôsobuje zlyhania, ak je nastavená príliš vysoko na zariadeniach s nízkou pamäťou, ako je Android TV.
+ raw.githubusercontent.com Proxy
+ Trvanie
+ Aplikácia
+ /%d
+ Pridané %s
+ Dokument
+ Chromecast zrkadlo
+ Predvolené
+ Ostatné
+ Chyba pri sťahovaní, skontrolujte povolenia k úložisku
+ Primárna farba
+ Vytvoriť účet
+ %d / 10
+ Priblížiť
+ Torrenty
+ Rozlíšenie prehrávača
+ Umiestniť názov pod plagát
+ Preferovaná kvalita sledovania (WiFi)
+ Rozšírenia
+ Hodnotené
+ -30
+ Chyba vykresľovania
+ Neočakávaná chyba prehrávača
+ Téma aplikácie
+ Dokumenty
+ Preferované médiá
+ URL servera NGINX
+ %d %s
+ Predvolené
+ Pridať sledovanie
+ Žiadna sezóna
+ Epizóda
+ Znova načítať odkazy
+ Jazyky poskytovateľa
+ Spustiť
+ Živé prenosy
+ Stiahnuť titulky
+ Povoliť NSFW u podporovaných poskytovateľov
+ Obchádzanie ISP
+ Prepnúť UI prvky na plagáte
+ Rozloženie
+ Neúspešné
+ Stav
+ Preskočiť OP
+ Vyrovnávacia pamäť videa na disku
+ Hodnotenie
+ Torrent
+ OVA
+ Preskočiť túto aktualizáciu
+ /\?\?
+ Film
+ 127.0.0.1
+ účet
+ Rok
+ Prispôsobiť obrazovke
+ Zmazať
+ Využité
+ Štítok kvality
+ Prehrávač skrytý - dĺžka pretočenia
+ Vzhľad
+ %s %d%s
+ Obchádza blokovanie GitHubu pomocou jsDelivr. Môže spôsobiť oneskorenie aktualizácií o niekoľko dní.
+ Zobraziť náhodné tlačidlo na domovskej stránke
+ Odhlásiť sa
+ Aktualizovať
+ Stránka
+ Dĺžka vyrovnávacej pamäte videa
+ Zmazať súbor
+ Prehrať v %s
+ Funkcie
+ Nezobrazovať znova
+ Vzdialená chyba
+ Užitočné na obchádzanie blokácií ISP
+ Odkazy
+ Klonovať stránku
+ OVA
+ Filmy
+ príklad.sk
+ Vyrovnávacia pamäť
+ Nepodarilo sa pripojiť na GitHub. Zapína sa proxy jsDelivr…
+ Nenašli sa žiadne epizódy
+ +30
+ Ázijské drámy
+ Anime
+ Chyba zdroja
+ Prehrať v prehliadači
+ Štítok dabingu
+ Štítok titulkov
+ Názov
+ Vymazať vyrovnávaciu pamäť videí a obrázkov
+ Prehrávač zobrazený - dĺžka pretáčania
+ Dĺžka pretočenia, keď je prehrávač viditeľný
+ Dĺžka pretočenia, keď je prehrávač skrytý
+ Kódovanie titulkov
+ Test poskytovateľa
+ Rozloženie
+ Automaticky
+ Mobilné rozloženie
+ Poskytovatelia
+ TV rozloženie
+ Kód jazyka (sk)
+ MôjSuperWeb
+ %s %s
+ Vylúčenie zodpovednosti
+ NSFW
+ Týmto sa natrvalo vymaže %s
+\nSte si istý\?
+ %dm
+\nzostáva
+ Prebieha
+ Dokončené
+ Rozloženie emulátora
+ Epizódy
+ Video
+ Ázijská dráma
+ Chromecastovať epizódu
+ Preferovaná kvalita sledovania (mobilné dáta)
+ Maximálny počet znakov v názve prehrávača
+ Spôsobuje problémy, ak je nastavená príliš vysoko v zariadeniach s malým ukladacím priestorom, ako je napríklad Android TV.
+
diff --git a/app/src/main/res/values-so/strings.xml b/app/src/main/res/values-so/strings.xml
index b944b6b3..db82d9fa 100644
--- a/app/src/main/res/values-so/strings.xml
+++ b/app/src/main/res/values-so/strings.xml
@@ -487,4 +487,4 @@
BilowgaBilow isku qasanQoraalka dhamaadka
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml
index 32336b66..168e23fa 100644
--- a/app/src/main/res/values-sv/strings.xml
+++ b/app/src/main/res/values-sv/strings.xml
@@ -1,5 +1,5 @@
-
+Betygsatt: %.1fHastighet (%.2fx)Ny uppdatering hittad!
@@ -33,7 +33,7 @@
UndertexterFörsök ansluta igen…Gå tillbaka
- \@string/result_poster_img_des
+ @string/result_poster_img_desSpela AvsnittLadda nerIntern lagring
@@ -44,7 +44,7 @@
Inaktivera automatisk felrapporteringMer informationHide
- \@string/result_poster_img_des
+ @string/result_poster_img_desSpela uppInfoNästa
@@ -235,7 +235,7 @@
Episod %d kommer släppas om%d minVisa trailers
- \@string/home_play
+ @string/home_playOVA%d-%d%d %s
@@ -244,7 +244,7 @@
%dm
\nåterstårNSFW
- \@string/ova
+ @string/ovaTorrentNSFW+30
@@ -273,7 +273,7 @@
Asiatiska dramanAndraTecknade serier
- \@string/anime
+ @string/animeDokumentärAsiatisk dramaVideo
@@ -368,4 +368,4 @@
Titta på videor på dessa språkFöregåendeSpår
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml
index b2334c5f..affb04bf 100644
--- a/app/src/main/res/values-ta/strings.xml
+++ b/app/src/main/res/values-ta/strings.xml
@@ -107,4 +107,4 @@
இடைநிறுத்துவதற்கு இருமுறை தட்டவும்Chromecast வசன அமைப்புகள்இருண்ட மேலடுக்குக்குப் பதிலாக ஆப் பிளேயரில் சிஸ்டம் பிரகாசத்தைப் பயன்படுத்தவும்
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-tl/strings.xml b/app/src/main/res/values-tl/strings.xml
index 9e5b29d4..95d38478 100644
--- a/app/src/main/res/values-tl/strings.xml
+++ b/app/src/main/res/values-tl/strings.xml
@@ -1,11 +1,11 @@
-
+%s Ep %dPoster
- \@string/result_poster_img_des
+ @string/result_poster_img_desEpisode PosterMain PosterNext Random
@@ -263,4 +263,4 @@
Magdagdag ng AccountKasaysayanI-tanda bilang napanood na
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml
index 807716d8..170c3679 100644
--- a/app/src/main/res/values-tr/strings.xml
+++ b/app/src/main/res/values-tr/strings.xml
@@ -1,5 +1,5 @@
-
+%d %s | %s%s • %s
@@ -23,9 +23,9 @@
Bölüm PosteriAna PosterSonraki Rastgele
- \@string/play_episode
+ @string/play_episodeGeri git
- \@string/home_change_provider_img_des
+ @string/home_change_provider_img_desChange ProviderPreview Background
@@ -46,7 +46,7 @@
Veri yokDaha fazla seçenekSonraki bölüm
- \@string/synopsis
+ @string/synopsisTürlerPaylaşTarayıcıda aç
@@ -117,47 +117,47 @@
Hiç muz verilmediOtomatik seçilecek dilİndirilecek diller
- Alt yazı dili
- Varsayılana döndürmek için basılı tut
+ Altyazı dili
+ Sıfırlamak için basılı tutFontları içe aktarmak için %s konumuna yerleştirinİzlemeye devam etKaldırDaha fazla bilgi
- \@string/home_play
+ @string/home_playBu sağlayıcının düzgün çalışması için bir VPN gerekebilir
- Bu sağlayıcı bir torrent. VPN önerilir
+ Bu sağlayıcı torrent kullanıyor, bir VPN önerilirMetadata site tarafından sağlanmamış, veri site\'de bulunmuyorsa video yüklenmesi başarısız olacak.AçıklamaKonu bulunamadıAçıklama bulunamadı
- Logcat\'i göster 🐈
- Resim-içinde-resim
- Diğer uygulamaların üzerinde minyatür bir oynatıcıda oynatmaya devam eder
+ Logcat\'i görüntüle 🐈
+ Görüntü içinde görüntü
+ İçerik diğer uygulamaların üzerinde küçük bir pencerede oynatılmaya devam ederOynatıcı yeniden boyutlandırma butonu
- Siyah sınırları kaldır
- Alt yazı
+ Siyah sınır çizgilerini kaldır
+ Alt yazılarOynatıcı alt yazı ayarları
- Chromecast alt yazı
+ Chromecast alt yazılarıChromecast alt yazı ayarları
- Eigengravy modu
- Oynatıcıya bir hız seçeneği ekle
- Gözlemek için kaydır
- Zamanı ayarlamak için sağa veya sola kaydır
+ Eigengrau modu
+ Oynatıcıya hız seçeneği ekler
+ Atlamak için kaydır
+ Zamanı ayarlamak için yanlardan kaydırAyarları değiştirmek için kaydır
- Sol ve sağ taraftan kaydırarak parlaklık ve sesi ayarla
+ Sol ve sağ taraftan yukarı kaydırarak ekran parlaklığı ve sesi ayarlaSonraki bölümü otomatik oynatMevcut bölüm bittiğinde sonraki bölüme başla
- Gözlemek için çift tıkla
- Durdurmak için çift tıkla
- Oynatıcı gözleme miktarı
- İleri ve geri atlamak için sağa ve sola çift tıkla
- Durdurmak için ortaya tıkla
+ Çift dokunarak atla
+ İki kez dokunarak duraklat
+ Atlanacak süre (Saniye)
+ İleri ve geri atlamak için sağa ve sola iki kez dokun
+ Durdurmak için ekranın ortasına çift dokunSistem parlaklığını kullan
- Oynatıcıda karanlık kaplama yerine sistem parlaklığını kullan
+ Oynatıcıyı karartmak yerine sistem parlaklığını kullanİzleme ilerlemesini güncelleMevcut bölüm ilerlemesini otomatik güncelle
- Yedekten geri yükle
- Verileri yedekleyin
+ Verileri yedekten geri yükle
+ Verileri yedekleYedek dosyası yüklendiGeri yükleme başarısız oldu: %sBaşarıyla yedeklendi
@@ -165,21 +165,21 @@
%s yedeklenirken hataAraHesaplar
- Güncellemeler ve yedek
+ Güncellemeler ve yedeklemeBilgiGelişmiş arama
- Sağlayıcılara göre ayrılmış arama sonuçlarını ver
+ Arama sonuçlarını sağlayıcıya göre ayırırYalnızca çökmelerle ilgili verileri gönderir
- Hiç veri göndermez
- Anime için filler bölümleri gösterir
+ Veri göndermez
+ Anime için filler bölümleri gösterFragmanları gösterKitsu\'dan posterleri göster
- Seçilen video kalitelerini arama sonuçlarında gizle
+ Seçilen video kalitelerini arama sonuçlarında göstermeOtomatik eklenti güncellemeleriUygulama güncellemelerini göster
- Başlangıçta yeni güncellemeleri otomatik olarak ara
- Ön sürümlere güncelle
- Sadece tam sürümler yerine ön sürüm güncellemelerini de ara
+ Uygulama başlatıldıktan sonra güncellemeleri otomatik olarak kontrol et.
+ Deneysel sürümlere güncelle
+ Yalnızca tam sürümler yerine deneysel güncellemeleri de araGitHubAynı geliştiriciler tarafından LightNovel uygulamasıAynı geliştiriciler tarafından anime uygulaması
@@ -191,8 +191,8 @@
Bağlantı bulunamadıBağlantı panoya kopyalandıBölümü oynat
- Varsayılana sıfırla
- Üzgünüz, uygulama çöktü. Geliştiricilere isimsiz bir hata raporu gönderilecek
+ Varsayılan değere sıfırla
+ Üzgünüz, uygulama çöktü. Geliştiricilere anonim bir hata raporu gönderilecekSezon%s %d%sSezon yok
@@ -205,13 +205,13 @@
Bölüm bulunamadıDosyayı silSil
- \@string/sort_cancel
+ @string/sort_cancelDurdurSürdür-30+30
- %s dosyası tamamen silinecek
-\nEmins misiniz\?
+ %s tamamen silinecek
+\nEmin misiniz\?%dm
\nkaldıDevam ediyor
@@ -236,21 +236,21 @@
TorrentlerBelgesellerOVA
- Asya dramaları
+ Asya dizileriCanlı yayınlar
- NSFW
+ +18DiğerleriFilmDiziÇizgi film
- \@string/anime
- \@string/ova
+ @string/anime
+ @string/ovaTorrentBelgesel
- Asya draması
+ Asya dizisiCanlı yayın
- NSFW
+ +18VideoKaynak hatasıSunucu hatası
@@ -259,10 +259,10 @@
İndirme hatası, depolama izinlerini kontrol edinBölümü Chromecast ile yayınlaBağlantıyı Chromecast ile yayınla
- Uygulamada oynat
- %s\'deda oynat
+ Burada oynat
+ %s üzerinden oynatTarayıcıda oynat
- Linki kopyala
+ Bağlantıyı kopyalaOtomatik indirŞu kaynaktan indirBağlantıları yenile
@@ -281,22 +281,22 @@
KilitleYeniden boyutlandırKaynak
- OP\'yi geç
+ Jeneriği geçBir daha göstermeBu güncellemeyi atlaGüncelle
- Tercih edilen izleme kalitesi
- Oynatıcıdaki maksimum başlık karakter sayısı
- Oynatıcının üst tarafındaki öğeler
+ Tercih edilen görüntü kalitesi (WiFi)
+ Video oynatıcı başlığı karakter üst sınırı
+ Oynatıcının çözünürlüğüVideo arabelleği boyutuVideo arabelleği uzunluğu
- Diskteki video önbelleği
+ Hafızadaki video önbelleğiVideo ve resim önbelleğini temizle
- Android TV gibi düşük belleğe sahip cihazlarda çok yükseğe ayarlanırsa çökmelere neden olur.
- Çok yükseğe ayarlanırsa, Android TV cihazları gibi düşük depolama alanına sahip sistemlerde sorunlara neden olabilir.
- HTTPS üzerinden DNS
- ISP bloklarını atlatmak için kullanışlıdır
- Klon site
+ Çok yükseğe ayarlanırsa düşük belleğe sahip cihazlarda çökmelere neden olur (örn. Android TV).
+ Çok yükseğe ayarlanırsa düşük depolama alanına sahip sistemlerde sorunlara neden olur (örn. Android TV).
+ HTTPS üzerinden DNS (DoH)
+ İnternet Servis Sağlayıcısı (İSS) kısıtlamalarını aşmak için kullanışlıdır
+ Siteyi kopyalaSiteyi kaldırFarklı bir URL ile mevcut bir sitenin klonunu ekleyinİndirme konumu
@@ -305,16 +305,16 @@
Ekrana sığdırUzatYakınlaştır
- Disclaimer
+ Yasal Uyarılegal_notice_keyAny legal issues regarding the content on this application should be taken up with the actual file hosts and providers themselves as we are not affiliated with them. In case of copyright infringement, please directly contact the responsible parties or the streaming websites. The app is purely for educational and personal use. CloudStream 3 does not host any content on the app, and has no control over what media is put up or taken down. CloudStream 3 functions like any other search engine, such as Google. CloudStream 3 does not host, upload or manage any videos, films or content. It simply crawls, aggregates and displayes links in a convenient, user-friendly interface. It merely scrapes 3rd-party websites that are publicly accessable via any regular web browser. It is the responsibility of user to avoid any actions that might violate the laws governing his/her locality. Use CloudStream 3 at your own risk.Genel
- Rastgele butonu
- Ana sayfada rastgele butonunu göster
+ Rastgele İçerik
+ Ana sayfada rastgele bir film veya dizi seçen bir tuş gösterSağlayıcı dilleriUygulama düzeniTercih edilen medya
- Desteklenen sağlayıcılarda NSFW\'yi etkinleştir
+ Desteklenen sağlayıcılarda +18 içeriği etkinleştirAlt yazı kodlamasıSağlayıcılarDüzen
@@ -336,7 +336,7 @@
hello@world.com127.0.0.1MyCoolSite
- example.com
+ ornek.comDil kodu (tr)HiçbiriNormalHepsiMaksimumMinimum
- \@string/none
+ @string/noneDış hatÇökmüşGölge
@@ -376,7 +376,7 @@
Alt yazı senkronu1000 msAlt yazı gecikmesi
- Alt yazılar %d ms erken gözüküyorsa bunu kullanın
+ Alt yazılar %d ms erken görüntüleniyorsa bunu kullanınAlt yazılar %d ms geç gözüküyorsa bunu kullanınAlt yazı gecikmesi yokPijamalı hasta yağız şoföre çabucak güvendiÖnerilen
- %s yüklendi
+ %s eklendiDosyadan yükleİnternetten yükleİndirilen dosya
@@ -422,10 +422,10 @@
Geçersiz veriGeçersiz URLHata
- Alt yazılardan seçmeli alt yazıyı kaldır
+ Alt yazılardan seçmeli alt yazıyı (CC) kaldırAlt yazılardaki şişkinliği kaldırTercih edilen medya diline göre filtrele
- Ekstralar
+ Ek içeriklerFragmanYayına bağlanYönlendiren
@@ -433,7 +433,7 @@
Videoları bu dillerde izleGeriKurulumu atla
- Cihazınıza uygun görünümü seçin
+ Cihazınıza uygun uygulama görünümünü seçinÇökme raporlarıNe izlemek istiyorsunuzBitti
@@ -445,7 +445,7 @@
Eklenti silindi%s yüklenemedi+18
- %d %s … indirilmeye başlandı
+ %d %s indirilmeye başlandı…%d %s indirildi%s\'nin tamamı zaten indirildiToplu indir
@@ -477,7 +477,7 @@
Çökme bilgisini gösterPuan: %sAçıklama
- Versiyon
+ SürümDurumBoyutGeliştiriciler
@@ -499,14 +499,14 @@
Fragmanı oynatEklenen depolardan henüz yüklenmemiş tüm eklentileri otomatik olarak yükleyin.Güncelleme başladı
- Bazı cihazlar yeni paket yükleyiciyi desteklemez.. Güncellemele yüklenmezse eski seçeneği deneyin.
+ Bazı cihazlar yeni paket yükleyiciyi desteklemez.. Güncellemeler yüklenmezse eski seçeneği deneyin.Eklentileri otomatik olarak indirAPK indirici
- Linkler
+ BağlantılarUygulama güncellemeleriYedekOynatıcı özellikleri
- Altyazılar
+ Alt yazılarDüzenVarsayılanlarEklentiler
@@ -531,22 +531,22 @@
İzlenenlerden kaldırKarışık sonKarışık başlangıç
- Kredi
+ Katkıda BulunanlarGirişEklenti İndirildi
- Aksiyonlar
- Açma/bitiş için atlama açılır pencerelerini göster
+ Eylemler
+ Açılış/bitiş için atlama açılır pencerelerini gösterÇok fazla metin. Panoya kaydedilemiyor.KütüphaneTarayıcıGörünüşe göre kütüphaneniz boş :(
-\nBir kütüphane hesabına giriş yapın veya yerel kütüphanenize gösteri ekleyin
+\nBir kütüphane hesabına giriş yapın veya yerel kütüphanenize içerik ekleyinGüvenli mod dosyası bulundu!
\nDosya kaldırılana kadar başlangıçta herhangi bir uzantı yüklenmiyor.SıralaSırala
- Güncel (Yeniden Eskiye)
- Güncel (Eskiden Yeniye)
+ Güncellenme (Yeniden Eskiye)
+ Güncellenme (Eskiden Yeniye)Alfabetik (A\'dan Z’ye)Alfabetik (Z - A)Kütüphane Seçin
@@ -554,4 +554,27 @@
Görünüşe göre bu liste boş, başka bir listeye geçmeyi deneyinDerecelendirme (Yüksekten Düşüğe)Derecelendirme (Düşükten Yükseğe)
-
\ No newline at end of file
+ Yeniden başlat
+ Oynatıcı gizlenmişken atlanacak süre
+ İSS Kısıtlamaları
+ GitHub\'a ulaşılamadı, jsdelivr vekil sunucusu etkinleştiriliyor.
+ Başlat
+ Başarılı oldu
+ raw.githubusercontent.com vekil sunucusu (proxy)
+ Tercih edilen görüntü kalitesi (Mobil veri)
+ Oynatıcı görünürken atlanacak süre
+ Oynatıcı gizli durumdayken atlanacak süre miktarı
+ jsdelivr kullanarak GitHub kısıtlamasını kaldırır, güncellemelerin birkaç gün gecikmesine neden olabilir.
+ Android TV
+ Yeni bölüm %d yayınlandı!
+ Sağlayıcıyı kontrol et
+ Başarısız oldu
+ Durdur
+ Geri al
+ Abone olunan gösteriler güncelleniyor
+ Abone olunan
+ %s kanalına abone olundu
+ %s kanalı aboneliğinden çıkıldı
+ Günlük
+ Oynatıcı görünür durumdayken atlanacak süre miktarı
+
diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml
index a676b583..82527c95 100644
--- a/app/src/main/res/values-uk/strings.xml
+++ b/app/src/main/res/values-uk/strings.xml
@@ -1,13 +1,13 @@
Постер
- Постер епізоду
+ Постер до епізодуЗавантаження скасованоЗмінити постачальникаНазадРейтинг: %.1fАктори: %s
- Епізод %d буде випущено через
+ Епізод %d вийде черезPoster%s Еп. %d%dд %dгод %dхв
@@ -15,16 +15,16 @@
%dхвГоловний постерНаступний випадковий
- Перегляд фону
+ Попередній перегляд фонуШвидкість (%.2fx)
- Нове оновлення знайдено!
+ Знайдено нове оновлення!
\n%s -> %sПошукЗавантаження%d хв
- Параметри
+ НалаштуванняПошук…
- Пошук %s…
+ Пошук на %s…Дані відсутніБільше опційНаступний епізод
@@ -37,7 +37,7 @@
ПокинутоПереглянути фільмПереглянути трейлер
- Переглянути торрент
+ Трансляція через торрентПовторити підключення…НазадПереглянути епізод
@@ -87,13 +87,13 @@
Налаштування субтитрів ChromecastРежим EigengravyПроведіть пальцем, щоб змінити налаштування
- Проведіть пальцем ліворуч або праворуч, щоб змінити яскравість або гучність
+ Проведіть пальцем вгору або вниз ліворуч або праворуч, щоб змінити яскравість або гучністьВідтворення наступного епізоду після закінчення поточногоГоловнаCloudStreamФілерПрограти в CloudStream
- Потік
+ ТрансляціяПереглядаюПоділитисяВідкладено
@@ -121,10 +121,10 @@
Колір текстуКолір контуруАвтовідтворення наступного епізоду
- Проведіть пальцем ліворуч або праворуч, щоб керувати часом у відеоплеєрі
+ Проведіть пальцем з боку в бік, щоб керувати своїм положенням у відео%d Бананів для розробниківКнопка зміни розміру плеєра
- \@string/home_play
+ @string/home_playДля коректної роботи цього постачальника може знадобитися VPNМетадані не надаються сайтом, завантаження відео не відбудеться, якщо їх немає на сайті.Картинка в картинці
@@ -133,8 +133,8 @@
Проведіть пальцем, щоб перемотатиДвічі торкніться, щоб перемотатиДвічі торкніться для паузи
- Крок перемотки
- Натисніть посередині, щоб поставити на паузу
+ Крок перемотки (Секунди)
+ Натисніть двічі посередині, щоб призупинитиВикористовувати яскравість системиОновити прогрес переглядуВідновлення даних з резервної копії
@@ -230,7 +230,7 @@
Показати постери від KitsuАвтоматичне оновлення плагінівАвтоматично встановлювати всі ще не встановлені плагіни з доданих репозиторіїв.
- Автоматичний пошук нових оновлень при запуску
+ Автоматично шукати нові оновлення після запуску застосунку.Оновлення до бета-версійПосилання скопійовано в буфер обмінуДеякі телефони не підтримують новий інсталятор пакетів. Спробуйте стару версію, якщо оновлення не встановлюються.
@@ -255,7 +255,7 @@
Документальні фільмиNSFWФільм
- \@string/ova
+ OVAТоррентМітка якостіNSFW
@@ -427,9 +427,9 @@
Вимкнено: %dНе завантажено: %dОновлено %d плагіни
- За замовчуванням в CloudStream не встановлені сайти. Вам потрібно встановити сайти з репозиторіїв.
+ CloudStream не має жодного сайту, встановленого за замовчуванням. Вам потрібно встановити сайти з репозиторіїв.
\n
-\nЧерез безмозкий DMCA від Sky UK Limited 🤮 ми не можемо прив\'язати сайт репозиторію в застосунку.
+\nЧерез безглузду заявку DMCA від Sky UK Limited 🤮 ми не можемо надати посилання на репозиторій в застосунку.
\n
\nПриєднуйтесь до нашого Discord або шукайте в інтернеті.Переглянути репозиторії спільноти
@@ -453,22 +453,22 @@
MPVВідтворення веб-відеоВеб-браузер
- Кінець
+ ЕндінґКоротке повторенняПропустити %s
- Змішаний кінець
+ Змішаний ендінґПодяки
- Опенінг
+ ОпенінґВступОчистити історіюІсторія
- Показувати спливаючі вікна для опенінгу/кінця
+ Показувати спливаючі вікна для опенінґу/кінцяЗабагато тексту. Не вдалося зберегти в буфер обміну.Позначити як переглянутеВи впевнені що хочете вийти\?ТакНі
- Установлення оновлення програми…
+ Встановлення оновлення програми…Не вдалося встановити нову версію програмиСтарийІнсталятор пакетів
@@ -485,9 +485,9 @@
Увімкнено безпечний режимАвториЗавантаження оновлення програми…
- Усі розширення вимкнено через збій, щоб допомогти вам знайти те, що спричиняє проблеми.
+ Усі розширення були вимкнені через збій, щоб допомогти вам знайти те, що стало причиною проблеми.Програму не знайдено
- Змішаний опенінг
+ Змішаний опенінґВидалити з переглянутогоЗа оновленням (від старого до нового)За оновленням (від нового до старого)
@@ -497,13 +497,13 @@
Сортувати заЗа алфавітом (від А до Я)За рейтингом (від низького до високого)
- Схоже, ваша бібліотека порожня :(
-\nУвійдіть в обліковий запис бібліотеки або додайте серіали до вашої локальної бібліотеки
+ Ваша бібліотека порожня :(
+\nУвійдіть в обліковий запис бібліотеки або додайте фільми до вашої локальної бібліотеки.За алфавітом (від Я до А)Виберіть бібліотекуВідкрити зБраузер
- Схоже, цей список порожній, спробуйте перейти до іншого
+ Цей список порожній. Спробуйте перейти до іншого.Файл безпечного режиму знайдено!
\nРозширеня не завантажуються під час запуску, доки файл не буде видалено.Android TV
@@ -524,10 +524,9 @@
Відписатися від %sЕпізод %d випущено!Повернути
- raw.githubusercontent.com
-\nProxy
- Не вдалося зв\'язатися з GitHub, увімкнувши проксі-сервер jsdelivr.
+ raw.githubusercontent.com Proxy
+ Не вдалося отримати доступ до GitHub. Увімкнення проксі-сервера jsDelivr…Обходи ISP
- Обходити блокування GitHub з використанням jsdlitr, може викликати затримку оновлень на кілька днів.
+ Обхід блокування GitHub за допомогою jsDelivr. Можлива затримка оновлень на кілька днів.Бажана якість перегляду (Мобільні дані)
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml
index f733addc..df2e9a8b 100644
--- a/app/src/main/res/values-ur/strings.xml
+++ b/app/src/main/res/values-ur/strings.xml
@@ -230,7 +230,7 @@
سلسلہکارٹونانیمی
- \@string/اووا
+ اوواٹورینٹدستاویزی فلمایشیائی ڈرامے
@@ -356,4 +356,4 @@
%d / 10اٹھایااگر سب ٹائٹلز %d ms بہت جلد دکھائے جائیں تو اسے استعمال کریں
-
\ No newline at end of file
+
diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml
index db647b5d..f896e5c1 100644
--- a/app/src/main/res/values-vi/strings.xml
+++ b/app/src/main/res/values-vi/strings.xml
@@ -1,5 +1,5 @@
-
+%s Tập %d
@@ -10,7 +10,7 @@
%dmPoster
- \@string/result_poster_img_des
+ Ảnh bìaEpisode PosterMain PosterNext Random
@@ -110,7 +110,7 @@
Tiếp tục xemLoại bỏThông tin thêm
- \@string/home_play
+ @string/home_playBạn có thể sẽ cần sử dụng VPN để xem phim nàyPhim này được chiếu dưới dạng Torrent. Hãy sử dụng VPN để xemThông tin phim
@@ -128,16 +128,16 @@
Chỉnh tốc độ phimCó thể điều chỉnh tốc độ phát phimVuốt để tua nhanh
- Bạn có thể vuốt trái hoặc phải để tua nhanh khi xem phim
+ Vuốt sang trái hoặc phải để tua videoVuốt để chỉnh độ sáng và âm lượ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
+ Vuốt lên hoặc vuốt xuống ở hai bên để điều chỉnh độ sáng và âm lượngTự động phát tập tiếp theoPhát tập tiếp theo sau khi hết tập hiện tạiNhấn 2 lần để tuaNhấn 2 lần để tạm dừng
- Thời lượng tua
+ Thời lượng tua (Giây)Nhấn 2 lần vào bên trái hoặc bên phải 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 hai lần để tạm dừngSử dụng độ sáng hệ thốngSử dụng độ sáng hệ thống trong trình phát ứng dụngCập nhật tiến trình xem
@@ -163,7 +163,7 @@
Ẩn chất lượng video khi tìm kiếmTự động cập nhật pluginHiển thị thông báo cập nhật App
- Tự động tìm kiếm và thông báo khi có bản cập nhật mới
+ Tự động tìm kiếm bản cập nhật mới sau khi khởi động app.Cập nhật phiên bản BetaTìm kiếm các phiên bản Beta thay vì đợi bản cập nhật chính thứcGithub
@@ -229,7 +229,7 @@
Phim BộHoạt HìnhAnime
- \@string/ova
+ OVATorrentPhim Tài LiệuTruyền Hình Châu Á
@@ -260,18 +260,18 @@
Kiểm tra cập nhậtKhóaThu Phóng
- Tuỳ chọn
- Tua nhanh
+ Nguồn
+ Bỏ qua OPKhông hiện lại
- Bỏ qua
+ Bỏ qua bản cập nhật nàyCập nhật
- Tự động chọn chất lượng phim
+ Chất lượng xem ưu tiên (WiFi)Kí tự tối đa trên tiêu đề
- Định dạng trình phát
- Dung lượng video cache
+ Độ phân giải trình phát video
+ Kích thước bộ nhớ đệm videoThời lượng bộ nhớ đệm
- Dung lượng video cache
- Xoá hình ảnh và video
+ Lưu bộ nhớ đệm video trên ổ cứng
+ Xoá bộ nhớ đệm hình ảnh và videoSẽ gây lỗi nếu đặt quá cao trên máy có dung lượng ram thấp như Android TV.Sẽ gây lỗi nếu đặt quá cao trên máy có dung lượng lưu trữ thấp như Android TV.DNS over HTTPS
@@ -507,7 +507,7 @@
Tải lên (Mới đến Cũ)Tải lên (Cũ đến Mới)Thư viện của bạn đang trống :(
-\nHãy đăng nhập vào thư viện hoặc thêm phim vào thư viện cục bộ
+\nĐăng nhập vào tài khoản thư viện hoặc thêm phim vào thư viện cục bộMở vớiSiêu dữ liệu không có sẵn, video sẽ không được tải nếu nó không tồn tại trên trang web.PackageInstaller
@@ -516,7 +516,32 @@
Xếp hạng (Thấp đến Cao)Chữ cái (Z đến A)Sắp xếp
- Có vẻ như danh sách này trống, hãy thử chuyển sang danh sách khác
+ Danh sách này trống, hãy thử chuyển sang danh sách khác.Chữ cái (A đến Z)Chọn Thư viện
-
\ No newline at end of file
+ Nhật ký
+ Chất lượng xem ưu tiên (Dữ liệu di động)
+ Thất bại
+ Thành công
+ Bắt đầu
+ Kiểm tra nguồn phim
+ raw.githubusercontent.com Proxy
+ Không thể kết nối được tới GitHub. Đang bật jsDelivr proxy…
+ Android TV
+ Khởi động lại
+ Đã đăng kí %s
+ Tập %d đã ra mắt!
+ Đã đăng kí
+ Dừng
+ Bỏ qua ISP
+ Đã bỏ đăng ký %s
+ Tìm thấy tệp Safe mode!
+\nKhông tải bất cứ tiện ích nào khi khởi dộng cho đến khi tệp bị xoá
+ Trở lại
+ Đang cập nhật các phim đã đăng kí
+ Bỏ qua chặn GitHub bằng cách dùng jsDelivr. Có thể gây ra việc cập nhật bị chậm vài ngày
+ Lượng tua thêm được sử dụng khi trình phát ẩn
+ Lượng tua thêm
+ Lượng tua thêm được sử dụng khi trình phát hiện lên
+ Lượng tua thêm
+
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 8a10208a..1fd01d8a 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -1,5 +1,5 @@
-
+%d %s | %s%s • %s
@@ -23,9 +23,9 @@
劇集封面主封面隨機下一個
- \@string/play_episode
+ @string/play_episode返回
- \@string/home_change_provider_img_des
+ @string/home_change_provider_img_des更改片源預覽背景
@@ -46,7 +46,7 @@
無資料更多選項下一集
- \@string/synopsis
+ @string/synopsis類型分享在瀏覽器中打開
@@ -123,7 +123,7 @@
繼續觀看移除更多資訊
- \@string/home_play
+ @string/home_play此片源可能需要 VPN 才能正常使用此片源是種子,建議使用 VPN站點不提供元數據,如果站點上不存在元數據,影片載入將失敗。
@@ -142,14 +142,14 @@
播放速度在播放器中添加播放速度選項活動控制進度
- 左右滑動控制播放進度
+ 從一側滑動到另一側以控制影片中的位置滑動更改設定上下滑動更改亮度或音量自動播放下一集播放完畢後播放下一集輕按兩下以控制進度輕按兩下以暫停
- 輕按兩下以控制進度時間
+ 輕按兩下以控制進度時間(秒)在右側或左側輕按兩次以向前或向後快轉輕按兩下中間以暫停使用系統亮度
@@ -177,7 +177,7 @@
在搜尋結果中隱藏選中的影片畫質自動更新外掛程式顯示應用更新
- 啟動時自動搜尋更新
+ 啟動應用程式後自動搜尋更新。更新至預覽版搜尋預覽版更新而不是僅搜尋正式版Github
@@ -205,7 +205,7 @@
未找到劇集刪除文件刪除
- \@string/sort_cancel
+ @string/sort_cancel暫停繼續-30
@@ -244,8 +244,8 @@
電影電視劇卡通
- \@string/anime
- \@string/ova
+ 動畫
+ OVA種子紀錄片亞洲劇
@@ -285,7 +285,7 @@
不再顯示跳過此更新更新
- 偏好播放畫質
+ 偏好播放畫質 (WiFi)影片播放器標題最大字數影片播放器標題影片緩衝大小
@@ -368,7 +368,7 @@
全部最大最小
- \@string/none
+ @string/none輪廓凹陷陰影
@@ -534,4 +534,47 @@
外觀功能瀏覽器
-
\ No newline at end of file
+ 第 %d 集已發行!
+ 媒體庫
+ 開始
+ 播放器顯示 - 快轉快退秒數
+ 開啟方式
+ 應用程式將在關閉時更新
+ 評分(從低到高)
+ 更新開始
+ 外掛程式已下載
+ 從觀看中刪除
+ 排序方式
+ 排序
+ 評分(從高到低)
+ 播放器可見時使用的快轉快退秒數
+ 播放器隱藏 - 快轉快退秒數
+ 更新(從新到舊)
+ 更新(從舊到新)
+ 按字母順序(A 到 Z)
+ 按字母順序(Z 到 A)
+ 選擇媒體庫
+ 找到安全模式檔案!
+\n在刪除檔案之前不在啟動時載入任何擴充功能。
+ 日誌
+ 失敗
+ 通過
+ 播放器隱藏時使用的快轉快退秒數
+ Android TV
+ 片源測試
+ 重新啟動
+ 停止
+ 訂閱
+ 已訂閱 %s
+ 已取消訂閱 %s
+ 偏好播放畫質 (行動數據)
+ raw.githubusercontent.com Proxy
+ 繞過 ISP
+ 還原
+ 無法訪問 GitHub。 正在開啟 jsDelivr proxy…
+ 使用 jsDelivr 繞過 GitHub 的阻擋。 可能導致更新延遲幾天。
+ 您的媒體庫是空的:(
+\n登入媒體庫帳戶或將節目添加到您本機的媒體庫。
+ 此列表是空的。 嘗試切換到另一個。
+ 正在更新訂閱節目
+
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index 626cc0fe..dbd96827 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -1,5 +1,5 @@
-
+%d %s | %s%s • %s
@@ -23,9 +23,9 @@
剧集封面主封面随机下一个
- \@string/play_episode
+ @string/play_episode返回
- \@string/home_change_provider_img_des
+ @string/home_change_provider_img_des更改片源预览背景
@@ -46,7 +46,7 @@
无数据更多选项下一集
- \@string/synopsis
+ @string/synopsis类型分享在浏览器中打开
@@ -123,7 +123,7 @@
继续观看移除更多信息
- \@string/home_play
+ @string/home_play此片源可能需要 VPN 才能正常使用此片源为种子文件,建议使用 VPN站点不提供元数据,如果站点上不存在元数据,视频加载将失败。
@@ -142,14 +142,14 @@
倍速模式在播放器中添加播放速度选项滑动控制进度
- 左右滑动控制播放进度
+ 左右滑动以控制视频中的位置滑动更改设置上下滑动修改亮度或音量自动播放下一集播放完毕后播放下一集双击控制进度双击暂停
- 双击控制进度时间
+ 双击控制进度时间 (秒)在左右侧双击快进或快退双击中间暂停使用系统亮度
@@ -178,7 +178,7 @@
自动更新插件自动下载插件显示应用更新
- 启动时自动搜索更新
+ 启动应用后自动搜索更新。更新至预览版搜索预览版更新替代仅搜索完整版本Github
@@ -206,7 +206,7 @@
未找到剧集删除文件删除
- \@string/sort_cancel
+ @string/sort_cancel暂停继续-30
@@ -245,8 +245,8 @@
电影电视剧卡通
- \@string/anime
- \@string/ova
+ 动漫
+ OVA种子纪录片亚洲剧
@@ -286,7 +286,7 @@
不再显示跳过此更新更新
- 首选播放画质
+ 首选播放画质(WiFi)视频播放器标题最多字符视频播放器标题视频缓冲大小
@@ -369,7 +369,7 @@
全部最大最小
- \@string/none
+ @string/none轮廓凹陷阴影
@@ -551,9 +551,9 @@
字母排序(从 Z 到 A)选择库打开方式
- 看来您的库是空的 :(
-\n登录库账户或添加节目到您的本地库
- 看来此列表是空的,请尝试切换到另一个
+ 您的库是空的 :(
+\n登录库账户或添加节目到您的本地库。
+ 此列表是空的,请尝试切换到另一个。播放器显示 - 快进快退秒数播放器可见时使用的快进快退秒数播放器隐藏 - 快进快退秒数
@@ -572,8 +572,9 @@
成功日志raw.githubusercontent.com 代理
- 连接 Github 失败,正在启用 jsdelivr 代理。
- 使用 jsdelivr 绕过对 Github 的封锁,可能导致更新延迟几天。
+ 无法访问 GitHub。正在开启 jsDelivr 代理…
+ 使用 jsDelivr 绕过 GitHub 的封锁。可能会延迟几天的更新。ISP 绕过还原
-
\ No newline at end of file
+ 首选播放画质(移动数据)
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 25400934..fbaecd2e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -210,17 +210,17 @@
Eigengravy ModeAdds a speed option in the playerSwipe to seek
- Swipe left or right to control time in the videoplayer
+ Swipe from side to side to control your position in a videoSwipe to change settings
- Swipe on the left or right side to change brightness or volume
+ Slide up or down on the left or right side to change brightness or volumeAutoplay next episodeStart the next episode when the current one endsDouble tap to seekDouble tap to pause
- Player seek amount
+ Player seek amount (Seconds)Tap twice on the right or left side to seek forwards or backwards
- Tap in the middle to pause
+ Tap twice in the middle to pauseUse system brightnessUse system brightness in the app player instead of a dark
overlay
@@ -251,7 +251,7 @@
Automatically download pluginsAutomatically install all not yet installed plugins from added repositories.Show app updates
- Automatically search for new updates on start
+ Automatically search for new updates after starting the app.Redo setup processUpdate to prereleasesSearch for prerelease updates instead of full releases only
@@ -324,8 +324,8 @@
MovieSeriesCartoon
- @string/anime
- @string/ova
+ Anime
+ OVATorrentDocumentaryAsian Drama
@@ -382,8 +382,8 @@
DNS over HTTPSUseful for bypassing ISP blocksraw.githubusercontent.com Proxy
- Failed to reach GitHub, enabling jsdelivr proxy.
- Bypasses blocking of GitHub using jsdelivr, may cause updates to be delayed by few days.
+ Could not reach GitHub. Turning on jsDelivr proxy…
+ Bypasses blocking of GitHub using jsDelivr. May cause updates to be delayed by few days.Clone siteRemove siteAdd a clone of an existing site, with a different URL
@@ -648,8 +648,9 @@
Alphabetical (Z to A)Select LibraryOpen with
- Looks like your library is empty :(\nLogin to a library account or add shows to your local library
- Looks like this list is empty, try switching to another one
+ Your library is empty :(
+\nLog in on a library account or add shows to your local library.
+ This list is empty. Try switching to another one.Safe mode file found!\nNot loading any extensions on startup until file is removed.RevertUpdating subscribed shows
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 78c62c69..b9648162 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -40,7 +40,6 @@
?attr/textColor?attr/grayTextColor
- ?attr/grayTextColor?attr/grayTextColor?attr/textColor