diff --git a/README.md b/README.md index 7390c4c5..48a0cfd3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![stable version](https://img.shields.io/badge/stable_version-1.8.18-blue.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/stable/repository.plexkodiconnect/repository.plexkodiconnect-1.0.2.zip) -[![beta version](https://img.shields.io/badge/beta_version-2.0.22-red.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/beta/repository.plexkodiconnectbeta/repository.plexkodiconnectbeta-1.0.2.zip) +[![beta version](https://img.shields.io/badge/beta_version-2.0.26-red.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/beta/repository.plexkodiconnectbeta/repository.plexkodiconnectbeta-1.0.2.zip) [![Installation](https://img.shields.io/badge/wiki-installation-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/Installation) [![FAQ](https://img.shields.io/badge/wiki-FAQ-brightgreen.svg?maxAge=60&style=flat)](https://github.com/croneter/PlexKodiConnect/wiki/faq) diff --git a/addon.xml b/addon.xml index a13db1b9..7c3ff6e8 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + @@ -67,7 +67,37 @@ Нативная интеграция сервера Plex в Kodi Подключите Kodi к своему серверу Plex. Плагин предполагает что вы управляете своими видео с помощью Plex (а не в Kodi). Вы можете потерять текущие базы данных музыки и видео в Kodi (так как плагин напрямую их изменяет). Используйте на свой страх и риск Используйте на свой страх и риск - version 2.0.22 (beta only): + version 2.0.26 (beta only): +- Reduce CPU strain for artwork caching progress +- Fallback connection if plex.direct does not resolve +- Prettify Plex context menu, thanks @dazedcrazy +- Default to not show image caching notifications + +version 2.0.25 (beta only): +- Fix migration not working correctly for re-connecting PMS +- Fix PMS showing up twice +- Improve artwork caching counter in PKC settings + +version 2.0.24 (beta only): +- WARNING: You will need to reset the Kodi database! Sorry for that... +- PKC will force you to re-connect with your PMS +- Use plex.direct url instead of local ip to use correct SSL certificate; thus fix artwork caching +- Revert "Increase timeout between syncing images" +- Don't ask user for DB reset if forced by PKC +- Ensure movies and tv shows are synced before music +- Ensure a later migration if user downgraded PKC + +version 2.0.23 (beta only): +- WARNING: You will need to reset the Kodi database! +- Finally support for Extras! +- Fix context menu not working for shows in library view +- Fix Plex Companion music playstate status for iOS +- Show caching progress and FanartTV lookup progress in PKC settings +- Fix rare library sync errors +- Fix ValueError for third party add-ons calling PKC +- Tweak PKC settings + +version 2.0.22 (beta only): - Fix Recently Added for tv shows not working - Fix PKC crashing on startup diff --git a/changelog.txt b/changelog.txt index 6d5b8e35..fbe6654b 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,33 @@ +version 2.0.26 (beta only): +- Reduce CPU strain for artwork caching progress +- Fallback connection if plex.direct does not resolve +- Prettify Plex context menu, thanks @dazedcrazy +- Default to not show image caching notifications + +version 2.0.25 (beta only): +- Fix migration not working correctly for re-connecting PMS +- Fix PMS showing up twice +- Improve artwork caching counter in PKC settings + +version 2.0.24 (beta only): +- WARNING: You will need to reset the Kodi database! Sorry for that... +- PKC will force you to re-connect with your PMS +- Use plex.direct url instead of local ip to use correct SSL certificate; thus fix artwork caching +- Revert "Increase timeout between syncing images" +- Don't ask user for DB reset if forced by PKC +- Ensure movies and tv shows are synced before music +- Ensure a later migration if user downgraded PKC + +version 2.0.23 (beta only): +- WARNING: You will need to reset the Kodi database! +- Finally support for Extras! +- Fix context menu not working for shows in library view +- Fix Plex Companion music playstate status for iOS +- Show caching progress and FanartTV lookup progress in PKC settings +- Fix rare library sync errors +- Fix ValueError for third party add-ons calling PKC +- Tweak PKC settings + version 2.0.22 (beta only): - Fix Recently Added for tv shows not working - Fix PKC crashing on startup diff --git a/resources/language/resource.language.cs_CZ/strings.po.orig b/resources/language/resource.language.cs_CZ/strings.po.orig new file mode 100644 index 00000000..eab9f7f3 --- /dev/null +++ b/resources/language/resource.language.cs_CZ/strings.po.orig @@ -0,0 +1,1496 @@ +# XBMC Media Center language file +# Translators: +# Croneter None , 2017 +# Michal Kuncl , 2017 +msgid "" +msgstr "" +"Project-Id-Version: PlexKodiConnect\n" +"Report-Msgid-Bugs-To: croneter@gmail.com\n" +"POT-Creation-Date: 2017-04-15 13:13+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Michal Kuncl , 2017\n" +"Language-Team: Czech (Czech Republic) (https://www.transifex.com/croneter/teams/73837/cs_CZ/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs_CZ\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +# Add-on settings +msgctxt "#29999" +msgid "PlexKodiConnect" +msgstr "PlexKodiConnect" + +msgctxt "#30000" +msgid "Server Address (IP)" +msgstr "IP Adresa serveru" + +msgctxt "#30001" +msgid "Searching for PMS" +msgstr "Vyhledávám PMS" + +msgctxt "#30002" +msgid "Preferred playback method" +msgstr "Upřednostňovaná metoda přehrávání" + +# Warning displayed if Kodi setting is enabled. Be sure to escape the quotes +# again! The exact wording can be found in the Kodi settings, player settings, +# videos +msgctxt "#30003" +msgid "" +"Warning: Kodi setting \"Play next video automatically\" is enabled. This " +"could break PKC. Deactivate?" +msgstr "" +"Varování: Máte v Kodi zapnuté nastavení \"Automaticky přehrát další video\"." +" Toto může narušit funkčnost PKC. Deaktivovat?" + +msgctxt "#30005" +msgid "Username: " +msgstr "Uživ. jméno: " + +# Sync notification displayed if there is still artwork to be cached to Kodi +msgctxt "#30006" +msgid "Caching %s Plex images" +<<<<<<< HEAD +msgstr "Ukládám %s obrázků z Plexu" +======= +msgstr "" +>>>>>>> hotfixes + +# Sync notification displayed if syncing of major artwork is done +msgctxt "#30007" +msgid "Plex image caching done" +<<<<<<< HEAD +msgstr "Ukládání obrázků do mezipaměti dokončeno." +======= +msgstr "" +>>>>>>> hotfixes + +# PKC settings artwork: Enable notifications for artwork image sync +msgctxt "#30008" +msgid "Enable notifications for image caching" +msgstr "Povolit upozornění na ukládání obrázků do mezipaměti" + +# PKC settings artwork: Enable image caching during Kodi playback +msgctxt "#30009" +msgid "Enable image caching during Kodi playback (restart Kodi!)" +msgstr "" +"Povolit ukládání obrázků do mezipaměti při přehrávání (restartujte Kodi!)" + +# PKC settings - Artwork +msgctxt "#30010" +msgid "Approximate progress" +msgstr "Odhad průběhu" + +# PKC settings - Artwork +msgctxt "#30011" +msgid "Plex artwork (posters and backgrounds) left to cache:" +msgstr "Počet obrázků a pozadí z Plexu k uložení do mezipaměti:" + +# PKC settings - Artwork +msgctxt "#30010" +msgid "Approximate progress" +msgstr "" + +# PKC settings - Artwork +msgctxt "#30011" +msgid "Plex artwork (posters and backgrounds) left to cache:" +msgstr "" + +# Button text +msgctxt "#30012" +msgid "OK" +msgstr "OK" + +msgctxt "#30013" +msgid "Never show" +msgstr "Nezobrazovat" + +# PKC settings category +msgctxt "#30014" +msgid "Connection" +msgstr "Připojení" + +# PKC settings - Artwork +msgctxt "#30015" +msgid "Movie and show FanartTV lookups left to do:" +<<<<<<< HEAD +msgstr "Filmů a seriálů k vyhledání na FanartTV:" +======= +msgstr "" +>>>>>>> hotfixes + +msgctxt "#30016" +msgid "Device Name" +msgstr "Název zařízení" + +# Error message +msgctxt "#30017" +msgid "Unauthorized for PMS" +msgstr "Neověřeno u PMS" + +# Sync notification displayed for the number of fanart.tv lookups left +msgctxt "#30018" +msgid "Checking FanartTV for %s items" +<<<<<<< HEAD +msgstr "Vyhledávám %s položek na FanartTV" +======= +msgstr "" +>>>>>>> hotfixes + +# Sync notification displayed when FanartTV lookup is completed +msgctxt "#30019" +msgid "FanartTV lookup completed" +<<<<<<< HEAD +msgstr "Vyhledávání na FanartTV dokončeno" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC settings category +msgctxt "#30022" +msgid "Advanced" +msgstr "Rozšířené" + +msgctxt "#30024" +msgid "Username" +msgstr "Uživ. jméno" + +msgctxt "#30025" +msgid "Display message if PMS goes offline" +msgstr "Zobrazit zprávu při odpojení PMS" + +msgctxt "#30030" +msgid "Port Number" +msgstr "Číslo portu" + +msgctxt "#30031" +msgid "I own this Plex Media Server" +msgstr "Tento Plex Media Server je můj" + +# Kodi context menu entry for movie and episode information screen +msgctxt "#30032" +msgid "Information" +msgstr "Informace" + +msgctxt "#30042" +msgid "Refresh" +msgstr "Obnovit" + +msgctxt "#30043" +msgid "Delete" +msgstr "Smazat" + +# Notification displayed if there is a LOT to be deleted +msgctxt "#30052" +msgid "Deleting" +msgstr "Mažu" + +msgctxt "#30069" +msgid "None" +msgstr "Žádný" + +msgctxt "#30093" +msgid "Mark Watched" +msgstr "Označit jako shlédnuté" + +msgctxt "#30094" +msgid "Mark Unwatched" +msgstr "Označit jako neshlédnuté" + +msgctxt "#30095" +msgid "Add to Favorites" +msgstr "Přidat k oblíbeným" + +msgctxt "#30096" +msgid "Remove from Favorites" +msgstr "Odebrat z oblíbených" + +msgctxt "#30114" +msgid "Offer delete after playback" +msgstr "Nabídnout smazání po skončení přehrávání" + +msgctxt "#30115" +msgid "For Episodes" +msgstr "Pro epizody" + +msgctxt "#30116" +msgid "For Movies" +msgstr "Pro filmy" + +msgctxt "#30125" +msgid "Done" +msgstr "Hotovo" + +# Error popup message text +msgctxt "#30128" +msgid "Play Error" +msgstr "Chyba přehrávání" + +msgctxt "#30132" +msgid "Warning" +msgstr "Varování" + +msgctxt "#30135" +msgid "Error" +msgstr "Chyba" + +msgctxt "#30138" +msgid "Search" +msgstr "Vyhledat" + +msgctxt "#30139" +msgid "Enable Theme Music (Requires Restart)" +msgstr "Povolit tématickou hudbu (vyžaduje restart)" + +msgctxt "#30143" +msgid "Always transcode if video bitrate is above" +msgstr "Vždy překódovat video pokud je bitový tok větší než" + +msgctxt "#30157" +msgid "Enable Enhanced Images (eg CoverArt)" +msgstr "Povolit rozšířené obrázky (např. CoverArt)" + +msgctxt "#30158" +msgid "Metadata" +msgstr "Metadata" + +msgctxt "#30160" +msgid "Video Quality if Transcoding necessary" +msgstr "Kvalita videa při překódování" + +msgctxt "#30165" +msgid "Direct Play" +msgstr "Přímé přehrávání" + +msgctxt "#30166" +msgid "Transcoding" +msgstr "Překódování" + +msgctxt "#30170" +msgid "Recently Added TV Shows" +msgstr "Naposledy přidané seriály" + +msgctxt "#30171" +msgid "In Progress TV Shows" +msgstr "Rozkoukané seriály" + +msgctxt "#30173" +msgid "Channels" +msgstr "Kanály" + +msgctxt "#30174" +msgid "Recently Added" +msgstr "Naposledy přidané" + +msgctxt "#30177" +msgid "In Progress Movies" +msgstr "Rozkoukané filmy" + +msgctxt "#30178" +msgid "In Progress Episodes" +msgstr "Rozkoukané epizody" + +msgctxt "#30179" +msgid "Next Episodes" +msgstr "Další epizody" + +msgctxt "#30180" +msgid "Favorite Movies" +msgstr "Oblíbené filmy" + +msgctxt "#30181" +msgid "Favorite Shows" +msgstr "Oblíbené seriály" + +msgctxt "#30182" +msgid "Favorite Episodes" +msgstr "Oblíbené epizody" + +msgctxt "#30189" +msgid "Unwatched Movies" +msgstr "Neshlédnuté filmy" + +msgctxt "#30198" +msgid "Search" +msgstr "Hledání" + +# Video node naming for random e.g. movies +msgctxt "#30227" +msgid "Random" +msgstr "Náhodně" + +# Video node naming for e.g. movies +msgctxt "#30230" +msgid "Recommended" +msgstr "Doporučené" + +msgctxt "#30235" +msgid "Extras" +msgstr "Extra" + +msgctxt "#30243" +msgid "Enable HTTPS" +msgstr "Povolit HTTPS" + +msgctxt "#30251" +msgid "Recently added Home Videos" +msgstr "Naposledy přidaná domácí videa" + +msgctxt "#30252" +msgid "Recently added Photos" +msgstr "Naposledy přidané fotky" + +msgctxt "#30253" +msgid "Favorite Home Videos" +msgstr "Oblíbená domácí videa" + +msgctxt "#30254" +msgid "Favorite Photos" +msgstr "Oblíbené fotky" + +msgctxt "#30255" +msgid "Favorite Albums" +msgstr "Oblíbená alba" + +msgctxt "#30256" +msgid "Recently added Music videos" +msgstr "Naposledy přidané videoklipy" + +msgctxt "#30257" +msgid "In progress Music videos" +msgstr "Rozkoukané videoklipy" + +msgctxt "#30258" +msgid "Unwatched Music videos" +msgstr "Neshlédnuté videoklipy" + +# PKC settings sub category under appearance tweaks +msgctxt "#30302" +msgid "Movies" +msgstr "Filmy" + +# contextmenu entry +msgctxt "#30401" +msgid "Plex options" +msgstr "Nastavení Plexu" + +# contextmenu entry +msgctxt "#30405" +msgid "Add to Plex favorites" +msgstr "Přidat do oblíbených Plexu" + +# contextmenu entry +msgctxt "#30406" +msgid "Remove from Plex favorites" +msgstr "Odstranit z oblíbených Plexu" + +# contextmenu entry +msgctxt "#30407" +msgid "Set custom song rating" +msgstr "Nastavit vlastní hodnocení skladby" + +# contextmenu entry +msgctxt "#30408" +msgid "Plex addon settings" +msgstr "Nastavení doplňku Plex" + +# contextmenu entry +msgctxt "#30409" +msgid "Delete item from server" +msgstr "Smazat položku ze serveru" + +# contextmenu entry +msgctxt "#30410" +msgid "Refresh this item" +msgstr "Obnovit tuto položku" + +# contextmenu entry +msgctxt "#30412" +msgid "Force transcode" +msgstr "Vynutit překódování" + +# Error dialog text +msgctxt "#30414" +msgid "" +"Could not delete the Plex item. Is item deletion enabled on the Plex Media " +"Server?" +msgstr "" +"Nemohu smazat tuto položku Plexu. Máte povolené mazání položek v Plex Media " +"Serveru?" + +# contextmenu entry +msgctxt "#30415" +msgid "Start playback via PMS" +msgstr "Zahájit přehrávání přes PMS" + +msgctxt "#30416" +msgid "Settings for the Plex Server" +msgstr "Nastavení Plex Serveru" + +# PKC Settings - Connection +msgctxt "#30500" +msgid "Verify Host SSL Certificate (more secure)" +msgstr "Ověřit hostitelův SSL certifikát (bezpečnější)" + +# PKC Settings - Connection +msgctxt "#30501" +msgid "Client SSL certificate" +msgstr "Klientský SSL certifikát" + +# PKC Settings - Connection +msgctxt "#30505" +msgid "[COLOR yellow]Reset login attempts[/COLOR]" +msgstr "[COLOR yellow]Resetovat pokusy o přihlášení[/COLOR]" + +# PKC Settings, category name +msgctxt "#30506" +msgid "Sync Options" +msgstr "Synchronizace" + +# PKC Settings - Sync Options +msgctxt "#30507" +msgid "Show syncing progress" +msgstr "Zobrazovat průběh synchronizace" + +# PKC Settings - Sync Options +msgctxt "#30508" +msgid "Sync empty TV Shows" +msgstr "Synchronizovat prázdné seriály" + +# PKC Settings - Sync Options +msgctxt "#30509" +msgid "Enable Music Library" +msgstr "Povolit hudební knihovnu" + +msgctxt "#30510" +msgid "Direct stream music library" +msgstr "Přímé streamování hudební knihovny" + +# PKC Settings - Sync Options +msgctxt "#30511" +msgid "Playback Mode" +msgstr "Režim přehrávání" + +# PKC Settings - Artwork +msgctxt "#30512" +msgid "Cache all artwork for a smooth Kodi experience" +msgstr "" + +# PKC Settings - Artwork +msgctxt "#30513" +msgid "Limit artwork cache threads (recommended for rpi)" +msgstr "Omezit vlákna mezipaměti obrázků (doporučeno pro rpi)" + +# PKC Settings - Sync Options +msgctxt "#30515" +msgid "Maximum items to request from the server at once" +msgstr "Maximální počet položek vyžádaných najednou ze serveru" + +# PKC Settings, category name +msgctxt "#30516" +msgid "Playback" +msgstr "Přehrávání" + +# PKC Settings - Connection +msgctxt "#30517" +msgid "[COLOR yellow]Enter network credentials[/COLOR]" +msgstr "[COLOR yellow]Zadejte přihlašovací údaje k síťi[/COLOR]" + +# PKC Settings - Playback +msgctxt "#30518" +msgid "Enable Plex Trailers (Plexpass is needed)" +msgstr "Povolit ukázky Plex Trailers (je vyžadován PlexPass)" + +# PKC Settings - Playback +msgctxt "#30519" +msgid "Ask to play trailers" +msgstr "Zeptat se na přehrání ukázek" + +# PKC Settings - Plex +msgctxt "#30520" +msgid "Skip PMS delete confirmation (use at your own risk)" +msgstr "Přeskočit potvrzení PMS o smazání (používejte na vlastní riziko)" + +# PKC Settings - Playback +msgctxt "#30521" +msgid "Jump back on resume (in seconds)" +msgstr "Poskočit vzad při obnovení přehrávání (v sekundách)" + +# PKC Settings - Playback +msgctxt "#30522" +msgid "Force transcode h265/HEVC" +msgstr "Vynutit překódování H265/HEVC" + +# PKC Settings - Playback +msgctxt "#30527" +msgid "Ignore specials in next episodes" +msgstr "Ignorovat speciály v nadcházejících epizodách" + +msgctxt "#30528" +msgid "Permanent users to add to the session" +msgstr "Stálí uživatelé pro přidání do relace" + +# PKC Settings - Advanced +msgctxt "#30529" +msgid "Startup delay (in seconds)" +msgstr "Zpoždění startu (v sekundách)" + +msgctxt "#30531" +msgid "Enable new content notification" +msgstr "Povolit upozornění na nový obsah" + +msgctxt "#30532" +msgid "Duration of the video library pop up (in seconds)" +msgstr "Doba zobrazení upozornění video knihovny (v sekundách)" + +msgctxt "#30533" +msgid "Duration of the music library pop up (in seconds)" +msgstr "Doba zobrazení upozornění hudební knihovny (v sekundách)" + +msgctxt "#30534" +msgid "Server messages" +msgstr "Zprávy serveru" + +# PKC Settings - Advanced +msgctxt "#30535" +msgid "Generate a new unique Plex device Id (e.g. to clone Kodi)" +msgstr "" +<<<<<<< HEAD +"Vygenerovat nový unikátní identifikátor zařízení Plexu (např. při kopii " +"Kodi)" +======= +>>>>>>> hotfixes + +# PKC Settings - Connection +msgctxt "#30536" +msgid "Users must log in every time Kodi restarts" +msgstr "Při každém restartu Kodi se musí uživatel přihlásit" + +# PKC Settings warning +msgctxt "#30537" +msgid "RESTART KODI IF YOU MAKE ANY CHANGES" +msgstr "PŘI KAŽDÉ ZMĚNĚ MUSÍTE RESTARTOVAT KODI" + +# PKC Settings warning +msgctxt "#30538" +msgid "Manual complete reset of Kodi database necessary, see \"Advanced\"" +<<<<<<< HEAD +msgstr "Je vyžadován ruční reset databaze. Viz \"rozšířené\"" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC Settings - Artwork +msgctxt "#30539" +msgid "Download additional art from FanArtTV" +msgstr "Stahovat další obrázky z FanArtTV" + +# PKC Settings - Artwork +msgctxt "#30540" +msgid "Download movie set/collection art from FanArtTV" +msgstr "Stahovat obrázky filmových kolekcí z FanArtTV" + +# PKC Settings - Playback +msgctxt "#30541" +msgid "Don't ask to pick a certain stream/quality" +msgstr "Nepožadovat výběr proudu nebo kvality" + +# PKC Settings - Playback +msgctxt "#30542" +msgid "Always pick best quality for trailers" +msgstr "Vždy vybrat nejlepší kvalitu ukázek" + +msgctxt "#30544" +msgid "Artwork" +msgstr "Obrázky" + +# PKC Settings - Playback +msgctxt "#30545" +msgid "Force transcode pictures" +msgstr "Vynutit překódování obrázků" + +# Welcome to Plex notification +msgctxt "#33000" +msgid "Welcome" +msgstr "Vítáme uživatele" + +# Error message +msgctxt "#33001" +msgid "Error connecting" +msgstr "Chyba připojení" + +# Error message +msgctxt "#33002" +msgid "Server is unreachable" +msgstr "Server je nedosažitelný" + +# Plex notification +msgctxt "#33003" +msgid "Server is online" +msgstr "Server je online" + +# Error notification +msgctxt "#33009" +msgid "Invalid username or password" +msgstr "Neplatné uživatelské jméno nebo heslo" + +msgctxt "#33010" +msgid "Failed to authenticate too many times. Reset in the settings." +msgstr "" +"Proběhlo moc neúspěšných pokusů o ověření. Proveďte reset v nastavení." + +# Dialog before playback +msgctxt "#33013" +msgid "Choose the audio stream" +msgstr "Zvolte audiostopu" + +# Dialog before playback +msgctxt "#33014" +msgid "Choose the subtitles stream" +msgstr "Zvolte titulkovou stopu" + +# Dialog before playback +msgctxt "#33016" +msgid "Play trailers?" +msgstr "Přehrát ukázky?" + +# Error message +msgctxt "#33032" +msgid "" +"Failed to generate a new device Id. See your logs for more information." +msgstr "" +"Nepodařilo se vygenerovat nový identifikátor zařízení. Pro více informací se" +" podívejte do záznamu." + +# Pop-up informing about Kodi restart +msgctxt "#33033" +msgid "Kodi will now restart to apply the changes." +msgstr "Pro aplikování změn se nyní Kodi restartuje." + +# Confirmation dialog before item gets deleted from the PMS +msgctxt "#33041" +msgid "" +"Delete file(s) from Plex Server? This will also delete the file(s) from " +"disk!" +msgstr "Smazat tyto soubory z Plex Serveru? Tímto smažete i soubory z disku!" + +# PKC Settings - Playback +msgctxt "#39000" +msgid "- Number of trailers to play before a movie" +msgstr "- Počet ukázek před filmem" + +# PKC Settings - Playback +msgctxt "#39001" +msgid "Boost audio when transcoding" +msgstr "Zesílit zvuk při překódování" + +# PKC Settings - Playback +msgctxt "#39002" +msgid "Burnt-in subtitle size" +msgstr "Velikost vpálených titulků" + +# PKC Settings - Sync +msgctxt "#39003" +msgid "Number of simultaneous download threads" +<<<<<<< HEAD +msgstr "Počet souběžných vláken stahování" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC Settings - Plex +msgctxt "#39004" +msgid "Enable Plex Companion (restart Kodi!)" +msgstr "Povolit Plex Companion (restartujte Kodi!)" + +# PKC Settings - Plex +msgctxt "#39005" +msgid "Plex Companion Port (change only if needed)" +msgstr "Port Plex Companion (změňte pouze pokud je nutné)" + +# PKC Settings - Plex +msgctxt "#39008" +msgid "Plex Companion: Allows flinging media to Kodi through Plex" +msgstr "Plex Companion: Umožňuje dálkově přehrávat v Kodi přes Plex" + +# Error message +msgctxt "#39009" +msgid "Could not login to plex.tv. Please try signing in again." +msgstr "Nemohu se přihlásit k plex.tv. Prosím zkuste se přihlásit znova." + +# Error message +msgctxt "#39010" +msgid "Problems connecting to plex.tv. Network or internet issue?" +msgstr "Nemohu se připojit k plex.tv. Zřejmě chyba sítě nebo internetu." + +# Error message +msgctxt "#39011" +msgid "Could not find any Plex server in the network. Aborting..." +msgstr "Nemohu v síti najít žádný Plex server. Přerušuji..." + +# Dialog text for choosing PMS +msgctxt "#39012" +msgid "Choose your Plex server" +msgstr "Vyberte Plex server" + +# Error message +msgctxt "#39013" +msgid "Not yet authorized for Plex server " +msgstr "Ještě nejste autorizováni k Plex serveru " + +# Error message +msgctxt "#39014" +msgid "Please sign in to plex.tv." +msgstr "Prosím přihlašte se k plex.tv." + +# Error message +msgctxt "#39015" +msgid "Problems connecting to server. Pick another server?" +msgstr "Vyskytly se problémy při připojování k serveru. Vyberete si jiný?" + +# Pop-up on initial sync +msgctxt "#39016" +msgid "" +"Disable Plex music library? (It is HIGHLY recommended to use Plex music only" +" with direct paths for large music libraries. Kodi might crash otherwise)" +msgstr "" +"Zakázat hudební knihovnu Plexu? (Je velice doporučováno pro velké hudební " +"knihovny použít přímé cesty. Jinak hrozí pád Kodi.)" + +# Pop-up on initial sync +msgctxt "#39017" +msgid "" +"Would you now like to go to the plugin's settings to fine-tune PKC? You will" +" need to RESTART Kodi!" +msgstr "" +"Chcete otevřít nastavení pluginu pro další nastavení PKC? Potom budete muset" +" RESTARTOVAT Kodi!" + +# PKC Settings - Advanced +msgctxt "#39018" +msgid "Repair the Kodi database (force update all content)" +<<<<<<< HEAD +msgstr "Opravit databázi Kodi (vynutit aktualizaci všeho obsahu)" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC Settings - Advanced +msgctxt "#39019" +msgid "Reset the Kodi database and optionally reset PlexKodiConnect" +<<<<<<< HEAD +msgstr "Vyresetovat databázi Kodi a případně i nastavení PlexKodiConnect" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC Settings - Artwork +msgctxt "#39020" +msgid "[COLOR yellow]Cache all images to Kodi texture cache now[/COLOR]" +msgstr "" +"[COLOR yellow]Nyní umístit všechny obrázky do texturové mezipaměti " +"Kodi[/COLOR]" + +# Appended to a listed PMS if it is in the same LAN network as PKC +msgctxt "#39022" +msgid "local" +msgstr "místní" + +# Error message +msgctxt "#39023" +msgid "Failed to authenticate. Did you login to plex.tv?" +msgstr "Nemohu provést autentifikaci. Přihlásili jste se na plex.tv?" + +# PKC Settings - Plex +msgctxt "#39025" +msgid "Automatically log into plex.tv on startup" +msgstr "Po spuštění automaticky přihlásit na plex.tv" + +# PKC Settings - Sync +msgctxt "#39026" +msgid "Enable constant background sync" +msgstr "Povolit neustálou synchronizaci na pozadí" + +# Pop-up on initial sync +msgctxt "#39028" +msgid "" +"CAUTION! If you choose \"Native\" mode , you might loose access to certain " +"Plex features such as: Plex trailers and transcoding options. ALL Plex " +"shares need to use direct paths (e.g. smb://myNAS/mymovie.mkv or " +"\\\\myNAS/mymovie.mkv)!" +msgstr "" +"POZOR! Pokud zvolíte \"Nativní\" režim, přijdete o některé funkce Plexu, " +"jako např. ukázky, nebo možnosti překódování. Všechny knihovny Plexu musí " +"používat přímé cesty (např. smb://myNAS/mymovie.mkv nebo " +"\\myNAS/mymovie.mkv)!" + +# Pop-up on initial sync +msgctxt "#39029" +msgid "Network credentials" +msgstr "Přihlašovací údaje k síti" + +# Pop-up on initial sync +msgctxt "#39030" +msgid "" +"Add network credentials to allow Kodi access to your content? Note: Skipping" +" this step may generate a message during the initial scan of your content if" +" Kodi can't locate your content." +msgstr "" +"Přidat síťové přihlašovací údaje pro přístup Kodi k vašemu obsahu? Pokud " +"přeskočíte tento krok, při úvodním skenování se může zobrazit výzva k zadání" +" přihlašovacích údajů." + +# Error message displayed when verifying Direct Path sync paths passed by Plex +msgctxt "#39031" +msgid "" +"Kodi cannot locate the file %s. Please verify your PKC settings. Stop " +"syncing?" +msgstr "" +"Kodi nemůže najít soubor %s. Prosím zkontrolujte nastavení PKC. Přerušit " +"synchronizaci?" + +# Pop-up on initial sync +msgctxt "#39033" +msgid "" +"Transform Plex UNC library paths \\\\myNas\\mymovie.mkv automatically to smb" +" paths, smb://myNas/mymovie.mkv? (recommended)" +msgstr "" +"Automaticky změnit UNC cesty ke knihovně Plexu \\myNas\\mymovie.mkv na smb " +"cesty smb://myNas/mymovie.mkv? (doporučeno)" + +# PKC Settings - Customize Paths +msgctxt "#39034" +msgid "Replace Plex UNC paths \\\\myNas with smb://myNas" +msgstr "Nahradit UNC cesty z \\myNas na smb://myNas" + +# PKC Settings - Customize Paths +msgctxt "#39035" +msgid "" +"Replace Plex paths /volume1/media or \\\\myserver\\media with custom SMB " +"paths smb://NAS/mystuff" +msgstr "" +"Nahradit cesty /volume1/media nebo \\myserver\\media za vlastní cesty " +"smb://NAS/mystuff" + +# PKC Settings - Customize Paths +msgctxt "#39037" +msgid "Original Plex MOVIE path to replace:" +msgstr "Původní cesta k Plex FILMU:" + +# PKC Settings - Customize Paths +msgctxt "#39038" +msgid "Replace Plex MOVIE with:" +msgstr "Nahradit Plex FILMY:" + +# PKC Settings - Customize Paths +msgctxt "#39039" +msgid "Original Plex TV SHOWS path to replace:" +msgstr "Původní cesta k Plex SERIÁLU:" + +# PKC Settings - Customize Paths +msgctxt "#39040" +msgid "Replace Plex TV SHOWS with:" +msgstr "Nahradit Plex SERIÁLY:" + +# PKC Settings - Customize Paths +msgctxt "#39041" +msgid "Original Plex MUSIC path to replace:" +msgstr "Původní cesta k Plex HUDBĚ:" + +# PKC Settings - Customize Paths +msgctxt "#39042" +msgid "Replace Plex MUSIC with:" +msgstr "Nahradit Plex HUDBU:" + +# Pop-up on initial sync +msgctxt "#39043" +msgid "" +"Go a step further and completely replace all original Plex library paths " +"(/volume1/media) with custom SMB paths (smb://NAS/MyStuff)?" +msgstr "" +"Jít ještě o krok dále a kompletně nahradit původní cesty k Plex knihovnám " +"(/volume1/media) vlastními SMB cestami (smb://NAS/MyStuff)?" + +# Pop-up on initial sync +msgctxt "#39044" +msgid "" +"Please enter your custom smb paths in the settings under \"Sync Options\" " +"and then restart Kodi" +msgstr "" +"Prosím zadejte vlastní SMB cesty v nastavení pod \"Synchronizace\" a " +"restartujte Kodi" + +# PKC Settings - Customize Paths +msgctxt "#39045" +msgid "Original Plex PHOTO path to replace:" +msgstr "Původní cesta Plex FOTEK:" + +# PKC Settings - Customize Paths +msgctxt "#39046" +msgid "Replace Plex PHOTO with:" +msgstr "Nahradit Plex FOTKY:" + +# PKC Settings - Appearance Tweaks +msgctxt "#39047" +msgid "On Deck: Append show title to episode" +msgstr "Aktuální: Připojit název seriálu k epizodě" + +# PKC Settings - Appearance Tweaks +msgctxt "#39048" +msgid "On Deck: Append season- and episode-number SxxExx" +msgstr "Aktuální: Připojit číslo sezóny a epizody ve formátu SxxExx" + +# PKC Settings - Advanced +msgctxt "#39049" +msgid "Nothing works? Try a full reset!" +msgstr "Nic nefunguje? Zkuste plný reset!" + +# PKC Settings - Connection +msgctxt "#39050" +msgid "[COLOR yellow]Choose Plex Server from a list[/COLOR]" +msgstr "[COLOR yellow]Zvolte Plex server ze seznamu[/COLOR]" + +# PKC Settings - Sync +msgctxt "#39051" +msgid "Wait before sync new/changed PMS item [s]" +msgstr "Počkat před synchronizací položek (s)" + +# PKC Settings - Sync +msgctxt "#39052" +msgid "Background Sync" +msgstr "Synchronizace na pozadí" + +# PKC Settings - Sync +msgctxt "#39053" +msgid "Do a full library sync every x minutes" +msgstr "Plná synchronizace každých x minut" + +# Appended to a listed PMS if it is in the same LAN network as PKC +msgctxt "#39054" +msgid "remote" +msgstr "vzdálené" + +# Notification pop-up +msgctxt "#39055" +msgid "Searching for Plex Server" +msgstr "Vyhledávám Plex servery" + +# PKC Settings - Customize paths +msgctxt "#39056" +msgid "Used by Sync and when attempting to Direct Play" +msgstr "Použito při synchronizaci a při pokusu o přímé přehrávání" + +# PKC Settings, category name +msgctxt "#39057" +msgid "Customize Paths" +msgstr "Přizpůsobit cesty" + +# PKC Settings - Appearance Tweaks +msgctxt "#39058" +msgid "Extend Plex TV Series \"On Deck\" view to all shows" +msgstr "Rozšířit seriály na obrazovce \"Aktuální\" na všechny seriály" + +# PKC Settings - Appearance Tweaks +msgctxt "#39059" +msgid "Recently Added: Append show title to episode" +msgstr "Naposledy přidané: Připojit název seriálu k epizodě" + +# PKC Settings - Appearance Tweaks +msgctxt "#39060" +msgid "Recently Added: Append season- and episode-number SxxExx" +msgstr "Naposledy přidané: Připojit číslo sezóny a epizody ve formátu SxxExx" + +# Pop-up during initial sync +msgctxt "#39061" +msgid "" +"Would you like to download additional artwork from FanArtTV in the " +"background?" +msgstr "Chcete na pozadí stahovat další obrázky z FanArtTV?" + +# PKC Settings - Sync +msgctxt "#39062" +msgid "Sync when screensaver is deactivated" +msgstr "Synchronizovat při vypnutém šetřiči obrazovky" + +# PKC Settings - Playback +msgctxt "#39063" +msgid "Force Transcode Hi10P" +msgstr "Vynutit překódování Hi10P" + +# PKC Settings - Appearance Tweaks +msgctxt "#39064" +msgid "Recently Added: Also show already watched episodes" +msgstr "Naposledy přidané: Zobrazovat také shlédnuté epizody" + +# PKC Settings - Appearance Tweaks +msgctxt "#39065" +msgid "Force-refresh Kodi skin on stopping playback" +msgstr "Vynutit obnovení vzhledu Kodi po skončení přehrávání" + +# PKC Settings - Appearance Tweaks +msgctxt "#39066" +msgid "" +"Recently Added: Also show already watched movies (Refresh Plex " +"playlist/nodes!)" +msgstr "" +"Naposledy přidané: Zobrazovat také už shlédnuté filmy (Obnovte playlisty " +"Plexu!)" + +# PKC Settings - Connection +msgctxt "#39067" +msgid "Your current Plex Media Server:" +msgstr "Váš současný Plex Media Server:" + +# PKC Settings - Connection +msgctxt "#39068" +msgid "[COLOR yellow]Manually enter Plex Media Server address[/COLOR]" +msgstr "[COLOR yellow]Ručně zadat adresu Plex Media Serveru[/COLOR]" + +# PKC Settings - Connection +msgctxt "#39069" +msgid "Current address:" +msgstr "Současná adresa:" + +# PKC Settings - Connection +msgctxt "#39070" +msgid "Current port:" +msgstr "Současný port:" + +# PKC Settings - Connection +msgctxt "#39071" +msgid "Current plex.tv status:" +msgstr "Současný stav plex.tv:" + +# PKC Settings, category name +msgctxt "#39073" +msgid "Appearance Tweaks" +msgstr "Vzhled" + +# PKC Settings - Appearance Tweaks +msgctxt "#39074" +msgid "TV Shows" +msgstr "Seriály" + +# PKC Settings - Playback +msgctxt "#39075" +msgid "Always use default Plex subtitle if possible" +msgstr "Vždy použít výchozí titulky Plexu, pokud je to možné" + +# Pop-up during initial sync +msgctxt "#39076" +msgid "" +"If you use several Plex libraries of one kind, e.g. \"Kids Movies\" and " +"\"Parents Movies\", be sure to check the Wiki: https://goo.gl/JFtQV9" +msgstr "" +"Pokud máte několik knihoven jednoho druhu, např. \"Filmy pro děti\" a " +"\"Ostatní filmy\", přečtěte si prosím následující stráku na Wiki: " +"https://goo.gl/JFtQV9" + +# PKC Settings - Appearance Tweaks +msgctxt "#39077" +msgid "Number of PMS items to show in widgets (e.g. \"On Deck\")" +msgstr "Počet položek pro zobrazení ve widgetech (např. \"Aktuální\")" + +# PKC Settings - Plex +msgctxt "#39078" +msgid "Plex Companion Update Port (change only if needed)" +msgstr "Port aktualizace Plex Companion (změňte pouze pokud je nutné)" + +# Error message +msgctxt "#39079" +msgid "" +"Plex Companion could not open the GDM port. Please change it in the PKC " +"settings." +msgstr "" +"Plex Companion nemůže otevřít GDM port. Prosím změňte ho v nastavení PKC." + +msgctxt "#39200" +msgid "Log-out Plex Home User " +msgstr "Odhlásit uživatele Plex Home " + +msgctxt "#39201" +msgid "Settings" +msgstr "Nastavení" + +msgctxt "#39203" +msgid "Refresh Plex playlists/nodes" +msgstr "Obnovit playlisty Plexu" + +msgctxt "#39204" +msgid "Perform manual library sync" +msgstr "Provést ruční synchronizaci knihovny" + +# Error message +msgctxt "#39205" +msgid "Unable to run the sync, the add-on is not connected to a Plex server." +msgstr "Nemohu provést synchronizaci, doplněk není připojen k Plex serveru." + +msgctxt "#39206" +msgid "" +"Plex might lock your account if you fail to log in too many times. Proceed " +"anyway?" +msgstr "" +"Při mnoha neúspěšných pokusech o přihlášení vám Plex může zakázat účet. " +"Pokračovat?" + +msgctxt "#39207" +msgid "Resetting PMS connections, please wait" +msgstr "Resetuji připojení k PMS, prosím čekejte" + +msgctxt "#39208" +msgid "Failed to reset PKC. Try to restart Kodi." +msgstr "Nemohu resetovat PKC. Zkuste restartovat Kodi." + +# PKC Settings - Plex +msgctxt "#39209" +msgid "[COLOR yellow]Toggle plex.tv login (sign in or sign out)[/COLOR]" +msgstr "" +"[COLOR yellow]Přepnout přihlášení k plex.tv login (přihlásit nebo " +"odhlásit)[/COLOR]" + +msgctxt "#39210" +msgid "Not yet connected to Plex Server" +msgstr "Ještě není připojen Plex Server" + +msgctxt "#39211" +msgid "Watch later" +msgstr "Shlédnout později" + +# String attached at the end to get something like "PMS Name is offline" +msgctxt "#39213" +msgid "is offline" +msgstr "je offline" + +msgctxt "#39215" +msgid "Enter your Plex Media Server's IP or URL, Examples are:" +msgstr "Zadejte IP adresu nebo URL vašeho Plex Media Serveru. Např.:" + +msgctxt "#39217" +msgid "" +"Does your Plex Media Server support SSL connections? (https instead of " +"http)?" +msgstr "" +"Podporuje Váš Plex Media Server připojení přes SSL? (https místo http)?" + +msgctxt "#39218" +msgid "Error contacting PMS" +msgstr "Chyba při kontaktování PMS" + +msgctxt "#39219" +msgid "Abort (Yes) or save address anyway (No)?" +msgstr "Přerušit (Ano) nebo přesto uložit adresu (Ne)?" + +# String attached at the end to get something like "PMS Name is offline" +msgctxt "#39220" +msgid "connected" +msgstr "připojen" + +msgctxt "#39221" +msgid "plex.tv toggle successful" +msgstr "přepnutí plex.tv úspěšné" + +msgctxt "#39222" +msgid "[COLOR yellow]Look for missing fanart on FanartTV now[/COLOR]" +msgstr "[COLOR yellow]Teď vyhledat chybějící obrázky na FanartTV[/COLOR]" + +msgctxt "#39223" +msgid "" +"Only look for missing fanart or refresh all fanart? The scan will take quite" +" a while and happen in the background." +msgstr "" +"Pouze vyhledat chybějící obrázky, nebo obnovit všechny? Skenování bude " +"nějakou chvíli trvat a proběhne na pozadí." + +msgctxt "#39224" +msgid "Refresh all" +msgstr "Obnovit vše" + +msgctxt "#39225" +msgid "Missing only" +msgstr "Pouze chybějící" + +# Message in the PKC settings if user has not logged in to plex.tv +msgctxt "#39226" +msgid "Not logged in to plex.tv" +msgstr "Nepřihlášeno k plex.tv" + +# Message in the PKC settings if user is logged in to plex.tv +msgctxt "#39227" +msgid "Logged in to plex.tv" +msgstr "Přihlášeno k plex.tv" + +# Message in the PKC settings to display the plex.tv username. Leave the colon +# : +msgctxt "#39228" +msgid "Plex user:" +msgstr "Uživatel plexu:" + +msgctxt "#39250" +msgid "" +"Running the image cache process can take some time. It will happen in the " +"background. Are you sure you want continue?" +msgstr "" +"Spuštění ukládání obrázků do mezipaměti bude nějakou chvíli trvat a proběhne" +" na pozadí. Chcete pokračovat?" + +msgctxt "#39251" +msgid "Reset all existing cache data first?" +msgstr "Provést nejdříve reset existujících dat v mezipaměti?" + +msgctxt "#39303" +msgid "Problems trying to contact plex.tv. Try again later" +msgstr "Při kontaktování plex.tv se vyskytla chyba. Zkuste to prosím později" + +msgctxt "#39304" +msgid "Go to https://plex.tv/pin and enter the code: " +msgstr "Přejděte na adresu https://plex.tv/pin a zadejte kód: " + +msgctxt "#39305" +msgid "Could not sign in to plex.tv. Try again later" +msgstr "Nemohu se přihlásit na plex.tv. Zkuste to prosím později" + +msgctxt "#39306" +msgid ": Select User" +msgstr ": Vyberte uživatele" + +msgctxt "#39307" +msgid "Enter PIN for user " +msgstr "Zadejte pin pro uživatele " + +msgctxt "#39308" +msgid "Could not log in user " +msgstr "Nemohu přihlásit uživatele " + +msgctxt "#39309" +msgid "Please try again." +msgstr "Zkuste to prosím znovu." + +msgctxt "#39310" +msgid "unknown" +msgstr "neznámý" + +msgctxt "#39311" +msgid "or press No to not sign in." +msgstr "nebo zvolte Ne pro zrušení." + +msgctxt "#39400" +msgid "" +"Library sync thread has crashed. You should restart Kodi now. Please report " +"this on the forum" +msgstr "" +"Synchronizační vlákno knihovny spadlo. Měli byste nyní restartovat Kodi. " +"Prosím nahlašte tuto chybu do fóra" + +msgctxt "#39401" +msgid "" +"Detected Kodi database needs to be recreated for this version. This might " +"take a while. Proceed?" +msgstr "" +"Zjištěná databáze Kodi musí být v této verzi znovu vytvořena. Toto může " +"chvíli trvat. Pokračovat?" + +msgctxt "#39402" +msgid " may not work correctly until the database is reset." +msgstr " nemusí fungovat správně dokud neprovedete reset databáze." + +msgctxt "#39403" +msgid "" +"Cancelling the database syncing process. Current Kodi version is " +"unsupported. Please verify your logs for more info." +msgstr "" +"Ruším synchronizaci databáze. Tato verze Kodi není podporována. Pro více " +"informací se podívejte do záznamů." + +msgctxt "#39405" +msgid "Plex playlists/nodes refreshed" +msgstr "Plex playlisty obnoveny" + +msgctxt "#39406" +msgid "Plex playlists/nodes refresh failed" +msgstr "Nemohu obnovit Plex playlisty" + +msgctxt "#39407" +msgid "Full library sync finished" +msgstr "Plná synchronizace knihovny dokončena" + +msgctxt "#39408" +msgid "" +"Sync had to skip some items because they could not be processed. Kodi may be" +" instable now!! Please post your Kodi logs to the Plex forum." +msgstr "" +"Synchronizace musela přeskočit některé položky, protože nemohly být " +"zpracovány. Kodi teď může být nestabilní!! Prosím zveřejněte záznamy ve " +"fóru." + +msgctxt "#39409" +msgid "" +"The Plex Server did not like you asking for so much data at once and " +"returned ERRORS. Try lowering the number of sync download threads in the " +"settings. Skipped some items for now." +msgstr "" +"Plex Serveru se nelíbilo, že po něm chcete moc dat a vrátil CHYBY. Zkuste " +"snížit počet synchronizačních vláken v nastavení. Některé položky byly " +"přeskočeny." + +msgctxt "#39410" +msgid "ERROR in library sync" +msgstr "CHYBA při synchronizaci knihovny" + +msgctxt "#39500" +msgid "On Deck" +msgstr "Aktuální" + +msgctxt "#39501" +msgid "Collections" +msgstr "Kolekce" + +msgctxt "#39600" +msgid "" +"Are you sure you want to reset your local Kodi database? A re-sync of the " +"Plex data will take time afterwards." +msgstr "" +"Opravdu chcete resetovat místní databázi Kodi? Opětovná synchronizace dat z " +"Plexu si vyžádá čas později." + +msgctxt "#39601" +msgid "Could not stop the database from running. Please try again later." +msgstr "Nemohu zastavit běh databáze. Prosím zkuste to později." + +msgctxt "#39603" +msgid "" +"Reset all PlexKodiConnect Addon settings? (this is usually NOT recommended " +"and unnecessary!)" +msgstr "" +"Obnovit všechna nastavení doplňku PlexKodiConnect? (to obvykle není vhodné a" +" je to zbytečné!)" + +msgctxt "#39700" +msgid "Amazon Alexa (Voice Recognition)" +msgstr "Amazon Alexa (rozpoznávání hlasu)" + +msgctxt "#39701" +msgid "Activate Alexa" +msgstr "Aktivovat Alexu" + +msgctxt "#39702" +msgid "Browse by folder" +msgstr "Procházet podle složky" + +# For use with addon.xml (PKC metadata for Kodi, e.g. description) +# Addon Summary +msgctxt "#39703" +msgid "Native Integration of Plex into Kodi" +msgstr "Úplná integrace Plexu do Kodi" + +# For use with addon.xml (PKC metadata for Kodi, e.g. description) +# Addon Description +msgctxt "#39704" +msgid "" +"Connect Kodi to your Plex Media Server. This plugin assumes that you manage " +"all your videos with Plex (and none with Kodi). You might lose data already " +"stored in the Kodi video and music databases (as this plugin directly " +"changes them). Use at your own risk!" +msgstr "" +"Připojte Kodi ke svému Plex Media Serveru. Tento doplněk předpokládá, že " +"spravujete veškerá svá videa pomocí Plexu (nikoliv pomocí Kodi). Můžete " +"přijít o data uložená ve video a hudební databázi Kodi (tento doplněk je " +"přímo mění). Používejte na vlastní nebezpečí!" + +# For use with addon.xml (PKC metadata for Kodi, e.g. description) +# Addon Disclaimer +msgctxt "#39705" +msgid "Use at your own risk" +msgstr "Používejte na vlastní nebezpečí" + +# If user gets prompted to choose between several subtitles. Leave the number +# one at the beginning of the string! +msgctxt "#39706" +msgid "1 No subtitles" +msgstr "1 Žádné titulky" + +# If user gets prompted to choose between several audio/subtitle tracks and +# language is unknown +msgctxt "#39707" +msgid "unknown" +msgstr "neznámé" + +# If user gets prompted to choose between several subtitles and Plex adds the +# "default" flag +msgctxt "#39708" +msgid "Default" +msgstr "Výchozí" + +# If user gets prompted to choose between several subtitles and Plex adds the +# "forced" flag +msgctxt "#39709" +msgid "Forced" +msgstr "Vynucené" + +# If user gets prompted to choose between several subtitles the subtitle +# cannot be downloaded (has no 'key' attribute from the PMS), the subtitle +# needs to be burned in +msgctxt "#39710" +msgid "burn-in" +msgstr "Vpálit" + +# Dialog text if PKC detected a new Music library and Kodi needs to be +# restarted +msgctxt "#39711" +msgid "" +"New Plex music library detected. Sorry, but we need to restart Kodi now due " +"to the changes made." +msgstr "" +"Byla zjištěna nová hudební knihovna Plexu. Omlouváme se, ale pro provedení " +"změn budeme muset restartovat Kodi." + +# Shown during sync process +msgctxt "#39712" +msgid "downloaded" +msgstr "staženo" + +# Shown during sync process +msgctxt "#39713" +msgid "processed" +msgstr "zpracováno" + +# Shown during sync process +msgctxt "#39714" +msgid "Sync" +msgstr "Synchronizuji" + +# Shown during sync process +msgctxt "#39715" +msgid "items" +msgstr "položek" + +# Error message if an xml, e.g. advancedsettings.xml cannot be parsed (xml is +# screwed up; formated the wrong way). Do NOT replace {0} and {1}! +msgctxt "#39716" +msgid "" +"Kodi cannot parse {0}. PKC will not function correctly. Please visit {1} and" +" correct your file!" +msgstr "" +"Kodi nemůže zpracovat {0}. PKC nebude fungovat správně. Navštivte prosím {1}" +" a opravte si soubor!" + +# Shown once on first installation to comply with the terms of use of +# themoviedb.org +msgctxt "#39717" +msgid "PKC uses free additional artwork from www.themoviedb.org. Many thanks!" +msgstr "" +"PKC používá dodatečné obrázky z www.themoviedb.org. Děkujeme mnohokrát!" + +# Shown during very first PKC setup only +msgctxt "#39718" +msgid "" +"Do you want to replace your custom user ratings with an indicator of how " +"many versions of a media item you posses?" +msgstr "" +"Chcete nahradit uživatelské hodnocení indikátorem počtu verzí médií které " +"jsou k dispozici?" + +# In PKC Settings under Sync +msgctxt "#39719" +msgid "Replace user ratings with number of media versions" +msgstr "Nahradit uživatelské hodnocení počtem verzí média" diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 9c95570c..955b46d9 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -15,7 +15,6 @@ msgstr "" # Add-on settings - msgctxt "#29999" msgid "PlexKodiConnect" msgstr "" diff --git a/resources/language/resource.language.ru_RU/strings.po.orig b/resources/language/resource.language.ru_RU/strings.po.orig new file mode 100644 index 00000000..cc7b1e94 --- /dev/null +++ b/resources/language/resource.language.ru_RU/strings.po.orig @@ -0,0 +1,1498 @@ +# XBMC Media Center language file +# Translators: +# Croneter None , 2017 +# Vladimir Supranenok , 2017 +# Павел Хоменко, 2017 +# Алексей Коробцов , 2017 +# Alex Freit , 2017 +msgid "" +msgstr "" +"Project-Id-Version: PlexKodiConnect\n" +"Report-Msgid-Bugs-To: croneter@gmail.com\n" +"POT-Creation-Date: 2017-04-15 13:13+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Alex Freit , 2017\n" +"Language-Team: Russian (Russia) (https://www.transifex.com/croneter/teams/73837/ru_RU/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru_RU\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n" + +# Add-on settings +msgctxt "#29999" +msgid "PlexKodiConnect" +msgstr "PlexKodiConnect" + +msgctxt "#30000" +msgid "Server Address (IP)" +msgstr "Адрес сервера (IP)" + +msgctxt "#30001" +msgid "Searching for PMS" +msgstr "Поиск PMS" + +msgctxt "#30002" +msgid "Preferred playback method" +msgstr "Предпочтительное воспроизведение" + +# Warning displayed if Kodi setting is enabled. Be sure to escape the quotes +# again! The exact wording can be found in the Kodi settings, player settings, +# videos +msgctxt "#30003" +msgid "" +"Warning: Kodi setting \"Play next video automatically\" is enabled. This " +"could break PKC. Deactivate?" +msgstr "" +"Предупреждение: включена настройка Kodi «Воспроизвести следующее видео " +"автоматически». Это может сломать PKC. Деактивировать?" + +msgctxt "#30005" +msgid "Username: " +msgstr "Имя пользователя: " + +# Sync notification displayed if there is still artwork to be cached to Kodi +msgctxt "#30006" +msgid "Caching %s Plex images" +<<<<<<< HEAD +msgstr "Кэширование %s изображений Plex" +======= +msgstr "" +>>>>>>> hotfixes + +# Sync notification displayed if syncing of major artwork is done +msgctxt "#30007" +msgid "Plex image caching done" +<<<<<<< HEAD +msgstr "Кэширование изображений Plex завершено" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC settings artwork: Enable notifications for artwork image sync +msgctxt "#30008" +msgid "Enable notifications for image caching" +msgstr "Включить уведомления для кэширования изображений" + +# PKC settings artwork: Enable image caching during Kodi playback +msgctxt "#30009" +msgid "Enable image caching during Kodi playback (restart Kodi!)" +msgstr "" +"Включить кэширование изображений во время воспроизведения Kodi " +"(перезапустите Kodi!)" + +# PKC settings - Artwork +msgctxt "#30010" +msgid "Approximate progress" +msgstr "Приблизительный прогресс" + +# PKC settings - Artwork +msgctxt "#30011" +msgid "Plex artwork (posters and backgrounds) left to cache:" +msgstr "Plex изображения (плакаты и фоны) остались в кэше:" + +# PKC settings - Artwork +msgctxt "#30010" +msgid "Approximate progress" +msgstr "" + +# PKC settings - Artwork +msgctxt "#30011" +msgid "Plex artwork (posters and backgrounds) left to cache:" +msgstr "" + +# Button text +msgctxt "#30012" +msgid "OK" +msgstr "Ок" + +msgctxt "#30013" +msgid "Never show" +msgstr "Никогда не показывать " + +# PKC settings category +msgctxt "#30014" +msgid "Connection" +msgstr "Подключение" + +# PKC settings - Artwork +msgctxt "#30015" +msgid "Movie and show FanartTV lookups left to do:" +msgstr "" + +msgctxt "#30016" +msgid "Device Name" +msgstr "Имя устройства" + +# Error message +msgctxt "#30017" +msgid "Unauthorized for PMS" +msgstr "Не авторизован на сервере Plex" + +# Sync notification displayed for the number of fanart.tv lookups left +msgctxt "#30018" +msgid "Checking FanartTV for %s items" +<<<<<<< HEAD +msgstr "FanartTV осталось проверить %s" +======= +msgstr "" +>>>>>>> hotfixes + +# Sync notification displayed when FanartTV lookup is completed +msgctxt "#30019" +msgid "FanartTV lookup completed" +<<<<<<< HEAD +msgstr "Поиск FanartTV завершен" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC settings category +msgctxt "#30022" +msgid "Advanced" +msgstr "Расширенные" + +msgctxt "#30024" +msgid "Username" +msgstr "Имя пользователя" + +msgctxt "#30025" +msgid "Display message if PMS goes offline" +msgstr "Сообщать об отключении от сервера Plex " + +msgctxt "#30030" +msgid "Port Number" +msgstr "Порт" + +msgctxt "#30031" +msgid "I own this Plex Media Server" +msgstr "Я владелец этого сервера Plex" + +# Kodi context menu entry for movie and episode information screen +msgctxt "#30032" +msgid "Information" +msgstr "Информация" + +msgctxt "#30042" +msgid "Refresh" +msgstr "Обновить" + +msgctxt "#30043" +msgid "Delete" +msgstr "Удалить" + +# Notification displayed if there is a LOT to be deleted +msgctxt "#30052" +msgid "Deleting" +msgstr "Удаление" + +msgctxt "#30069" +msgid "None" +msgstr "Ничего" + +msgctxt "#30093" +msgid "Mark Watched" +msgstr "Отметить как просмотренное" + +msgctxt "#30094" +msgid "Mark Unwatched" +msgstr "Отметить как непросмотренное" + +msgctxt "#30095" +msgid "Add to Favorites" +msgstr "Добавить в Избранное" + +msgctxt "#30096" +msgid "Remove from Favorites" +msgstr "Удалить из Избранного" + +msgctxt "#30114" +msgid "Offer delete after playback" +msgstr "Предлагать удалить после просмотра" + +msgctxt "#30115" +msgid "For Episodes" +msgstr "Для серий" + +msgctxt "#30116" +msgid "For Movies" +msgstr "Для фильмов" + +msgctxt "#30125" +msgid "Done" +msgstr "Готово" + +# Error popup message text +msgctxt "#30128" +msgid "Play Error" +msgstr "Ошибка воспроизведения" + +msgctxt "#30132" +msgid "Warning" +msgstr "Предупреждение" + +msgctxt "#30135" +msgid "Error" +msgstr "Ошибка" + +msgctxt "#30138" +msgid "Search" +msgstr "Поиск" + +msgctxt "#30139" +msgid "Enable Theme Music (Requires Restart)" +msgstr "Включить музыкальную тему (требуется перезагрузка)" + +msgctxt "#30143" +msgid "Always transcode if video bitrate is above" +msgstr "Транскодировать, если битрейт видео больше" + +msgctxt "#30157" +msgid "Enable Enhanced Images (eg CoverArt)" +msgstr "Включить улучшенные изображения (например CoverArt)" + +msgctxt "#30158" +msgid "Metadata" +msgstr "Метаданные" + +msgctxt "#30160" +msgid "Video Quality if Transcoding necessary" +msgstr "Качество при транскодинге" + +msgctxt "#30165" +msgid "Direct Play" +msgstr "Прямое воспроизведение" + +msgctxt "#30166" +msgid "Transcoding" +msgstr "Транскодирование" + +msgctxt "#30170" +msgid "Recently Added TV Shows" +msgstr "Недавно добавленные Сериалы" + +msgctxt "#30171" +msgid "In Progress TV Shows" +msgstr "Просматриваемые Сериалы" + +msgctxt "#30173" +msgid "Channels" +msgstr "Каналы" + +msgctxt "#30174" +msgid "Recently Added" +msgstr "Недавно добавленные" + +msgctxt "#30177" +msgid "In Progress Movies" +msgstr "Просматриваемые Фильмы" + +msgctxt "#30178" +msgid "In Progress Episodes" +msgstr "Просматриваемые Эпизоды" + +msgctxt "#30179" +msgid "Next Episodes" +msgstr "Следующий Эпизод" + +msgctxt "#30180" +msgid "Favorite Movies" +msgstr "Избранные Фильмы" + +msgctxt "#30181" +msgid "Favorite Shows" +msgstr "Избранные Сериалы" + +msgctxt "#30182" +msgid "Favorite Episodes" +msgstr "Избранные Эпизоды" + +msgctxt "#30189" +msgid "Unwatched Movies" +msgstr "Непросмотренные Фильмы" + +msgctxt "#30198" +msgid "Search" +msgstr "Поиск" + +# Video node naming for random e.g. movies +msgctxt "#30227" +msgid "Random" +msgstr "Случайно" + +# Video node naming for e.g. movies +msgctxt "#30230" +msgid "Recommended" +msgstr "Рекомендуемые" + +msgctxt "#30235" +msgid "Extras" +msgstr "Дополнительно" + +msgctxt "#30243" +msgid "Enable HTTPS" +msgstr "Включить HTTPS" + +msgctxt "#30251" +msgid "Recently added Home Videos" +msgstr "Недавно добавленное Домашнее видео" + +msgctxt "#30252" +msgid "Recently added Photos" +msgstr "Недавно добавленные Фотографии" + +msgctxt "#30253" +msgid "Favorite Home Videos" +msgstr "Избранное Домашнее видео" + +msgctxt "#30254" +msgid "Favorite Photos" +msgstr "Избранные фотографии" + +msgctxt "#30255" +msgid "Favorite Albums" +msgstr "Избранные Альбомы" + +msgctxt "#30256" +msgid "Recently added Music videos" +msgstr "Недавно добавленные Видеоклипы" + +msgctxt "#30257" +msgid "In progress Music videos" +msgstr "Просматриваемые Видеоклипы" + +msgctxt "#30258" +msgid "Unwatched Music videos" +msgstr "Непросмотренные Видеоклипы" + +# PKC settings sub category under appearance tweaks +msgctxt "#30302" +msgid "Movies" +msgstr "Фильмы" + +# contextmenu entry +msgctxt "#30401" +msgid "Plex options" +msgstr "Параметры Plex" + +# contextmenu entry +msgctxt "#30405" +msgid "Add to Plex favorites" +msgstr "Добавить в избранное" + +# contextmenu entry +msgctxt "#30406" +msgid "Remove from Plex favorites" +msgstr "Удалить из избранного" + +# contextmenu entry +msgctxt "#30407" +msgid "Set custom song rating" +msgstr "Задать свой рейтинг песни" + +# contextmenu entry +msgctxt "#30408" +msgid "Plex addon settings" +msgstr "Настройки аддонов Plex" + +# contextmenu entry +msgctxt "#30409" +msgid "Delete item from server" +msgstr "Удалить элемент с сервера" + +# contextmenu entry +msgctxt "#30410" +msgid "Refresh this item" +msgstr "Обновить этот элемент" + +# contextmenu entry +msgctxt "#30412" +msgid "Force transcode" +msgstr "Принудительное транскодирование" + +# Error dialog text +msgctxt "#30414" +msgid "" +"Could not delete the Plex item. Is item deletion enabled on the Plex Media " +"Server?" +msgstr "Не возможно удалить элемент. На сервере Plex разрешено удаление?" + +# contextmenu entry +msgctxt "#30415" +msgid "Start playback via PMS" +msgstr "Начать воспроизведение через Plex" + +msgctxt "#30416" +msgid "Settings for the Plex Server" +msgstr "Настройки для сервера Plex" + +# PKC Settings - Connection +msgctxt "#30500" +msgid "Verify Host SSL Certificate (more secure)" +msgstr "Проверять SSL сертификат хоста (более безопасно)" + +# PKC Settings - Connection +msgctxt "#30501" +msgid "Client SSL certificate" +msgstr "SSL сертификат клиента" + +# PKC Settings - Connection +msgctxt "#30505" +msgid "[COLOR yellow]Reset login attempts[/COLOR]" +msgstr "[COLOR yellow]Сбросить попытки входа[/COLOR]" + +# PKC Settings, category name +msgctxt "#30506" +msgid "Sync Options" +msgstr "Синхронизация" + +# PKC Settings - Sync Options +msgctxt "#30507" +msgid "Show syncing progress" +msgstr "Отображать прогресс синхронизации" + +# PKC Settings - Sync Options +msgctxt "#30508" +msgid "Sync empty TV Shows" +msgstr "Синхронизировать пустые Сериалы" + +# PKC Settings - Sync Options +msgctxt "#30509" +msgid "Enable Music Library" +msgstr "Включить музыкальную библиотеку" + +msgctxt "#30510" +msgid "Direct stream music library" +msgstr "Прямое воспроизведение музыки из библиотеки" + +# PKC Settings - Sync Options +msgctxt "#30511" +msgid "Playback Mode" +msgstr "Режим воспроизведения" + +# PKC Settings - Artwork +msgctxt "#30512" +msgid "Cache all artwork for a smooth Kodi experience" +<<<<<<< HEAD +msgstr "Кэш всех изображений для плавной работы Kodi" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC Settings - Artwork +msgctxt "#30513" +msgid "Limit artwork cache threads (recommended for rpi)" +msgstr "" +"Ограничить потоки кешированиa иллюстраций (рекомендуется для Raspberry)" + +# PKC Settings - Sync Options +msgctxt "#30515" +msgid "Maximum items to request from the server at once" +msgstr "Число элементов запрашиваемых с сервера за раз" + +# PKC Settings, category name +msgctxt "#30516" +msgid "Playback" +msgstr "Воспроизведение" + +# PKC Settings - Connection +msgctxt "#30517" +msgid "[COLOR yellow]Enter network credentials[/COLOR]" +msgstr "[COLOR yellow]Введите сетевые учетные данные[/COLOR]" + +# PKC Settings - Playback +msgctxt "#30518" +msgid "Enable Plex Trailers (Plexpass is needed)" +msgstr "Включить Plex Trailers (требуется Plexpass)" + +# PKC Settings - Playback +msgctxt "#30519" +msgid "Ask to play trailers" +msgstr "Предложить воспроизвести трейлер" + +# PKC Settings - Plex +msgctxt "#30520" +msgid "Skip PMS delete confirmation (use at your own risk)" +msgstr "" +"Пропустить подтверждение удаления в PMS (использовать на свой страх и риск)" + +# PKC Settings - Playback +msgctxt "#30521" +msgid "Jump back on resume (in seconds)" +msgstr "Вернуться назад при возобновлении (в секундах)" + +# PKC Settings - Playback +msgctxt "#30522" +msgid "Force transcode h265/HEVC" +msgstr "Транскодировать h265/HEVC" + +# PKC Settings - Playback +msgctxt "#30527" +msgid "Ignore specials in next episodes" +msgstr "Игнорировать бонусные в следующих сериях" + +msgctxt "#30528" +msgid "Permanent users to add to the session" +msgstr "Добавить пользователя в сессию навсегда" + +# PKC Settings - Advanced +msgctxt "#30529" +msgid "Startup delay (in seconds)" +msgstr "Задержка запуска (в секундах)" + +msgctxt "#30531" +msgid "Enable new content notification" +msgstr "Включить уведомление о новом контенте" + +msgctxt "#30532" +msgid "Duration of the video library pop up (in seconds)" +msgstr "Длительность всплывающего окна в библиотеке видео (в секундах)" + +msgctxt "#30533" +msgid "Duration of the music library pop up (in seconds)" +msgstr "Длительность всплывающего окна в библиотеке музыки (в секундах)" + +msgctxt "#30534" +msgid "Server messages" +msgstr "Сообщения сервера" + +# PKC Settings - Advanced +msgctxt "#30535" +msgid "Generate a new unique Plex device Id (e.g. to clone Kodi)" +msgstr "" +<<<<<<< HEAD +"Генерировать новый ID устройства Plex (например, при клонировании Kodi)" +======= +>>>>>>> hotfixes + +# PKC Settings - Connection +msgctxt "#30536" +msgid "Users must log in every time Kodi restarts" +msgstr "Пользователь должен входить при каждом запуске Kodi" + +# PKC Settings warning +msgctxt "#30537" +msgid "RESTART KODI IF YOU MAKE ANY CHANGES" +msgstr "ПЕРЕЗАПУСТИТЕ KODI, ЕСЛИ ВНОСИЛИ КАКИЕ-ТО ИЗМЕНЕНИЯ" + +# PKC Settings warning +msgctxt "#30538" +msgid "Manual complete reset of Kodi database necessary, see \"Advanced\"" +msgstr "" +<<<<<<< HEAD +"Необходим ручной полный сброс базы данных Kodi, см. Раздел \"Дополнительно\"" +======= +>>>>>>> hotfixes + +# PKC Settings - Artwork +msgctxt "#30539" +msgid "Download additional art from FanArtTV" +msgstr "Загрузить дополнительные иллюстрации с FanArtTV" + +# PKC Settings - Artwork +msgctxt "#30540" +msgid "Download movie set/collection art from FanArtTV" +msgstr "Загружать иллюстрации сборников с FanArtTV" + +# PKC Settings - Playback +msgctxt "#30541" +msgid "Don't ask to pick a certain stream/quality" +msgstr "Не просить выбрать качество потока" + +# PKC Settings - Playback +msgctxt "#30542" +msgid "Always pick best quality for trailers" +msgstr "Всегда выбирать лучшее качество для трейлеров" + +msgctxt "#30544" +msgid "Artwork" +msgstr "Иллюстрации" + +# PKC Settings - Playback +msgctxt "#30545" +msgid "Force transcode pictures" +msgstr "Принудительно транскодировать изображения" + +# Welcome to Plex notification +msgctxt "#33000" +msgid "Welcome" +msgstr "Добро пожаловать" + +# Error message +msgctxt "#33001" +msgid "Error connecting" +msgstr "Ошибка соединения" + +# Error message +msgctxt "#33002" +msgid "Server is unreachable" +msgstr "Сервер недоступен" + +# Plex notification +msgctxt "#33003" +msgid "Server is online" +msgstr "Сервер в сети" + +# Error notification +msgctxt "#33009" +msgid "Invalid username or password" +msgstr "Неверное имя пользователя или пароль" + +msgctxt "#33010" +msgid "Failed to authenticate too many times. Reset in the settings." +msgstr "Множественная ошибка авторизации. Сбросьте настройки." + +# Dialog before playback +msgctxt "#33013" +msgid "Choose the audio stream" +msgstr "Выберите звуковую дорожку" + +# Dialog before playback +msgctxt "#33014" +msgid "Choose the subtitles stream" +msgstr "Выберите субтитры" + +# Dialog before playback +msgctxt "#33016" +msgid "Play trailers?" +msgstr "Воспроизвести трейлер?" + +# Error message +msgctxt "#33032" +msgid "" +"Failed to generate a new device Id. See your logs for more information." +msgstr "" +"Генерация нового ID устройства неудачна. Смотрите логи для подробностей." + +# Pop-up informing about Kodi restart +msgctxt "#33033" +msgid "Kodi will now restart to apply the changes." +msgstr "Kodi будет перезапущен для применения изменений." + +# Confirmation dialog before item gets deleted from the PMS +msgctxt "#33041" +msgid "" +"Delete file(s) from Plex Server? This will also delete the file(s) from " +"disk!" +msgstr "Удалить файл(ы) с сервера Plex? Это также удалит их с диска!" + +# PKC Settings - Playback +msgctxt "#39000" +msgid "- Number of trailers to play before a movie" +msgstr "- Количество трейлеров, проигрываемых перед фильмом." + +# PKC Settings - Playback +msgctxt "#39001" +msgid "Boost audio when transcoding" +msgstr "Усиливать звук при транскодировании" + +# PKC Settings - Playback +msgctxt "#39002" +msgid "Burnt-in subtitle size" +msgstr "Размер субтитров внедряемых в видео" + +# PKC Settings - Sync +msgctxt "#39003" +msgid "Number of simultaneous download threads" +<<<<<<< HEAD +msgstr "Количество одновременных тем для загрузки" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC Settings - Plex +msgctxt "#39004" +msgid "Enable Plex Companion (restart Kodi!)" +msgstr "Включить Plex Companion (перезапустите Kodi!)" + +# PKC Settings - Plex +msgctxt "#39005" +msgid "Plex Companion Port (change only if needed)" +msgstr "Порт Plex Companion (меняйте только если необходимо)" + +# PKC Settings - Plex +msgctxt "#39008" +msgid "Plex Companion: Allows flinging media to Kodi through Plex" +msgstr "Plex Companion: позволяет отправлять медиа в Kodi через Plex" + +# Error message +msgctxt "#39009" +msgid "Could not login to plex.tv. Please try signing in again." +msgstr "Не удалось войти в plex.tv. Пожалуйста попробуйте ещё раз" + +# Error message +msgctxt "#39010" +msgid "Problems connecting to plex.tv. Network or internet issue?" +msgstr "Невозможно подключиться к plex.tv. Проблемы с интернетом?" + +# Error message +msgctxt "#39011" +msgid "Could not find any Plex server in the network. Aborting..." +msgstr "Не найдено ни одного сервера Plex в сети. Отмена..." + +# Dialog text for choosing PMS +msgctxt "#39012" +msgid "Choose your Plex server" +msgstr "Выберите Ваш сервер Plex" + +# Error message +msgctxt "#39013" +msgid "Not yet authorized for Plex server " +msgstr "Не авторизован на сервере Plex" + +# Error message +msgctxt "#39014" +msgid "Please sign in to plex.tv." +msgstr "Пожалуйста войдите в plex.tv." + +# Error message +msgctxt "#39015" +msgid "Problems connecting to server. Pick another server?" +msgstr "Проблемы при подключении к серверу. Выбрать другой?" + +# Pop-up on initial sync +msgctxt "#39016" +msgid "" +"Disable Plex music library? (It is HIGHLY recommended to use Plex music only" +" with direct paths for large music libraries. Kodi might crash otherwise)" +msgstr "" +"Отключить библиотеку музыки в Plex? (это ЧРЕЗВЫЧАЙНО рекомендуемо при " +"использовании прямых путей и большой библиотеке музыки. Kodi может " +"крашиться)" + +# Pop-up on initial sync +msgctxt "#39017" +msgid "" +"Would you now like to go to the plugin's settings to fine-tune PKC? You will" +" need to RESTART Kodi!" +msgstr "" +"Хотите войти в настройки чтобы донастроить PKC? Вам нужно будет " +"ПЕРЕЗАПУСТИТЬ Kodi!" + +# PKC Settings - Advanced +msgctxt "#39018" +msgid "Repair the Kodi database (force update all content)" +msgstr "" +<<<<<<< HEAD +"Восстановление базы данных Kodi (принудительное обновление всего " +"содержимого)" +======= +>>>>>>> hotfixes + +# PKC Settings - Advanced +msgctxt "#39019" +msgid "Reset the Kodi database and optionally reset PlexKodiConnect" +<<<<<<< HEAD +msgstr "Сброс базы данных Kodi и возможная перезагрузка PlexKodiConnect" +======= +msgstr "" +>>>>>>> hotfixes + +# PKC Settings - Artwork +msgctxt "#39020" +msgid "[COLOR yellow]Cache all images to Kodi texture cache now[/COLOR]" +msgstr "" +"[COLOR yellow]Кешировать все изображения сейчас в Kodi texture cache[/COLOR]" + +# Appended to a listed PMS if it is in the same LAN network as PKC +msgctxt "#39022" +msgid "local" +msgstr "local" + +# Error message +msgctxt "#39023" +msgid "Failed to authenticate. Did you login to plex.tv?" +msgstr "Ошибка авторизации. Вы вошли в plex.tv?" + +# PKC Settings - Plex +msgctxt "#39025" +msgid "Automatically log into plex.tv on startup" +msgstr "Автоматический вход в plex.tv при запуске" + +# PKC Settings - Sync +msgctxt "#39026" +msgid "Enable constant background sync" +msgstr "Включить фоновую синхронизацию" + +# Pop-up on initial sync +msgctxt "#39028" +msgid "" +"CAUTION! If you choose \"Native\" mode , you might loose access to certain " +"Plex features such as: Plex trailers and transcoding options. ALL Plex " +"shares need to use direct paths (e.g. smb://myNAS/mymovie.mkv or " +"\\\\myNAS/mymovie.mkv)!" +msgstr "" +"ВНИМАНИЕ! Если выберете режим \"Native\" вы потеряете доступ к некоторым " +"функциям Plex, таким как: трейлеры и опции транскодирования. ВСЕ библиотеки " +"Plex должны иметь прямые пути (например smb://myNAS/mymovie.mkv либо " +"\\\\myNAS/mymovie.mkv)!" + +# Pop-up on initial sync +msgctxt "#39029" +msgid "Network credentials" +msgstr "Сетевые учетные данные" + +# Pop-up on initial sync +msgctxt "#39030" +msgid "" +"Add network credentials to allow Kodi access to your content? Note: Skipping" +" this step may generate a message during the initial scan of your content if" +" Kodi can't locate your content." +msgstr "" +"Добавить сетевые учетные данные, чтобы дать доступ Kodi к вашему контенту? " +"Если пропустить этот шаг могут появляться сообщения при первичном " +"сканировании контента, если Kodi не сможет его найти" + +# Error message displayed when verifying Direct Path sync paths passed by Plex +msgctxt "#39031" +msgid "" +"Kodi cannot locate the file %s. Please verify your PKC settings. Stop " +"syncing?" +msgstr "" +"Kodi не может найти файл%s. Проверьте свои настройки PKC. Остановить " +"синхронизацию?" + +# Pop-up on initial sync +msgctxt "#39033" +msgid "" +"Transform Plex UNC library paths \\\\myNas\\mymovie.mkv automatically to smb" +" paths, smb://myNas/mymovie.mkv? (recommended)" +msgstr "" +"Изменить UNC пути библиотек Plex \\\\myNas\\mymovie.mkv автоматически в " +"Samba пути: smb://myNas/mymovie.mkv? (рекомендуется)" + +# PKC Settings - Customize Paths +msgctxt "#39034" +msgid "Replace Plex UNC paths \\\\myNas with smb://myNas" +msgstr "Заменить UNC пути Plex \\\\myNas на smb://myNas" + +# PKC Settings - Customize Paths +msgctxt "#39035" +msgid "" +"Replace Plex paths /volume1/media or \\\\myserver\\media with custom SMB " +"paths smb://NAS/mystuff" +msgstr "" +"Заменить пути Plex /volume1/media либо \\\\myserver\\media на " +"пользовательские Samba пути smb://NAS/mystuff" + +# PKC Settings - Customize Paths +msgctxt "#39037" +msgid "Original Plex MOVIE path to replace:" +msgstr "Исходный путь ФИЛЬМОВ Plex для замены:" + +# PKC Settings - Customize Paths +msgctxt "#39038" +msgid "Replace Plex MOVIE with:" +msgstr "Заменить путь ФИЛЬМОВ Plex на:" + +# PKC Settings - Customize Paths +msgctxt "#39039" +msgid "Original Plex TV SHOWS path to replace:" +msgstr "Исходный путь СЕРИАЛОВ Plex для замены:" + +# PKC Settings - Customize Paths +msgctxt "#39040" +msgid "Replace Plex TV SHOWS with:" +msgstr "Заменить путь СЕРИАЛОВ Plex на:" + +# PKC Settings - Customize Paths +msgctxt "#39041" +msgid "Original Plex MUSIC path to replace:" +msgstr "Исходный путь МУЗЫКИ Plex для замены:" + +# PKC Settings - Customize Paths +msgctxt "#39042" +msgid "Replace Plex MUSIC with:" +msgstr "Заменить путь МУЗЫКИ Plex на:" + +# Pop-up on initial sync +msgctxt "#39043" +msgid "" +"Go a step further and completely replace all original Plex library paths " +"(/volume1/media) with custom SMB paths (smb://NAS/MyStuff)?" +msgstr "" +"Выполнить ещё один шаг и полностью заменить все оригинальные пути библиотек " +"Plex (/volume1/media) на свои Samba пути (smb://NAS/MyStuff)?" + +# Pop-up on initial sync +msgctxt "#39044" +msgid "" +"Please enter your custom smb paths in the settings under \"Sync Options\" " +"and then restart Kodi" +msgstr "" +"Пожалуйста введите свои Samba пути в настройках \"Параметры синхронизации\" " +"и перезапустите Kodi" + +# PKC Settings - Customize Paths +msgctxt "#39045" +msgid "Original Plex PHOTO path to replace:" +msgstr "Исходный путь ФОТОГРАФИЙ Plex для замены:" + +# PKC Settings - Customize Paths +msgctxt "#39046" +msgid "Replace Plex PHOTO with:" +msgstr "Заменить путь ФОТОГРАФИЙ Plex на:" + +# PKC Settings - Appearance Tweaks +msgctxt "#39047" +msgid "On Deck: Append show title to episode" +msgstr "Текущие: Показывать название эпизода" + +# PKC Settings - Appearance Tweaks +msgctxt "#39048" +msgid "On Deck: Append season- and episode-number SxxExx" +msgstr "Текущие: Показывать номер сезона и эпизода как SxxExx" + +# PKC Settings - Advanced +msgctxt "#39049" +msgid "Nothing works? Try a full reset!" +msgstr "Ничего не работает? Попробуйте общий сброс!" + +# PKC Settings - Connection +msgctxt "#39050" +msgid "[COLOR yellow]Choose Plex Server from a list[/COLOR]" +msgstr "[COLOR yellow]Выберите сервер Plex из списка[/COLOR]" + +# PKC Settings - Sync +msgctxt "#39051" +msgid "Wait before sync new/changed PMS item [s]" +msgstr "Ожидание новый/измененный элемент [с]" + +# PKC Settings - Sync +msgctxt "#39052" +msgid "Background Sync" +msgstr "Фоновая синхронизация" + +# PKC Settings - Sync +msgctxt "#39053" +msgid "Do a full library sync every x minutes" +msgstr "Полная синхронизация библиотеки каждые x минут" + +# Appended to a listed PMS if it is in the same LAN network as PKC +msgctxt "#39054" +msgid "remote" +msgstr "remote" + +# Notification pop-up +msgctxt "#39055" +msgid "Searching for Plex Server" +msgstr "Поиск сервера Plex" + +# PKC Settings - Customize paths +msgctxt "#39056" +msgid "Used by Sync and when attempting to Direct Play" +msgstr "Используется при синхронизации и прямом воспроизведении" + +# PKC Settings, category name +msgctxt "#39057" +msgid "Customize Paths" +msgstr "Изменить пути" + +# PKC Settings - Appearance Tweaks +msgctxt "#39058" +msgid "Extend Plex TV Series \"On Deck\" view to all shows" +msgstr "В \"Текущем\" показывать все сериалы" + +# PKC Settings - Appearance Tweaks +msgctxt "#39059" +msgid "Recently Added: Append show title to episode" +msgstr "Недавно добавлено: Показывать название эпизода" + +# PKC Settings - Appearance Tweaks +msgctxt "#39060" +msgid "Recently Added: Append season- and episode-number SxxExx" +msgstr "Недавно добавлено: Показывать номер сезона и эпизода как SxxExx" + +# Pop-up during initial sync +msgctxt "#39061" +msgid "" +"Would you like to download additional artwork from FanArtTV in the " +"background?" +msgstr "Хотите загружать дополнительные иллюстрации с FanArtTV в фоне?" + +# PKC Settings - Sync +msgctxt "#39062" +msgid "Sync when screensaver is deactivated" +msgstr "Синхронизация если заставка отключена" + +# PKC Settings - Playback +msgctxt "#39063" +msgid "Force Transcode Hi10P" +msgstr "Принудительно транскодировать Hi10P" + +# PKC Settings - Appearance Tweaks +msgctxt "#39064" +msgid "Recently Added: Also show already watched episodes" +msgstr "Недавно добавлено: также показывать просмотренные эпизоды" + +# PKC Settings - Appearance Tweaks +msgctxt "#39065" +msgid "Force-refresh Kodi skin on stopping playback" +msgstr "Принудительное обновление обложки Kodi при остановке воспроизведения" + +# PKC Settings - Appearance Tweaks +msgctxt "#39066" +msgid "" +"Recently Added: Also show already watched movies (Refresh Plex " +"playlist/nodes!)" +msgstr "" +"Недавно добавлено: также показывать просмотренные фильмы (обновите " +"плейлисты/списки Plex)" + +# PKC Settings - Connection +msgctxt "#39067" +msgid "Your current Plex Media Server:" +msgstr "Ваш текущий сервер Plex:" + +# PKC Settings - Connection +msgctxt "#39068" +msgid "[COLOR yellow]Manually enter Plex Media Server address[/COLOR]" +msgstr "[COLOR yellow]Вручную ввести адрес сервера Plex[/COLOR]" + +# PKC Settings - Connection +msgctxt "#39069" +msgid "Current address:" +msgstr "Текущий адрес:" + +# PKC Settings - Connection +msgctxt "#39070" +msgid "Current port:" +msgstr "Текущий порт:" + +# PKC Settings - Connection +msgctxt "#39071" +msgid "Current plex.tv status:" +msgstr "Текущий статус на plex.tv:" + +# PKC Settings, category name +msgctxt "#39073" +msgid "Appearance Tweaks" +msgstr "Дополнительно" + +# PKC Settings - Appearance Tweaks +msgctxt "#39074" +msgid "TV Shows" +msgstr "Сериалы" + +# PKC Settings - Playback +msgctxt "#39075" +msgid "Always use default Plex subtitle if possible" +msgstr "Использовать субтитры по умолчанию из Plex, если доступны" + +# Pop-up during initial sync +msgctxt "#39076" +msgid "" +"If you use several Plex libraries of one kind, e.g. \"Kids Movies\" and " +"\"Parents Movies\", be sure to check the Wiki: https://goo.gl/JFtQV9" +msgstr "" +"Если вы используете несколько библиотек одного типа, например \"Фильмы " +"детей\" и \"Фильмы родителей\" не забудьте почитать Wiki: " +"https://goo.gl/JFtQV9 (пока на английском)" + +# PKC Settings - Appearance Tweaks +msgctxt "#39077" +msgid "Number of PMS items to show in widgets (e.g. \"On Deck\")" +msgstr "Количество элементов, отображаемых в виджетах (например \"Текущие\")" + +# PKC Settings - Plex +msgctxt "#39078" +msgid "Plex Companion Update Port (change only if needed)" +msgstr "Порт обновления Plex Companion (меняйте только если необходимо)" + +# Error message +msgctxt "#39079" +msgid "" +"Plex Companion could not open the GDM port. Please change it in the PKC " +"settings." +msgstr "" +"Plex Companion не может открыть порт GDM. Смените его в настройках PKC." + +msgctxt "#39200" +msgid "Log-out Plex Home User " +msgstr "Выйти из Plex" + +msgctxt "#39201" +msgid "Settings" +msgstr "Настройки" + +msgctxt "#39203" +msgid "Refresh Plex playlists/nodes" +msgstr "Обновить плейлисты/списки Plex" + +msgctxt "#39204" +msgid "Perform manual library sync" +msgstr "Синхронизировать вручную" + +# Error message +msgctxt "#39205" +msgid "Unable to run the sync, the add-on is not connected to a Plex server." +msgstr "" +"Невозможно запустить синхронизацию, плагин не подключен к серверу Plex." + +msgctxt "#39206" +msgid "" +"Plex might lock your account if you fail to log in too many times. Proceed " +"anyway?" +msgstr "" +"Plex заблокирует ваш аккаунт при нескольких неудачных авторизациях. Всё " +"равно продолжить?" + +msgctxt "#39207" +msgid "Resetting PMS connections, please wait" +msgstr "Сброс соединений Plex, пожалуйста подождите" + +msgctxt "#39208" +msgid "Failed to reset PKC. Try to restart Kodi." +msgstr "Невозможно сбросить PKC. Попробуйте перезапустить Kodi." + +# PKC Settings - Plex +msgctxt "#39209" +msgid "[COLOR yellow]Toggle plex.tv login (sign in or sign out)[/COLOR]" +msgstr "" +"[COLOR yellow]Переключить авторизацию plex.tv(войти или выйти)[/COLOR]" + +msgctxt "#39210" +msgid "Not yet connected to Plex Server" +msgstr "Не подключен к серверу Plex" + +msgctxt "#39211" +msgid "Watch later" +msgstr "Смотреть позже" + +# String attached at the end to get something like "PMS Name is offline" +msgctxt "#39213" +msgid "is offline" +msgstr "Нет соединения" + +msgctxt "#39215" +msgid "Enter your Plex Media Server's IP or URL, Examples are:" +msgstr "Введите IP или URL Вашего Plex-сервера. Например:" + +msgctxt "#39217" +msgid "" +"Does your Plex Media Server support SSL connections? (https instead of " +"http)?" +msgstr "Ваш Plex-сервер поддерживает SSL соединение (https вместо http)?" + +msgctxt "#39218" +msgid "Error contacting PMS" +msgstr "Ошибка при обращении к серверу Plex" + +msgctxt "#39219" +msgid "Abort (Yes) or save address anyway (No)?" +msgstr "Отменить (Да) или сохранить адрес (Нет)?" + +# String attached at the end to get something like "PMS Name is offline" +msgctxt "#39220" +msgid "connected" +msgstr "подключен" + +msgctxt "#39221" +msgid "plex.tv toggle successful" +msgstr "переключение plex.tv удачно" + +msgctxt "#39222" +msgid "[COLOR yellow]Look for missing fanart on FanartTV now[/COLOR]" +msgstr "[COLOR yellow]Найти отсутствующие иллюстрации на FanartTV[/COLOR]" + +msgctxt "#39223" +msgid "" +"Only look for missing fanart or refresh all fanart? The scan will take quite" +" a while and happen in the background." +msgstr "" +"Искать только отсутствующие иллюстрации или обновить все? Сканирование " +"займёт довольно много времени и будет выполнено в фоне." + +msgctxt "#39224" +msgid "Refresh all" +msgstr "Обновить все" + +msgctxt "#39225" +msgid "Missing only" +msgstr "Недостающие" + +# Message in the PKC settings if user has not logged in to plex.tv +msgctxt "#39226" +msgid "Not logged in to plex.tv" +msgstr "Вы не вошли в plex.tv" + +# Message in the PKC settings if user is logged in to plex.tv +msgctxt "#39227" +msgid "Logged in to plex.tv" +msgstr "Вы вошли в plex.tv" + +# Message in the PKC settings to display the plex.tv username. Leave the colon +# : +msgctxt "#39228" +msgid "Plex user:" +msgstr "Пользователь Plex:" + +msgctxt "#39250" +msgid "" +"Running the image cache process can take some time. It will happen in the " +"background. Are you sure you want continue?" +msgstr "" +"Процесс кеширования изображений займёт продолжительное время и будет " +"выполнен в фоне. Вы уверены что хотите продолжить?" + +msgctxt "#39251" +msgid "Reset all existing cache data first?" +msgstr "Сначала удалить весь имеющийся кеш?" + +msgctxt "#39303" +msgid "Problems trying to contact plex.tv. Try again later" +msgstr "Не удалось подключиться к plex.tv. Попробуйте позже" + +msgctxt "#39304" +msgid "Go to https://plex.tv/pin and enter the code: " +msgstr "Зайдите на https://plex.tv/pin и введите код:" + +msgctxt "#39305" +msgid "Could not sign in to plex.tv. Try again later" +msgstr "Ошибка входа в plex.tv. Попробуйте позже" + +msgctxt "#39306" +msgid ": Select User" +msgstr ": Выберите пользователя" + +msgctxt "#39307" +msgid "Enter PIN for user " +msgstr "Введите PIN пользователя" + +msgctxt "#39308" +msgid "Could not log in user " +msgstr "Ошибка входа" + +msgctxt "#39309" +msgid "Please try again." +msgstr "Попробуйте ещё." + +msgctxt "#39310" +msgid "unknown" +msgstr "неизвестно" + +msgctxt "#39311" +msgid "or press No to not sign in." +msgstr "или нажмите Нет, чтобы отменить вход." + +msgctxt "#39400" +msgid "" +"Library sync thread has crashed. You should restart Kodi now. Please report " +"this on the forum" +msgstr "" +"Синхронизация библиотеки завершилась с ошибкой. Вы должны перезапустить " +"Kodi. Пожалуйста, напишите об этом на форуме" + +msgctxt "#39401" +msgid "" +"Detected Kodi database needs to be recreated for this version. This might " +"take a while. Proceed?" +msgstr "" +"База данных Kodi должна быть пересоздана для этой версии. Это займёт время. " +"Продолжить?" + +msgctxt "#39402" +msgid " may not work correctly until the database is reset." +msgstr "может работать неправильно до сброса базы данных." + +msgctxt "#39403" +msgid "" +"Cancelling the database syncing process. Current Kodi version is " +"unsupported. Please verify your logs for more info." +msgstr "" +"Синхронизация отменена, текущая версия Kodi не поддерживается. Больше " +"информации Вы найдёте в логах." + +msgctxt "#39405" +msgid "Plex playlists/nodes refreshed" +msgstr "Завершено обновление плейлистов/списков Plex" + +msgctxt "#39406" +msgid "Plex playlists/nodes refresh failed" +msgstr "Обновление плейлистов/списков Plex не удалось" + +msgctxt "#39407" +msgid "Full library sync finished" +msgstr "Полная синхронизация библиотеки завершена" + +msgctxt "#39408" +msgid "" +"Sync had to skip some items because they could not be processed. Kodi may be" +" instable now!! Please post your Kodi logs to the Plex forum." +msgstr "" +"Синхронизацию пришлось прекратить, потому что некоторые элементы не могут " +"быть обработаны. Kodi работает нестабильно, опубликуйте логи работы Kodi на " +"форуме Plex." + +msgctxt "#39409" +msgid "" +"The Plex Server did not like you asking for so much data at once and " +"returned ERRORS. Try lowering the number of sync download threads in the " +"settings. Skipped some items for now." +msgstr "" +"Сервер Plex получил слишком много запросов одновременно и выдал ошибку. " +"Попробуйте уменьшить количество потоков синхронизации в настройках. " +"Некоторые элементы пропущены." + +msgctxt "#39410" +msgid "ERROR in library sync" +msgstr "Ошибка синхронизации библиотеки" + +msgctxt "#39500" +msgid "On Deck" +msgstr "Текущие" + +msgctxt "#39501" +msgid "Collections" +msgstr "Коллекции" + +msgctxt "#39600" +msgid "" +"Are you sure you want to reset your local Kodi database? A re-sync of the " +"Plex data will take time afterwards." +msgstr "" +"Вы действительно уверены что хотите удалить локальную базу данных Kodi? " +"Потребуется повторная синхронизация с Plex." + +msgctxt "#39601" +msgid "Could not stop the database from running. Please try again later." +msgstr "Не удалось остановить работу базы данных. Попробуйте позже." + +msgctxt "#39603" +msgid "" +"Reset all PlexKodiConnect Addon settings? (this is usually NOT recommended " +"and unnecessary!)" +msgstr "" +"Сбросить все настройки PlexKodiConnect Addon? (обычно это не нужно и НЕ " +"рекомендуется!)" + +msgctxt "#39700" +msgid "Amazon Alexa (Voice Recognition)" +msgstr "Amazon Alexa (Распознавание голоса)" + +msgctxt "#39701" +msgid "Activate Alexa" +msgstr "Активировать Amazon Alexa" + +msgctxt "#39702" +msgid "Browse by folder" +msgstr "Просмотр по папкам" + +# For use with addon.xml (PKC metadata for Kodi, e.g. description) +# Addon Summary +msgctxt "#39703" +msgid "Native Integration of Plex into Kodi" +msgstr "Нативная интеграция сервера Plex в Kodi" + +# For use with addon.xml (PKC metadata for Kodi, e.g. description) +# Addon Description +msgctxt "#39704" +msgid "" +"Connect Kodi to your Plex Media Server. This plugin assumes that you manage " +"all your videos with Plex (and none with Kodi). You might lose data already " +"stored in the Kodi video and music databases (as this plugin directly " +"changes them). Use at your own risk!" +msgstr "" +"Подключите Kodi к своему серверу Plex. Плагин предполагает что вы управляете" +" своими видео с помощью Plex (а не в Kodi). Вы можете потерять текущие базы " +"данных музыки и видео в Kodi (так как плагин напрямую их изменяет). " +"Используйте на свой страх и риск" + +# For use with addon.xml (PKC metadata for Kodi, e.g. description) +# Addon Disclaimer +msgctxt "#39705" +msgid "Use at your own risk" +msgstr "Используйте на свой страх и риск" + +# If user gets prompted to choose between several subtitles. Leave the number +# one at the beginning of the string! +msgctxt "#39706" +msgid "1 No subtitles" +msgstr "1 Без субтитров" + +# If user gets prompted to choose between several audio/subtitle tracks and +# language is unknown +msgctxt "#39707" +msgid "unknown" +msgstr "неизвестно" + +# If user gets prompted to choose between several subtitles and Plex adds the +# "default" flag +msgctxt "#39708" +msgid "Default" +msgstr "По-умолчанию" + +# If user gets prompted to choose between several subtitles and Plex adds the +# "forced" flag +msgctxt "#39709" +msgid "Forced" +msgstr "Forced" + +# If user gets prompted to choose between several subtitles the subtitle +# cannot be downloaded (has no 'key' attribute from the PMS), the subtitle +# needs to be burned in +msgctxt "#39710" +msgid "burn-in" +msgstr "встроить" + +# Dialog text if PKC detected a new Music library and Kodi needs to be +# restarted +msgctxt "#39711" +msgid "" +"New Plex music library detected. Sorry, but we need to restart Kodi now due " +"to the changes made." +msgstr "" +"Обнаружена новая библиотека музыки в Plex. К сожалению придётся " +"перезапустить Kodi" + +# Shown during sync process +msgctxt "#39712" +msgid "downloaded" +msgstr "скачано" + +# Shown during sync process +msgctxt "#39713" +msgid "processed" +msgstr "обработано" + +# Shown during sync process +msgctxt "#39714" +msgid "Sync" +msgstr "Синхронизация" + +# Shown during sync process +msgctxt "#39715" +msgid "items" +msgstr "элементов" + +# Error message if an xml, e.g. advancedsettings.xml cannot be parsed (xml is +# screwed up; formated the wrong way). Do NOT replace {0} and {1}! +msgctxt "#39716" +msgid "" +"Kodi cannot parse {0}. PKC will not function correctly. Please visit {1} and" +" correct your file!" +msgstr "" +"Kodi не может распознать {0}. PKC не будет работать нормально. Пожалуйста " +"исправьте свой файл {1}" + +# Shown once on first installation to comply with the terms of use of +# themoviedb.org +msgctxt "#39717" +msgid "PKC uses free additional artwork from www.themoviedb.org. Many thanks!" +msgstr "" +"PKC будет использовать дополнительные иллюстрации с www.themoviedb.org. " +"Большое спасибо!" + +# Shown during very first PKC setup only +msgctxt "#39718" +msgid "" +"Do you want to replace your custom user ratings with an indicator of how " +"many versions of a media item you posses?" +msgstr "" +"Вы хотите заменить свои пользовательские рейтинги индикатором количества " +"имеющихся версий элемента?" + +# In PKC Settings under Sync +msgctxt "#39719" +msgid "Replace user ratings with number of media versions" +msgstr "Заменить пользовательский рейтинг счетчиком версий элемента" diff --git a/resources/lib/PlexFunctions.py b/resources/lib/PlexFunctions.py index f0105c21..17b19ce3 100644 --- a/resources/lib/PlexFunctions.py +++ b/resources/lib/PlexFunctions.py @@ -20,6 +20,7 @@ LOG = getLogger("PLEX." + __name__) CONTAINERSIZE = int(settings('limitindex')) REGEX_PLEX_KEY = re_compile(r'''/(.+)/(\d+)$''') +REGEX_PLEX_DIRECT = re_compile(r'''\.plex\.direct:\d+$''') # For discovery of PMS in the local LAN PLEX_GDM_IP = '239.0.0.250' # multicast to PMS @@ -212,38 +213,28 @@ def discover_pms(token=None): LOG.info('No plex token supplied, only checked LAN for available PMS') plex_pms_list = [] - # See if we found a PMS both locally and using plex.tv. If so, use local - # connection data - all_pms = [] + # Add PMS found only in the LAN to the Plex.tv PMS list for pms in local_pms_list: - for i, plex_pms in enumerate(plex_pms_list): + for plex_pms in plex_pms_list: if pms['machineIdentifier'] == plex_pms['machineIdentifier']: - # Update with GDM data - potentially more reliable than plex.tv - LOG.debug('Found this PMS also in the LAN: %s', plex_pms) - plex_pms['ip'] = pms['ip'] - plex_pms['port'] = pms['port'] - plex_pms['local'] = True - # Use all the other data we know from plex.tv - pms = plex_pms - # Remove this particular pms since we already know it - plex_pms_list.pop(i) break - https = _pms_https_enabled('%s:%s' % (pms['ip'], pms['port'])) - if https is None: - # Error contacting url. Skip and ignore this PMS for now - continue - elif https is True: - pms['scheme'] = 'https' - pms['baseURL'] = 'https://%s:%s' % (pms['ip'], pms['port']) else: - pms['scheme'] = 'http' - pms['baseURL'] = 'http://%s:%s' % (pms['ip'], pms['port']) - all_pms.append(pms) - # Now add the remaining PMS from plex.tv (where we already checked connect.) - for plex_pms in plex_pms_list: - all_pms.append(plex_pms) - LOG.debug('Found the following PMS in total: %s', all_pms) - return all_pms + # Only found PMS using GDM - add it to the PMS from plex.tv + https = _pms_https_enabled('%s:%s' % (pms['ip'], pms['port'])) + if https is None: + # Error contacting url. Skip and ignore this PMS for now + LOG.error('Could not contact PMS %s but we should have', pms) + continue + elif https is True: + pms['scheme'] = 'https' + else: + pms['scheme'] = 'http' + pms['baseURL'] = '%s://%s:%s' % (pms['scheme'], + pms['ip'], + pms['port']) + plex_pms_list.append(pms) + LOG.debug('Found the following PMS in total: %s', plex_pms_list) + return plex_pms_list def _plex_gdm(): @@ -414,17 +405,18 @@ def _pms_list_from_plex_tv(token): def _poke_pms(pms, queue): data = pms['connections'][0].attrib - if data['local'] == '1': - protocol = data['protocol'] - address = data['address'] - port = data['port'] - url = '%s://%s:%s' % (protocol, address, port) - else: - url = data['uri'] - if url.count(':') == 1: - url = '%s:%s' % (url, data['port']) - protocol, address, port = url.split(':', 2) - address = address.replace('/', '') + url = data['uri'] + if data['local'] == '1' and REGEX_PLEX_DIRECT.findall(url): + # In case DNS resolve of plex.direct does not work, append a new + # connection that will directly access the local IP (e.g. internet down) + conn = deepcopy(pms['connections'][0]) + # Overwrite plex.direct + conn.attrib['uri'] = '%s://%s:%s' % (data['protocol'], + data['address'], + data['port']) + pms['connections'].insert(1, conn) + protocol, address, port = url.split(':', 2) + address = address.replace('/', '') xml = DU().downloadUrl('%s/identity' % url, authenticate=False, headerOptions={'X-Plex-Token': pms['token']}, diff --git a/resources/lib/artwork.py b/resources/lib/artwork.py index d50c726e..f95d2b16 100644 --- a/resources/lib/artwork.py +++ b/resources/lib/artwork.py @@ -39,7 +39,7 @@ def double_urldecode(text): @thread_methods(add_suspends=IMAGE_CACHING_SUSPENDS) class Image_Cache_Thread(Thread): - sleep_between = 200 + sleep_between = 50 # Potentially issues with limited number of threads # Hence let Kodi wait till download is successful timeout = (35.1, 35.1) @@ -54,6 +54,8 @@ class Image_Cache_Thread(Thread): suspended = self.suspended queue = self.queue sleep_between = self.sleep_between + counter = 0 + set_zero = False while not stopped(): # In the event the server goes offline while suspended(): @@ -63,21 +65,19 @@ class Image_Cache_Thread(Thread): LOG.info("---===### Stopped Image_Cache_Thread ###===---") return sleep(1000) + try: url = queue.get(block=False) except Empty: + if not set_zero: + # Avoid saving '0' all the time + set_zero = True + settings('caching_artwork_count', value='0') sleep(1000) continue + set_zero = False if isinstance(url, ArtworkSyncMessage): - if url.artwork_counter is not None: - if url.artwork_counter == 0: - # Done caching, show this in the PKC settings, too - settings('caching_major_artwork', value=lang(30069)) - LOG.info('Done caching major images!') - else: - settings('caching_major_artwork', - value=str(url.artwork_counter)) - if url.message and state.IMAGE_SYNC_NOTIFICATIONS: + if state.IMAGE_SYNC_NOTIFICATIONS: dialog('notification', heading=lang(29999), message=url.message, @@ -127,6 +127,11 @@ class Image_Cache_Thread(Thread): # We did not even get a timeout break queue.task_done() + # Update the caching state in the PKC settings. + counter += 1 + if counter > 20: + counter = 0 + settings('caching_artwork_count', value=str(queue.qsize())) # Sleep for a bit to reduce CPU strain sleep(sleep_between) LOG.info("---===### Stopped Image_Cache_Thread ###===---") @@ -168,24 +173,18 @@ class Artwork(): if not artworks_to_cache: LOG.info('Caching of major images to Kodi texture cache done') # Set to "None" - settings('caching_major_artwork', value=lang(30069)) + settings('caching_artwork_count', value=lang(30069)) return length = len(artworks_to_cache) LOG.info('Caching has not been completed - caching %s major images', length) - settings('caching_major_artwork', value=str(length)) + settings('caching_artwork_count', value=str(length)) # Caching %s Plex images - self.queue.put(ArtworkSyncMessage(message=lang(30006) % length, - artwork_counter=length)) + self.queue.put(ArtworkSyncMessage(lang(30006) % length)) for i, url in enumerate(artworks_to_cache): self.queue.put(url[0]) - if (length - i) % 10 == 0: - # Update the PKC settings for artwork caching progress - msg = ArtworkSyncMessage(artwork_counter=length - i) - self.queue.put(msg) # Plex image caching done - self.queue.put(ArtworkSyncMessage(message=lang(30007), - artwork_counter=0)) + self.queue.put(ArtworkSyncMessage(lang(30007))) def fullTextureCacheSync(self): """ @@ -343,6 +342,5 @@ class ArtworkSyncMessage(object): """ Put in artwork queue to display the message as a Kodi notification """ - def __init__(self, message=None, artwork_counter=None): + def __init__(self, message): self.message = message - self.artwork_counter = artwork_counter diff --git a/resources/lib/dialogs/context.py b/resources/lib/context.py similarity index 100% rename from resources/lib/dialogs/context.py rename to resources/lib/context.py diff --git a/resources/lib/context_entry.py b/resources/lib/context_entry.py index fa5fd414..994913fc 100644 --- a/resources/lib/context_entry.py +++ b/resources/lib/context_entry.py @@ -6,10 +6,10 @@ from xbmcaddon import Addon import xbmc import xbmcplugin import xbmcgui +import context import plexdb_functions as plexdb from utils import window, settings, dialog, language as lang -from dialogs import context import PlexFunctions as PF from PlexAPI import API import playqueue as PQ @@ -96,18 +96,7 @@ class ContextMenu(object): options.append(OPTIONS['PMS_Play']) if self.kodi_type in v.KODI_VIDEOTYPES: options.append(OPTIONS['Transcode']) - # userdata = self.api.userdata() - # if userdata['Favorite']: - # # Remove from emby favourites - # options.append(OPTIONS['RemoveFav']) - # else: - # # Add to emby favourites - # options.append(OPTIONS['AddFav']) - # if self.kodi_type == "song": - # # Set custom song rating - # options.append(OPTIONS['RateSong']) - # Refresh item - # options.append(OPTIONS['Refresh']) + # Delete item, only if the Plex Home main user is logged in if (window('plex_restricteduser') != 'true' and window('plex_allows_mediaDeletion') == 'true'): @@ -115,7 +104,7 @@ class ContextMenu(object): # Addon settings options.append(OPTIONS['Addon']) context_menu = context.ContextMenu( - "script-emby-context.xml", + "script-plex-context.xml", Addon('plugin.video.plexkodiconnect').getAddonInfo('path'), "default", "1080i") @@ -137,14 +126,7 @@ class ContextMenu(object): self._PMS_play() elif selected == OPTIONS['Extras']: self._extras() - # elif selected == OPTIONS['Refresh']: - # self.emby.refreshItem(self.item_id) - # elif selected == OPTIONS['AddFav']: - # self.emby.updateUserRating(self.item_id, favourite=True) - # elif selected == OPTIONS['RemoveFav']: - # self.emby.updateUserRating(self.item_id, favourite=False) - # elif selected == OPTIONS['RateSong']: - # self._rate_song() + elif selected == OPTIONS['Addon']: xbmc.executebuiltin( 'Addon.OpenSettings(plugin.video.plexkodiconnect)') diff --git a/resources/lib/dialogs/__init__.py b/resources/lib/dialogs/__init__.py deleted file mode 100644 index 92c6f42a..00000000 --- a/resources/lib/dialogs/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# Dummy file to make this directory a package. -# from serverconnect import ServerConnect -# from usersconnect import UsersConnect -# from loginconnect import LoginConnect -# from loginmanual import LoginManual -# from servermanual import ServerManual diff --git a/resources/lib/dialogs/loginconnect.py b/resources/lib/dialogs/loginconnect.py deleted file mode 100644 index db7c39cc..00000000 --- a/resources/lib/dialogs/loginconnect.py +++ /dev/null @@ -1,136 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging -import os - -import xbmcgui -import xbmcaddon - -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) -addon = xbmcaddon.Addon('plugin.video.emby') - -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -SIGN_IN = 200 -CANCEL = 201 -ERROR_TOGGLE = 202 -ERROR_MSG = 203 -ERROR = { - 'Invalid': 1, - 'Empty': 2 -} - -################################################################################################## - - -class LoginConnect(xbmcgui.WindowXMLDialog): - - _user = None - error = None - - - def __init__(self, *args, **kwargs): - - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_connect_manager(self, connect_manager): - self.connect_manager = connect_manager - - def is_logged_in(self): - return True if self._user else False - - def get_user(self): - return self._user - - - def onInit(self): - - self.user_field = self._add_editcontrol(725, 385, 40, 500) - self.setFocus(self.user_field) - self.password_field = self._add_editcontrol(725, 470, 40, 500, password=1) - self.signin_button = self.getControl(SIGN_IN) - self.remind_button = self.getControl(CANCEL) - self.error_toggle = self.getControl(ERROR_TOGGLE) - self.error_msg = self.getControl(ERROR_MSG) - - self.user_field.controlUp(self.remind_button) - self.user_field.controlDown(self.password_field) - self.password_field.controlUp(self.user_field) - self.password_field.controlDown(self.signin_button) - self.signin_button.controlUp(self.password_field) - self.remind_button.controlDown(self.user_field) - - def onClick(self, control): - - if control == SIGN_IN: - # Sign in to emby connect - self._disable_error() - - user = self.user_field.getText() - password = self.password_field.getText() - - if not user or not password: - # Display error - self._error(ERROR['Empty'], lang(30608)) - log.error("Username or password cannot be null") - - elif self._login(user, password): - self.close() - - elif control == CANCEL: - # Remind me later - self.close() - - def onAction(self, action): - - if (self.error == ERROR['Empty'] - and self.user_field.getText() and self.password_field.getText()): - self._disable_error() - - if action in (ACTION_BACK, ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU): - self.close() - - def _add_editcontrol(self, x, y, height, width, password=0): - - media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media') - control = xbmcgui.ControlEdit(0, 0, 0, 0, - label="User", - font="font10", - textColor="ff525252", - focusTexture=os.path.join(media, "button-focus.png"), - noFocusTexture=os.path.join(media, "button-focus.png"), - isPassword=password) - control.setPosition(x, y) - control.setHeight(height) - control.setWidth(width) - - self.addControl(control) - return control - - def _login(self, username, password): - - result = self.connect_manager.loginToConnect(username, password) - if result is False: - self._error(ERROR['Invalid'], lang(33009)) - return False - else: - self._user = result - return True - - def _error(self, state, message): - - self.error = state - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _disable_error(self): - - self.error = None - self.error_toggle.setVisibleCondition('False') diff --git a/resources/lib/dialogs/loginmanual.py b/resources/lib/dialogs/loginmanual.py deleted file mode 100644 index 7db1adcf..00000000 --- a/resources/lib/dialogs/loginmanual.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging -import os - -import xbmcgui -import xbmcaddon - -import read_embyserver as embyserver -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) -addon = xbmcaddon.Addon('plugin.video.emby') - -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -SIGN_IN = 200 -CANCEL = 201 -ERROR_TOGGLE = 202 -ERROR_MSG = 203 -ERROR = { - 'Invalid': 1, - 'Empty': 2 -} - -################################################################################################## - - -class LoginManual(xbmcgui.WindowXMLDialog): - - _user = None - error = None - username = None - - - def __init__(self, *args, **kwargs): - - self.emby = embyserver.Read_EmbyServer() - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def is_logged_in(self): - return True if self._user else False - - def set_server(self, server): - self.server = server - - def set_user(self, user): - self.username = user or {} - - def get_user(self): - return self._user - - def onInit(self): - - self.signin_button = self.getControl(SIGN_IN) - self.cancel_button = self.getControl(CANCEL) - self.error_toggle = self.getControl(ERROR_TOGGLE) - self.error_msg = self.getControl(ERROR_MSG) - self.user_field = self._add_editcontrol(725, 400, 40, 500) - self.password_field = self._add_editcontrol(725, 475, 40, 500, password=1) - - if self.username: - self.user_field.setText(self.username) - self.setFocus(self.password_field) - else: - self.setFocus(self.user_field) - - self.user_field.controlUp(self.cancel_button) - self.user_field.controlDown(self.password_field) - self.password_field.controlUp(self.user_field) - self.password_field.controlDown(self.signin_button) - self.signin_button.controlUp(self.password_field) - self.cancel_button.controlDown(self.user_field) - - def onClick(self, control): - - if control == SIGN_IN: - # Sign in to emby connect - self._disable_error() - - user = self.user_field.getText() - password = self.password_field.getText() - - if not user: - # Display error - self._error(ERROR['Empty'], lang(30613)) - log.error("Username cannot be null") - - elif self._login(user, password): - self.close() - - elif control == CANCEL: - # Remind me later - self.close() - - def onAction(self, action): - - if self.error == ERROR['Empty'] and self.user_field.getText(): - self._disable_error() - - if action in (ACTION_BACK, ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU): - self.close() - - def _add_editcontrol(self, x, y, height, width, password=0): - - media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media') - control = xbmcgui.ControlEdit(0, 0, 0, 0, - label="User", - font="font10", - textColor="ff525252", - focusTexture=os.path.join(media, "button-focus.png"), - noFocusTexture=os.path.join(media, "button-focus.png"), - isPassword=password) - control.setPosition(x, y) - control.setHeight(height) - control.setWidth(width) - - self.addControl(control) - return control - - def _login(self, username, password): - - result = self.emby.loginUser(self.server, username, password) - if not result: - self._error(ERROR['Invalid'], lang(33009)) - return False - else: - self._user = result - return True - - def _error(self, state, message): - - self.error = state - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _disable_error(self): - - self.error = None - self.error_toggle.setVisibleCondition('False') diff --git a/resources/lib/dialogs/serverconnect.py b/resources/lib/dialogs/serverconnect.py deleted file mode 100644 index 541ca6f9..00000000 --- a/resources/lib/dialogs/serverconnect.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging - -import xbmc -import xbmcgui - -import connect.connectionmanager as connectionmanager -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) - -CONN_STATE = connectionmanager.ConnectionState -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -ACTION_SELECT_ITEM = 7 -ACTION_MOUSE_LEFT_CLICK = 100 -USER_IMAGE = 150 -USER_NAME = 151 -LIST = 155 -CANCEL = 201 -MESSAGE_BOX = 202 -MESSAGE = 203 -BUSY = 204 -EMBY_CONNECT = 205 -MANUAL_SERVER = 206 - -################################################################################################## - - -class ServerConnect(xbmcgui.WindowXMLDialog): - - username = "" - user_image = None - servers = [] - - _selected_server = None - _connect_login = False - _manual_server = False - - - def __init__(self, *args, **kwargs): - - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_args(self, **kwargs): - # connect_manager, username, user_image, servers, emby_connect - for key, value in kwargs.iteritems(): - setattr(self, key, value) - - def is_server_selected(self): - return True if self._selected_server else False - - def get_server(self): - return self._selected_server - - def is_connect_login(self): - return self._connect_login - - def is_manual_server(self): - return self._manual_server - - - def onInit(self): - - self.message = self.getControl(MESSAGE) - self.message_box = self.getControl(MESSAGE_BOX) - self.busy = self.getControl(BUSY) - self.list_ = self.getControl(LIST) - - for server in self.servers: - server_type = "wifi" if server.get('ExchangeToken') else "network" - self.list_.addItem(self._add_listitem(server['Name'], server['Id'], server_type)) - - self.getControl(USER_NAME).setLabel("%s %s" % (lang(33000), self.username.decode('utf-8'))) - - if self.user_image is not None: - self.getControl(USER_IMAGE).setImage(self.user_image) - - if not self.emby_connect: # Change connect user - self.getControl(EMBY_CONNECT).setLabel("[UPPERCASE][B]"+lang(30618)+"[/B][/UPPERCASE]") - - if self.servers: - self.setFocus(self.list_) - - @classmethod - def _add_listitem(cls, label, server_id, server_type): - - item = xbmcgui.ListItem(label) - item.setProperty('id', server_id) - item.setProperty('server_type', server_type) - - return item - - def onAction(self, action): - - if action in (ACTION_BACK, ACTION_PREVIOUS_MENU, ACTION_PARENT_DIR): - self.close() - - if action in (ACTION_SELECT_ITEM, ACTION_MOUSE_LEFT_CLICK): - - if self.getFocusId() == LIST: - server = self.list_.getSelectedItem() - selected_id = server.getProperty('id') - log.info('Server Id selected: %s', selected_id) - - if self._connect_server(selected_id): - self.message_box.setVisibleCondition('False') - self.close() - - def onClick(self, control): - - if control == EMBY_CONNECT: - self.connect_manager.clearData() - self._connect_login = True - self.close() - - elif control == MANUAL_SERVER: - self._manual_server = True - self.close() - - elif control == CANCEL: - self.close() - - def _connect_server(self, server_id): - - server = self.connect_manager.getServerInfo(server_id) - self.message.setLabel("%s %s..." % (lang(30610), server['Name'])) - self.message_box.setVisibleCondition('True') - self.busy.setVisibleCondition('True') - result = self.connect_manager.connectToServer(server) - - if result['State'] == CONN_STATE['Unavailable']: - self.busy.setVisibleCondition('False') - self.message.setLabel(lang(30609)) - return False - else: - xbmc.sleep(1000) - self._selected_server = result['Servers'][0] - return True diff --git a/resources/lib/dialogs/servermanual.py b/resources/lib/dialogs/servermanual.py deleted file mode 100644 index d54199eb..00000000 --- a/resources/lib/dialogs/servermanual.py +++ /dev/null @@ -1,145 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging -import os - -import xbmcgui -import xbmcaddon - -import connect.connectionmanager as connectionmanager -from utils import language as lang - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) -addon = xbmcaddon.Addon('plugin.video.emby') - -CONN_STATE = connectionmanager.ConnectionState -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -CONNECT = 200 -CANCEL = 201 -ERROR_TOGGLE = 202 -ERROR_MSG = 203 -ERROR = { - 'Invalid': 1, - 'Empty': 2 -} - -################################################################################################## - - -class ServerManual(xbmcgui.WindowXMLDialog): - - _server = None - error = None - - - def __init__(self, *args, **kwargs): - - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_connect_manager(self, connect_manager): - self.connect_manager = connect_manager - - def is_connected(self): - return True if self._server else False - - def get_server(self): - return self._server - - def onInit(self): - - self.connect_button = self.getControl(CONNECT) - self.cancel_button = self.getControl(CANCEL) - self.error_toggle = self.getControl(ERROR_TOGGLE) - self.error_msg = self.getControl(ERROR_MSG) - self.host_field = self._add_editcontrol(725, 400, 40, 500) - self.port_field = self._add_editcontrol(725, 525, 40, 500) - - self.port_field.setText('8096') - self.setFocus(self.host_field) - - self.host_field.controlUp(self.cancel_button) - self.host_field.controlDown(self.port_field) - self.port_field.controlUp(self.host_field) - self.port_field.controlDown(self.connect_button) - self.connect_button.controlUp(self.port_field) - self.cancel_button.controlDown(self.host_field) - - def onClick(self, control): - - if control == CONNECT: - # Sign in to emby connect - self._disable_error() - - server = self.host_field.getText() - port = self.port_field.getText() - - if not server or not port: - # Display error - self._error(ERROR['Empty'], lang(30617)) - log.error("Server or port cannot be null") - - elif self._connect_to_server(server, port): - self.close() - - elif control == CANCEL: - # Remind me later - self.close() - - def onAction(self, action): - - if self.error == ERROR['Empty'] and self.host_field.getText() and self.port_field.getText(): - self._disable_error() - - if action in (ACTION_BACK, ACTION_PARENT_DIR, ACTION_PREVIOUS_MENU): - self.close() - - def _add_editcontrol(self, x, y, height, width): - - media = os.path.join(addon.getAddonInfo('path'), 'resources', 'skins', 'default', 'media') - control = xbmcgui.ControlEdit(0, 0, 0, 0, - label="User", - font="font10", - textColor="ffc2c2c2", - focusTexture=os.path.join(media, "button-focus.png"), - noFocusTexture=os.path.join(media, "button-focus.png")) - control.setPosition(x, y) - control.setHeight(height) - control.setWidth(width) - - self.addControl(control) - return control - - def _connect_to_server(self, server, port): - - server_address = "%s:%s" % (server, port) - self._message("%s %s..." % (lang(30610), server_address)) - result = self.connect_manager.connectToAddress(server_address) - - if result['State'] == CONN_STATE['Unavailable']: - self._message(lang(30609)) - return False - else: - self._server = result['Servers'][0] - return True - - def _message(self, message): - - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _error(self, state, message): - - self.error = state - self.error_msg.setLabel(message) - self.error_toggle.setVisibleCondition('True') - - def _disable_error(self): - - self.error = None - self.error_toggle.setVisibleCondition('False') diff --git a/resources/lib/dialogs/usersconnect.py b/resources/lib/dialogs/usersconnect.py deleted file mode 100644 index ed535c98..00000000 --- a/resources/lib/dialogs/usersconnect.py +++ /dev/null @@ -1,104 +0,0 @@ -# -*- coding: utf-8 -*- - -################################################################################################## - -import logging - -import xbmc -import xbmcgui - -################################################################################################## - -log = logging.getLogger("EMBY."+__name__) - -ACTION_PARENT_DIR = 9 -ACTION_PREVIOUS_MENU = 10 -ACTION_BACK = 92 -ACTION_SELECT_ITEM = 7 -ACTION_MOUSE_LEFT_CLICK = 100 -LIST = 155 -MANUAL = 200 -CANCEL = 201 - -################################################################################################## - - -class UsersConnect(xbmcgui.WindowXMLDialog): - - _user = None - _manual_login = False - - - def __init__(self, *args, **kwargs): - - self.kodi_version = int(xbmc.getInfoLabel('System.BuildVersion')[:2]) - xbmcgui.WindowXMLDialog.__init__(self, *args, **kwargs) - - def set_server(self, server): - self.server = server - - def set_users(self, users): - self.users = users - - def is_user_selected(self): - return True if self._user else False - - def get_user(self): - return self._user - - def is_manual_login(self): - return self._manual_login - - - def onInit(self): - - self.list_ = self.getControl(LIST) - for user in self.users: - user_image = ("userflyoutdefault2.png" if 'PrimaryImageTag' not in user - else self._get_user_artwork(user['Id'], 'Primary')) - self.list_.addItem(self._add_listitem(user['Name'], user['Id'], user_image)) - - self.setFocus(self.list_) - - def _add_listitem(self, label, user_id, user_image): - - item = xbmcgui.ListItem(label) - item.setProperty('id', user_id) - if self.kodi_version > 15: - item.setArt({'Icon': user_image}) - else: - item.setArt({'icon': user_image}) - - return item - - def onAction(self, action): - - if action in (ACTION_BACK, ACTION_PREVIOUS_MENU, ACTION_PARENT_DIR): - self.close() - - if action in (ACTION_SELECT_ITEM, ACTION_MOUSE_LEFT_CLICK): - - if self.getFocusId() == LIST: - user = self.list_.getSelectedItem() - selected_id = user.getProperty('id') - log.info('User Id selected: %s', selected_id) - - for user in self.users: - if user['Id'] == selected_id: - self._user = user - break - - self.close() - - def onClick(self, control): - - if control == MANUAL: - self._manual_login = True - self.close() - - elif control == CANCEL: - self.close() - - def _get_user_artwork(self, user_id, item_type): - # Load user information set by UserClient - return "%s/emby/Users/%s/Images/%s?Format=original" % (self.server, user_id, item_type) diff --git a/resources/lib/initialsetup.py b/resources/lib/initialsetup.py index 24010482..795cbf9e 100644 --- a/resources/lib/initialsetup.py +++ b/resources/lib/initialsetup.py @@ -528,6 +528,8 @@ class InitialSetup(object): # Do we need to migrate stuff? check_migration() + # Reload the server IP cause we might've deleted it during migration + self.server = UserClient().get_server() # Display a warning if Kodi puts ALL movies into the queue, basically # breaking playback reporting for PKC diff --git a/resources/lib/library_sync/fanart.py b/resources/lib/library_sync/fanart.py index 780db325..fddb6b82 100644 --- a/resources/lib/library_sync/fanart.py +++ b/resources/lib/library_sync/fanart.py @@ -49,6 +49,8 @@ class ThreadedProcessFanart(Thread): stopped = self.stopped suspended = self.suspended queue = self.queue + counter = 0 + set_zero = False while not stopped(): # In the event the server goes offline while suspended(): @@ -62,19 +64,15 @@ class ThreadedProcessFanart(Thread): try: item = queue.get(block=False) except Empty: + if not set_zero: + # Avoid saving '0' all the time + set_zero = True + settings('fanarttv_lookups', value='0') sleep(200) continue - + set_zero = False if isinstance(item, ArtworkSyncMessage): - if item.artwork_counter is not None: - if item.artwork_counter == 0: - # Done caching, show this in the PKC settings, too - settings('fanarttv_lookups', value=lang(30069)) - LOG.info('Done caching major images!') - else: - settings('fanarttv_lookups', - value=str(item.artwork_counter)) - if item.message and state.IMAGE_SYNC_NOTIFICATIONS: + if state.IMAGE_SYNC_NOTIFICATIONS: dialog('notification', heading=lang(29999), message=item.message, @@ -92,5 +90,10 @@ class ThreadedProcessFanart(Thread): LOG.debug('Done getting fanart for Plex id %s', item['plex_id']) with plexdb.Get_Plex_DB() as plex_db: plex_db.set_fanart_synched(item['plex_id']) + # Update the caching state in the PKC settings. Avoid saving '0' + counter += 1 + if counter > 10: + counter = 0 + settings('fanarttv_lookups', value=str(queue.qsize())) queue.task_done() LOG.debug("---===### Stopped FanartSync ###===---") diff --git a/resources/lib/librarysync.py b/resources/lib/librarysync.py index c6cfa10d..d2fa81fd 100644 --- a/resources/lib/librarysync.py +++ b/resources/lib/librarysync.py @@ -263,16 +263,13 @@ class LibrarySync(Thread): return True def _full_sync(self): - process = { - 'movies': self.plex_movies, - 'tvshows': self.plex_tv_show, - } + process = [self.plex_movies, self.plex_tv_show] if state.ENABLE_MUSIC: - process['music'] = self.plex_music + process.append(self.plex_music) # Do the processing - for itemtype in process: - if self.suspend_item_sync() or not process[itemtype](): + for kind in process: + if self.suspend_item_sync() or not kind(): return False # Let kodi update the views in any case, since we're doing a full sync @@ -1393,21 +1390,15 @@ class LibrarySync(Thread): # Shuffle the list to not always start out identically shuffle(items) # Checking FanartTV for %s items - self.fanartqueue.put(artwork.ArtworkSyncMessage( - message=lang(30018) % len(items), artwork_counter=len(items))) + self.fanartqueue.put(artwork.ArtworkSyncMessage(lang(30018) % len(items))) for i, item in enumerate(items): self.fanartqueue.put({ 'plex_id': item['plex_id'], 'plex_type': item['plex_type'], 'refresh': refresh }) - if (len(items) - i) % 10 == 0: - # Update the PKC settings for fanart.tv lookup - msg = artwork.ArtworkSyncMessage(artwork_counter=len(items) - i) - self.fanartqueue.put(msg) # FanartTV lookup completed - self.fanartqueue.put(artwork.ArtworkSyncMessage(message=lang(30019), - artwork_counter=0)) + self.fanartqueue.put(artwork.ArtworkSyncMessage(lang(30019))) def triage_lib_scans(self): """ @@ -1582,7 +1573,7 @@ class LibrarySync(Thread): heading='{plex}', line1=lang(29999) + lang(39402)) else: - utils.reset() + utils.reset(ask_user=False) break kodi_db_version_checked = True diff --git a/resources/lib/migration.py b/resources/lib/migration.py index ffb50bad..be9988c6 100644 --- a/resources/lib/migration.py +++ b/resources/lib/migration.py @@ -11,14 +11,19 @@ def check_migration(): last_migration = settings('last_migrated_PKC_version') if last_migration == v.ADDON_VERSION: log.info('Already migrated to PKC version %s' % v.ADDON_VERSION) + # Ensure later migration if user downgraded PKC! + settings('last_migrated_PKC_version', value=v.ADDON_VERSION) return - if not last_migration: - log.info('Never migrated, so checking everything') - last_migration = '1.0.0' if not compare_version(v.ADDON_VERSION, '1.8.2'): log.info('Migrating to version 1.8.1') # Set the new PKC theMovieDB key settings('themoviedbAPIKey', value='19c90103adb9e98f2172c6a6a3d85dc4') + if not compare_version(v.ADDON_VERSION, '2.0.25'): + log.info('Migrating to version 2.0.24') + # Need to re-connect with PMS to pick up on plex.direct URIs + settings('ipaddress', value='') + settings('port', value='') + settings('last_migrated_PKC_version', value=v.ADDON_VERSION) diff --git a/resources/lib/playback.py b/resources/lib/playback.py index fe7c9c1a..910dc782 100644 --- a/resources/lib/playback.py +++ b/resources/lib/playback.py @@ -206,6 +206,7 @@ def _init_existing_kodi_playlist(playqueue, pos): LOG.debug('Kodi playlist size: %s', playqueue.kodi_pl.size()) kodi_items = js.playlist_get_items(playqueue.playlistid) if not kodi_items: + LOG.error('No Kodi items returned') raise PL.PlaylistError('No Kodi items returned') item = PL.init_Plex_playlist(playqueue, kodi_item=kodi_items[pos]) item.force_transcode = state.FORCE_TRANSCODE diff --git a/resources/lib/utils.py b/resources/lib/utils.py index b993e909..82225c26 100644 --- a/resources/lib/utils.py +++ b/resources/lib/utils.py @@ -436,21 +436,21 @@ def wipe_database(): connection.commit() cursor.close() # Reset the artwork sync status in the PKC settings - settings('caching_major_artwork', value=language(39310)) + settings('caching_artwork_count', value=language(39310)) settings('fanarttv_lookups', value=language(39310)) # reset the install run flag settings('SyncInstallRunDone', value="false") -def reset(): +def reset(ask_user=True): """ User navigated to the PKC settings, Advanced, and wants to reset the Kodi database and possibly PKC entirely """ # Are you sure you want to reset your local Kodi database? - if not dialog('yesno', - heading='{plex} %s ' % language(30132), - line1=language(39600)): + if ask_user and not dialog('yesno', + heading='{plex} %s ' % language(30132), + line1=language(39600)): return # first stop any db sync @@ -472,9 +472,9 @@ def reset(): # Reset all PlexKodiConnect Addon settings? (this is usually NOT # recommended and unnecessary!) - if dialog('yesno', - heading='{plex} %s ' % language(30132), - line1=language(39603)): + if ask_user and dialog('yesno', + heading='{plex} %s ' % language(30132), + line1=language(39603)): # Delete the settings addon = xbmcaddon.Addon() addondir = try_decode(xbmc.translatePath(addon.getAddonInfo('profile'))) diff --git a/resources/lib/variables.py b/resources/lib/variables.py index d0ac4aa0..7a7e2c0c 100644 --- a/resources/lib/variables.py +++ b/resources/lib/variables.py @@ -76,7 +76,7 @@ COMPANION_PORT = int(_ADDON.getSetting('companionPort')) PKC_MACHINE_IDENTIFIER = None # Minimal PKC version needed for the Kodi database - otherwise need to recreate -MIN_DB_VERSION = '2.0.11' +MIN_DB_VERSION = '2.0.24' # Database paths _DB_VIDEO_VERSION = { diff --git a/resources/settings.xml b/resources/settings.xml index 9267b144..ceb14249 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -126,12 +126,12 @@ - + - +