mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-08-01 00:59:27 +00:00
Merge 1fab514489 into 5bdbc353da
This commit is contained in:
commit
aa3f24e951
44 changed files with 305 additions and 286 deletions
|
|
@ -471,8 +471,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio se povezuje s TorBoxom radi autentifikacije računa, pristupa biblioteci u oblaku, provjere predmemorije i značajki reprodukcije iz oblaka. Nuvio nije povezan s TorBoxom niti ga TorBox podržava.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio koristi MDBList za ocjene i podatke vanjskih pružatelja informacija o ocjenama. Nuvio nije povezan s uslugom MDBList niti ona podržava Nuvio.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio koristi IntroDB API za vremenske oznake koje osigurava zajednica, a odnose se na uvodne špice, sažetke, odjavne špice i najave koje koriste kontrole za preskakanje. Nuvio nije povezan s uslugom IntroDB niti ona podržava Nuvio.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio koristi SkipDB API za vremenske oznake koje osigurava zajednica, a odnose se na uvodne špice, sažetke, odjavne špice i najave koje koriste kontrole za preskakanje. Nuvio nije povezan s uslugom SkipDB niti ona podržava Nuvio.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Koristi se za reprodukciju na iOS sustavima.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Izvorni kod samog MPVKita licenciran je pod licencom LGPL v3.0. Paketi MPVKita, uključujući biblioteke libmpv i FFmpeg, također su licencirani pod licencom LGPL v3.0.</string>
|
||||
|
|
@ -818,8 +818,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Zadajte ID klienta API AnimeSkip. Nabavite ga na anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Omogući slanje uvoda</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Prikaži gumb za slanje vremenskih oznaka za uvod i odjavu u bazu podataka zajednice.</string>
|
||||
<string name="settings_playback_introdb_api_key">API ključ IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Unesite svoj IntroDB API ključ za slanje vremenskih oznaka. On je obavezan za slanje.</string>
|
||||
<string name="settings_playback_skipdb_api_key">API ključ SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Unesite svoj SkipDB API ključ za slanje vremenskih oznaka. On je obavezan za slanje.</string>
|
||||
<string name="settings_playback_anime_skip_description">Također pretražite AnimeSkip za vremenske oznake za preskakanje (potreban je ID klijenta).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Automatski reproduciraj sljedeću epizodu</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Automatski pokreni sljedeću epizodu kada se pojavi upit.</string>
|
||||
|
|
@ -930,7 +930,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Dajte prednost prisilnim titlovima kada se podudaraju s postavkama jezika titlova.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Okomiti pomak</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Preskoči intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Koristite introdb.app za prepoznavanje uvodnih špica i sažetaka prethodnih događaja.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Koristite skipdb.tv za prepoznavanje uvodnih špica i sažetaka prethodnih događaja.</string>
|
||||
<string name="settings_playback_source_scope">Opseg izvora za automatsku reprodukciju</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Svi instalirani dodaci</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Automatska reprodukcija uzima u obzir samo prijenose iz vaših instaliranih dodataka.</string>
|
||||
|
|
@ -1737,8 +1737,8 @@
|
|||
<string name="collections_editor_media_series_suffix">Serije</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">Knjižnica u oblaku je isključena.</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">Neispravan API ključ ili neuspjela veza</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Neispravan API ključ ili neuspjela veza</string>
|
||||
<string name="addons_manifest_missing_field">"%1$s" nedostaje u manifestu.</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">TMDB Kolekcija %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">TMDB Redatelj %1$s</string>
|
||||
|
|
@ -1840,7 +1840,7 @@
|
|||
<string name="plugins_test_results_count">Rezultati testa (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Plugin-ovima pružatelja usluga potreban je TMDB API ključ. Konfigurirajte ga na zaslonu TMDB; u protivnom plugin-ovi pružatelja usluga neće ispravno raditi.</string>
|
||||
<string name="search_error_no_results_for_catalog">Nema rezultata pretraživanja za %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Neispravan API ključ ili neuspjela veza</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Neispravan API ključ ili neuspjela veza</string>
|
||||
<string name="streams_plugin_repository_fallback">Repozitorij plugin-ova</string>
|
||||
<string name="submit_intro_action">Pošalji Intro</string>
|
||||
<string name="submit_intro_button_submit">Pošalji</string>
|
||||
|
|
|
|||
|
|
@ -108,19 +108,6 @@ abstract class GenerateRuntimeConfigsTask : DefaultTask() {
|
|||
)
|
||||
}
|
||||
|
||||
outDir.resolve("com/nuvio/app/features/player/skip").apply {
|
||||
mkdirs()
|
||||
resolve("IntroDbConfig.kt").writeText(
|
||||
"""
|
||||
|package com.nuvio.app.features.player.skip
|
||||
|
|
||||
|object IntroDbConfig {
|
||||
| const val URL = "${props.getProperty("INTRODB_API_URL", "")}"
|
||||
|}
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
outDir.resolve("com/nuvio/app/features/details").apply {
|
||||
mkdirs()
|
||||
resolve("ImdbEpisodeRatingsConfig.kt").writeText(
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ actual object PlayerSettingsStorage {
|
|||
private const val skipIntroEnabledKey = "skip_intro_enabled"
|
||||
private const val animeSkipEnabledKey = "animeskip_enabled"
|
||||
private const val animeSkipClientIdKey = "animeskip_client_id"
|
||||
private const val introDbApiKeyKey = "introdb_api_key"
|
||||
private const val skipDbApiKeyKey = "skipdb_api_key"
|
||||
private const val introSubmitEnabledKey = "intro_submit_enabled"
|
||||
private const val streamAutoPlayNextEpisodeEnabledKey = "stream_auto_play_next_episode_enabled"
|
||||
private const val streamAutoPlayPreferBingeGroupKey = "stream_auto_play_prefer_binge_group"
|
||||
|
|
@ -802,13 +802,13 @@ actual object PlayerSettingsStorage {
|
|||
?.apply()
|
||||
}
|
||||
|
||||
actual fun loadIntroDbApiKey(): String? =
|
||||
preferences?.getString(ProfileScopedKey.of(introDbApiKeyKey), null)
|
||||
actual fun loadSkipDbApiKey(): String? =
|
||||
preferences?.getString(ProfileScopedKey.of(skipDbApiKeyKey), null)
|
||||
|
||||
actual fun saveIntroDbApiKey(apiKey: String) {
|
||||
actual fun saveSkipDbApiKey(apiKey: String) {
|
||||
preferences
|
||||
?.edit()
|
||||
?.putString(ProfileScopedKey.of(introDbApiKeyKey), apiKey)
|
||||
?.putString(ProfileScopedKey.of(skipDbApiKeyKey), apiKey)
|
||||
?.apply()
|
||||
}
|
||||
|
||||
|
|
@ -1192,7 +1192,7 @@ actual object PlayerSettingsStorage {
|
|||
payload.decodeSyncBoolean(skipIntroEnabledKey)?.let(::saveSkipIntroEnabled)
|
||||
payload.decodeSyncBoolean(animeSkipEnabledKey)?.let(::saveAnimeSkipEnabled)
|
||||
payload.decodeSyncString(animeSkipClientIdKey)?.let(::saveAnimeSkipClientId)
|
||||
payload.decodeSyncString(introDbApiKeyKey)?.let(::saveIntroDbApiKey)
|
||||
payload.decodeSyncString(skipDbApiKeyKey)?.let(::saveSkipDbApiKey)
|
||||
payload.decodeSyncBoolean(introSubmitEnabledKey)?.let(::saveIntroSubmitEnabled)
|
||||
payload.decodeSyncBoolean(streamAutoPlayNextEpisodeEnabledKey)?.let(::saveStreamAutoPlayNextEpisodeEnabled)
|
||||
payload.decodeSyncBoolean(streamAutoPlayPreferBingeGroupKey)?.let(::saveStreamAutoPlayPreferBingeGroup)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import androidx.compose.ui.graphics.painter.Painter
|
|||
import androidx.compose.ui.res.painterResource
|
||||
import com.nuvio.app.R
|
||||
import nuvio.composeapp.generated.resources.Res
|
||||
import nuvio.composeapp.generated.resources.introdb_favicon
|
||||
import nuvio.composeapp.generated.resources.skipdb_favicon
|
||||
import nuvio.composeapp.generated.resources.rating_tmdb
|
||||
import org.jetbrains.compose.resources.painterResource as composePainterResource
|
||||
|
||||
|
|
@ -15,5 +15,5 @@ internal actual fun integrationLogoPainter(logo: IntegrationLogo): Painter =
|
|||
IntegrationLogo.Tmdb -> composePainterResource(Res.drawable.rating_tmdb)
|
||||
IntegrationLogo.Trakt -> painterResource(id = R.drawable.trakt_tv_favicon)
|
||||
IntegrationLogo.MdbList -> painterResource(id = R.drawable.mdblist_logo)
|
||||
IntegrationLogo.IntroDb -> composePainterResource(Res.drawable.introdb_favicon)
|
||||
IntegrationLogo.SkipDb -> composePainterResource(Res.drawable.skipdb_favicon)
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 22 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
|
|
@ -474,8 +474,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio се свързва с TorBox за удостоверяване на акаунт, достъп до облачна библиотека, проверки на кеша и функции за облачно възпроизвеждане. Nuvio не е свързан с или одобрен от TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio използва MDBList за оценки и данни от доставчици на външни резултати. Nuvio не е свързан с или одобрен от MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio използва IntroDB API за предоставени от общността времеви маркери за въведения, резюмета, надписи и прегледи, използвани от контролите за пропускане. Nuvio не е свързан с или одобрен от IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio използва SkipDB API за предоставени от общността времеви маркери за въведения, резюмета, надписи и прегледи, използвани от контролите за пропускане. Nuvio не е свързан с или одобрен от SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Използва се за възпроизвеждане на iOS версии.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Самият изходен код на MPVKit е лицензиран под LGPL v3.0. Пакетите MPVKit, включително библиотеките libmpv и FFmpeg, също са лицензирани под LGPL v3.0.</string>
|
||||
|
|
@ -812,8 +812,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Въведете вашето AnimeSkip API клиентско ID. Вземете го от anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Активирай изпращане на въведения</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Показвай бутон за изпращане на времеви маркери за въведения/финали към общностната база данни.</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB API ключ</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Въведете вашия IntroDB API ключ, за да изпращате времеви маркери. Необходим за изпращане.</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB API ключ</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Въведете вашия SkipDB API ключ, за да изпращате времеви маркери. Необходим за изпращане.</string>
|
||||
<string name="settings_playback_anime_skip_description">Търси също в AnimeSkip за времеви маркери за пропускане (изисква клиентско ID).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Автоматично пускане на следващия епизод</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Стартирай следващия епизод автоматично, когато се появи подкана.</string>
|
||||
|
|
@ -922,7 +922,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Предпочитай принудителни субтитри при съответствие с настройките ви за субтитри.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Вертикално отместване</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Пропусни въведението</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Използвай introdb.app за засичане на въведения и резюмета.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Използвай skipdb.tv за засичане на въведения и резюмета.</string>
|
||||
<string name="settings_playback_source_scope">Обхват на автоматичното пускане</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Всички инсталирани добавки</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Автоматичното пускане разглежда само потоци от вашите инсталирани добавки.</string>
|
||||
|
|
@ -1691,7 +1691,7 @@
|
|||
<string name="collections_editor_media_movies_suffix">Филми</string>
|
||||
<string name="collections_editor_media_series_suffix">Сериали</string>
|
||||
<string name="cloud_library_playback_disabled">Облачната библиотека е деактивирана.</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Невалиден API ключ или неуспешна връзка</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Невалиден API ключ или неуспешна връзка</string>
|
||||
<string name="addons_manifest_missing_field">В манифеста липсва „%1$s"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">TMDB колекция %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">TMDB режисьор %1$s</string>
|
||||
|
|
@ -1793,7 +1793,7 @@
|
|||
<string name="plugins_test_results_count">Резултати от теста (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Доставчиците на плъгини изискват TMDB API ключ. Задайте го на TMDB екрана или доставчиците на плъгини няма да работят правилно.</string>
|
||||
<string name="search_error_no_results_for_catalog">Не са върнати резултати от търсенето за %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Невалиден API ключ или неуспешна връзка</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Невалиден API ключ или неуспешна връзка</string>
|
||||
<string name="streams_plugin_repository_fallback">Хранилище с плъгини</string>
|
||||
<string name="submit_intro_action">Изпрати въведение</string>
|
||||
<string name="submit_intro_button_submit">Изпрати</string>
|
||||
|
|
|
|||
|
|
@ -485,8 +485,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio se připojuje k TorBox pro ověřování účtu, přístup do cloudové knihovny, kontrolu mezipaměti a funkce cloudového přehrávání. Nuvio není přidruženo k TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio používá MDBList pro hodnocení a data externích poskytovatelů skóre. Nuvio není přidruženo k MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio používá IntroDB API pro komunitní časové značky intra, rekapitulací, závěrečných titulků a ukázek, které se používají při přeskakování. Nuvio není přidruženo k IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio používá SkipDB API pro komunitní časové značky intra, rekapitulací, závěrečných titulků a ukázek, které se používají při přeskakování. Nuvio není přidruženo k SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Používá se pro přehrávání na iOS buildech.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Samotný zdrojový kód MPVKit je licencován pod LGPL v3.0. Balíčky MPVKit, včetně knihoven libmpv a FFmpeg, jsou rovněž licencovány pod LGPL v3.0.</string>
|
||||
|
|
@ -833,8 +833,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Zadejte své klientské ID pro AnimeSkip API. Získejte jej na anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Povolit odesílání intra</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Zobrazit tlačítko pro odeslání časových značek intra/outra do komunitní databáze.</string>
|
||||
<string name="settings_playback_introdb_api_key">API klíč k IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Pro odeslání časových značek zadejte svůj API klíč IntroDB. Vyžadováno pro odeslání.</string>
|
||||
<string name="settings_playback_skipdb_api_key">API klíč k SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Pro odeslání časových značek zadejte svůj API klíč SkipDB. Vyžadováno pro odeslání.</string>
|
||||
<string name="settings_playback_anime_skip_description">Hledat časové značky k přeskočení také na AnimeSkip (vyžaduje Client ID).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Automaticky přehrát další epizodu</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Jakmile se zobrazí výzva, automaticky spustit další epizodu.</string>
|
||||
|
|
@ -959,7 +959,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Upřednostnit vynucené (forced) titulky při shodě s nastavením jazyka titulků.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Svislý posun</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Přeskočit intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Použije introdb.app pro detekci inter a rekapitulací.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Použije skipdb.tv pro detekci inter a rekapitulací.</string>
|
||||
<string name="settings_playback_source_scope">Rozsah zdroje u automatického přehrávání</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Všechny nainstalované doplňky</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Automatické přehrávání zohledňuje pouze streamy, které pocházejí z vašich nainstalovaných doplňků.</string>
|
||||
|
|
@ -1769,8 +1769,8 @@
|
|||
<string name="collections_editor_media_series_suffix">Seriály</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">Cloudová knihovna je vypnutá.</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">Neplatný API klíč nebo selhalo připojení</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Neplatný API klíč nebo selhalo připojení</string>
|
||||
<string name="addons_manifest_missing_field">V manifestu chybí \"%1$s\"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">Sbírka TMDB %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">Režisér TMDB %1$s</string>
|
||||
|
|
@ -1872,7 +1872,7 @@
|
|||
<string name="plugins_test_results_count">Výsledky testu (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Pluginy poskytovatelů vyžadují API klíč k TMDB. Nastavte jej na obrazovce TMDB, jinak nebudou pluginy správně fungovat.</string>
|
||||
<string name="search_error_no_results_for_catalog">Pro %1$s nebyly vráceny žádné výsledky vyhledávání.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Neplatný API klíč nebo selhalo připojení</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Neplatný API klíč nebo selhalo připojení</string>
|
||||
<string name="streams_plugin_repository_fallback">Repozitář pluginů</string>
|
||||
<string name="submit_intro_action">Odeslat intro</string>
|
||||
<string name="submit_intro_button_submit">Odeslat</string>
|
||||
|
|
|
|||
|
|
@ -634,8 +634,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Gib deine AnimeSkip-API-Client-ID ein. Erhältlich unter anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Intro-Übermittlung aktivieren</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Eine Schaltfläche anzeigen, um Intro-/Outro-Zeitstempel an die Community-Datenbank zu übermitteln.</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB-API-Schlüssel</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Gib deinen IntroDB-API-Schlüssel ein, um Zeitstempel zu übermitteln. Für die Übermittlung erforderlich.</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB-API-Schlüssel</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Gib deinen SkipDB-API-Schlüssel ein, um Zeitstempel zu übermitteln. Für die Übermittlung erforderlich.</string>
|
||||
<string name="settings_playback_anime_skip_description">Auch AnimeSkip nach Skip-Zeitstempeln durchsuchen (erfordert Client-ID).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Nächste Episode automatisch abspielen</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Automatisch die nächste Episode finden und abspielen, wenn der Schwellenwert erreicht ist.</string>
|
||||
|
|
|
|||
|
|
@ -1729,8 +1729,8 @@
|
|||
<string name="settings_licenses_attributions_exoplayer_title">AndroidX Media3 ExoPlayer 1.8.0</string>
|
||||
<string name="settings_licenses_attributions_imdb_body">Το Nuvio χρησιμοποιεί τα IMDb Non-Commercial Datasets, συμπεριλαμβανομένου του title.ratings.tsv.gz, για βαθμολογίες και αριθμό ψήφων IMDb. Πληροφορίες με ευγενική παραχώρηση του IMDb (https://www.imdb.com). Χρησιμοποιείται κατόπιν άδειας. Τα δεδομένα IMDb προορίζονται για προσωπική και μη εμπορική χρήση σύμφωνα με τους όρους του IMDb.</string>
|
||||
<string name="settings_licenses_attributions_imdb_title">IMDb Non-Commercial Datasets</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Το Nuvio χρησιμοποιεί το API του IntroDB για δεδομένα intro, ανακεφαλαίωσης, τίτλων τέλους και προεπισκόπησης χρονοσημάνσεων από την κοινότητα, τα οποία χρησιμοποιούνται από τα χειριστήρια παράλειψης. Το Nuvio δεν σχετίζεται με το IntroDB ούτε έχει την υποστήριξή του.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Το Nuvio χρησιμοποιεί το API του SkipDB για δεδομένα intro, ανακεφαλαίωσης, τίτλων τέλους και προεπισκόπησης χρονοσημάνσεων από την κοινότητα, τα οποία χρησιμοποιούνται από τα χειριστήρια παράλειψης. Το Nuvio δεν σχετίζεται με το SkipDB ούτε έχει την υποστήριξή του.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Το Nuvio χρησιμοποιεί το MDBList για βαθμολογίες και δεδομένα από εξωτερικούς παρόχους βαθμολόγησης. Το Nuvio δεν σχετίζεται με το MDBList ούτε έχει την υποστήριξή του.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Χρησιμοποιείται για αναπαραγωγή σε εκδόσεις iOS.</string>
|
||||
|
|
@ -1789,10 +1789,10 @@
|
|||
<string name="settings_playback_external_player_send_skip_segments_description">Προώθηση των επιλυμένων χρονοσημάνσεων intro και outro στον εξωτερικό player για αυτόματη παράλειψη. Λειτουργεί μόνο σε players που το υποστηρίζουν· άλλοι players το αγνοούν.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Ενεργοποίηση υποβολής intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Εμφάνιση κουμπιού για υποβολή χρονοσημάνσεων intro/outro στη βάση δεδομένων της κοινότητας.</string>
|
||||
<string name="settings_playback_introdb_api_key">Κλειδί API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Εισαγάγετε το κλειδί API του IntroDB για να υποβάλλετε χρονοσημάνσεις. Απαιτείται για υποβολή.</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Μη έγκυρο κλειδί API ή η σύνδεση απέτυχε</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Μη έγκυρο κλειδί API ή η σύνδεση απέτυχε</string>
|
||||
<string name="settings_playback_skipdb_api_key">Κλειδί API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Εισαγάγετε το κλειδί API του SkipDB για να υποβάλλετε χρονοσημάνσεις. Απαιτείται για υποβολή.</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Μη έγκυρο κλειδί API ή η σύνδεση απέτυχε</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Μη έγκυρο κλειδί API ή η σύνδεση απέτυχε</string>
|
||||
<string name="settings_playback_ios_audio_output">Ήχος output</string>
|
||||
<string name="settings_playback_ios_audio_output_audiounit_desc">Χρήση της παλαιότερης εξόδου AudioUnit.</string>
|
||||
<string name="settings_playback_ios_audio_output_auto_desc">Χρήση AudioUnit ενώ η έξοδος AVFoundation είναι προσωρινά απενεργοποιημένη.</string>
|
||||
|
|
|
|||
|
|
@ -485,8 +485,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio se conecta a TorBox para autenticación de cuentas, acceso a la biblioteca en la nube, comprobaciones de caché y funciones de reproducción en la nube. Nuvio no está afiliado ni respaldado por TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">Lista MDBL</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio utiliza MDBList para calificaciones y datos de proveedores de puntuaciones externos. Nuvio no está afiliado ni respaldado por MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroducciónDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio utiliza la API IntroDB para la introducción, el resumen, los créditos y las marcas de tiempo de vista previa proporcionadas por la comunidad utilizadas por los controles de omisión. Nuvio no está afiliado ni respaldado por IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">IntroducciónDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio utiliza la API SkipDB para la introducción, el resumen, los créditos y las marcas de tiempo de vista previa proporcionadas por la comunidad utilizadas por los controles de omisión. Nuvio no está afiliado ni respaldado por SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Se utiliza para la reproducción en compilaciones de iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">La fuente MPVKit por sí sola tiene licencia LGPL v3.0. Los paquetes MPVKit, incluidas las bibliotecas libmpv y FFmpeg, también tienen licencia LGPL v3.0.</string>
|
||||
|
|
@ -833,8 +833,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Introduce tu ID de cliente API de AnimeSkip. Obtén uno en anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Habilitar envío de introducción</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Muestre un botón para enviar marcas de tiempo de introducción/final a la base de datos de la comunidad.</string>
|
||||
<string name="settings_playback_introdb_api_key">Clave API de introducción a DB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Ingrese su clave API de IntroDB para enviar marcas de tiempo. Requerido para la presentación.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Clave API de introducción a DB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Ingrese su clave API de SkipDB para enviar marcas de tiempo. Requerido para la presentación.</string>
|
||||
<string name="settings_playback_anime_skip_description">Buscar también marcas de salto en AnimeSkip (requiere ID de cliente).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Reproducción automática del siguiente episodio</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Buscar y reproducir automáticamente el siguiente episodio cuando se alcance el umbral.</string>
|
||||
|
|
@ -1769,8 +1769,8 @@
|
|||
<string name="collections_editor_media_series_suffix">Serie</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">La biblioteca en la nube está deshabilitada.</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">Clave API no válida o error de conexión</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Clave API no válida o error de conexión</string>
|
||||
<string name="addons_manifest_missing_field">Falta el manifiesto \\"%1$s\\"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">Colección TMDB %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">Director de TMDB %1$s</string>
|
||||
|
|
@ -1872,7 +1872,7 @@
|
|||
<string name="plugins_test_results_count">Resultados de la prueba (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Los proveedores de complementos requieren una clave API de TMDB. Configúrelo en la pantalla TMDB o los proveedores de complementos no funcionarán correctamente.</string>
|
||||
<string name="search_error_no_results_for_catalog">No se obtuvieron resultados de búsqueda para %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Clave API no válida o error de conexión</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Clave API no válida o error de conexión</string>
|
||||
<string name="streams_plugin_repository_fallback">Repositorio de complementos</string>
|
||||
<string name="submit_intro_action">Enviar introducción</string>
|
||||
<string name="submit_intro_button_submit">Entregar</string>
|
||||
|
|
|
|||
|
|
@ -493,8 +493,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio se connecte à TorBox pour l’authentification du compte, l’accès à la cloud library, les vérifications de cache et les fonctionnalités de lecture cloud. Nuvio n’est ni affilié ni approuvé par TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio utilise MDBList pour les notes et les données de scores externes. Nuvio n’est ni affilié ni approuvé par MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio utilise l’API IntroDB pour les timestamps d’intro, de récap, de générique et d’aperçu fournis par la communauté et utilisés par les contrôles de saut. Nuvio n’est ni affilié ni approuvé par IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio utilise l’API SkipDB pour les timestamps d’intro, de récap, de générique et d’aperçu fournis par la communauté et utilisés par les contrôles de saut. Nuvio n’est ni affilié ni approuvé par SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Utilisé pour la lecture sur les builds iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Le code source MPVKit seul est distribué sous LGPL v3.0. Les bundles MPVKit, y compris les bibliothèques libmpv et FFmpeg, sont également distribués sous LGPL v3.0.</string>
|
||||
|
|
@ -851,8 +851,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Saisissez votre ID client API AnimeSkip. Obtenez-en un sur anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Activer la soumission d’intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Affiche un bouton pour soumettre des timestamps d’intro/outro à la base de données communautaire.</string>
|
||||
<string name="settings_playback_introdb_api_key">Clé API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Saisissez votre clé API IntroDB pour soumettre des timestamps. Requise pour la soumission.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Clé API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Saisissez votre clé API SkipDB pour soumettre des timestamps. Requise pour la soumission.</string>
|
||||
<string name="settings_playback_anime_skip_description">Rechercher également des marqueurs de saut sur AnimeSkip (nécessite un ID client).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Lecture automatique de l’épisode suivant</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Rechercher et lire automatiquement l’épisode suivant lorsque le seuil est atteint.</string>
|
||||
|
|
@ -1782,8 +1782,8 @@
|
|||
<string name="collections_editor_media_series_suffix">Séries</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">La cloud library est désactivée.</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">Clé API invalide ou échec de connexion</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Clé API invalide ou échec de connexion</string>
|
||||
<!-- TMDB placeholders & trakt status (restored after cherry-pick) -->
|
||||
<string name="collections_editor_tmdb_country_placeholder">US, KR, JP, IN</string>
|
||||
<string name="collections_editor_tmdb_date_from_placeholder">2020-01-01</string>
|
||||
|
|
@ -1899,7 +1899,7 @@
|
|||
<string name="plugins_test_results_count">Résultats du test (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Les fournisseurs de plugins nécessitent une clé API TMDB. Configurez-la dans l’écran TMDB, sinon les fournisseurs ne fonctionneront pas correctement.</string>
|
||||
<string name="search_error_no_results_for_catalog">Aucun résultat de recherche pour %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Clé API invalide ou échec de connexion</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Clé API invalide ou échec de connexion</string>
|
||||
<string name="streams_plugin_repository_fallback">Dépôt de plugin</string>
|
||||
<string name="submit_intro_action">Soumettre l’intro</string>
|
||||
<string name="submit_intro_button_submit">Soumettre</string>
|
||||
|
|
|
|||
|
|
@ -390,7 +390,7 @@
|
|||
<string name="settings_playback_subtitle_size">גודל כתוביות</string>
|
||||
<string name="settings_playback_subtitle_text_color">צבע הטקסט</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">דלג על הקדמה</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">השתמש ב-introdb.app לזיהוי הקדמות ותקצירים.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">השתמש ב-skipdb.tv לזיהוי הקדמות ותקצירים.</string>
|
||||
<string name="settings_playback_threshold_percentage">אחוז סף</string>
|
||||
<string name="settings_tmdb_module_collections">אוספים</string>
|
||||
<string name="settings_tmdb_module_credits">קרדיטים</string>
|
||||
|
|
|
|||
|
|
@ -429,8 +429,8 @@
|
|||
<string name="settings_licenses_attributions_trakt_body">A Nuvio a Trakthoz kapcsolódik a fiókhitelesítés, a megtekintési előzmények, a folyamat-szinkronizálás, a könyvtáradatok, az értékelések, a listák és a hozzászólások kezeléséhez. A Nuvio nem áll kapcsolatban a Trakttal, és a Trakt nem támogatja azt.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">A Nuvio az MDBList-et használja az értékelésekhez és a külső pontszám-szolgáltatók adataihoz. A Nuvio nem áll kapcsolatban az MDBListtel, és az MDBList nem támogatja azt.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">A Nuvio az IntroDB API-t használja a közösség által beküldött intró, összefoglaló (recap), stáblista és előzetes időbélyegekhez, amelyeket a kihagyás vezérlők használnak. A Nuvio nem áll kapcsolatban az IntroDB-vel, és az IntroDB nem támogatja azt.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">A Nuvio az SkipDB API-t használja a közösség által beküldött intró, összefoglaló (recap), stáblista és előzetes időbélyegekhez, amelyeket a kihagyás vezérlők használnak. A Nuvio nem áll kapcsolatban az SkipDB-vel, és az SkipDB nem támogatja azt.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Lejátszáshoz használatos az iOS buildjelemeken.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Az MPVKit forráskódja önmagában az LGPL v3.0 szerint licencelt. Az MPVKit csomagok, beleértve a libmpv és FFmpeg könyvtárakat, szintén az LGPL v3.0 szerint licenceltek.</string>
|
||||
|
|
@ -715,8 +715,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Add meg az AnimeSkip API ügyfél-azonosítódat (Client ID). Az anime-skip.com oldalon igényelhetsz egyet.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Intró beküldés engedélyezése</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Gomb megjelenítése az intró/outró időbélyegek közösségi adatbázisba történő beküldéséhez.</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB API-kulcs</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Add meg az IntroDB API-kulcsodat az időbélyegek beküldéséhez. A beküldéshez kötelező.</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB API-kulcs</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Add meg az SkipDB API-kulcsodat az időbélyegek beküldéséhez. A beküldéshez kötelező.</string>
|
||||
<string name="settings_playback_anime_skip_description">Keresés az AnimeSkip adatbázisában is a kihagyási időbélyegekért (ügyfél-azonosító szükséges).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Következő epizód automatikus lejátszása</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">A következő epizód automatikus indítása, amikor a felhívás megjelenik.</string>
|
||||
|
|
@ -796,7 +796,7 @@
|
|||
<string name="settings_playback_show_loading_overlay">Töltőképernyő megjelenítése</string>
|
||||
<string name="settings_playback_show_loading_overlay_description">Töltőképernyő mutatása az első videokocka megjelenéséig.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Intró kihagyása</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Az introdb.app használata az intrók és összefoglalók felismeréséhez.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Az skipdb.tv használata az intrók és összefoglalók felismeréséhez.</string>
|
||||
<string name="settings_playback_source_scope">Automatikus lejátszás forrásköre</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Minden telepített kiegészítő</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Az automatikus lejátszás csak a telepített kiegészítőkből származó streameket veszi figyelembe.</string>
|
||||
|
|
@ -1752,7 +1752,7 @@
|
|||
<string name="collections_editor_media_movies_suffix">Filmek</string>
|
||||
<string name="collections_editor_media_series_suffix">Sorozatok</string>
|
||||
<string name="cloud_library_playback_disabled">A Felhő könyvtár le van tiltva.</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Érvénytelen API kulcs vagy a kapcsolódás meghiúsult</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Érvénytelen API kulcs vagy a kapcsolódás meghiúsult</string>
|
||||
<string name="addons_manifest_missing_field">A manifestből hiányzik a(z) „%1$s” mező</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">%1$s. TMDB gyűjtemény</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">%1$s. TMDB rendező</string>
|
||||
|
|
@ -1854,7 +1854,7 @@
|
|||
<string name="plugins_test_results_count">Teszt eredmények (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">A szolgáltatói bővítményekhez TMDB API kulcs szükséges. Állítsd be a TMDB képernyőn, különben a bővítmények nem fognak megfelelően működni.</string>
|
||||
<string name="search_error_no_results_for_catalog">Nincs találat a(z) %1$s katalógusban.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Érvénytelen API kulcs vagy a kapcsolódás meghiúsult</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Érvénytelen API kulcs vagy a kapcsolódás meghiúsult</string>
|
||||
<string name="streams_plugin_repository_fallback">Bővítmény-tároló</string>
|
||||
<string name="submit_intro_action">Időbélyegek beküldése</string>
|
||||
<string name="submit_intro_button_submit">Beküldés</string>
|
||||
|
|
|
|||
|
|
@ -451,8 +451,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio menhubungi TorBox untuk autentikasi akun, akses pustaka cloud, pemeriksaan cache,dan fitur pemutaran cloud. Nuvio tidak berafiliasi dengan atau diendorse oleh TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio menggunakan MDBList untuk rating dan data penyedia skor eksternal. Nuvio tidak berafiliasi atau didukung oleh MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio menggunakan API IntroDB untuk intro, rekap, kredit, dan pratinjau cap waktu yang disediakan komunitas yang digunakan oleh kontrol lewati. Nuvio tidak berafiliasi atau didukung oleh IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio menggunakan API SkipDB untuk intro, rekap, kredit, dan pratinjau cap waktu yang disediakan komunitas yang digunakan oleh kontrol lewati. Nuvio tidak berafiliasi atau didukung oleh SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Digunakan untuk pemutaran pada build iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Sumber MPVKit saja dilisensikan di bawah LGPL v3.0. Bundle MPVKit, termasuk libmpv dan pustaka FFmpeg, juga dilisensikan di bawah LGPL v3.0.</string>
|
||||
|
|
@ -758,8 +758,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Masukkan ID klien API AnimeSkip Anda. Dapatkan di anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Aktifkan Pengiriman Intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Tampilkan tombol untuk mengirim cap waktu intro/outro ke database komunitas.</string>
|
||||
<string name="settings_playback_introdb_api_key">Kunci API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Masukkan kunci API IntroDB Anda untuk mengirim cap waktu. Diperlukan untuk pengiriman.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Kunci API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Masukkan kunci API SkipDB Anda untuk mengirim cap waktu. Diperlukan untuk pengiriman.</string>
|
||||
<string name="settings_playback_anime_skip_description">Juga cari AnimeSkip untuk cap waktu lewati (memerlukan ID klien).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Putar Otomatis Episode Berikutnya</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Mulai episode berikutnya secara otomatis ketika prompt muncul.</string>
|
||||
|
|
@ -862,7 +862,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Utamakan forced subtitles ketika mencocokkan pengaturan bahasa terjemahan.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Batas Vertikal</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Lewati Intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Gunakan introdb.app untuk mendeteksi intro dan rekap.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Gunakan skipdb.tv untuk mendeteksi intro dan rekap.</string>
|
||||
<string name="settings_playback_source_scope">Cakupan Sumber Putar Otomatis</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Semua addon terpasang</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Putar otomatis hanya mempertimbangkan stream dari addon yang terpasang.</string>
|
||||
|
|
|
|||
|
|
@ -451,8 +451,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio menhubungi TorBox untuk autentikasi akun, akses pustaka cloud, pemeriksaan cache,dan fitur pemutaran cloud. Nuvio tidak berafiliasi dengan atau diendorse oleh TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio menggunakan MDBList untuk rating dan data penyedia skor eksternal. Nuvio tidak berafiliasi atau didukung oleh MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio menggunakan API IntroDB untuk intro, rekap, kredit, dan pratinjau cap waktu yang disediakan komunitas yang digunakan oleh kontrol lewati. Nuvio tidak berafiliasi atau didukung oleh IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio menggunakan API SkipDB untuk intro, rekap, kredit, dan pratinjau cap waktu yang disediakan komunitas yang digunakan oleh kontrol lewati. Nuvio tidak berafiliasi atau didukung oleh SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Digunakan untuk pemutaran pada build iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Sumber MPVKit saja dilisensikan di bawah LGPL v3.0. Bundle MPVKit, termasuk libmpv dan pustaka FFmpeg, juga dilisensikan di bawah LGPL v3.0.</string>
|
||||
|
|
@ -758,8 +758,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Masukkan ID klien API AnimeSkip Anda. Dapatkan di anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Aktifkan Pengiriman Intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Tampilkan tombol untuk mengirim cap waktu intro/outro ke database komunitas.</string>
|
||||
<string name="settings_playback_introdb_api_key">Kunci API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Masukkan kunci API IntroDB Anda untuk mengirim cap waktu. Diperlukan untuk pengiriman.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Kunci API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Masukkan kunci API SkipDB Anda untuk mengirim cap waktu. Diperlukan untuk pengiriman.</string>
|
||||
<string name="settings_playback_anime_skip_description">Juga cari AnimeSkip untuk cap waktu lewati (memerlukan ID klien).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Putar Otomatis Episode Berikutnya</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Mulai episode berikutnya secara otomatis ketika prompt muncul.</string>
|
||||
|
|
@ -862,7 +862,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Utamakan forced subtitles ketika mencocokkan pengaturan bahasa terjemahan.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Batas Vertikal</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Lewati Intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Gunakan introdb.app untuk mendeteksi intro dan rekap.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Gunakan skipdb.tv untuk mendeteksi intro dan rekap.</string>
|
||||
<string name="settings_playback_source_scope">Cakupan Sumber Putar Otomatis</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Semua addon terpasang</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Putar otomatis hanya mempertimbangkan stream dari addon yang terpasang.</string>
|
||||
|
|
|
|||
|
|
@ -1303,8 +1303,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio si connette a TorBox per l'autenticazione dell'account, l'accesso alla libreria cloud, i controlli della cache e le funzioni di riproduzione in cloud. Nuvio non è affiliato né approvato da TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio utilizza MDBList per valutazioni e dati di fornitori di punteggi esterni. Nuvio non è affiliato né approvato da MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio utilizza l'API di IntroDB per i timestamp di intro, riassunti, titoli di coda e anteprime forniti dalla community e utilizzati dai controlli di salto. Nuvio non è affiliato né approvato da IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio utilizza l'API di SkipDB per i timestamp di intro, riassunti, titoli di coda e anteprime forniti dalla community e utilizzati dai controlli di salto. Nuvio non è affiliato né approvato da SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Utilizzato per la riproduzione sulle build iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Il solo sorgente di MPVKit è rilasciato sotto licenza LGPL v3.0. Anche i pacchetti di MPVKit, incluse le librerie libmpv e FFmpeg, sono rilasciati sotto licenza LGPL v3.0.</string>
|
||||
|
|
@ -1406,8 +1406,8 @@
|
|||
<string name="settings_meta_blur_unwatched_episodes_description">Sfoca le miniature degli episodi finché non vengono visti per evitare spoiler.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Abilita invio intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Mostra un pulsante per inviare i timestamp di intro/sigle finali al database della community.</string>
|
||||
<string name="settings_playback_introdb_api_key">Chiave API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Inserisci la tua chiave API IntroDB per inviare i timestamp. Richiesta per l'invio.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Chiave API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Inserisci la tua chiave API SkipDB per inviare i timestamp. Richiesta per l'invio.</string>
|
||||
<string name="settings_playback_external_player">Lettore esterno</string>
|
||||
<string name="settings_playback_external_player_app">App lettore esterno</string>
|
||||
<string name="settings_playback_external_player_description_android">Apri la nuova riproduzione con l'app video predefinita di Android o con il selettore di sistema.</string>
|
||||
|
|
@ -1807,7 +1807,7 @@
|
|||
<string name="collections_editor_media_movies_suffix">Film</string>
|
||||
<string name="collections_editor_media_series_suffix">Serie</string>
|
||||
<string name="cloud_library_playback_disabled">La libreria cloud è disabilitata.</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Chiave API non valida o connessione non riuscita</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Chiave API non valida o connessione non riuscita</string>
|
||||
<string name="addons_manifest_missing_field">Nel manifest manca "%1$s"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">Collezione TMDB %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">Regista TMDB %1$s</string>
|
||||
|
|
@ -1905,7 +1905,7 @@
|
|||
<string name="plugins_test_results_count">Risultati del test (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">I provider dei plugin richiedono una chiave API TMDB. Impostala nella schermata TMDB, altrimenti i provider non funzioneranno correttamente.</string>
|
||||
<string name="search_error_no_results_for_catalog">Nessun risultato di ricerca restituito per %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Chiave API non valida o connessione non riuscita</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Chiave API non valida o connessione non riuscita</string>
|
||||
<string name="streams_plugin_repository_fallback">Repository di plugin</string>
|
||||
<string name="submit_intro_action">Invia intro</string>
|
||||
<string name="submit_intro_button_submit">Invia</string>
|
||||
|
|
|
|||
|
|
@ -485,8 +485,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvioはアカウント認証、クラウドライブラリアクセス、キャッシュ確認、クラウド再生機能のためにTorBoxと連携しています。NuvioはTorBoxと提携・承認されたものではありません。</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">NuvioはMDBListを使用して評価と外部スコアプロバイダーデータを取得しています。NuvioはMDBListと提携・承認されたものではありません。</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">NuvioはIntroDB APIを使用して、スキップコントロールに使用するイントロ・振り返り・エンドクレジット・プレビューのタイムスタンプ(コミュニティ提供)を取得しています。NuvioはIntroDBと提携・承認されたものではありません。</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">NuvioはSkipDB APIを使用して、スキップコントロールに使用するイントロ・振り返り・エンドクレジット・プレビューのタイムスタンプ(コミュニティ提供)を取得しています。NuvioはSkipDBと提携・承認されたものではありません。</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">iOSビルドの再生に使用。</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">MPVKit単体はLGPL v3.0でライセンスされています。libmpvおよびFFmpegライブラリを含むMPVKitバンドルも同様にLGPL v3.0でライセンスされています。</string>
|
||||
|
|
@ -833,8 +833,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">AnimeSkip APIのクライアントIDを入力してください。anime-skip.comで取得できます。</string>
|
||||
<string name="settings_playback_intro_submit_enabled">イントロ投稿を有効にする</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">イントロ・アウトロのタイムスタンプをコミュニティデータベースに投稿するボタンを表示します。</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB APIキー</string>
|
||||
<string name="settings_playback_introdb_api_key_description">タイムスタンプを投稿するためのIntroDB APIキーを入力してください。投稿に必要です。</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB APIキー</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">タイムスタンプを投稿するためのSkipDB APIキーを入力してください。投稿に必要です。</string>
|
||||
<string name="settings_playback_anime_skip_description">スキップタイムスタンプをAnimeSkipでも検索します(クライアントIDが必要)。</string>
|
||||
<string name="settings_playback_auto_play_next_episode">次のエピソードを自動再生</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">プロンプトが表示されたら自動的に次のエピソードを開始します。</string>
|
||||
|
|
@ -957,7 +957,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">字幕言語の設定に一致する場合、強制字幕を優先します。</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">垂直オフセット</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">イントロをスキップ</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">introdb.appを使用してイントロと振り返りを検出します。</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">skipdb.tvを使用してイントロと振り返りを検出します。</string>
|
||||
<string name="settings_playback_source_scope">自動再生のソース範囲</string>
|
||||
<string name="settings_playback_source_scope_all_addons">インストール済みのすべてのアドオン</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">自動再生はインストール済みアドオンのストリームのみを対象とします。</string>
|
||||
|
|
@ -1764,8 +1764,8 @@
|
|||
<string name="collections_editor_media_series_suffix">シリーズ</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">クラウドライブラリが無効です。</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">APIキーが無効か接続に失敗しました</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">APIキーが無効か接続に失敗しました</string>
|
||||
<string name="addons_manifest_missing_field">マニフェストに「%1$s」がありません</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">TMDBコレクション %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">TMDB監督 %1$s</string>
|
||||
|
|
@ -1867,7 +1867,7 @@
|
|||
<string name="plugins_test_results_count">テスト結果 (%1$d 件)</string>
|
||||
<string name="plugins_tmdb_required_message">プラグインプロバイダーにはTMDB APIキーが必要です。TMDB画面でAPIキーを設定しないと、プラグインプロバイダーが正常に動作しない場合があります。</string>
|
||||
<string name="search_error_no_results_for_catalog">%1$s の検索結果が返されませんでした。</string>
|
||||
<string name="settings_playback_introdb_invalid_key">APIキーが無効か接続に失敗しました</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">APIキーが無効か接続に失敗しました</string>
|
||||
<string name="streams_plugin_repository_fallback">プラグインリポジトリ</string>
|
||||
<string name="submit_intro_action">イントロを投稿</string>
|
||||
<string name="submit_intro_button_submit">投稿</string>
|
||||
|
|
|
|||
|
|
@ -435,8 +435,8 @@
|
|||
<string name="settings_licenses_attributions_trakt_body">Nuvio kobler til Trakt for autentisering, seerhistorikk, synkronisering osv. Nuvio er ikke tilknyttet eller godkjent av Trakt.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio bruker MDBList for eksterne vurderinger. Nuvio er ikke tilknyttet eller godkjent av MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio bruker IntroDB API for intro-, recap-, credits- og preview-tidsstempler. Nuvio er ikke tilknyttet eller godkjent av IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio bruker SkipDB API for intro-, recap-, credits- og preview-tidsstempler. Nuvio er ikke tilknyttet eller godkjent av SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Brukes for avspilling på iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Lisensiert under LGPL v3.0.</string>
|
||||
|
|
@ -738,8 +738,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Skriv inn din AnimeSkip API client ID. Hent en på anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Aktiver intro-innsending</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Vis en knapp for å sende intro/outro-tidsstempler til fellesskapsdatabasen.</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB API-nøkkel</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Skriv inn din IntroDB API-nøkkel for å sende tidsstempler.</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB API-nøkkel</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Skriv inn din SkipDB API-nøkkel for å sende tidsstempler.</string>
|
||||
<string name="settings_playback_anime_skip_description">Søk også i AnimeSkip etter hopp-tidsstempler (krever client ID).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Auto-spill neste episode</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Start neste episode automatisk når prompt vises.</string>
|
||||
|
|
@ -819,7 +819,7 @@
|
|||
<string name="settings_playback_show_loading_overlay">Laste-overlay</string>
|
||||
<string name="settings_playback_show_loading_overlay_description">Vis lasts skjerm til første bilde vises.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Hopp intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Bruk introdb.app for å oppdage introer og recaps.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Bruk skipdb.tv for å oppdage introer og recaps.</string>
|
||||
<string name="settings_playback_source_scope">Auto-play kildeomfang</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Alle installerte tillegg</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Auto-play vurderer kun strømmer fra installerte tillegg.</string>
|
||||
|
|
|
|||
|
|
@ -501,8 +501,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio maakt verbinding met TorBox voor accountauthenticatie, toegang tot cloudbibliotheek, cachecontroles en cloud-afspeelfuncties. Nuvio is niet gelieerd aan of goedgekeurd door TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio gebruikt MDBList voor beoordelingen en gegevens van externe scoreproviders. Nuvio is niet gelieerd aan of goedgekeurd door MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio gebruikt de IntroDB API voor door de community aangeleverde tijdstempels van intro, samenvatting, aftiteling en preview die worden gebruikt door de overslaanbediening. Nuvio is niet gelieerd aan of goedgekeurd door IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio gebruikt de SkipDB API voor door de community aangeleverde tijdstempels van intro, samenvatting, aftiteling en preview die worden gebruikt door de overslaanbediening. Nuvio is niet gelieerd aan of goedgekeurd door SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Gebruikt voor afspelen op iOS-builds.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">De MPVKit-broncode zelf is gelicentieerd onder LGPL v3.0. MPVKit-bundels, inclusief libmpv- en FFmpeg-bibliotheken, zijn eveneens gelicentieerd onder LGPL v3.0.</string>
|
||||
|
|
@ -859,8 +859,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Voer je AnimeSkip API-clientID in. Verkrijg er een op anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Intro-inzending inschakelen</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Toon een knop om intro-/outrotijdstempels naar de communitydatabase te versturen.</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB API-sleutel</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Voer je IntroDB API-sleutel in om tijdstempels in te dienen. Vereist voor inzending.</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB API-sleutel</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Voer je SkipDB API-sleutel in om tijdstempels in te dienen. Vereist voor inzending.</string>
|
||||
<string name="settings_playback_anime_skip_description">Zoek ook op AnimeSkip naar overslaantijdstempels (vereist clientID).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Volgende aflevering automatisch afspelen</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Start de volgende aflevering automatisch wanneer de prompt verschijnt.</string>
|
||||
|
|
@ -985,7 +985,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Geef de voorkeur aan geforceerde ondertitels bij het matchen van je taalinstellingen voor ondertiteling.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Verticale offset</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Intro overslaan</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Gebruik introdb.app om intro's en samenvattingen te detecteren.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Gebruik skipdb.tv om intro's en samenvattingen te detecteren.</string>
|
||||
<string name="settings_playback_source_scope">Bronbereik voor automatisch afspelen</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Alle geïnstalleerde addons</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Automatisch afspelen houdt alleen rekening met streams van je geïnstalleerde addons.</string>
|
||||
|
|
@ -1795,8 +1795,8 @@
|
|||
<string name="collections_editor_media_series_suffix">Series</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">Cloudbibliotheek is uitgeschakeld.</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">Ongeldige API-sleutel of verbinding mislukt</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Ongeldige API-sleutel of verbinding mislukt</string>
|
||||
<string name="addons_manifest_missing_field">Manifest mist \"%1$s\"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">TMDB-collectie %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">TMDB-regisseur %1$s</string>
|
||||
|
|
@ -1898,7 +1898,7 @@
|
|||
<string name="plugins_test_results_count">Testresultaten (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Providerplug-ins vereisen een TMDB API-sleutel. Stel deze in op het TMDB-scherm, anders werken providerplug-ins niet correct.</string>
|
||||
<string name="search_error_no_results_for_catalog">Geen zoekresultaten voor %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Ongeldige API-sleutel of verbinding mislukt</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Ongeldige API-sleutel of verbinding mislukt</string>
|
||||
<string name="streams_plugin_repository_fallback">Plug-inrepository</string>
|
||||
<string name="submit_intro_action">Intro indienen</string>
|
||||
<string name="submit_intro_button_submit">Indienen</string>
|
||||
|
|
|
|||
|
|
@ -451,8 +451,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio łączy się z TorBox w celu uwierzytelniania konta, dostępu do biblioteki w chmurze, sprawdzania pamięci podręcznej i odtwarzania z chmury. Nuvio nie jest powiązane z TorBox ani przez nie wspierane.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio korzysta z MDBList do ocen i danych zewnętrznych dostawców ocen. Nuvio nie jest powiązane z MDBList ani przez nie wspierane.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio korzysta z API IntroDB do dostarczanych przez społeczność znaczników intro, podsumowań, napisów końcowych i podglądów używanych przez kontrolki pomijania. Nuvio nie jest powiązane z IntroDB ani przez nie wspierane.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio korzysta z API SkipDB do dostarczanych przez społeczność znaczników intro, podsumowań, napisów końcowych i podglądów używanych przez kontrolki pomijania. Nuvio nie jest powiązane z SkipDB ani przez nie wspierane.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Używany do odtwarzania w wersjach na iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Kod źródłowy MPVKit jest licencjonowany na podstawie LGPL v3.0. Pakiety MPVKit, w tym biblioteki libmpv i FFmpeg, są również licencjonowane na podstawie LGPL v3.0.</string>
|
||||
|
|
@ -762,8 +762,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Wprowadź ID klienta API AnimeSkip. Pobierz je na anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Włącz przesyłanie intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Pokaż przycisk do przesyłania znaczników intro/outro do bazy społeczności.</string>
|
||||
<string name="settings_playback_introdb_api_key">Klucz API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Wprowadź klucz API IntroDB, aby przesyłać znaczniki czasowe. Wymagany do przesyłania.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Klucz API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Wprowadź klucz API SkipDB, aby przesyłać znaczniki czasowe. Wymagany do przesyłania.</string>
|
||||
<string name="settings_playback_anime_skip_description">Wyszukuj również w AnimeSkip znaczniki pomijania (wymaga ID klienta).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Automatyczne odtwarzanie następnego odcinka</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Automatycznie znajdź i odtwórz następny odcinek po osiągnięciu progu.</string>
|
||||
|
|
@ -1771,8 +1771,8 @@
|
|||
<string name="settings_p2p_subtitle">Zezwalaj na strumienie peer-to-peer (torrent)</string>
|
||||
<string name="settings_p2p_title">Strumieniowanie P2P</string>
|
||||
<string name="settings_playback_section_p2p">STRUMIENIOWANIE P2P</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Nieprawidłowy klucz API lub błąd połączenia</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Nieprawidłowy klucz API lub błąd połączenia</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Nieprawidłowy klucz API lub błąd połączenia</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Nieprawidłowy klucz API lub błąd połączenia</string>
|
||||
<string name="settings_playback_ios_audio_output">Wyjście audio</string>
|
||||
<string name="settings_playback_ios_audio_output_audiounit_desc">Użyj starszego wyjścia AudioUnit.</string>
|
||||
<string name="settings_playback_ios_audio_output_auto_desc">Użyj AudioUnit, gdy wyjście AVFoundation jest tymczasowo wyłączone.</string>
|
||||
|
|
|
|||
|
|
@ -436,8 +436,8 @@
|
|||
<string name="settings_licenses_attributions_trakt_body">O Nuvio conecta-se ao Trakt para autenticação de conta, histórico de assistidos, sincronização de progresso, dados da biblioteca, classificações, listas e comentários. O Nuvio não é afiliado ou endossado pelo Trakt.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">O Nuvio usa o MDBList para classificações e dados de provedores externos de pontuação. O Nuvio não é afiliado ou endossado pelo MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">O Nuvio usa a API do IntroDB para timestamps de intro, recapitulação, créditos e prévia fornecidos pela comunidade, usados pelos controles de pular. O Nuvio não é afiliado ou endossado pelo IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">O Nuvio usa a API do SkipDB para timestamps de intro, recapitulação, créditos e prévia fornecidos pela comunidade, usados pelos controles de pular. O Nuvio não é afiliado ou endossado pelo SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Usado para reprodução em builds para iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">O código-fonte do MPVKit isolado é licenciado sob LGPL v3.0. Os bundles do MPVKit, incluindo bibliotecas libmpv e FFmpeg, também são licenciados sob LGPL v3.0.</string>
|
||||
|
|
@ -725,8 +725,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Insira seu client ID da API do AnimeSkip. Obtenha um em anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Ativar Envio de Intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Mostrar um botão para enviar timestamps de intro/outro para o banco de dados da comunidade.</string>
|
||||
<string name="settings_playback_introdb_api_key">Chave de API do IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Insira sua chave de API do IntroDB para enviar timestamps. Necessário para envio.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Chave de API do SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Insira sua chave de API do SkipDB para enviar timestamps. Necessário para envio.</string>
|
||||
<string name="settings_playback_anime_skip_description">Também buscar no AnimeSkip por timestamps de pular (requer client ID).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Reproduzir Próximo Episódio Automaticamente</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Iniciar próximo episódio automaticamente quando o prompt aparecer.</string>
|
||||
|
|
@ -808,7 +808,7 @@
|
|||
<string name="settings_playback_show_loading_overlay">Overlay de Carregamento</string>
|
||||
<string name="settings_playback_show_loading_overlay_description">Mostrar tela de carregamento até o primeiro quadro de vídeo aparecer.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Pular Intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Usar introdb.app para detectar intros e recapitulações.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Usar skipdb.tv para detectar intros e recapitulações.</string>
|
||||
<string name="settings_playback_source_scope">Escopo de Fonte para Reprodução Automática</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Todos os addons instalados</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Reprodução automática considera apenas streams vindas de seus addons instalados.</string>
|
||||
|
|
|
|||
|
|
@ -480,8 +480,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">O Nuvio liga-se ao TorBox para autenticação de conta, acesso à biblioteca na nuvem, verificações de cache e funcionalidades de reprodução na nuvem. O Nuvio não é afiliado ao TorBox nem apoiado por ele.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">O Nuvio utiliza o MDBList para classificações e dados de fornecedores de pontuações externas. O Nuvio não é afiliado ao MDBList nem apoiado por ele.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">O Nuvio utiliza a API do IntroDB para marcas de tempo de introduções, resumos, créditos e antevisões fornecidas pela comunidade, utilizadas pelos controlos de salto. O Nuvio não é afiliado ao IntroDB nem apoiado por ele.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">O Nuvio utiliza a API do SkipDB para marcas de tempo de introduções, resumos, créditos e antevisões fornecidas pela comunidade, utilizadas pelos controlos de salto. O Nuvio não é afiliado ao SkipDB nem apoiado por ele.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Utilizado para a reprodução em versões iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">O código-fonte do MPVKit, por si só, está licenciado sob a LGPL v3.0. Os pacotes do MPVKit, incluindo as bibliotecas libmpv e FFmpeg, também estão licenciados sob a LGPL v3.0.</string>
|
||||
|
|
@ -819,8 +819,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Introduz o teu ID de cliente da API do AnimeSkip. Obtém um em anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Ativar envio de introduções</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Mostra um botão para enviares marcas de tempo de introduções/finais para a base de dados da comunidade.</string>
|
||||
<string name="settings_playback_introdb_api_key">Chave API do IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Introduz a tua chave API do IntroDB para enviares marcas de tempo. Obrigatório para a submissão.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Chave API do SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Introduz a tua chave API do SkipDB para enviares marcas de tempo. Obrigatório para a submissão.</string>
|
||||
<string name="settings_playback_anime_skip_description">Pesquisa também no AnimeSkip por marcas de tempo para saltar conteúdo (requer ID de cliente).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Reproduzir automaticamente o próximo episódio</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Inicia o próximo episódio automaticamente assim que o aviso aparecer.</string>
|
||||
|
|
@ -931,7 +931,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Dá preferência a legendas forçadas quando corresponderem às definições de idioma das legendas.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Afastamento vertical</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Saltar introdução</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Utiliza o introdb.app para detetar introduções e resumos.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Utiliza o skipdb.tv para detetar introduções e resumos.</string>
|
||||
<string name="settings_playback_source_scope">Âmbito da reprodução automática</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Todos os addons instalados</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">A reprodução automática apenas considera streams provenientes dos teus addons instalados.</string>
|
||||
|
|
@ -1700,7 +1700,7 @@
|
|||
<string name="collections_editor_media_movies_suffix">Filmes</string>
|
||||
<string name="collections_editor_media_series_suffix">Séries</string>
|
||||
<string name="cloud_library_playback_disabled">A biblioteca na nuvem está desativada.</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Chave API inválida ou falha na ligação</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Chave API inválida ou falha na ligação</string>
|
||||
<string name="addons_manifest_missing_field">Campo em falta no manifesto: \"%1$s\"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">Coleção TMDB %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">Realização TMDB %1$s</string>
|
||||
|
|
@ -1802,7 +1802,7 @@
|
|||
<string name="plugins_test_results_count">Resultados do teste (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Os fornecedores de plugins precisam de uma chave API do TMDB. Define-a na página do TMDB; caso contrário, podem não funcionar corretamente.</string>
|
||||
<string name="search_error_no_results_for_catalog">Nenhum resultado de pesquisa devolvido por %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Chave API inválida ou falha na ligação</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Chave API inválida ou falha na ligação</string>
|
||||
<string name="streams_plugin_repository_fallback">Repositório de plugins</string>
|
||||
<string name="submit_intro_action">Enviar introdução</string>
|
||||
<string name="submit_intro_button_submit">Enviar</string>
|
||||
|
|
|
|||
|
|
@ -501,8 +501,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio se conectează la TorBox pentru autentificarea contului, accesul la biblioteca din cloud, verificarea cache-ului și funcții de redare în cloud. Nuvio nu este afiliat cu și nici aprobat de TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio utilizează MDBList pentru evaluări și date de la furnizori externi de scoruri. Nuvio nu este afiliat cu și nici aprobat de MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio folosește API-ul IntroDB pentru marcajele de timp (intro, recapitulare, credite și previzualizări) oferite de comunitate și utilizate de comenzile de salt. Nuvio nu este afiliat cu și nici aprobat de IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio folosește API-ul SkipDB pentru marcajele de timp (intro, recapitulare, credite și previzualizări) oferite de comunitate și utilizate de comenzile de salt. Nuvio nu este afiliat cu și nici aprobat de SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Utilizat pentru redare pe build-urile de iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Codul sursă MPVKit în sine este licențiat sub LGPL v3.0. Pachetele MPVKit, inclusiv bibliotecile libmpv și FFmpeg, sunt de asemenea licențiate sub LGPL v3.0.</string>
|
||||
|
|
@ -859,8 +859,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Introdu ID-ul tău de client API AnimeSkip. Poți obține unul pe anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Activează trimiterea de intro-uri</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Afișează un buton pentru a trimite marcajele de timp pentru intro/outro în baza de date a comunității.</string>
|
||||
<string name="settings_playback_introdb_api_key">Cheie API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Introdu cheia ta API IntroDB pentru a trimite marcaje de timp. Este necesară pentru trimitere.</string>
|
||||
<string name="settings_playback_skipdb_api_key">Cheie API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Introdu cheia ta API SkipDB pentru a trimite marcaje de timp. Este necesară pentru trimitere.</string>
|
||||
<string name="settings_playback_anime_skip_description">Caută marcaje de timp de salt și pe AnimeSkip (necesită ID de client).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Redă automat episodul următor</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Pornește automat episodul următor când apare mesajul.</string>
|
||||
|
|
@ -985,7 +985,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Preferă subtitrările forțate atunci când corespund setărilor tale de limbă.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Decalaj vertical</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Sari peste intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Folosește introdb.app pentru a detecta intro-urile și recapitulările.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Folosește skipdb.tv pentru a detecta intro-urile și recapitulările.</string>
|
||||
<string name="settings_playback_source_scope">Domeniu redare automată surse</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Toate extensiile instalate</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Redarea automată ia în considerare doar fluxurile care provin din extensiile tale instalate.</string>
|
||||
|
|
@ -1767,7 +1767,7 @@
|
|||
<string name="collections_editor_media_movies_suffix">Filme</string>
|
||||
<string name="collections_editor_media_series_suffix">Seriale</string>
|
||||
<string name="cloud_library_playback_disabled">Biblioteca în cloud este dezactivată.</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Cheie API nevalidă sau conexiunea a eșuat</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Cheie API nevalidă sau conexiunea a eșuat</string>
|
||||
<string name="addons_manifest_missing_field">Din manifest lipsește câmpul „%1$s”</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">Colecție TMDB %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">Regizor TMDB %1$s</string>
|
||||
|
|
@ -1869,7 +1869,7 @@
|
|||
<string name="plugins_test_results_count">Rezultate test (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Furnizorii de module necesită o cheie API TMDB. Seteaz-o în ecranul TMDB, altfel modulele furnizorilor nu vor funcționa corect.</string>
|
||||
<string name="search_error_no_results_for_catalog">Nu s-au returnat rezultate de căutare pentru %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Cheie API nevalidă sau conexiunea a eșuat</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Cheie API nevalidă sau conexiunea a eșuat</string>
|
||||
<string name="streams_plugin_repository_fallback">Depozit de module</string>
|
||||
<string name="submit_intro_action">Trimite Intro</string>
|
||||
<string name="submit_intro_button_submit">Trimite</string>
|
||||
|
|
|
|||
|
|
@ -475,8 +475,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio sa pripája k TorBox pre autentifikáciu účtu, prístup ku cloudovej knižnici, kontroly vyrovnávacej pamäte a funkcie cloudového prehrávania. Nuvio nie je pridružený k TorBox ani ním schválený.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio používa MDBList pre hodnotenia a dáta externých poskytovateľov skóre. Nuvio nie je pridružený k MDBList ani ním schválený.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio používa API IntroDB pre komunitou poskytované časové pečiatky intro, rekapitulácie, kreditov a náhľadov používaných ovládacími prvkami preskočenia. Nuvio nie je pridružený k IntroDB ani ním schválený.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio používa API SkipDB pre komunitou poskytované časové pečiatky intro, rekapitulácie, kreditov a náhľadov používaných ovládacími prvkami preskočenia. Nuvio nie je pridružený k SkipDB ani ním schválený.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Používa sa na prehrávanie v zostavách iOS.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Samotný zdrojový kód MPVKit je licencovaný pod LGPL v3.0. Balíky MPVKit vrátane knižníc libmpv a FFmpeg sú tiež licencované pod LGPL v3.0.</string>
|
||||
|
|
@ -821,8 +821,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Zadajte ID klienta API AnimeSkip. Získajte ho na anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Povoliť odosielanie intro</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Zobraziť tlačidlo na odosielanie časových pečiatok intro/outro do komunitnej databázy.</string>
|
||||
<string name="settings_playback_introdb_api_key">API kľúč IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Zadajte váš API kľúč IntroDB na odosielanie časových pečiatok. Vyžaduje sa na odosielanie.</string>
|
||||
<string name="settings_playback_skipdb_api_key">API kľúč SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Zadajte váš API kľúč SkipDB na odosielanie časových pečiatok. Vyžaduje sa na odosielanie.</string>
|
||||
<string name="settings_playback_anime_skip_description">Tiež vyhľadávať v AnimeSkip časové pečiatky preskočenia (vyžaduje ID klienta).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Automaticky prehrať ďalšiu epizódu</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Spustiť ďalšiu epizódu automaticky, keď sa zobrazí výzva.</string>
|
||||
|
|
@ -933,7 +933,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Uprednostniť vynútené titulky pri zhode s nastaveniami jazyka titulkov.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Vertikálny posun</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Preskočiť intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Použiť introdb.app na detekciu intro a rekapitulácií.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Použiť skipdb.tv na detekciu intro a rekapitulácií.</string>
|
||||
<string name="settings_playback_source_scope">Rozsah zdrojov automatického prehrávania</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Všetky nainštalované doplnky</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Automatické prehrávanie zohľadňuje iba streamy z vašich nainštalovaných doplnkov.</string>
|
||||
|
|
@ -1740,8 +1740,8 @@
|
|||
<string name="collections_editor_media_series_suffix">Seriály</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">Cloudová knižnica je vypnutá.</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">Neplatný API kľúč alebo zlyhalo pripojenie</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Neplatný API kľúč alebo zlyhalo pripojenie</string>
|
||||
<string name="addons_manifest_missing_field">V manifeste chýba \"%1$s\"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">TMDB Kolekcia %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">TMDB Režisér %1$s</string>
|
||||
|
|
@ -1843,7 +1843,7 @@
|
|||
<string name="plugins_test_results_count">Výsledky testu (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Pluginy poskytovateľov vyžadujú TMDB API kľúč. Nastavte ho na obrazovke TMDB, inak pluginy poskytovateľov nebudú fungovať správne.</string>
|
||||
<string name="search_error_no_results_for_catalog">Žiadne výsledky vyhľadávania pre %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Neplatný API kľúč alebo zlyhalo pripojenie</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Neplatný API kľúč alebo zlyhalo pripojenie</string>
|
||||
<string name="streams_plugin_repository_fallback">Repozitár pluginov</string>
|
||||
<string name="submit_intro_action">Odoslať Intro</string>
|
||||
<string name="submit_intro_button_submit">Odoslať</string>
|
||||
|
|
|
|||
|
|
@ -441,8 +441,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio; hesap doğrulama, bulut kitaplığı erişimi, önbellek kontrolleri ve bulut oynatma özellikleri için TorBox'a bağlanır. Nuvio'nun TorBox ile hiçbir bağı yoktur ve TorBox tarafından onaylanmamıştır.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio; puanlar ve dış kaynak puan verileri için MDBList'i kullanır. Nuvio'nun MDBList ile hiçbir bağı yoktur ve MDBList tarafından onaylanmamıştır.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio; jenerik ve geçme kontrolleri tarafından kullanılan, topluluk tarafından sağlanan giriş, özet ve önizleme zaman damgaları için IntroDB API'sini kullanır. Nuvio'nun IntroDB ile hiçbir bağı yoktur ve IntroDB tarafından onaylanmamıştır.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio; jenerik ve geçme kontrolleri tarafından kullanılan, topluluk tarafından sağlanan giriş, özet ve önizleme zaman damgaları için SkipDB API'sini kullanır. Nuvio'nun SkipDB ile hiçbir bağı yoktur ve SkipDB tarafından onaylanmamıştır.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">iOS sürümlerinde oynatma için kullanılır.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">Sadece MPVKit kaynak kodu LGPL v3.0 kapsamında lisanslanmıştır. libmpv ve FFmpeg kütüphanelerini içeren MPVKit paketleri de LGPL v3.0 kapsamında lisanslanmıştır.</string>
|
||||
|
|
@ -748,8 +748,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">AnimeSkip API client ID'ni gir. anime-skip.com üzerinden alabilirsin.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Giriş Geçme Gönderimini Aç</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Giriş/jenerik zaman damgalarını topluluk veritabanına göndermek için bir buton göster.</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB API Anahtarı</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Zaman damgası göndermek için IntroDB API anahtarını gir. Gönderim için zorunludur.</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB API Anahtarı</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Zaman damgası göndermek için SkipDB API anahtarını gir. Gönderim için zorunludur.</string>
|
||||
<string name="settings_playback_anime_skip_description">Geçme zamanları için AnimeSkip'te de ara (client ID gerekir).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Sonraki bölümü otomatik oynat</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Eşik değere ulaşılınca sonraki bölümü otomatik bulup oynat.</string>
|
||||
|
|
|
|||
|
|
@ -482,8 +482,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio kết nối với TorBox để xác thực tài khoản, truy cập thư viện đám mây, kiểm tra bộ nhớ đệm và phát nội dung từ đám mây. Nuvio không liên kết hoặc được TorBox bảo trợ</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio dùng MDBList để lấy điểm đánh giá và dữ liệu từ các dịch vụ xếp hạng khác. Nuvio không liên kết hoặc được MDBList bảo trợ</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio dùng API IntroDB để lấy dữ liệu cộng đồng về thời điểm mở đầu, tóm tắt, phần credit và đoạn xem trước cho tính năng bỏ qua. Nuvio không liên kết hoặc được IntroDB bảo trợ</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio dùng API SkipDB để lấy dữ liệu cộng đồng về thời điểm mở đầu, tóm tắt, phần credit và đoạn xem trước cho tính năng bỏ qua. Nuvio không liên kết hoặc được SkipDB bảo trợ</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Dùng để phát nội dung trên iOS</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">MPVKit được cấp phép theo LGPL v3.0. Các thành phần đi kèm như libmpv và FFmpeg cũng được cấp phép theo LGPL v3.0</string>
|
||||
|
|
@ -838,8 +838,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Nhập Client ID API Anime Skip. Tạo tại anime-skip.com</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Cho phép gửi mốc mở đầu</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Hiển thị nút gửi mốc Đoạn mở đầu/Đoạn kết thúc lên cơ sở dữ liệu cộng đồng</string>
|
||||
<string name="settings_playback_introdb_api_key">Khóa API IntroDB</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Nhập khóa API IntroDB để gửi mốc thời gian. Bắt buộc để dùng tính năng này</string>
|
||||
<string name="settings_playback_skipdb_api_key">Khóa API SkipDB</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Nhập khóa API SkipDB để gửi mốc thời gian. Bắt buộc để dùng tính năng này</string>
|
||||
<string name="settings_playback_anime_skip_description">Tìm thêm mốc bỏ qua từ Anime Skip (yêu cầu Client ID)</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Tự động phát tập tiếp theo</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Tự động phát tập tiếp theo khi thông báo xuất hiện</string>
|
||||
|
|
@ -966,7 +966,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Tự động áp dụng phụ đề khớp với ngôn ngữ đã chọn</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Căn chỉnh dọc</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Tự động bỏ qua Đoạn mở đầu</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Dùng IntroDB để phát hiện Đoạn mở đầu và Tóm tắt</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Dùng SkipDB để phát hiện Đoạn mở đầu và Tóm tắt</string>
|
||||
<string name="settings_playback_source_scope">Phạm vi chọn nguồn phát tự động</string>
|
||||
<string name="settings_playback_source_scope_all_addons">Tất cả addon đã cài</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Chỉ tự động phát từ nguồn do addon đã cài cung cấp</string>
|
||||
|
|
@ -1746,7 +1746,7 @@
|
|||
<string name="collections_editor_media_movies_suffix">Phim</string>
|
||||
<string name="collections_editor_media_series_suffix">Loạt phim</string>
|
||||
<string name="cloud_library_playback_disabled">Thư viện đám mây đang tắt</string>
|
||||
<string name="settings_playback_introdb_invalid_api_key">Khóa API không hợp lệ hoặc không thể kết nối</string>
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Khóa API không hợp lệ hoặc không thể kết nối</string>
|
||||
<string name="addons_manifest_missing_field">Manifest thiếu trường "%1$s"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">Bộ sưu tập TMDB %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">Đạo diễn TMDB %1$s</string>
|
||||
|
|
@ -1848,7 +1848,7 @@
|
|||
<string name="plugins_test_results_count">Kết quả kiểm tra (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Plugin yêu cầu khóa API TMDB. Vui lòng thiết lập trong màn hình TMDB để đảm bảo tính năng hoạt động chính xác</string>
|
||||
<string name="search_error_no_results_for_catalog">Không tìm thấy kết quả trong %1$s</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Khóa API không hợp lệ hoặc lỗi kết nối</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Khóa API không hợp lệ hoặc lỗi kết nối</string>
|
||||
<string name="streams_plugin_repository_fallback">Kho Plugin</string>
|
||||
<string name="submit_intro_action">Gửi mốc Đoạn mở đầu</string>
|
||||
<string name="submit_intro_button_submit">Gửi</string>
|
||||
|
|
|
|||
|
|
@ -504,8 +504,8 @@
|
|||
<string name="settings_licenses_attributions_torbox_body">Nuvio connects to TorBox for account authentication, cloud library access, cache checks, and cloud playback features. Nuvio is not affiliated with or endorsed by TorBox.</string>
|
||||
<string name="settings_licenses_attributions_mdblist_title">MDBList</string>
|
||||
<string name="settings_licenses_attributions_mdblist_body">Nuvio uses MDBList for ratings and external score provider data. Nuvio is not affiliated with or endorsed by MDBList.</string>
|
||||
<string name="settings_licenses_attributions_introdb_title">IntroDB</string>
|
||||
<string name="settings_licenses_attributions_introdb_body">Nuvio uses the IntroDB API for community-provided intro, recap, credits, and preview timestamps used by skip controls. Nuvio is not affiliated with or endorsed by IntroDB.</string>
|
||||
<string name="settings_licenses_attributions_skipdb_title">SkipDB</string>
|
||||
<string name="settings_licenses_attributions_skipdb_body">Nuvio uses the SkipDB API for community-provided intro, recap, credits, and preview timestamps used by skip controls. Nuvio is not affiliated with or endorsed by SkipDB.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_title">MPVKit</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_body">Used for playback on iOS builds.</string>
|
||||
<string name="settings_licenses_attributions_mpvkit_license">MPVKit source alone is licensed under LGPL v3.0. MPVKit bundles, including libmpv and FFmpeg libraries, are also licensed under LGPL v3.0.</string>
|
||||
|
|
@ -904,8 +904,8 @@
|
|||
<string name="settings_playback_anime_skip_client_id_description">Enter your AnimeSkip API client ID. Get one at anime-skip.com.</string>
|
||||
<string name="settings_playback_intro_submit_enabled">Enable Intro Submission</string>
|
||||
<string name="settings_playback_intro_submit_enabled_description">Show a button to submit intro/outro timestamps to the community database.</string>
|
||||
<string name="settings_playback_introdb_api_key">IntroDB API Key</string>
|
||||
<string name="settings_playback_introdb_api_key_description">Enter your IntroDB API key to submit timestamps. Required for submission.</string>
|
||||
<string name="settings_playback_skipdb_api_key">SkipDB API Key</string>
|
||||
<string name="settings_playback_skipdb_api_key_description">Enter your SkipDB API key to submit timestamps. Required for submission.</string>
|
||||
<string name="settings_playback_anime_skip_description">Also search AnimeSkip for skip timestamps (requires client ID).</string>
|
||||
<string name="settings_playback_auto_play_next_episode">Auto-play Next Episode</string>
|
||||
<string name="settings_playback_auto_play_next_episode_description">Start next episode automatically when prompt appears.</string>
|
||||
|
|
@ -1032,7 +1032,7 @@
|
|||
<string name="settings_playback_subtitle_use_forced_description">Prefer forced subtitles when audio matches the subtitle language; if unavailable, select nothing.</string>
|
||||
<string name="settings_playback_subtitle_vertical_offset">Vertical Offset</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap">Skip Intro</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Use introdb.app to detect intros and recaps.</string>
|
||||
<string name="settings_playback_skip_intro_outro_recap_description">Use skipdb.tv to detect intros and recaps.</string>
|
||||
<string name="settings_playback_source_scope">Auto-play Source Scope</string>
|
||||
<string name="settings_playback_source_scope_all_addons">All installed addons</string>
|
||||
<string name="settings_playback_source_scope_all_addons_description">Auto-play only considers streams coming from your installed addons.</string>
|
||||
|
|
@ -1862,8 +1862,8 @@
|
|||
<string name="collections_editor_media_series_suffix">Series</string>
|
||||
<!-- Cloud library -->
|
||||
<string name="cloud_library_playback_disabled">Cloud library is disabled.</string>
|
||||
<!-- IntroDB settings -->
|
||||
<string name="settings_playback_introdb_invalid_api_key">Invalid API Key or connection failed</string>
|
||||
<!-- SkipDB settings -->
|
||||
<string name="settings_playback_skipdb_invalid_api_key">Invalid API Key or connection failed</string>
|
||||
<string name="addons_manifest_missing_field">Manifest missing \"%1$s\"</string>
|
||||
<string name="collections_editor_tmdb_collection_title_format">TMDB Collection %1$s</string>
|
||||
<string name="collections_editor_tmdb_director_title_format">TMDB Director %1$s</string>
|
||||
|
|
@ -1965,7 +1965,7 @@
|
|||
<string name="plugins_test_results_count">Test results (%1$d)</string>
|
||||
<string name="plugins_tmdb_required_message">Plugin providers require a TMDB API key. Set it on the TMDB screen or plugin providers will not work correctly.</string>
|
||||
<string name="search_error_no_results_for_catalog">No search results returned for %1$s.</string>
|
||||
<string name="settings_playback_introdb_invalid_key">Invalid API Key or connection failed</string>
|
||||
<string name="settings_playback_skipdb_invalid_key">Invalid API Key or connection failed</string>
|
||||
<string name="streams_plugin_repository_fallback">Plugin repository</string>
|
||||
<string name="submit_intro_action">Submit Intro</string>
|
||||
<string name="submit_intro_button_submit">Submit</string>
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ internal fun PlayerScreenModalHosts(
|
|||
activeVideoId: String?,
|
||||
metaUiState: MetaDetailsUiState,
|
||||
displayedPositionMs: Long,
|
||||
durationMs: Long,
|
||||
submitIntroSegmentType: String,
|
||||
onSubmitIntroSegmentTypeChanged: (String) -> Unit,
|
||||
submitIntroStartTimeStr: String,
|
||||
|
|
@ -209,6 +210,7 @@ internal fun PlayerScreenModalHosts(
|
|||
season = season,
|
||||
episode = episode,
|
||||
currentTimeSec = displayedPositionMs / 1000.0,
|
||||
durationMs = durationMs,
|
||||
segmentType = submitIntroSegmentType,
|
||||
onSegmentTypeChange = onSubmitIntroSegmentTypeChanged,
|
||||
startTimeStr = submitIntroStartTimeStr,
|
||||
|
|
|
|||
|
|
@ -398,10 +398,20 @@ private fun PlayerScreenRuntime.BindPlayerMetadataAndSkipEffects() {
|
|||
|
||||
launch {
|
||||
val imdbId = vid.split(":").firstOrNull()?.takeIf { it.startsWith("tt") }
|
||||
var durationSec: Double? = null
|
||||
for (i in 1..20) {
|
||||
val d = playbackSnapshot.durationMs
|
||||
if (d > 0L) {
|
||||
durationSec = d / 1000.0
|
||||
break
|
||||
}
|
||||
kotlinx.coroutines.delay(250)
|
||||
}
|
||||
val intervals = SkipIntroRepository.getSkipIntervals(
|
||||
imdbId = imdbId,
|
||||
season = season,
|
||||
episode = episode,
|
||||
durationSec = durationSec,
|
||||
)
|
||||
skipIntervals = intervals
|
||||
}
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ private fun PlayerScreenRuntime.RenderPlayerControls(displayedPositionMs: Long,
|
|||
onSubmitIntroClick = if (
|
||||
isSeries &&
|
||||
playerSettingsUiState.introSubmitEnabled &&
|
||||
playerSettingsUiState.introDbApiKey.isNotBlank()
|
||||
playerSettingsUiState.skipDbApiKey.isNotBlank()
|
||||
) {
|
||||
{ showSubmitIntroModal = true }
|
||||
} else {
|
||||
|
|
@ -565,6 +565,7 @@ private fun PlayerScreenRuntime.RenderPlayerModals(displayedPositionMs: Long) {
|
|||
activeVideoId = activeVideoId,
|
||||
metaUiState = metaUiState,
|
||||
displayedPositionMs = displayedPositionMs,
|
||||
durationMs = playbackSnapshot.durationMs,
|
||||
submitIntroSegmentType = submitIntroSegmentType,
|
||||
onSubmitIntroSegmentTypeChanged = { submitIntroSegmentType = it },
|
||||
submitIntroStartTimeStr = submitIntroStartTimeStr,
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ data class PlayerSettingsUiState(
|
|||
val skipIntroEnabled: Boolean = true,
|
||||
val animeSkipEnabled: Boolean = false,
|
||||
val animeSkipClientId: String = "",
|
||||
val introDbApiKey: String = "",
|
||||
val skipDbApiKey: String = "",
|
||||
val introSubmitEnabled: Boolean = false,
|
||||
val streamAutoPlayNextEpisodeEnabled: Boolean = false,
|
||||
val streamAutoPlayPreferBingeGroup: Boolean = true,
|
||||
|
|
@ -132,7 +132,7 @@ object PlayerSettingsRepository {
|
|||
private var skipIntroEnabled = true
|
||||
private var animeSkipEnabled = false
|
||||
private var animeSkipClientId = ""
|
||||
private var introDbApiKey = ""
|
||||
private var skipDbApiKey = ""
|
||||
private var introSubmitEnabled = false
|
||||
private var streamAutoPlayNextEpisodeEnabled = false
|
||||
private var streamAutoPlayPreferBingeGroup = true
|
||||
|
|
@ -203,7 +203,7 @@ object PlayerSettingsRepository {
|
|||
skipIntroEnabled = true
|
||||
animeSkipEnabled = false
|
||||
animeSkipClientId = ""
|
||||
introDbApiKey = ""
|
||||
skipDbApiKey = ""
|
||||
introSubmitEnabled = false
|
||||
streamAutoPlayNextEpisodeEnabled = false
|
||||
streamAutoPlayPreferBingeGroup = true
|
||||
|
|
@ -326,7 +326,7 @@ object PlayerSettingsRepository {
|
|||
skipIntroEnabled = PlayerSettingsStorage.loadSkipIntroEnabled() ?: true
|
||||
animeSkipEnabled = PlayerSettingsStorage.loadAnimeSkipEnabled() ?: false
|
||||
animeSkipClientId = PlayerSettingsStorage.loadAnimeSkipClientId() ?: ""
|
||||
introDbApiKey = PlayerSettingsStorage.loadIntroDbApiKey() ?: ""
|
||||
skipDbApiKey = PlayerSettingsStorage.loadSkipDbApiKey() ?: ""
|
||||
introSubmitEnabled = PlayerSettingsStorage.loadIntroSubmitEnabled() ?: false
|
||||
streamAutoPlayNextEpisodeEnabled = PlayerSettingsStorage.loadStreamAutoPlayNextEpisodeEnabled() ?: false
|
||||
streamAutoPlayPreferBingeGroup = PlayerSettingsStorage.loadStreamAutoPlayPreferBingeGroup() ?: true
|
||||
|
|
@ -663,12 +663,12 @@ object PlayerSettingsRepository {
|
|||
PlayerSettingsStorage.saveAnimeSkipClientId(clientId)
|
||||
}
|
||||
|
||||
fun setIntroDbApiKey(apiKey: String) {
|
||||
fun setSkipDbApiKey(apiKey: String) {
|
||||
ensureLoaded()
|
||||
if (introDbApiKey == apiKey) return
|
||||
introDbApiKey = apiKey
|
||||
if (skipDbApiKey == apiKey) return
|
||||
skipDbApiKey = apiKey
|
||||
publish()
|
||||
PlayerSettingsStorage.saveIntroDbApiKey(apiKey)
|
||||
PlayerSettingsStorage.saveSkipDbApiKey(apiKey)
|
||||
}
|
||||
|
||||
fun setIntroSubmitEnabled(enabled: Boolean) {
|
||||
|
|
@ -944,7 +944,7 @@ object PlayerSettingsRepository {
|
|||
skipIntroEnabled = skipIntroEnabled,
|
||||
animeSkipEnabled = animeSkipEnabled,
|
||||
animeSkipClientId = animeSkipClientId,
|
||||
introDbApiKey = introDbApiKey,
|
||||
skipDbApiKey = skipDbApiKey,
|
||||
introSubmitEnabled = introSubmitEnabled,
|
||||
streamAutoPlayNextEpisodeEnabled = streamAutoPlayNextEpisodeEnabled,
|
||||
streamAutoPlayPreferBingeGroup = streamAutoPlayPreferBingeGroup,
|
||||
|
|
|
|||
|
|
@ -90,8 +90,8 @@ internal expect object PlayerSettingsStorage {
|
|||
fun loadAnimeSkipClientId(): String?
|
||||
fun saveAnimeSkipClientId(clientId: String)
|
||||
|
||||
fun loadIntroDbApiKey(): String?
|
||||
fun saveIntroDbApiKey(apiKey: String)
|
||||
fun loadSkipDbApiKey(): String?
|
||||
fun saveSkipDbApiKey(apiKey: String)
|
||||
fun loadIntroSubmitEnabled(): Boolean?
|
||||
fun saveIntroSubmitEnabled(enabled: Boolean)
|
||||
fun loadStreamAutoPlayNextEpisodeEnabled(): Boolean?
|
||||
|
|
|
|||
|
|
@ -11,33 +11,37 @@ internal object SkipIntroApi {
|
|||
private const val ANISKIP_BASE = "https://api.aniskip.com/v2/"
|
||||
private const val ARM_BASE = "https://arm.haglund.dev/api/v2/"
|
||||
private const val ANIMESKIP_BASE = "https://api.anime-skip.com/"
|
||||
private const val SKIPDB_BASE = "https://api.skipdb.tv"
|
||||
|
||||
// --- IntroDb ---
|
||||
// --- SkipDB ---
|
||||
|
||||
suspend fun getIntroDbSegments(
|
||||
suspend fun getSkipDbSegments(
|
||||
imdbId: String,
|
||||
season: Int,
|
||||
episode: Int,
|
||||
): IntroDbSegmentsResponse? {
|
||||
val baseUrl = IntroDbConfig.URL.trimEnd('/')
|
||||
if (baseUrl.isBlank()) return null
|
||||
val url = "$baseUrl/segments?imdb_id=$imdbId&season=$season&episode=$episode"
|
||||
durationSec: Double? = null,
|
||||
): SkipDbSegmentsResponse? {
|
||||
val baseUrl = SKIPDB_BASE.trimEnd('/')
|
||||
var url = "$baseUrl/api/segments?imdb_id=$imdbId&season=$season&episode=$episode"
|
||||
if (durationSec != null && durationSec > 0) {
|
||||
url += "&duration=${durationSec.toLong()}"
|
||||
}
|
||||
return try {
|
||||
val text = httpGetText(url)
|
||||
json.decodeFromString<IntroDbSegmentsResponse>(text)
|
||||
json.decodeFromString<SkipDbSegmentsResponse>(text)
|
||||
} catch (_: Exception) {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun submitIntro(
|
||||
suspend fun submitSegment(
|
||||
apiKey: String,
|
||||
request: SubmitIntroRequest,
|
||||
request: SubmitSegmentRequest,
|
||||
): Boolean {
|
||||
val baseUrl = IntroDbConfig.URL.trimEnd('/')
|
||||
if (baseUrl.isBlank() || apiKey.isBlank()) return false
|
||||
val url = "$baseUrl/submit"
|
||||
val body = json.encodeToString(SubmitIntroRequest.serializer(), request)
|
||||
val baseUrl = SKIPDB_BASE.trimEnd('/')
|
||||
if (apiKey.isBlank()) return false
|
||||
val url = "$baseUrl/api/segments"
|
||||
val body = json.encodeToString(SubmitSegmentRequest.serializer(), request)
|
||||
val headers = mapOf(
|
||||
"Authorization" to "Bearer $apiKey",
|
||||
"Content-Type" to "application/json"
|
||||
|
|
@ -55,10 +59,10 @@ internal object SkipIntroApi {
|
|||
}
|
||||
}
|
||||
|
||||
suspend fun verifyIntroDbApiKey(apiKey: String): Boolean {
|
||||
val baseUrl = IntroDbConfig.URL.trimEnd('/')
|
||||
if (baseUrl.isBlank() || apiKey.isBlank()) return false
|
||||
val url = "$baseUrl/submit"
|
||||
suspend fun verifySkipDbApiKey(apiKey: String): Boolean {
|
||||
val baseUrl = SKIPDB_BASE.trimEnd('/')
|
||||
if (apiKey.isBlank()) return false
|
||||
val url = "$baseUrl/api/segments"
|
||||
val headers = mapOf(
|
||||
"Authorization" to "Bearer $apiKey",
|
||||
"Content-Type" to "application/json"
|
||||
|
|
@ -70,16 +74,9 @@ internal object SkipIntroApi {
|
|||
headers = headers,
|
||||
body = "{}"
|
||||
)
|
||||
|
||||
// 400 means Auth passed but payload was empty/invalid -> Key is Valid
|
||||
if (response.status == 400) return true
|
||||
|
||||
// 200/201 would also mean valid (though unexpected with empty body)
|
||||
if (response.status == 400 || response.status == 422) return true
|
||||
if (response.status == 200 || response.status == 201) return true
|
||||
|
||||
// Explicitly handle auth failures
|
||||
if (response.status == 401 || response.status == 403) return false
|
||||
|
||||
false
|
||||
} catch (_: Exception) {
|
||||
false
|
||||
|
|
|
|||
|
|
@ -11,14 +11,12 @@ object SkipIntroRepository {
|
|||
private val animeSkipShowIdCache = HashMap<String, String>()
|
||||
private const val NO_ID = "__none__"
|
||||
|
||||
private val introDbConfigured: Boolean
|
||||
get() = IntroDbConfig.URL.isNotBlank()
|
||||
|
||||
suspend fun getSkipIntervals(
|
||||
imdbId: String?,
|
||||
season: Int,
|
||||
episode: Int,
|
||||
requireSkipIntroEnabled: Boolean = true,
|
||||
durationSec: Double? = null,
|
||||
): List<SkipInterval> = coroutineScope {
|
||||
if (imdbId == null) return@coroutineScope emptyList()
|
||||
val settings = PlayerSettingsRepository.uiState.value
|
||||
|
|
@ -27,8 +25,8 @@ object SkipIntroRepository {
|
|||
val cacheKey = "$imdbId:$season:$episode"
|
||||
cache[cacheKey]?.let { return@coroutineScope it }
|
||||
|
||||
val introDbDeferred = async {
|
||||
if (introDbConfigured) fetchFromIntroDb(imdbId, season, episode) else emptyList()
|
||||
val skipDbDeferred = async {
|
||||
fetchFromSkipDb(imdbId, season, episode, durationSec)
|
||||
}
|
||||
val entriesDeferred = async { resolveImdbEntries(imdbId) }
|
||||
val entries = entriesDeferred.await()
|
||||
|
|
@ -40,7 +38,7 @@ object SkipIntroRepository {
|
|||
}
|
||||
|
||||
return@coroutineScope mergeByPriority(
|
||||
introDbDeferred.await(),
|
||||
skipDbDeferred.await(),
|
||||
animeSkipDeferred.await(),
|
||||
aniSkipDeferred.await(),
|
||||
).also { cache[cacheKey] = it }
|
||||
|
|
@ -50,6 +48,7 @@ object SkipIntroRepository {
|
|||
malId: String,
|
||||
episode: Int,
|
||||
requireSkipIntroEnabled: Boolean = true,
|
||||
durationSec: Double? = null,
|
||||
): List<SkipInterval> = coroutineScope {
|
||||
val settings = PlayerSettingsRepository.uiState.value
|
||||
if (requireSkipIntroEnabled && !settings.skipIntroEnabled) return@coroutineScope emptyList()
|
||||
|
|
@ -65,17 +64,17 @@ object SkipIntroRepository {
|
|||
} catch (_: Exception) { null }
|
||||
}
|
||||
|
||||
var introDb = emptyList<SkipInterval>()
|
||||
var skipDb = emptyList<SkipInterval>()
|
||||
var animeSkip = emptyList<SkipInterval>()
|
||||
val imdbId = imdbIdDeferred.await()
|
||||
if (imdbId != null) {
|
||||
val entries = resolveImdbEntries(imdbId)
|
||||
val season = entries.indexOfFirst { it.myanimelist == malId.toIntOrNull() } + 1
|
||||
val introDbDeferred = async {
|
||||
if (introDbConfigured) fetchFromIntroDb(imdbId, season, episode) else emptyList()
|
||||
val skipDbDeferred = async {
|
||||
fetchFromSkipDb(imdbId, season, episode, durationSec)
|
||||
}
|
||||
val animeSkipDeferred = async { fetchAnimeSkipForEntries(entries, season, episode) }
|
||||
introDb = introDbDeferred.await()
|
||||
skipDb = skipDbDeferred.await()
|
||||
animeSkip = animeSkipDeferred.await()
|
||||
} else {
|
||||
val anilistId = try {
|
||||
|
|
@ -84,13 +83,14 @@ object SkipIntroRepository {
|
|||
if (anilistId != null) animeSkip = fetchFromAnimeSkip(anilistId, episode, season = null)
|
||||
}
|
||||
|
||||
return@coroutineScope mergeByPriority(introDb, animeSkip, aniSkipDeferred.await()).also { cache[cacheKey] = it }
|
||||
return@coroutineScope mergeByPriority(skipDb, animeSkip, aniSkipDeferred.await()).also { cache[cacheKey] = it }
|
||||
}
|
||||
|
||||
suspend fun getSkipIntervalsForKitsu(
|
||||
kitsuId: String,
|
||||
episode: Int,
|
||||
requireSkipIntroEnabled: Boolean = true,
|
||||
durationSec: Double? = null,
|
||||
): List<SkipInterval> = coroutineScope {
|
||||
val settings = PlayerSettingsRepository.uiState.value
|
||||
if (requireSkipIntroEnabled && !settings.skipIntroEnabled) return@coroutineScope emptyList()
|
||||
|
|
@ -112,17 +112,17 @@ object SkipIntroRepository {
|
|||
malIdDeferred.await()?.let { fetchFromAniSkip(it, episode) } ?: emptyList()
|
||||
}
|
||||
|
||||
var introDb = emptyList<SkipInterval>()
|
||||
var skipDb = emptyList<SkipInterval>()
|
||||
var animeSkip = emptyList<SkipInterval>()
|
||||
val imdbId = imdbIdDeferred.await()
|
||||
if (imdbId != null) {
|
||||
val entries = resolveImdbEntries(imdbId)
|
||||
val season = entries.indexOfFirst { it.kitsu == kitsuId.toIntOrNull() } + 1
|
||||
val introDbDeferred = async {
|
||||
if (introDbConfigured) fetchFromIntroDb(imdbId, season, episode) else emptyList()
|
||||
val skipDbDeferred = async {
|
||||
fetchFromSkipDb(imdbId, season, episode, durationSec)
|
||||
}
|
||||
val animeSkipDeferred = async { fetchAnimeSkipForEntries(entries, season, episode) }
|
||||
introDb = introDbDeferred.await()
|
||||
skipDb = skipDbDeferred.await()
|
||||
animeSkip = animeSkipDeferred.await()
|
||||
} else {
|
||||
val anilistId = try {
|
||||
|
|
@ -131,13 +131,13 @@ object SkipIntroRepository {
|
|||
if (anilistId != null) animeSkip = fetchFromAnimeSkip(anilistId, episode, season = null)
|
||||
}
|
||||
|
||||
return@coroutineScope mergeByPriority(introDb, animeSkip, aniSkipDeferred.await()).also { cache[cacheKey] = it }
|
||||
return@coroutineScope mergeByPriority(skipDb, animeSkip, aniSkipDeferred.await()).also { cache[cacheKey] = it }
|
||||
}
|
||||
|
||||
/**
|
||||
* Merge provider results into one best-of: fill each segment category (opening / ending /
|
||||
* recap) from the highest-priority provider that has it. Arguments MUST be passed in priority
|
||||
* order (IntroDB has the broadest coverage, then Anime-Skip, then AniSkip), so a partial
|
||||
* order (SkipDB has the broadest coverage, then Anime-Skip, then AniSkip), so a partial
|
||||
* result from one provider never shadows a complete segment from another.
|
||||
*/
|
||||
private fun mergeByPriority(vararg providerResults: List<SkipInterval>): List<SkipInterval> {
|
||||
|
|
@ -155,6 +155,7 @@ object SkipIntroRepository {
|
|||
"intro", "op", "mixed-op" -> "opening"
|
||||
"outro", "ed", "mixed-ed", "credits", "ending" -> "ending"
|
||||
"recap" -> "recap"
|
||||
"preview" -> "preview"
|
||||
else -> null
|
||||
}
|
||||
|
||||
|
|
@ -176,26 +177,28 @@ object SkipIntroRepository {
|
|||
return emptyList()
|
||||
}
|
||||
|
||||
private suspend fun fetchFromIntroDb(imdbId: String, season: Int, episode: Int): List<SkipInterval> {
|
||||
private suspend fun fetchFromSkipDb(imdbId: String, season: Int, episode: Int, durationSec: Double? = null): List<SkipInterval> {
|
||||
return try {
|
||||
val data = SkipIntroApi.getIntroDbSegments(imdbId, season, episode)
|
||||
val data = SkipIntroApi.getSkipDbSegments(imdbId, season, episode, durationSec)
|
||||
if (data == null) return emptyList()
|
||||
val segments = data.segments ?: return emptyList()
|
||||
listOfNotNull(
|
||||
data.intro.toSkipIntervalOrNull("intro"),
|
||||
data.recap.toSkipIntervalOrNull("recap"),
|
||||
data.outro.toSkipIntervalOrNull("outro"),
|
||||
segments.intro.toSkipIntervalOrNull("intro"),
|
||||
segments.recap.toSkipIntervalOrNull("recap"),
|
||||
segments.outro.toSkipIntervalOrNull("outro"),
|
||||
segments.preview.toSkipIntervalOrNull("preview"),
|
||||
)
|
||||
} catch (_: Exception) {
|
||||
emptyList()
|
||||
}
|
||||
}
|
||||
|
||||
private fun IntroDbSegment?.toSkipIntervalOrNull(type: String): SkipInterval? {
|
||||
private fun SkipDbSegment?.toSkipIntervalOrNull(type: String): SkipInterval? {
|
||||
if (this == null) return null
|
||||
val start = startSec ?: startMs?.let { it / 1000.0 }
|
||||
val end = endSec ?: endMs?.let { it / 1000.0 }
|
||||
val start = startMs?.let { it / 1000.0 }
|
||||
val end = endMs?.let { it / 1000.0 }
|
||||
if (start == null || end == null || end <= start) return null
|
||||
return SkipInterval(startTime = start, endTime = end, type = type, provider = "introdb")
|
||||
return SkipInterval(startTime = start, endTime = end, type = type, provider = "skipdb")
|
||||
}
|
||||
|
||||
private suspend fun fetchFromAniSkip(malId: String, episode: Int): List<SkipInterval> {
|
||||
|
|
@ -277,34 +280,34 @@ object SkipIntroRepository {
|
|||
} catch (_: Exception) { emptyList() }.also { imdbEntriesCache[imdbId] = it }
|
||||
}
|
||||
|
||||
suspend fun submitIntro(
|
||||
suspend fun submitSegment(
|
||||
imdbId: String,
|
||||
season: Int,
|
||||
episode: Int,
|
||||
startSec: Double,
|
||||
endSec: Double,
|
||||
startMs: Long,
|
||||
endMs: Long,
|
||||
segmentType: String,
|
||||
durationMs: Long? = null,
|
||||
): Boolean {
|
||||
val settings = PlayerSettingsRepository.uiState.value
|
||||
val apiKey = settings.introDbApiKey.trim()
|
||||
val apiKey = settings.skipDbApiKey.trim()
|
||||
if (!settings.introSubmitEnabled || apiKey.isBlank()) return false
|
||||
|
||||
val request = SubmitIntroRequest(
|
||||
val request = SubmitSegmentRequest(
|
||||
imdbId = imdbId,
|
||||
season = season,
|
||||
episode = episode,
|
||||
startSec = startSec,
|
||||
endSec = endSec,
|
||||
startMs = (startSec * 1000).toLong(),
|
||||
endMs = (endSec * 1000).toLong(),
|
||||
startMs = startMs,
|
||||
endMs = endMs,
|
||||
segmentType = segmentType,
|
||||
durationMs = durationMs,
|
||||
)
|
||||
|
||||
return SkipIntroApi.submitIntro(apiKey, request)
|
||||
return SkipIntroApi.submitSegment(apiKey, request)
|
||||
}
|
||||
|
||||
suspend fun verifyIntroDbApiKey(apiKey: String): Boolean {
|
||||
return SkipIntroApi.verifyIntroDbApiKey(apiKey)
|
||||
suspend fun verifySkipDbApiKey(apiKey: String): Boolean {
|
||||
return SkipIntroApi.verifySkipDbApiKey(apiKey)
|
||||
}
|
||||
|
||||
fun clearCache() {
|
||||
|
|
|
|||
|
|
@ -27,39 +27,44 @@ enum class NextEpisodeThresholdMode {
|
|||
MINUTES_BEFORE_END,
|
||||
}
|
||||
|
||||
// --- IntroDb API response models ---
|
||||
// --- SkipDB API response models ---
|
||||
|
||||
@Serializable
|
||||
data class IntroDbSegmentsResponse(
|
||||
data class SkipDbSegmentsResponse(
|
||||
@SerialName("imdb_id") val imdbId: String? = null,
|
||||
@SerialName("season") val season: Int? = null,
|
||||
@SerialName("episode") val episode: Int? = null,
|
||||
@SerialName("intro") val intro: IntroDbSegment? = null,
|
||||
@SerialName("recap") val recap: IntroDbSegment? = null,
|
||||
@SerialName("outro") val outro: IntroDbSegment? = null,
|
||||
@SerialName("segments") val segments: SkipDbSegments? = null,
|
||||
@SerialName("intro_length_estimate_ms") val introLengthEstimateMs: Long? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class IntroDbSegment(
|
||||
@SerialName("start_sec") val startSec: Double? = null,
|
||||
@SerialName("end_sec") val endSec: Double? = null,
|
||||
data class SkipDbSegments(
|
||||
@SerialName("intro") val intro: SkipDbSegment? = null,
|
||||
@SerialName("recap") val recap: SkipDbSegment? = null,
|
||||
@SerialName("outro") val outro: SkipDbSegment? = null,
|
||||
@SerialName("preview") val preview: SkipDbSegment? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class SkipDbSegment(
|
||||
@SerialName("start_ms") val startMs: Long? = null,
|
||||
@SerialName("end_ms") val endMs: Long? = null,
|
||||
@SerialName("match") val match: String? = null,
|
||||
@SerialName("adjusted") val adjusted: Boolean? = null,
|
||||
@SerialName("offset_ms") val offsetMs: Long? = null,
|
||||
@SerialName("confidence") val confidence: Double? = null,
|
||||
@SerialName("submission_count") val submissionCount: Int? = null,
|
||||
@SerialName("updated_at") val updatedAt: String? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class SubmitIntroRequest(
|
||||
data class SubmitSegmentRequest(
|
||||
@SerialName("imdb_id") val imdbId: String,
|
||||
@SerialName("season") val season: Int,
|
||||
@SerialName("episode") val episode: Int,
|
||||
@SerialName("start_sec") val startSec: Double,
|
||||
@SerialName("end_sec") val endSec: Double,
|
||||
@SerialName("start_ms") val startMs: Long,
|
||||
@SerialName("end_ms") val endMs: Long,
|
||||
@SerialName("segment_type") val segmentType: String,
|
||||
@SerialName("duration_ms") val durationMs: Long? = null,
|
||||
)
|
||||
|
||||
// --- AniSkip API response models ---
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ fun SubmitIntroDialog(
|
|||
season: Int,
|
||||
episode: Int,
|
||||
currentTimeSec: Double,
|
||||
durationMs: Long,
|
||||
segmentType: String,
|
||||
onSegmentTypeChange: (String) -> Unit,
|
||||
startTimeStr: String,
|
||||
|
|
@ -210,13 +211,14 @@ fun SubmitIntroDialog(
|
|||
if (start != null && end != null && end > start) {
|
||||
isSubmitting = true
|
||||
scope.launch {
|
||||
val result = SkipIntroRepository.submitIntro(
|
||||
val result = SkipIntroRepository.submitSegment(
|
||||
imdbId = imdbId,
|
||||
season = season,
|
||||
episode = episode,
|
||||
startSec = start,
|
||||
endSec = end,
|
||||
startMs = (start * 1000).toLong(),
|
||||
endMs = (end * 1000).toLong(),
|
||||
segmentType = segmentType,
|
||||
durationMs = durationMs.takeIf { it > 0L },
|
||||
)
|
||||
isSubmitting = false
|
||||
if (result) {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ internal enum class IntegrationLogo {
|
|||
Tmdb,
|
||||
Trakt,
|
||||
MdbList,
|
||||
IntroDb,
|
||||
SkipDb,
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ private const val TraktUrl = "https://trakt.tv"
|
|||
private const val PremiumizeUrl = "https://www.premiumize.me"
|
||||
private const val TorboxUrl = "https://torbox.app"
|
||||
private const val MdbListUrl = "https://mdblist.com"
|
||||
private const val IntroDbUrl = "https://introdb.app/"
|
||||
private const val SkipDbUrl = "https://skipdb.tv/"
|
||||
private const val NuvioRepositoryUrl = "https://github.com/NuvioMedia/NuvioMobile"
|
||||
private const val MpvKitUrl = "https://github.com/mpvkit/MPVKit"
|
||||
private const val ApacheLicenseUrl = "https://www.apache.org/licenses/LICENSE-2.0"
|
||||
|
|
@ -351,10 +351,10 @@ private fun attributionItems(): List<AttributionItem> = listOf(
|
|||
link = MdbListUrl,
|
||||
),
|
||||
AttributionItem(
|
||||
titleRes = Res.string.settings_licenses_attributions_introdb_title,
|
||||
bodyRes = Res.string.settings_licenses_attributions_introdb_body,
|
||||
logo = IntegrationLogo.IntroDb,
|
||||
link = IntroDbUrl,
|
||||
titleRes = Res.string.settings_licenses_attributions_skipdb_title,
|
||||
bodyRes = Res.string.settings_licenses_attributions_skipdb_body,
|
||||
logo = IntegrationLogo.SkipDb,
|
||||
link = SkipDbUrl,
|
||||
),
|
||||
AttributionItem(
|
||||
titleRes = Res.string.settings_licenses_attributions_imdb_title,
|
||||
|
|
|
|||
|
|
@ -1066,22 +1066,22 @@ private fun PlaybackSettingsSection(
|
|||
)
|
||||
if (autoPlayPlayerSettings.introSubmitEnabled) {
|
||||
SettingsGroupDivider(isTablet = isTablet)
|
||||
var showIntroDbApiKeyDialog by remember { mutableStateOf(false) }
|
||||
var showSkipDbApiKeyDialog by remember { mutableStateOf(false) }
|
||||
val notSetLabel = stringResource(Res.string.settings_playback_not_set)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.settings_playback_introdb_api_key),
|
||||
description = autoPlayPlayerSettings.introDbApiKey.ifBlank { notSetLabel },
|
||||
title = stringResource(Res.string.settings_playback_skipdb_api_key),
|
||||
description = autoPlayPlayerSettings.skipDbApiKey.ifBlank { notSetLabel },
|
||||
isTablet = isTablet,
|
||||
onClick = { showIntroDbApiKeyDialog = true },
|
||||
onClick = { showSkipDbApiKeyDialog = true },
|
||||
)
|
||||
if (showIntroDbApiKeyDialog) {
|
||||
IntroDbApiKeyDialog(
|
||||
initialValue = autoPlayPlayerSettings.introDbApiKey,
|
||||
if (showSkipDbApiKeyDialog) {
|
||||
SkipDbApiKeyDialog(
|
||||
initialValue = autoPlayPlayerSettings.skipDbApiKey,
|
||||
onSave = {
|
||||
PlayerSettingsRepository.setIntroDbApiKey(it)
|
||||
showIntroDbApiKeyDialog = false
|
||||
PlayerSettingsRepository.setSkipDbApiKey(it)
|
||||
showSkipDbApiKeyDialog = false
|
||||
},
|
||||
onDismiss = { showIntroDbApiKeyDialog = false },
|
||||
onDismiss = { showSkipDbApiKeyDialog = false },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -3351,7 +3351,7 @@ private fun AnimeSkipClientIdDialog(
|
|||
|
||||
@Composable
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
private fun IntroDbApiKeyDialog(
|
||||
private fun SkipDbApiKeyDialog(
|
||||
initialValue: String,
|
||||
onSave: (String) -> Unit,
|
||||
onDismiss: () -> Unit,
|
||||
|
|
@ -3360,7 +3360,7 @@ private fun IntroDbApiKeyDialog(
|
|||
var value by remember { mutableStateOf(initialValue) }
|
||||
var isVerifying by remember { mutableStateOf(false) }
|
||||
var errorMessage by remember { mutableStateOf<String?>(null) }
|
||||
val invalidKeyMessage = stringResource(Res.string.settings_playback_introdb_invalid_key)
|
||||
val invalidKeyMessage = stringResource(Res.string.settings_playback_skipdb_invalid_key)
|
||||
|
||||
BasicAlertDialog(onDismissRequest = { if (!isVerifying) onDismiss() }) {
|
||||
Surface(
|
||||
|
|
@ -3373,13 +3373,13 @@ private fun IntroDbApiKeyDialog(
|
|||
verticalArrangement = Arrangement.spacedBy(12.dp),
|
||||
) {
|
||||
Text(
|
||||
text = stringResource(Res.string.settings_playback_introdb_api_key),
|
||||
text = stringResource(Res.string.settings_playback_skipdb_api_key),
|
||||
style = MaterialTheme.typography.titleLarge,
|
||||
color = MaterialTheme.colorScheme.onSurface,
|
||||
fontWeight = FontWeight.SemiBold,
|
||||
)
|
||||
Text(
|
||||
text = stringResource(Res.string.settings_playback_introdb_api_key_description),
|
||||
text = stringResource(Res.string.settings_playback_skipdb_api_key_description),
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
color = MaterialTheme.colorScheme.onSurfaceVariant,
|
||||
)
|
||||
|
|
@ -3389,7 +3389,7 @@ private fun IntroDbApiKeyDialog(
|
|||
value = it
|
||||
errorMessage = null
|
||||
},
|
||||
label = stringResource(Res.string.settings_playback_introdb_api_key),
|
||||
label = stringResource(Res.string.settings_playback_skipdb_api_key),
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
isError = errorMessage != null,
|
||||
)
|
||||
|
|
@ -3424,7 +3424,7 @@ private fun IntroDbApiKeyDialog(
|
|||
isVerifying = true
|
||||
errorMessage = null
|
||||
scope.launch {
|
||||
val isValid = com.nuvio.app.features.player.skip.SkipIntroRepository.verifyIntroDbApiKey(trimmed)
|
||||
val isValid = com.nuvio.app.features.player.skip.SkipIntroRepository.verifySkipDbApiKey(trimmed)
|
||||
isVerifying = false
|
||||
if (isValid) {
|
||||
onSave(trimmed)
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ internal fun settingsSearchEntries(
|
|||
PlaybackSearchRow("premiumize-attribution", stringResource(Res.string.settings_licenses_attributions_premiumize_title), stringResource(Res.string.settings_licenses_attributions_premiumize_body)),
|
||||
PlaybackSearchRow("torbox-attribution", stringResource(Res.string.settings_licenses_attributions_torbox_title), stringResource(Res.string.settings_licenses_attributions_torbox_body)),
|
||||
PlaybackSearchRow("mdblist-attribution", stringResource(Res.string.settings_licenses_attributions_mdblist_title), stringResource(Res.string.settings_licenses_attributions_mdblist_body)),
|
||||
PlaybackSearchRow("introdb-attribution", stringResource(Res.string.settings_licenses_attributions_introdb_title), stringResource(Res.string.settings_licenses_attributions_introdb_body)),
|
||||
PlaybackSearchRow("skipdb-attribution", stringResource(Res.string.settings_licenses_attributions_skipdb_title), stringResource(Res.string.settings_licenses_attributions_skipdb_body)),
|
||||
PlaybackSearchRow("imdb-datasets", stringResource(Res.string.settings_licenses_attributions_imdb_title), stringResource(Res.string.settings_licenses_attributions_imdb_body)),
|
||||
PlaybackSearchRow(
|
||||
if (isIos) "mpvkit-license" else "exoplayer-license",
|
||||
|
|
@ -640,7 +640,7 @@ internal fun settingsSearchEntries(
|
|||
PlaybackSearchRow("anime-skip", stringResource(Res.string.settings_playback_anime_skip), stringResource(Res.string.settings_playback_anime_skip_description)),
|
||||
PlaybackSearchRow("anime-skip-client", stringResource(Res.string.settings_playback_anime_skip_client_id), stringResource(Res.string.settings_playback_anime_skip_client_id_description)),
|
||||
PlaybackSearchRow("intro-submit", stringResource(Res.string.settings_playback_intro_submit_enabled), stringResource(Res.string.settings_playback_intro_submit_enabled_description)),
|
||||
PlaybackSearchRow("introdb-key", stringResource(Res.string.settings_playback_introdb_api_key), stringResource(Res.string.settings_playback_introdb_api_key_description)),
|
||||
PlaybackSearchRow("skipdb-key", stringResource(Res.string.settings_playback_skipdb_api_key), stringResource(Res.string.settings_playback_skipdb_api_key_description)),
|
||||
),
|
||||
)
|
||||
addPlaybackRows(
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ actual object PlayerSettingsStorage {
|
|||
private const val skipIntroEnabledKey = "skip_intro_enabled"
|
||||
private const val animeSkipEnabledKey = "animeskip_enabled"
|
||||
private const val animeSkipClientIdKey = "animeskip_client_id"
|
||||
private const val introDbApiKeyKey = "introdb_api_key"
|
||||
private const val skipDbApiKeyKey = "skipdb_api_key"
|
||||
private const val introSubmitEnabledKey = "intro_submit_enabled"
|
||||
private const val streamAutoPlayNextEpisodeEnabledKey = "stream_auto_play_next_episode_enabled"
|
||||
private const val streamAutoPlayPreferBingeGroupKey = "stream_auto_play_prefer_binge_group"
|
||||
|
|
@ -680,14 +680,14 @@ actual object PlayerSettingsStorage {
|
|||
NSUserDefaults.standardUserDefaults.setObject(clientId, forKey = ProfileScopedKey.of(animeSkipClientIdKey))
|
||||
}
|
||||
|
||||
actual fun loadIntroDbApiKey(): String? {
|
||||
actual fun loadSkipDbApiKey(): String? {
|
||||
val defaults = NSUserDefaults.standardUserDefaults
|
||||
val key = ProfileScopedKey.of(introDbApiKeyKey)
|
||||
val key = ProfileScopedKey.of(skipDbApiKeyKey)
|
||||
return defaults.stringForKey(key)
|
||||
}
|
||||
|
||||
actual fun saveIntroDbApiKey(apiKey: String) {
|
||||
NSUserDefaults.standardUserDefaults.setObject(apiKey, forKey = ProfileScopedKey.of(introDbApiKeyKey))
|
||||
actual fun saveSkipDbApiKey(apiKey: String) {
|
||||
NSUserDefaults.standardUserDefaults.setObject(apiKey, forKey = ProfileScopedKey.of(skipDbApiKeyKey))
|
||||
}
|
||||
|
||||
actual fun loadIntroSubmitEnabled(): Boolean? {
|
||||
|
|
@ -1011,7 +1011,7 @@ actual object PlayerSettingsStorage {
|
|||
payload.decodeSyncBoolean(skipIntroEnabledKey)?.let(::saveSkipIntroEnabled)
|
||||
payload.decodeSyncBoolean(animeSkipEnabledKey)?.let(::saveAnimeSkipEnabled)
|
||||
payload.decodeSyncString(animeSkipClientIdKey)?.let(::saveAnimeSkipClientId)
|
||||
payload.decodeSyncString(introDbApiKeyKey)?.let(::saveIntroDbApiKey)
|
||||
payload.decodeSyncString(skipDbApiKeyKey)?.let(::saveSkipDbApiKey)
|
||||
payload.decodeSyncBoolean(streamAutoPlayNextEpisodeEnabledKey)?.let(::saveStreamAutoPlayNextEpisodeEnabled)
|
||||
payload.decodeSyncBoolean(streamAutoPlayPreferBingeGroupKey)?.let(::saveStreamAutoPlayPreferBingeGroup)
|
||||
payload.decodeSyncBoolean(streamAutoPlayReuseBingeGroupKey)?.let(::saveStreamAutoPlayReuseBingeGroup)
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.nuvio.app.features.settings
|
|||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.graphics.painter.Painter
|
||||
import nuvio.composeapp.generated.resources.Res
|
||||
import nuvio.composeapp.generated.resources.introdb_favicon
|
||||
import nuvio.composeapp.generated.resources.skipdb_favicon
|
||||
import nuvio.composeapp.generated.resources.mdblist_logo
|
||||
import nuvio.composeapp.generated.resources.rating_tmdb
|
||||
import nuvio.composeapp.generated.resources.trakt_tv_favicon
|
||||
|
|
@ -15,5 +15,5 @@ internal actual fun integrationLogoPainter(logo: IntegrationLogo): Painter =
|
|||
IntegrationLogo.Tmdb -> painterResource(Res.drawable.rating_tmdb)
|
||||
IntegrationLogo.Trakt -> painterResource(Res.drawable.trakt_tv_favicon)
|
||||
IntegrationLogo.MdbList -> painterResource(Res.drawable.mdblist_logo)
|
||||
IntegrationLogo.IntroDb -> painterResource(Res.drawable.introdb_favicon)
|
||||
IntegrationLogo.SkipDb -> painterResource(Res.drawable.skipdb_favicon)
|
||||
}
|
||||
|
|
|
|||
12
gradle/gradle-daemon-jvm.properties
Normal file
12
gradle/gradle-daemon-jvm.properties
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#This file is generated by updateDaemonJvm
|
||||
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect
|
||||
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect
|
||||
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect
|
||||
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect
|
||||
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/73bcfb608d1fde9fb62e462f834a3299/redirect
|
||||
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/846ee0d876d26a26f37aa1ce8de73224/redirect
|
||||
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/ec7520a1e057cd116f9544c42142a16b/redirect
|
||||
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/4c4f879899012ff0a8b2e2117df03b0e/redirect
|
||||
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/9482ddec596298c84656d31d16652665/redirect
|
||||
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/39701d92e1756bb2f141eb67cd4c660e/redirect
|
||||
toolchainVersion=21
|
||||
Loading…
Reference in a new issue