diff --git a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/OpenSubtitlesApi.kt b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/OpenSubtitlesApi.kt index f22fdd8b..d5d6400c 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/OpenSubtitlesApi.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/syncproviders/providers/OpenSubtitlesApi.kt @@ -200,8 +200,12 @@ class OpenSubtitlesApi(index: Int) : InAppAuthAPIManager(index), AbstractSubApi it.data?.forEach { item -> val attr = item.attributes ?: return@forEach val featureDetails = attr.featDetails + //Use filename as name, if its valid + val filename = attr.files?.firstNotNullOfOrNull { subfile -> + subfile.fileName + } //Use any valid name/title in hierarchy - val name = featureDetails?.movieName ?: featureDetails?.title + val name = filename ?: featureDetails?.movieName ?: featureDetails?.title ?: featureDetails?.parentTitle ?: attr.release ?: "" val lang = fixLanguageReverse(attr.language)?: "" val resEpNum = featureDetails?.episodeNumber ?: query.epNumber @@ -330,4 +334,4 @@ class OpenSubtitlesApi(index: Int) : InAppAuthAPIManager(index), AbstractSubApi @JsonProperty("parent_tmdb_id") var parentTmdbId: Int? = null, @JsonProperty("parent_feature_id") var parentFeatureId: Int? = null ) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/APIRepository.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/APIRepository.kt index ef50019c..2c50a6c6 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/APIRepository.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/APIRepository.kt @@ -1,6 +1,7 @@ package com.lagradost.cloudstream3.ui import com.lagradost.cloudstream3.* +import com.lagradost.cloudstream3.APIHolder.unixTime import com.lagradost.cloudstream3.APIHolder.unixTimeMS import com.lagradost.cloudstream3.mvvm.Resource import com.lagradost.cloudstream3.mvvm.logError @@ -31,26 +32,47 @@ class APIRepository(val api: MainAPI) { return data.isEmpty() || data == "[]" || data == "about:blank" } - private val cacheHash: HashMap, LoadResponse> = hashMapOf() + data class SavedLoadResponse( + val unixTime: Long, + val response: LoadResponse, + val hash: Pair + ) + + + private val cache: ArrayList = arrayListOf() + private var cacheIndex: Int = 0 + const val cacheSize = 20 } val hasMainPage = api.hasMainPage + val providerType = api.providerType val name = api.name val mainUrl = api.mainUrl val mainPage = api.mainPage val hasQuickSearch = api.hasQuickSearch val vpnStatus = api.vpnStatus - val providerType = api.providerType suspend fun load(url: String): Resource { return safeApiCall { if (isInvalidData(url)) throw ErrorLoadingException() val fixedUrl = api.fixUrl(url) - val key = Pair(api.name, url) - cacheHash[key] ?: api.load(fixedUrl)?.also { - // we cache 20 responses because ppl often go back to the same shit + 20 because I dont want to cause too much memory leak - if (cacheHash.size > 20) cacheHash.remove(cacheHash.keys.random()) - cacheHash[key] = it + val lookingForHash = Pair(api.name, fixedUrl) + + for (item in cache) { + // 10 min save + if (item.hash == lookingForHash && (unixTime - item.unixTime) < 60 * 10) { + return@safeApiCall item.response + } + } + + api.load(fixedUrl)?.also { response -> + val add = SavedLoadResponse(unixTime, response, lookingForHash) + if (cache.size > cacheSize) { + cache[cacheIndex] = add // rolling cache + cacheIndex = (cacheIndex + 1) % cacheSize + } else { + cache.add(add) + } } ?: throw ErrorLoadingException() } } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt index ac6daa53..00b53fa7 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeFragment.kt @@ -443,6 +443,7 @@ class HomeFragment : Fragment() { home_main_poster_recyclerview?.isVisible = visible } + @SuppressLint("NotifyDataSetChanged") // we need to notify to change poster private fun fixGrid() { activity?.getSpanCount()?.let { currentSpan = it @@ -465,6 +466,7 @@ class HomeFragment : Fragment() { override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) + (home_preview_viewpager?.adapter as? HomeScrollAdapter)?.notifyDataSetChanged() fixGrid() } diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeScrollAdapter.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeScrollAdapter.kt index a3eaf7c7..7ed074dc 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeScrollAdapter.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeScrollAdapter.kt @@ -1,5 +1,6 @@ package com.lagradost.cloudstream3.ui.home +import android.content.res.Configuration import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -16,7 +17,7 @@ class HomeScrollAdapter : RecyclerView.Adapter() { private var items: MutableList = mutableListOf() var hasMoreItems: Boolean = false - fun getItem(position: Int) : LoadResponse? { + fun getItem(position: Int): LoadResponse? { return items.getOrNull(position) } @@ -59,6 +60,10 @@ class HomeScrollAdapter : RecyclerView.Adapter() { fun bind(card: LoadResponse) { card.apply { + val isHorizontal = + itemView.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE + val posterUrl = if (isHorizontal) backgroundPosterUrl ?: posterUrl else posterUrl + ?: backgroundPosterUrl itemView.home_scroll_preview_tags?.text = tags?.joinToString(" • ") ?: "" itemView.home_scroll_preview_tags?.isGone = tags.isNullOrEmpty() itemView.home_scroll_preview?.setImage(posterUrl, posterHeaders) diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt index 4371fc39..3b01508d 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/settings/SettingsProviders.kt @@ -16,8 +16,6 @@ import com.lagradost.cloudstream3.utils.USER_SELECTED_HOMEPAGE_API import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showMultiDialog import com.lagradost.cloudstream3.utils.SubtitleHelper import com.lagradost.cloudstream3.utils.UIHelper.hideKeyboard -import kotlin.reflect.jvm.internal.impl.descriptors.deserialization.PlatformDependentDeclarationFilter.All - class SettingsProviders : PreferenceFragmentCompat() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index e6270a77..7f8e2c01 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -323,6 +323,7 @@ app:iconifiedByDefault="true" app:queryBackground="@color/transparent" app:queryHint="@string/search" + app:closeIcon="@drawable/ic_baseline_close_24" app:searchIcon="@drawable/search_icon" tools:ignore="RtlSymmetry" /> @@ -405,11 +406,11 @@ + - + android:layout_height="0dp"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/background_card" + android:layout_width="114dp" + android:layout_height="180dp" + android:layout_margin="2dp" + android:layout_marginBottom="2dp" + android:elevation="10dp" + android:foreground="@drawable/outline_drawable" + app:cardBackgroundColor="?attr/primaryGrayBackground" + app:cardCornerRadius="@dimen/rounded_image_radius"> + android:id="@+id/imageView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:contentDescription="@string/search_poster_img_des" + android:duplicateParentState="true" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:scaleType="centerCrop" + tools:src="@drawable/example_poster" /> + android:id="@+id/title_shadow" + android:layout_width="match_parent" + android:layout_height="50dp" + android:layout_gravity="bottom" + android:clickable="false" + android:focusable="false" + android:src="@drawable/title_shadow" + tools:ignore="ContentDescription" /> + android:id="@+id/imageText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:ellipsize="end" + android:gravity="center" + android:maxLines="2" + android:paddingStart="5dp" + android:paddingTop="5dp" + android:paddingEnd="5dp" + android:paddingBottom="5dp" + android:textColor="@color/textColor" + android:textStyle="bold" + tools:text="The Perfect Run" /> + android:id="@+id/search_item_download_play" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_gravity="center" + android:src="@drawable/play_button" /> + android:id="@+id/watchProgress" + style="@android:style/Widget.Material.ProgressBar.Horizontal" + android:layout_width="match_parent" + android:layout_height="5dp" + android:layout_gravity="bottom" + android:layout_marginBottom="-1.5dp" + android:progressBackgroundTint="?attr/colorPrimary" + android:progressTint="?attr/colorPrimary" + tools:progress="50" /> - + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="end" + android:orientation="vertical"> + android:id="@+id/text_is_dub" + style="@style/DubButton" + android:layout_gravity="end" /> + android:id="@+id/text_is_sub" + style="@style/SubButton" + android:layout_gravity="end" /> + android:id="@+id/text_flag" + style="@style/SearchBox" + android:layout_gravity="end" + android:background="@color/transparent" + android:textSize="20sp" + android:visibility="gone" + tools:text="🇸🇪" + tools:visibility="visible" /> diff --git a/app/src/main/res/layout/home_result_grid_expanded.xml b/app/src/main/res/layout/home_result_grid_expanded.xml index 3cf4e7f9..b697c1de 100644 --- a/app/src/main/res/layout/home_result_grid_expanded.xml +++ b/app/src/main/res/layout/home_result_grid_expanded.xml @@ -5,58 +5,58 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/background_card" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="2dp" + android:backgroundTint="@color/transparent" + android:foreground="@drawable/outline_drawable" + app:cardCornerRadius="@dimen/rounded_image_radius" + app:cardElevation="0dp"> + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:id="@+id/image_holder" + android:layout_width="114dp" + android:layout_height="180dp" + android:elevation="10dp" + app:cardBackgroundColor="?attr/primaryGrayBackground" + app:cardCornerRadius="@dimen/rounded_image_radius"> + android:id="@+id/imageView" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:contentDescription="@string/search_poster_img_des" + android:duplicateParentState="true" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:scaleType="centerCrop" + tools:src="@drawable/example_poster" /> + android:id="@+id/search_item_download_play" + android:layout_width="60dp" + android:layout_height="60dp" + android:layout_gravity="center" + android:src="@drawable/play_button" /> + android:id="@+id/watchProgress" + style="@android:style/Widget.Material.ProgressBar.Horizontal" + android:layout_width="match_parent" + android:layout_height="5dp" + android:layout_gravity="bottom" + android:layout_marginBottom="-1.5dp" + android:progressBackgroundTint="?attr/colorPrimary" + android:progressTint="?attr/colorPrimary" + tools:progress="50" /> - + + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="end" + android:orientation="vertical"> + android:id="@+id/text_is_dub" + style="@style/DubButton" + android:layout_gravity="end" /> + android:id="@+id/text_is_sub" + style="@style/SubButton" + android:layout_gravity="end" /> + android:id="@+id/text_flag" + style="@style/SearchBox" + android:layout_gravity="end" + android:background="@color/transparent" + android:textSize="20sp" + android:visibility="gone" + tools:text="🇸🇪" + tools:visibility="visible" /> + android:id="@+id/imageText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:ellipsize="end" + android:gravity="center" + android:maxLines="2" + android:minLines="2" + android:paddingStart="5dp" + android:paddingTop="5dp" + android:paddingEnd="5dp" + android:paddingBottom="5dp" + android:textColor="?attr/textColor" + android:textSize="13sp" + tools:text="The Perfect Run\nThe Perfect Run\nhello" /> diff --git a/app/src/main/res/layout/search_result_grid.xml b/app/src/main/res/layout/search_result_grid.xml index 98fe5812..f3c35ca4 100644 --- a/app/src/main/res/layout/search_result_grid.xml +++ b/app/src/main/res/layout/search_result_grid.xml @@ -1,98 +1,89 @@ + android:clickable="true" + android:focusable="true" + android:foreground="@drawable/outline_drawable" + android:orientation="vertical"> + + + android:contentDescription="@string/search_poster_img_des" + android:duplicateParentState="true" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:scaleType="centerCrop" /> - - + android:id="@+id/title_shadow" + android:layout_width="match_parent" + android:layout_height="50dp" + android:layout_gravity="bottom" + android:clickable="false" + android:focusable="false" + android:src="@drawable/title_shadow" + tools:ignore="ContentDescription" /> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:ellipsize="end" + android:gravity="center" + android:maxLines="2" + android:paddingStart="5dp" + android:paddingTop="5dp" + android:paddingEnd="5dp" + android:paddingBottom="5dp" + android:textColor="@color/textColor" + android:textStyle="bold" /> - + + + + + + + - - - - - - + android:background="@color/transparent" + android:textSize="20sp" + android:visibility="gone" + tools:text="🇸🇪" + tools:visibility="visible" /> diff --git a/app/src/main/res/layout/search_result_grid_expanded.xml b/app/src/main/res/layout/search_result_grid_expanded.xml index 710c6cf8..eb859af5 100644 --- a/app/src/main/res/layout/search_result_grid_expanded.xml +++ b/app/src/main/res/layout/search_result_grid_expanded.xml @@ -1,90 +1,81 @@ + android:clickable="true" + android:focusable="true" + android:foreground="@drawable/outline_drawable" + android:orientation="vertical"> + android:id="@+id/background_card" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_margin="2dp" + android:layout_marginBottom="2dp" + android:elevation="10dp" + app:cardBackgroundColor="?attr/primaryGrayBackground" + app:cardCornerRadius="@dimen/rounded_image_radius"> + android:layout_height="match_parent" + android:contentDescription="@string/search_poster_img_des" + android:duplicateParentState="true" + android:foreground="?android:attr/selectableItemBackgroundBorderless" + android:scaleType="centerCrop" + tools:src="@drawable/example_poster" /> - + + + + + + + - - - - - - + android:background="@color/transparent" + android:textSize="20sp" + android:visibility="gone" + tools:text="🇸🇪" + tools:visibility="visible" /> + android:id="@+id/imageText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="bottom" + android:ellipsize="end" + android:gravity="center" + android:maxLines="2" + android:minLines="2" + android:paddingStart="5dp" + android:paddingTop="5dp" + android:paddingEnd="5dp" + android:paddingBottom="5dp" + android:textColor="?attr/textColor" + android:textSize="13sp" + tools:text="The Perfect Run\nThe Perfect Run" /> \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index bda3cf2a..b3676fa6 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -6,7 +6,7 @@ الملصق الرئيسي التالي عشوائي - ارجع للخلف + رجوع تغيير المصدر معاينة الخلفية @@ -38,7 +38,7 @@ …تحميل أشاهده - في الانتظار + في الإنتظار مكتمل مهمل أخطط لمشاهدته @@ -100,7 +100,7 @@ لون الخلفية لون النافذة نوع الحافة - ارتفاع الترجمة + إرتفاع الترجمة الخط حجم الخط @@ -111,7 +111,7 @@ لم يتم إعطاء موز تحديد اللغة تلقائيًا - تحميل اللغات + لغات التحميل لغة الترجمة إضغط بإستمرار لإعادة التعيين للإعدادات الافتراضية إستيراد خطوط بوضعها هنا %s @@ -185,9 +185,10 @@ إخفاء جودة الفيديو المختارة من نتائج البحث تحديث الإضافات تلقائيًا + تنزيل الإضافات تلقائيًا التحديث التلقائي البحث تلقائيًا عن التحديثات الجديدة عند البداية - التحديث إلى الاصدارات التجريبيه (بيتا) + التحديث إلى الاصدارات التجريبية (بيتا) البحث عن التحديثات التجريبية بدلاً من الإصدارات الكاملة فقط Github تطبيق روايات خفيف من نفس المطورين @@ -255,7 +256,7 @@ فيلم مسلسل - كارتون + كرتون @string/anime @string/ova تورنت @@ -353,7 +354,7 @@ عام زر العشوائي إظهار زر العشوائي علي الشاشة الرئيسية - لغات الموفر + لغات المزود واجهة التطبيق المحتوي المفضل تفعيل محتوي البالغين داخل المزودين المدعومين @@ -378,13 +379,13 @@ mal_key opensubtitles_key nginx_key - password123 - MyCoolUsername - hello@world.com + كلمة المرور + إسم المستخدم + البريد الإلكتروني 127.0.0.1 - MyCoolSite - example.com - Language code (en) + إسم الموقع + رابط الموقع + اللغة (الإنجليزية) Pobierz Pobrane @@ -61,6 +61,7 @@ Zakończono pobieranie Stream + Błąd przy ładowaniu linków Pamięć wewnętrzna @@ -87,6 +88,7 @@ Zamknij Wyczyść Zapisz + Prędkość odtwarzania Ustawienia napisów @@ -108,8 +110,8 @@ Wybierz język automatycznie Pobieranie języków Język napisów - Przytrzymaj aby zresetować - Importuj czcionki umieszczając je w %s + Przytrzymaj, aby zresetować + Importuj czcionki umieszczając je w %s Kontyntynuj oglądanie Usuń @@ -117,14 +119,15 @@ Połączenie przez VPN może być wymagane Ten dostawca jest torrentem, wskazane jest użycie połączenia VPN - + Metadane nie są dostarczane przez witrynę, ładowanie filmu nie powiedzie się, jeśli nie ma ich w witrynie. - + Opis Nie znaleziono opisu Nie znaleziono opisu Pokaż logcat 🐈 + Obraz-w-obrazie Oglądaj w małym, pływającym okienku Przycisk zmiany rozmiaru @@ -140,17 +143,23 @@ Przesuwaj w lewo lub prawo aby kontrolować czas Przesuwaj aby zmienić ustawienia Przesuwaj po lewej lub prawej stronie aby zmienić jasność i głośność - Podwójne stuknięcie aby przeglądać - Stuknij dwukrotnie, aby wstrzymać + + Autoodtwarzanie następnego odcinka + Rozpocznij następny odcinek po zakończeniu bieżącego + Wielkość skoku przy podwójnym stuknięciu + Podwójne stuknięcie aby przeglądać Stuknij 2 razy z prawej lub lewej strony aby przeglądać + + Stuknij dwukrotnie, aby wstrzymać Stuknij na środku, aby wstrzymać + Użyj jasności systemowej - Użyj jasności systemowej w odtwarzaczu aplikacji zamiast ciemnej nakładki - + Użyj jasności systemowej w odtwarzaczu aplikacji zamiast ciemnej nakładki Aktualizuj postęp oglądania Automatycznie synchronizuj postęp aktualnego odcinka + Przywracanie danych z kopii zapasowej Kopia zapasowa danych @@ -163,7 +172,7 @@ Szukaj Konta Aktualizacje i kopia zapasowa - + Informacje Zaawansowane wyszukiwanie Szukaj z podziałem na dostawców @@ -172,6 +181,10 @@ Pokaż odcinek wypełniający dla anime Pokaż zwiastuny Pokaż plakaty z Kitsu + Ukryj wybraną jakość wideo w wynikach wyszukiwania + + Automatyczne aktualizacje rozszerzeń + Automatyczne pobieranie rozszerzeń Pokazuj aktualizacje Automatycznie wyszukuj aktualizacji przy starcie Aktualizuj do wersji beta @@ -193,13 +206,16 @@ Awaria aplikacji. Anonimowe zgłoszenie błedu zostanie wysłane programistom Sezon + %s %d%s Brak sezonu Odcinek Odcinki + %d-%d + %d %s S O - Nie znaleziono odcinków + Usuń plik Usuń Wstrzymaj @@ -226,6 +242,7 @@ W użyciu Aplikacja + Filmy Serial telewizyjny Kreskówki @@ -234,14 +251,20 @@ Filmy dokumentalne OVA Filmy azjatyckie - Transmisje na żywo + NSFW + Inne + + Film Serial telewizyjny Kreskówka Torrent Film dokumentalny Film azjatycki + Transmisja na żywo + NSFW + Inne Błąd żródła Zdalny błąd @@ -258,13 +281,14 @@ Automatyczne pobieranie Pobierz mirror Odświerz linki - Pobierz napisy + Etykieta jakości Etykieta dubbingu Etykieta napisów Tytuł Włącz elementy interfejsu na plakatach + Nie znaleziono aktualizacji Sprawdź czy jest aktualizacja @@ -279,6 +303,7 @@ Domyślna jakość Maksymalna ilość znaków tytułu w odtwarzaczu Zawartość tytułu w odtwarzaczu + Rozmiar bufora wideo Długość bufora wideo Pamięć podręczna wideo na dysku @@ -293,8 +318,11 @@ Sklonuj stronę Usuń stronę Dodaj klona istniejącej strony z innym adresem url + Ścieżka pobierania + Url serwera Nginx + Wyświetlanie Anime z dubbingiem/subbingiem Dopasuj do ekranu @@ -303,15 +331,17 @@ Zastrzeżenie + Ogólne Przycisk do losowania Pokaż przycisk do losowania na stronie głównej Języki dostawców - Ogólne Układ aplikacji Preferowane media - + Włącz NSFW u obsługiwanych dostawców Kodowanie napisów + Dostawcy Układ interfejsu + Automatyczny Układ dla telewizorów Układ dla telefonów @@ -319,10 +349,12 @@ Kolor podstawowy Motyw aplikacji - - Pozycja tytułu względem plakatu Ustaw tytuł pod plakatem + + Kod języka (pl) + + %s %s konto Wyloguj się Logowanie @@ -332,9 +364,12 @@ Dodaj synchronizację Dodano %s Synchronizacja + Ocenione + %d na 10 + Uwierzytelniono %s + Nie udało się uwierzytelnić w %s - Uwierzytelniono %s - Nie udało się uwierzytelnić w %s + Brak Normalne Wszystkie @@ -364,8 +399,9 @@ Źródło Losowy - + Już wkrótce… + Cam Cam Cam @@ -376,6 +412,13 @@ BlueRay WP DVD + 4K + SD + UHD + HDR + SDR + Web + Obraz plakatu Odtwarzacz Rozdzielczość i tytuł @@ -387,30 +430,27 @@ Błąd Usuń informacje dla niesłyszących z napisów Usuń nadmiarowe informacje z napisów + Filtrowanie wg preferowanego języka mediów + Dodatki + Zwiastun + Odsyłacz Dalej Wyświetlaj filmy w wybranych językach Cofnij Pomiń Dostosuj wygląd aplikacji do urządzenia + Przekazywanie błędów Preferowany rodzaj filmów Gotowe - Dodatki - Zwiastun - Odtwórz w CloudStream - Transmisja na żywo - Link to streamu - Odsyłacz - Przekazywanie błędów - Automatyczne aktualizacje rozszerzeń - Rozszerzenia + Dodatki Dodaj repozytorium Nazwa repozytorium Adres url repozytorium Rozszerzenie załadowane Rozszerzenie usunięte Błąd ładowania %s - +18 - Zaczęto pobieranie %d %s + 18+ + Rozpoczęto pobieranie %d %s Pobrano %d %s Wszystkie %s już pobrane Pobierz wszystko @@ -418,34 +458,27 @@ rozszerzenia Ta akcja usunie także wszystkie rozszerzenia z repozytorium Usuń repozytorium - Pobierz strony które Cię interesują + Pobierz strony, które Cię interesują Pobrano: %d Wyłączono: %d Nie pobrano: %d + Zaaktualizowano %d rozszerzeń Dodaj repozytorium aby zainstalować rozszerzenia - Ocenione - %d na 10 - Inne - Wideo Zobacz repozytoria społeczności Publiczna lista - Kod języka (en) - Filtrowanie wg preferowanego języka mediów Wszystkie napisy wielką literą + Pobrać wszystkie rozszerzenia z tego repozytorium? %s (Wyłączone) - Ukryj wybraną jakość wideo w wynikach wyszukiwania - Włącz NSFW u obsługiwanych dostawców - Dostawcy + Ścieżki + Ścieżki audio + Ścieżki wideo + Zastosuj po ponownym uruchomieniu + Tryb bezpieczny włączony Wystąpiła nieoczekiwana awaria i automatycznie wyłączyliśmy wszystkie rozszerzenia, abyś mógł znaleźć i usunąć rozszerzenie, które powoduje problemy. Wyświetl informacje o awarii - Ścieżki audio - Ścieżki wideo - Ścieżki - Zastosuj po ponownym uruchomieniu - Rozpocznij następny odcinek po zakończeniu bieżącego - Autoodtwarzanie następnego odcinka + Ocena: %s Opis Versja @@ -455,5 +488,19 @@ Wspierane Język Najpierw zainstaluj rozszerzenie - Zaaktualizowano %d rozszerzeń + + Playlista HLS + + Preferowany odtwarzacz wideo + Odtwarzacz wewnętrzny + VLC + MPV + Web Video Cast + Przeglądarka + Aplikacja nie została znaleziona + Wszystkie języki + + Wyczyść historię + Historia + Za dużo tekstu. Nie można skopiować do schowka. diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index c3e51ab5..7c2e798b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -25,13 +25,13 @@ #FFF #000 - #3d50fa + #121950 #121213 #3B65F5 - #F54A3B + #571711 #F53B66 - #3BF585 + #BEC8FF ?attr/colorPrimaryDark #FF6F63 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e748868b..dac8b9cd 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -16,5 +16,4 @@ 2000 3dp - \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9c2f62fc..4fde7ae8 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -97,6 +97,24 @@ @color/white @color/whiteText + + + + + +