diff --git a/README.md b/README.md index 1eda12b5..257a3a12 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![stable version](https://img.shields.io/badge/stable_version-2.11.7-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.11.7-red.svg?maxAge=60&style=flat) ](https://github.com/croneter/binary_repo/raw/master/beta/repository.plexkodiconnectbeta/repository.plexkodiconnectbeta-1.0.2.zip) +[![stable version](https://img.shields.io/badge/stable_version-2.12.2-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.12.2-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 12bcf93f..963f2ca8 100644 --- a/addon.xml +++ b/addon.xml @@ -1,5 +1,5 @@ - + @@ -83,7 +83,23 @@ Natūralioji „Plex“ integracija į „Kodi“ Prijunkite „Kodi“ prie „Plex Medija Serverio“. Šiame papildinyje daroma prielaida, kad valdote visus savo vaizdo įrašus naudodami „Plex“ (ir nė vieno su „Kodi“). Galite prarasti jau saugomus „Kodi“ vaizdo įrašų ir muzikos duomenų bazių duomenis (kadangi šis papildinys juos tiesiogiai pakeičia). Naudokite savo pačių rizika! Naudokite savo pačių rizika - version 2.11.7: + version 2.12.2: +- version 2.12.0 and 2.12.1 for everyone +- Fix regression: sync dialog not showing up when it should + +version 2.12.1 (beta only): +- Fix PKC shutdown on Kodi profile switch +- Fix Kodi content type for images/photos +- Added support for custom set of safe characters when escaping paths (thanks @geropan) +- Revert "Don't allow spaces in devicename" +- Fix sync dialog showing in certain cases even though user opted out + +version 2.12.0 (beta only): +- Fix websocket threads; enable PKC background sync for all Plex Home users! +- Fix PKC incorrectly marking a video as unwatched if an external player has been used +- Update translations + +version 2.11.7: - Fix PKC crashing on devices running Microsoft UWP, e.g. XBox version 2.11.6: diff --git a/changelog.txt b/changelog.txt index 7f5149e0..b9eb38c3 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,19 @@ +version 2.12.2: +- version 2.12.0 and 2.12.1 for everyone +- Fix regression: sync dialog not showing up when it should + +version 2.12.1 (beta only): +- Fix PKC shutdown on Kodi profile switch +- Fix Kodi content type for images/photos +- Added support for custom set of safe characters when escaping paths (thanks @geropan) +- Revert "Don't allow spaces in devicename" +- Fix sync dialog showing in certain cases even though user opted out + +version 2.12.0 (beta only): +- Fix websocket threads; enable PKC background sync for all Plex Home users! +- Fix PKC incorrectly marking a video as unwatched if an external player has been used +- Update translations + version 2.11.7: - Fix PKC crashing on devices running Microsoft UWP, e.g. XBox diff --git a/resources/language/resource.language.cs_CZ/strings.po b/resources/language/resource.language.cs_CZ/strings.po index 1ffb6491..5f083f4e 100644 --- a/resources/language/resource.language.cs_CZ/strings.po +++ b/resources/language/resource.language.cs_CZ/strings.po @@ -1,7 +1,7 @@ # XBMC Media Center language file # Translators: # Croneter None , 2017 -# Michal Kuncl , 2019 +# Michal Kuncl , 2020 # msgid "" msgstr "" @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: croneter@gmail.com\n" "POT-Creation-Date: 2017-04-15 13:13+0000\n" "PO-Revision-Date: 2017-04-30 08:30+0000\n" -"Last-Translator: Michal Kuncl , 2019\n" +"Last-Translator: Michal Kuncl , 2020\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" @@ -262,7 +262,7 @@ msgstr "Kvalita videa při překódování" msgctxt "#30161" msgid "Auto-adjust transcoding quality (deactivate for Chromecast)" -msgstr "" +msgstr "Automaticky upravit kvalitu překódování (deaktivujte pro Chromecast)" msgctxt "#30165" msgid "Direct Play" @@ -705,13 +705,13 @@ msgstr "Server je online" # Plex notification when we need to transcode msgctxt "#33004" msgid "PMS enforced transcoding" -msgstr "" +msgstr "Překódování vynucené PMS" # Plex notification when we need to use direct streaming (instead of # transcoding) msgctxt "#33005" msgid "PMS enforced direct streaming" -msgstr "" +msgstr "Přímé streamování vynucené PMS" # Error notification msgctxt "#33009" @@ -1058,6 +1058,8 @@ msgctxt "#39056" msgid "" "Used by sync and when attempting Direct Paths. Restart Kodi on changes!" msgstr "" +"Použito při synchronizaci a při pokusu o přehrávání přes přímé cesty. " +"Restartujte Kodi po změně!" # PKC Settings, category name msgctxt "#39057" @@ -1264,7 +1266,7 @@ msgstr "Zadejte IP adresu nebo URL vašeho Plex Media Serveru. Např.:" msgctxt "#39217" msgid "Use HTTPS (SSL) connections? Answer should probably be yes." -msgstr "" +msgstr "Použít připojení HTTPS (SSL)? Odpověď by měla nejspíš ano." msgctxt "#39218" msgid "Error contacting PMS" @@ -1512,7 +1514,7 @@ msgstr "Používejte na vlastní nebezpečí" # If user gets prompted to choose between several subtitles to burn in msgctxt "#39706" msgid "Don't burn-in any subtitle" -msgstr "" +msgstr "Nevpalovat žádné titulky" # If user gets prompted to choose between several audio/subtitle tracks and # language is unknown diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 01c63f6f..380936d4 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -880,6 +880,11 @@ msgctxt "#39036" msgid "Escape special characters in path (e.g. space to %20)" msgstr "" +# PKC Settings - Customize Paths +msgctxt "#39090" +msgid "Safe characters for http(s), dav(s) and (s)ftp urls" +msgstr "" + # PKC Settings - Customize Paths msgctxt "#39037" msgid "Original Plex MOVIE path to replace:" diff --git a/resources/language/resource.language.es_ES/strings.po b/resources/language/resource.language.es_ES/strings.po index aa332347..820ec736 100644 --- a/resources/language/resource.language.es_ES/strings.po +++ b/resources/language/resource.language.es_ES/strings.po @@ -965,7 +965,12 @@ msgstr "" # PKC Settings - Customize Paths msgctxt "#39036" msgid "Escape special characters in path (e.g. space to %20)" -msgstr "Escapar caracteres especiales en la ruta (i.e. espacio a %20)" +msgstr "Escapar caracteres especiales en la ruta (p. ej. espacio a %20)" + +# PKC Settings - Customize Paths +msgctxt "#39090" +msgid "Safe characters for http(s), dav(s) and (s)ftp urls" +msgstr "Caracteres seguros para urls http(s), dav(s) y (s)ftp" # PKC Settings - Customize Paths msgctxt "#39037" diff --git a/resources/language/resource.language.fr_CA/strings.po b/resources/language/resource.language.fr_CA/strings.po index 2454c07e..fe7b8e8a 100644 --- a/resources/language/resource.language.fr_CA/strings.po +++ b/resources/language/resource.language.fr_CA/strings.po @@ -1,7 +1,8 @@ # XBMC Media Center language file # Translators: # Elixir59, 2019 -# Croneter None , 2019 +# Croneter None , 2020 +# Raph Mell, 2020 # msgid "" msgstr "" @@ -9,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: croneter@gmail.com\n" "POT-Creation-Date: 2017-04-15 13:13+0000\n" "PO-Revision-Date: 2017-04-30 08:30+0000\n" -"Last-Translator: Croneter None , 2019\n" +"Last-Translator: Raph Mell, 2020\n" "Language-Team: French (Canada) (https://www.transifex.com/croneter/teams/73837/fr_CA/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -68,8 +69,8 @@ msgstr "Activer les notifications pour la mise en cache d'images" msgctxt "#30009" msgid "Enable image caching during Kodi playback (restart Kodi!)" msgstr "" -"Activer la mise en cache des images pendant la lecture Kodi (redémarrez Kodi" -" !)" +"Activer la mise en cache des images pendant la lecture Kodi (redémarrez " +"Kodi!)" # PKC settings - Artwork msgctxt "#30010" @@ -122,7 +123,7 @@ msgstr "Recherche sur FanartTV terminée" # PKC settings sync options msgctxt "#30020" msgid "Sync Plex playlists (reboot Kodi!)" -msgstr "Synchroniser les playlists de Plex (redémarrez Kodi !)" +msgstr "Synchroniser les playlists de Plex (redémarrez Kodi!)" # PKC settings sync options msgctxt "#30021" @@ -224,7 +225,7 @@ msgstr "Pour les films" msgctxt "#30125" msgid "Done" -msgstr "L'action a été effectuée" +msgstr "Effectué" # Error popup message text msgctxt "#30128" @@ -265,7 +266,7 @@ msgstr "Qualité vidéo si un transcodage est nécessaire" msgctxt "#30161" msgid "Auto-adjust transcoding quality (deactivate for Chromecast)" -msgstr "" +msgstr "Auto-ajuster la qualité du transcodage (désactivé pour Chromecast)" msgctxt "#30165" msgid "Direct Play" @@ -277,7 +278,7 @@ msgstr "Transcodage" msgctxt "#30170" msgid "Recently Added TV Shows" -msgstr "Série(s) récemment ajoutée" +msgstr "Série(s) récemment ajoutée(s)" msgctxt "#30171" msgid "In Progress TV Shows" @@ -289,7 +290,7 @@ msgstr "Chaînes" msgctxt "#30174" msgid "Recently Added" -msgstr "Récemment ajoutée" +msgstr "Récemment ajouté" msgctxt "#30177" msgid "In Progress Movies" @@ -441,7 +442,7 @@ msgstr "Evaluer la chanson" # contextmenu entry msgctxt "#30408" msgid "Plex addon settings" -msgstr "Paramètres d’addon de plex" +msgstr "Paramètres d’extension de plex" # contextmenu entry msgctxt "#30409" @@ -465,7 +466,7 @@ msgid "" "Server?" msgstr "" "La suppression n'a pas pu être effectuée. La suppression est-elle activée " -"sur le serveur de médias Plex ?" +"sur le serveur de médias Plex?" # contextmenu entry msgctxt "#30415" @@ -551,13 +552,13 @@ msgstr "" msgctxt "#30514" msgid "Show all Plex extras instead of immediately playing trailers" msgstr "" -"Afficher tous les extras Plex au lieu de jouer immédiatement les bandes-" +"Afficher tous les extras Plex au lieu de lire immédiatement les bandes-" "annonces." # PKC Settings - Sync Options msgctxt "#30515" msgid "Maximum items to request from the server at once" -msgstr "Nombre maximum d'éléments concurrents à demander au serveur" +msgstr "Nombre maximum d'éléments à demander au serveur en même temps" # PKC Settings, category name msgctxt "#30516" @@ -577,7 +578,7 @@ msgstr "Activer les bandes-annonces Plex (nécessite PlexPass)" # PKC Settings - Playback msgctxt "#30519" msgid "Ask to play trailers" -msgstr "Demander de jouer les bandes-annonces" +msgstr "Demander de lire les bandes-annonces" # PKC Settings - Plex msgctxt "#30520" @@ -600,7 +601,7 @@ msgctxt "#30523" msgid "Also show sync progress for playstate and user data" msgstr "" "Afficher également la progression de la synchronisation pour l'état de " -"lecture et les données utilisateur" +"lecture et des données utilisateur" # PKC Settings - Sync Options msgctxt "#30524" @@ -645,7 +646,8 @@ msgstr "Générer un nouvel ID unique Plex (Ex: pour cloner Kodi)" # PKC Settings - Connection msgctxt "#30536" msgid "Users must log in every time Kodi restarts" -msgstr "Les utilisateurs doivent se connectent chaque fois que Kodi redémarre" +msgstr "" +"Les utilisateurs doivent se connecter à chaque fois que Kodi redémarre" # PKC Settings warning msgctxt "#30537" @@ -716,13 +718,13 @@ msgstr "Le serveur est en ligne" # Plex notification when we need to transcode msgctxt "#33004" msgid "PMS enforced transcoding" -msgstr "" +msgstr "PMS impose le transcodage" # Plex notification when we need to use direct streaming (instead of # transcoding) msgctxt "#33005" msgid "PMS enforced direct streaming" -msgstr "" +msgstr "PMS impose le streaming en direct" # Error notification msgctxt "#33009" @@ -751,7 +753,7 @@ msgstr "Choisissez le fichier de sous-titres" # Dialog before playback msgctxt "#33016" msgid "Play trailers?" -msgstr "Jouer les bandes-annonces ?" +msgstr "Lire les bandes-annonces?" # Error message msgctxt "#33032" @@ -772,23 +774,23 @@ msgid "" "Delete file(s) from Plex Server? This will also delete the file(s) from " "disk!" msgstr "" -"Supprimer les fichiers du serveur de Plex ? Cela va également supprimer " -"le(s) fichier(s) du disque !" +"Supprimer les fichiers du serveur de Plex? Cela va également supprimer le(s)" +" fichier(s) du disque!" # PKC Settings - Playback msgctxt "#39000" msgid "- Number of trailers to play before a movie" -msgstr "-Nombre de bandes-annonces à jouer avant un film" +msgstr "-Nombre de bandes-annonces à lire avant un film" # PKC Settings - Playback msgctxt "#39001" msgid "Boost audio when transcoding" -msgstr "Booster l'audio pendant le transcodage" +msgstr "Augmenter l'audio pendant le transcodage" # PKC Settings - Playback msgctxt "#39002" msgid "Burnt-in subtitle size" -msgstr "Taille des sous-titres incorporés" +msgstr "Taille des sous-titres incrustés" # PKC Settings - Sync msgctxt "#39003" @@ -798,27 +800,27 @@ msgstr "Nombre de processus de téléchargement simultanés" # PKC Settings - Plex msgctxt "#39004" msgid "Enable Plex Companion (restart Kodi!)" -msgstr "Activer le compagnon de Plex (redémarrage de Kodi !)" +msgstr "Activer le compagnon de Plex (redémarrer Kodi!)" # PKC Settings - Plex msgctxt "#39005" msgid "Plex Companion Port (change only if needed)" -msgstr "Plex Companion Port (change only if needed)" +msgstr "Plex Companion Port (changement uniquement si nécessaire)" # PKC Settings - Plex msgctxt "#39008" msgid "Plex Companion: Allows flinging media to Kodi through Plex" -msgstr "Plex Companion: Allows flinging media to Kodi through Plex" +msgstr "Plex Companion: Permet de lancer des médias vers Kodi via Plex" # Error message msgctxt "#39009" msgid "Could not login to plex.tv. Please try signing in again." -msgstr "Could not login to plex.tv. Please try signing in again." +msgstr "Impossible de se logguer à plex.tv. Veuillez essayer à nouveau" # Error message msgctxt "#39010" msgid "Problems connecting to plex.tv. Network or internet issue?" -msgstr "Problèmes de connexion à plex.tv. Problème de réseau ou d’internet ?" +msgstr "Problèmes de connexion à plex.tv. Problème réseau ou d’internet ?" # Error message msgctxt "#39011" @@ -838,12 +840,12 @@ msgstr "Pas encore autorisée pour le serveur Plex " # Error message msgctxt "#39014" msgid "Please sign in to plex.tv." -msgstr "S’il vous plaît connectez-vous à plex.tv." +msgstr "Veuillez vous connexter à plex.tv." # Error message msgctxt "#39015" msgid "Problems connecting to server. Pick another server?" -msgstr "Problèmes de connexion au serveur. Choisir un autre serveur ?" +msgstr "Problèmes de connexion au serveur. Choisir un autre serveur?" # Pop-up on initial sync msgctxt "#39016" @@ -851,7 +853,7 @@ 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 "" -"Désactiver la bibliothèque musicale de Plex ? (Il est fortement recommandé " +"Désactiver la bibliothèque musicale de Plex? (Il est fortement recommandé " "d’utiliser Plex musique seulement avec des chemins d’accès directs pour les " "grandes bibliothèques musicale. Sinon Kodi peut s’interrompre)" @@ -861,8 +863,8 @@ msgid "" "Would you now like to go to the plugin's settings to fine-tune PKC? You will" " need to RESTART Kodi!" msgstr "" -"Aimeriez-vous maintenant aller dans les paramètres du plugin pour affiner la" -" PKC ? Vous devrez redémarrer Kodi !" +"Voulez-vous maintenant aller dans les paramètres du plugin pour affiner " +"PKC? Vous devrez redémarrer Kodi!" # PKC Settings - Advanced msgctxt "#39018" @@ -891,12 +893,12 @@ msgstr "local" msgctxt "#39023" msgid "Failed to authenticate. Did you login to plex.tv?" msgstr "" -"Impossible d’effectuer l'authentification. Êtes-vous connectez à plex.tv ?" +"Impossible d’effectuer l'authentification. Êtes-vous connectez à plex.tv?" # PKC Settings - Plex msgctxt "#39025" msgid "Automatically log into plex.tv on startup" -msgstr "Vous connecter automatiquement plex.tv au démarrage" +msgstr "Connecter automatiquement plex.tv au démarrage" # PKC Settings - Sync msgctxt "#39026" @@ -911,11 +913,11 @@ msgid "" "shares need to use direct paths (e.g. smb://myNAS/mymovie.mkv or " "\\\\myNAS/mymovie.mkv)!" msgstr "" -"MISE EN GARDE ! Si vous choisissez le mode « Natif », vous pourriez perdre " -"accès à certaines fonctionnalités de Plex tels que : Plex trailers et les " +"MISE EN GARDE! Si vous choisissez le mode «Natif», vous pourriez perdre " +"accès à certaines fonctionnalités de Plex tels que: Plex trailers et les " "options de transcodage. Toutes les actions de Plex ont besoin d’utiliser des" " chemins d’accès directs (par exemple smb://myNAS/mymovie.mkv ou " -"\\myNAS/mymovie.mkv) !" +"\\myNAS/mymovie.mkv)!" # Pop-up on initial sync msgctxt "#39029" @@ -930,7 +932,7 @@ msgid "" " Kodi can't locate your content." msgstr "" "Ajouter des informations d’identification réseau pour permettre d’accéder à " -"votre contenu Kodi ? Remarque : Sauter cette étape peut générer un message " +"votre contenu Kodi? Remarque: Sauter cette étape peut générer un message " "lors de l’analyse initiale de votre contenu si Kodi ne peut pas localiser " "votre contenu." @@ -1009,8 +1011,9 @@ msgid "" "Go a step further and completely replace all original Plex library paths " "(/volume1/media) with custom SMB paths (smb://NAS/MyStuff)?" msgstr "" -"Go a step further and completely replace all original Plex library paths " -"(/volume1/media) with custom SMB paths (smb://NAS/MyStuff)?" +"Continuer et remplacer complètement tous les chemins d'accès originaux de la" +" bibliothèque Plex (/volume1/media) par des chemins d'accès SMB " +"personnalisés (smb://NAS/MyStuff)?" # Pop-up on initial sync msgctxt "#39044" @@ -1018,8 +1021,8 @@ msgid "" "Please enter your custom smb paths in the settings under \"Sync Options\" " "and then restart Kodi" msgstr "" -"Please enter your custom smb paths in the settings under \"Sync Options\" " -"and then restart Kodi" +"Veuillez entrer vos chemins smb personnalisés dans les paramètres sous " +"\"Sync Options\" et ensuite redémarrer Kodi" # PKC Settings - Customize Paths msgctxt "#39045" @@ -1044,7 +1047,7 @@ msgstr "On Deck: Append season- and episode-number SxxExx" # PKC Settings - Advanced msgctxt "#39049" msgid "Nothing works? Try a full reset!" -msgstr "Rien ne fonctionne ? Essayez une réinitialisation complète !" +msgstr "Rien ne fonctionne? Essayez une réinitialisation complète!" # PKC Settings - Connection msgctxt "#39050" @@ -1083,6 +1086,8 @@ msgctxt "#39056" msgid "" "Used by sync and when attempting Direct Paths. Restart Kodi on changes!" msgstr "" +"Utilisé pour la synchronisation et les chemins directs. Redémarrez Kodi " +"après les changements!" # PKC Settings, category name msgctxt "#39057" @@ -1106,7 +1111,7 @@ msgid "" "background?" msgstr "" "Vous souhaitez télécharger des illustrations supplémentaires de FanArtTV en " -"arrière-plan ?" +"arrière-plan?" # PKC Settings - Sync msgctxt "#39062" @@ -1121,22 +1126,22 @@ msgstr "Forcer le transcodage Hi10P" # PKC Settings - Appearance Tweaks msgctxt "#39064" msgid "Recently Added: Also show already watched episodes" -msgstr "Recently Added: Also show already watched episodes" +msgstr "Ajouté récemment: Montre également les épisodes déjà visionnés" # PKC Settings - Appearance Tweaks msgctxt "#39065" msgid "Force-refresh Kodi skin on stopping playback" -msgstr "Forcer le rafraîchissement du skin de Kodi va arrêter le playback." +msgstr "Forcer le rafraîchissement du skin lors de l'arrêt de la lecture" # PKC Settings - Appearance Tweaks msgctxt "#39066" msgid "Recently Added: Also show already watched movies" -msgstr "Récemment ajouté : Montrer aussi les films déjà visionnés" +msgstr "Récemment ajouté: Montrer aussi les films déjà visionnés" # PKC Settings - Connection msgctxt "#39067" msgid "Your current Plex Media Server:" -msgstr "Votre serveur Plex actuel :" +msgstr "Votre serveur Plex actuel: " # PKC Settings - Connection msgctxt "#39068" @@ -1146,17 +1151,17 @@ msgstr "Entrez manuellement l'adresse du Plex Media Server" # PKC Settings - Connection msgctxt "#39069" msgid "Current address:" -msgstr "Adresse actuelle :" +msgstr "Adresse actuelle: " # PKC Settings - Connection msgctxt "#39070" msgid "Current port:" -msgstr "Port actuel :" +msgstr "Port actuel: " # PKC Settings - Connection msgctxt "#39071" msgid "Current plex.tv status:" -msgstr "État actuel de plex.tv :" +msgstr "État actuel de plex.tv: " # PKC Settings, category name msgctxt "#39073" @@ -1174,8 +1179,8 @@ 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 "" -"Si vous utilisez plusieurs bibliothèques de Plex d’un type, par exemple « " -"Films enfants » et « Films parents », assurez-vous de consulter le Wiki : " +"Si vous utilisez plusieurs bibliothèques de Plex d’un type, par exemple " +"«Films enfants» et «Films parents», assurez-vous de consulter le Wiki: " "https://goo.gl/JFtQV9" # PKC Settings - Appearance Tweaks @@ -1186,7 +1191,7 @@ msgstr "Nombre maximum de vidéos à afficher dans les widgets" # PKC Settings - Plex msgctxt "#39078" msgid "Plex Companion Update Port (change only if needed)" -msgstr "Plex Companion Update Port (change only if needed)" +msgstr "Plex Companion Update Port (à modifier uniquement si nécessaire)" # Error message msgctxt "#39079" @@ -1194,8 +1199,8 @@ msgid "" "Plex Companion could not open the GDM port. Please change it in the PKC " "settings." msgstr "" -"Plex Companion could not open the GDM port. Please change it in the PKC " -"settings." +"Plex Companion n'a pas pu ouvrir le port GDM. Veuillez le modifier dans les " +"paramètres du PKC." # Pop-up on initial sync. # Check that next translations for Add-on Paths and Direct Paths are @@ -1205,8 +1210,9 @@ msgid "" "Use Add-on Paths (default, easy) or Direct Paths? Choose Add-on Paths if " "you're unsure. PKC will not work if your Direct Paths setup is wrong!" msgstr "" -"Utiliser les chemins de l'Add-on (par défaut, simple) ou les chemins Directs? \n" -"Choisissez les chemins de l'Add-on si vous n'êtes pas sûr. PKC ne fonctionnera pas si vos réglages chemins Directs ne sont pas corrects." +"Utiliser les chemins de l'Add-on (par défaut, simple) ou les chemins " +"Directs? Choisissez les chemins de l'Add-on si vous n'êtes pas sûr. PKC ne " +"fonctionnera pas si vos réglages chemins Directs ne sont pas corrects." # Button text for choosing PKC mode msgctxt "#39081" @@ -1250,24 +1256,24 @@ msgstr "Synchroniser la bibliothèque manuellement" msgctxt "#39205" msgid "Unable to run the sync, the add-on is not connected to a Plex server." msgstr "" -"Impossible de lancer la synchronisation, l’Add-on n’est pas connecté à un " -"serveur Plex." +"Impossible de lancer la synchronisation, l’extension n’est pas connecté à un" +" serveur Plex." msgctxt "#39206" msgid "" "Plex might lock your account if you fail to log in too many times. Proceed " "anyway?" msgstr "" -"Plex pourrait bloquer votre compte si vous ne parvenez pas à vous connecter " -"trop de fois. Continuer néanmoins ?" +"Plex pourrait bloquer votre compte si vous vous connecter trop de fois. " +"Poursuivre quand même ?" msgctxt "#39207" msgid "Resetting PMS connections, please wait" -msgstr "Resetting PMS connections, please wait" +msgstr "Réinitialisation des connexions PMS, veuillez patienter" msgctxt "#39208" msgid "Failed to reset PKC. Try to restart Kodi." -msgstr "Failed to reset PKC. Try to restart Kodi." +msgstr "Impossible de réinitialiser PKC. Essayez de redémarrer Kodi." # PKC Settings - Plex msgctxt "#39209" @@ -1276,7 +1282,7 @@ msgstr "Interrupteur de connexion à plex.tv (se connecter ou se déconnecter)" msgctxt "#39210" msgid "Not yet connected to Plex Server" -msgstr "Not yet connected to Plex Server" +msgstr "Pas encore connecté au serveur Plex" msgctxt "#39211" msgid "Watch later" @@ -1290,11 +1296,11 @@ msgstr "{0} hors-ligne" msgctxt "#39215" msgid "Enter your Plex Media Server's IP or URL, Examples are:" -msgstr "Enter your Plex Media Server's IP or URL, Examples are:" +msgstr "Entrez l'IP ou l'URL du Plex Media Server, exemples: " msgctxt "#39217" msgid "Use HTTPS (SSL) connections? Answer should probably be yes." -msgstr "" +msgstr "Utiliser le HTTPS (SSL) ? La réponse devrait être oui." msgctxt "#39218" msgid "Error contacting PMS" @@ -1302,7 +1308,7 @@ msgstr "Error contacting PMS" msgctxt "#39219" msgid "Abort (Yes) or save address anyway (No)?" -msgstr "Abort (Yes) or save address anyway (No)?" +msgstr "Abandonner (Oui) ou enregistrer quand même l'adresse (Non) ?" # String attached at the end to get something like "PMS Name is offline" msgctxt "#39220" @@ -1322,8 +1328,8 @@ msgid "" "Only look for missing fanart or refresh all fanart? The scan will take quite" " a while and happen in the background." msgstr "" -"Only look for missing fanart or refresh all fanart? The scan will take quite" -" a while and happen in the background." +"Cherchez seulement le fanart manquant ou rafraîchissez tous les fanart ? Le " +"balayage prendra un certain temps et se fera en arrière-plan." msgctxt "#39224" msgid "Refresh all" @@ -1331,7 +1337,7 @@ msgstr "Tout rafraîchir" msgctxt "#39225" msgid "Missing only" -msgstr "Missing only" +msgstr "Manquant seulement" # Message in the PKC settings if user has not logged in to plex.tv msgctxt "#39226" @@ -1369,20 +1375,20 @@ msgid "" "Running the image cache process can take some time. It will happen in the " "background. Are you sure you want continue?" msgstr "" -"Running the image cache process can take some time. It will happen in the " -"background. Are you sure you want continue?" +"L'exécution du processus de mise en cache des images peut prendre un certain" +" temps. Il se fera en arrière-plan. Êtes-vous sûr de vouloir continuer ?" msgctxt "#39251" msgid "Reset all existing cache data first?" -msgstr "Reset all existing cache data first?" +msgstr "Supprimer d'abord tout le cache des données ?" msgctxt "#39303" msgid "Problems trying to contact plex.tv. Try again later" -msgstr "Problèmes en essayant de contacter plex.tv. Réessayez plus tard" +msgstr "Problèmes en essayant de connecter plex.tv. Réessayez plus tard" msgctxt "#39304" msgid "Go to https://plex.tv/pin and enter the code: " -msgstr "Allez sur https://plex.tv/pin et entrez le code : " +msgstr "Allez sur https://plex.tv/pin et entrez le code: " msgctxt "#39305" msgid "Could not sign in to plex.tv. Try again later" @@ -1417,8 +1423,8 @@ msgid "" "Library sync thread has crashed. You should restart Kodi now. Please report " "this on the forum" msgstr "" -"Library sync thread has crashed. You should restart Kodi now. Please report " -"this on the forum" +"La synchronisation de la bibliothèque s'est interrompue. Vous devriez " +"redémarrer Kodi maintenant. Veuillez le signaler sur le forum" msgctxt "#39401" msgid "" @@ -1465,9 +1471,10 @@ msgid "" "returned ERRORS. Try lowering the number of sync download threads in the " "settings. Skipped some items for now." msgstr "" -"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." +"Le serveur Plex n'a pas aimé que vous demandiez autant de données d'un seul " +"coup et a renvoyé des ERREURS. Essayez de réduire le nombre de threads de " +"téléchargement de synchronisation dans les paramètres. Certains éléments ont" +" été ignorés pour l'instant." msgctxt "#39410" msgid "ERROR in library sync" @@ -1496,19 +1503,20 @@ msgstr "" msgctxt "#39601" msgid "Could not stop the database from running. Please try again later." -msgstr "Could not stop the database from running. Please try again later." +msgstr "" +"Impossible de stopper la base de donnée. Veuillez réessayer plus tard." msgctxt "#39603" msgid "" "Reset all PlexKodiConnect Addon settings? (this is usually NOT recommended " "and unnecessary!)" msgstr "" -"Réinitialiser tous les paramètres de PlexKodiConnect Addon ? (ceci n’est " -"généralement pas recommandée et inutiles !)" +"Réinitialiser tous les paramètres de PlexKodiConnect Addon? (ceci n’est " +"généralement pas recommandée et inutiles!)" msgctxt "#39700" msgid "Amazon Alexa (Voice Recognition)" -msgstr "Amazon Alexa (Voice Recognition)" +msgstr "Amazon Alexa (Reconnaissance vocale)" msgctxt "#39701" msgid "Activate Alexa" @@ -1516,7 +1524,7 @@ msgstr "Activer Alexa" msgctxt "#39702" msgid "Browse by folder" -msgstr "Parcourir en suivant les répertoires" +msgstr "Parcourir par dossier" # For use with addon.xml (PKC metadata for Kodi, e.g. description) # Addon Summary @@ -1548,7 +1556,7 @@ msgstr "A utiliser à vos propres risques" # If user gets prompted to choose between several subtitles to burn in msgctxt "#39706" msgid "Don't burn-in any subtitle" -msgstr "" +msgstr "Ne pas incruster de sous-titres" # If user gets prompted to choose between several audio/subtitle tracks and # language is unknown @@ -1613,7 +1621,7 @@ msgid "" " correct your file!" msgstr "" "Kodi ne peut pas traiter {0}. PKC ne fonctionnera pas correctement. Merci de" -" visiter {1} et de corriger votre fichier !" +" visiter {1} et de corriger votre fichier!" # Shown once on first installation to comply with the terms of use of # themoviedb.org @@ -1621,7 +1629,7 @@ msgctxt "#39717" msgid "PKC uses free additional artwork from www.themoviedb.org. Many thanks!" msgstr "" "PKC utilise gratuitement des artwork additionnels provenant de " -"www.themoviedb.org. Merci beaucoup !" +"www.themoviedb.org. Merci beaucoup!" # Shown during very first PKC setup only msgctxt "#39718" @@ -1630,7 +1638,7 @@ msgid "" "many versions of a media item you posses?" msgstr "" "Voulez-vous remplacer vos notes d'utilisateurs personnalisées avec un " -"indicateur du nombre de versions d'un média que vous possédez ?" +"indicateur du nombre de versions d'un média que vous possédez?" # In PKC Settings under Sync msgctxt "#39719" diff --git a/resources/language/resource.language.fr_FR/strings.po b/resources/language/resource.language.fr_FR/strings.po index c1774797..657a6d9a 100644 --- a/resources/language/resource.language.fr_FR/strings.po +++ b/resources/language/resource.language.fr_FR/strings.po @@ -1,11 +1,12 @@ # XBMC Media Center language file # Translators: -# Croneter None , 2017 # Nat Le Scouarnec , 2017 # scorpio686 , 2018 # Janek B. , 2019 # Elixir59, 2019 # julien benoist , 2019 +# Croneter None , 2020 +# Raph Mell, 2020 # msgid "" msgstr "" @@ -13,7 +14,7 @@ msgstr "" "Report-Msgid-Bugs-To: croneter@gmail.com\n" "POT-Creation-Date: 2017-04-15 13:13+0000\n" "PO-Revision-Date: 2017-04-30 08:30+0000\n" -"Last-Translator: julien benoist , 2019\n" +"Last-Translator: Raph Mell, 2020\n" "Language-Team: French (France) (https://www.transifex.com/croneter/teams/73837/fr_FR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -72,8 +73,8 @@ msgstr "Activer les notifications pour la mise en cache d'images" msgctxt "#30009" msgid "Enable image caching during Kodi playback (restart Kodi!)" msgstr "" -"Activer la mise en cache des images pendant la lecture Kodi (redémarrez Kodi" -" !)" +"Activer la mise en cache des images pendant la lecture Kodi (redémarrez " +"Kodi!)" # PKC settings - Artwork msgctxt "#30010" @@ -126,7 +127,7 @@ msgstr "Recherche sur FanartTV terminée" # PKC settings sync options msgctxt "#30020" msgid "Sync Plex playlists (reboot Kodi!)" -msgstr "Synchroniser les playlists de Plex (redémarrez Kodi !)" +msgstr "Synchroniser les playlists de Plex (redémarrez Kodi!)" # PKC settings sync options msgctxt "#30021" @@ -228,7 +229,7 @@ msgstr "Pour les films" msgctxt "#30125" msgid "Done" -msgstr "L'action a été effectuée" +msgstr "Effectué" # Error popup message text msgctxt "#30128" @@ -269,7 +270,7 @@ msgstr "Qualité vidéo si un transcodage est nécessaire" msgctxt "#30161" msgid "Auto-adjust transcoding quality (deactivate for Chromecast)" -msgstr "" +msgstr "Auto-ajuster la qualité du transcodage (désactivé pour Chromecast)" msgctxt "#30165" msgid "Direct Play" @@ -281,7 +282,7 @@ msgstr "Transcodage" msgctxt "#30170" msgid "Recently Added TV Shows" -msgstr "Série(s) récemment ajoutée" +msgstr "Série(s) récemment ajoutée(s)" msgctxt "#30171" msgid "In Progress TV Shows" @@ -293,7 +294,7 @@ msgstr "Chaînes" msgctxt "#30174" msgid "Recently Added" -msgstr "Récemment ajoutée" +msgstr "Récemment ajouté" msgctxt "#30177" msgid "In Progress Movies" @@ -445,7 +446,7 @@ msgstr "Evaluer la chanson" # contextmenu entry msgctxt "#30408" msgid "Plex addon settings" -msgstr "Paramètres d’addon de plex" +msgstr "Paramètres d’extension de plex" # contextmenu entry msgctxt "#30409" @@ -469,7 +470,7 @@ msgid "" "Server?" msgstr "" "La suppression n'a pas pu être effectuée. La suppression est-elle activée " -"sur le serveur de médias Plex ?" +"sur le serveur de médias Plex?" # contextmenu entry msgctxt "#30415" @@ -555,13 +556,13 @@ msgstr "" msgctxt "#30514" msgid "Show all Plex extras instead of immediately playing trailers" msgstr "" -"Afficher tous les extras Plex au lieu de jouer immédiatement les bandes-" +"Afficher tous les extras Plex au lieu de lire immédiatement les bandes-" "annonces." # PKC Settings - Sync Options msgctxt "#30515" msgid "Maximum items to request from the server at once" -msgstr "Nombre maximum d'éléments concurrents à demander au serveur" +msgstr "Nombre maximum d'éléments à demander au serveur en même temps" # PKC Settings, category name msgctxt "#30516" @@ -581,7 +582,7 @@ msgstr "Activer les bandes-annonces Plex (nécessite PlexPass)" # PKC Settings - Playback msgctxt "#30519" msgid "Ask to play trailers" -msgstr "Demander de jouer les bandes-annonces" +msgstr "Demander de lire les bandes-annonces" # PKC Settings - Plex msgctxt "#30520" @@ -604,7 +605,7 @@ msgctxt "#30523" msgid "Also show sync progress for playstate and user data" msgstr "" "Afficher également la progression de la synchronisation pour l'état de " -"lecture et les données utilisateur" +"lecture et des données utilisateur" # PKC Settings - Sync Options msgctxt "#30524" @@ -649,7 +650,8 @@ msgstr "Générer un nouvel ID unique Plex (Ex: pour cloner Kodi)" # PKC Settings - Connection msgctxt "#30536" msgid "Users must log in every time Kodi restarts" -msgstr "Les utilisateurs doivent se connectent chaque fois que Kodi redémarre" +msgstr "" +"Les utilisateurs doivent se connecter à chaque fois que Kodi redémarre" # PKC Settings warning msgctxt "#30537" @@ -720,13 +722,13 @@ msgstr "Le serveur est en ligne" # Plex notification when we need to transcode msgctxt "#33004" msgid "PMS enforced transcoding" -msgstr "" +msgstr "PMS impose le transcodage" # Plex notification when we need to use direct streaming (instead of # transcoding) msgctxt "#33005" msgid "PMS enforced direct streaming" -msgstr "" +msgstr "PMS impose le streaming en direct" # Error notification msgctxt "#33009" @@ -755,7 +757,7 @@ msgstr "Choisissez le fichier de sous-titres" # Dialog before playback msgctxt "#33016" msgid "Play trailers?" -msgstr "Jouer les bandes-annonces ?" +msgstr "Lire les bandes-annonces?" # Error message msgctxt "#33032" @@ -776,23 +778,23 @@ msgid "" "Delete file(s) from Plex Server? This will also delete the file(s) from " "disk!" msgstr "" -"Supprimer les fichiers du serveur de Plex ? Cela va également supprimer " -"le(s) fichier(s) du disque !" +"Supprimer les fichiers du serveur de Plex? Cela va également supprimer le(s)" +" fichier(s) du disque!" # PKC Settings - Playback msgctxt "#39000" msgid "- Number of trailers to play before a movie" -msgstr "-Nombre de bandes-annonces à jouer avant un film" +msgstr "-Nombre de bandes-annonces à lire avant un film" # PKC Settings - Playback msgctxt "#39001" msgid "Boost audio when transcoding" -msgstr "Booster l'audio pendant le transcodage" +msgstr "Augmenter l'audio pendant le transcodage" # PKC Settings - Playback msgctxt "#39002" msgid "Burnt-in subtitle size" -msgstr "Taille des sous-titres incorporés" +msgstr "Taille des sous-titres incrustés" # PKC Settings - Sync msgctxt "#39003" @@ -802,27 +804,27 @@ msgstr "Nombre de processus de téléchargement simultanés" # PKC Settings - Plex msgctxt "#39004" msgid "Enable Plex Companion (restart Kodi!)" -msgstr "Activer le compagnon de Plex (redémarrage de Kodi !)" +msgstr "Activer le compagnon de Plex (redémarrer Kodi!)" # PKC Settings - Plex msgctxt "#39005" msgid "Plex Companion Port (change only if needed)" -msgstr "Plex Companion Port (change only if needed)" +msgstr "Plex Companion Port (changement uniquement si nécessaire)" # PKC Settings - Plex msgctxt "#39008" msgid "Plex Companion: Allows flinging media to Kodi through Plex" -msgstr "Plex Companion: Allows flinging media to Kodi through Plex" +msgstr "Plex Companion: Permet de lancer des médias vers Kodi via Plex" # Error message msgctxt "#39009" msgid "Could not login to plex.tv. Please try signing in again." -msgstr "Could not login to plex.tv. Please try signing in again." +msgstr "Impossible de se logguer à plex.tv. Veuillez essayer à nouveau" # Error message msgctxt "#39010" msgid "Problems connecting to plex.tv. Network or internet issue?" -msgstr "Problèmes de connexion à plex.tv. Problème de réseau ou d’internet ?" +msgstr "Problèmes de connexion à plex.tv. Problème réseau ou d’internet ?" # Error message msgctxt "#39011" @@ -842,7 +844,7 @@ msgstr "Pas encore autorisée pour le serveur Plex " # Error message msgctxt "#39014" msgid "Please sign in to plex.tv." -msgstr "S’il vous plaît connectez-vous à plex.tv." +msgstr "Veuillez vous connexter à plex.tv." # Error message msgctxt "#39015" @@ -855,7 +857,7 @@ 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 "" -"Désactiver la bibliothèque musicale de Plex ? (Il est fortement recommandé " +"Désactiver la bibliothèque musicale de Plex? (Il est fortement recommandé " "d’utiliser Plex musique seulement avec des chemins d’accès directs pour les " "grandes bibliothèques musicale. Sinon Kodi peut s’interrompre)" @@ -865,8 +867,8 @@ msgid "" "Would you now like to go to the plugin's settings to fine-tune PKC? You will" " need to RESTART Kodi!" msgstr "" -"Aimeriez-vous maintenant aller dans les paramètres du plugin pour affiner la" -" PKC ? Vous devrez redémarrer Kodi !" +"Voulez-vous maintenant aller dans les paramètres du plugin pour affiner " +"PKC? Vous devrez redémarrer Kodi!" # PKC Settings - Advanced msgctxt "#39018" @@ -895,12 +897,12 @@ msgstr "local" msgctxt "#39023" msgid "Failed to authenticate. Did you login to plex.tv?" msgstr "" -"Impossible d’effectuer l'authentification. Êtes-vous connectez à plex.tv ?" +"Impossible d’effectuer l'authentification. Êtes-vous connectez à plex.tv?" # PKC Settings - Plex msgctxt "#39025" msgid "Automatically log into plex.tv on startup" -msgstr "Vous connecter automatiquement plex.tv au démarrage" +msgstr "Connecter automatiquement plex.tv au démarrage" # PKC Settings - Sync msgctxt "#39026" @@ -915,11 +917,11 @@ msgid "" "shares need to use direct paths (e.g. smb://myNAS/mymovie.mkv or " "\\\\myNAS/mymovie.mkv)!" msgstr "" -"MISE EN GARDE ! Si vous choisissez le mode « Natif », vous pourriez perdre " -"accès à certaines fonctionnalités de Plex tels que : Plex trailers et les " +"MISE EN GARDE! Si vous choisissez le mode «Natif», vous pourriez perdre " +"accès à certaines fonctionnalités de Plex tels que: Plex trailers et les " "options de transcodage. Toutes les actions de Plex ont besoin d’utiliser des" " chemins d’accès directs (par exemple smb://myNAS/mymovie.mkv ou " -"\\myNAS/mymovie.mkv) !" +"\\myNAS/mymovie.mkv)!" # Pop-up on initial sync msgctxt "#39029" @@ -934,7 +936,7 @@ msgid "" " Kodi can't locate your content." msgstr "" "Ajouter des informations d’identification réseau pour permettre d’accéder à " -"votre contenu Kodi ? Remarque : Sauter cette étape peut générer un message " +"votre contenu Kodi? Remarque: Sauter cette étape peut générer un message " "lors de l’analyse initiale de votre contenu si Kodi ne peut pas localiser " "votre contenu." @@ -1013,8 +1015,9 @@ msgid "" "Go a step further and completely replace all original Plex library paths " "(/volume1/media) with custom SMB paths (smb://NAS/MyStuff)?" msgstr "" -"Go a step further and completely replace all original Plex library paths " -"(/volume1/media) with custom SMB paths (smb://NAS/MyStuff)?" +"Continuer et remplacer complètement tous les chemins d'accès originaux de la" +" bibliothèque Plex (/volume1/media) par des chemins d'accès SMB " +"personnalisés (smb://NAS/MyStuff)?" # Pop-up on initial sync msgctxt "#39044" @@ -1022,8 +1025,8 @@ msgid "" "Please enter your custom smb paths in the settings under \"Sync Options\" " "and then restart Kodi" msgstr "" -"Please enter your custom smb paths in the settings under \"Sync Options\" " -"and then restart Kodi" +"Veuillez entrer vos chemins smb personnalisés dans les paramètres sous " +"\"Sync Options\" et ensuite redémarrer Kodi" # PKC Settings - Customize Paths msgctxt "#39045" @@ -1048,7 +1051,7 @@ msgstr "On Deck: Append season- and episode-number SxxExx" # PKC Settings - Advanced msgctxt "#39049" msgid "Nothing works? Try a full reset!" -msgstr "Rien ne fonctionne ? Essayez une réinitialisation complète !" +msgstr "Rien ne fonctionne? Essayez une réinitialisation complète!" # PKC Settings - Connection msgctxt "#39050" @@ -1087,6 +1090,8 @@ msgctxt "#39056" msgid "" "Used by sync and when attempting Direct Paths. Restart Kodi on changes!" msgstr "" +"Utilisé pour la synchronisation et les chemins directs. Redémarrez Kodi " +"après les changements!" # PKC Settings, category name msgctxt "#39057" @@ -1110,7 +1115,7 @@ msgid "" "background?" msgstr "" "Vous souhaitez télécharger des illustrations supplémentaires de FanArtTV en " -"arrière-plan ?" +"arrière-plan?" # PKC Settings - Sync msgctxt "#39062" @@ -1125,22 +1130,22 @@ msgstr "Forcer le transcodage Hi10P" # PKC Settings - Appearance Tweaks msgctxt "#39064" msgid "Recently Added: Also show already watched episodes" -msgstr "Recently Added: Also show already watched episodes" +msgstr "Ajouté récemment: Montre également les épisodes déjà visionnés" # PKC Settings - Appearance Tweaks msgctxt "#39065" msgid "Force-refresh Kodi skin on stopping playback" -msgstr "Forcer le rafraîchissement du skin de Kodi va arrêter le playback." +msgstr "Forcer le rafraîchissement du skin lors de l'arrêt de la lecture" # PKC Settings - Appearance Tweaks msgctxt "#39066" msgid "Recently Added: Also show already watched movies" -msgstr "Récemment ajouté : Montrer aussi les films déjà visionnés" +msgstr "Récemment ajouté: Montrer aussi les films déjà visionnés" # PKC Settings - Connection msgctxt "#39067" msgid "Your current Plex Media Server:" -msgstr "Votre serveur Plex actuel :" +msgstr "Votre serveur Plex actuel: " # PKC Settings - Connection msgctxt "#39068" @@ -1150,17 +1155,17 @@ msgstr "Entrez manuellement l'adresse du Plex Media Server" # PKC Settings - Connection msgctxt "#39069" msgid "Current address:" -msgstr "Adresse actuelle :" +msgstr "Adresse actuelle: " # PKC Settings - Connection msgctxt "#39070" msgid "Current port:" -msgstr "Port actuel :" +msgstr "Port actuel: " # PKC Settings - Connection msgctxt "#39071" msgid "Current plex.tv status:" -msgstr "État actuel de plex.tv :" +msgstr "État actuel de plex.tv: " # PKC Settings, category name msgctxt "#39073" @@ -1178,8 +1183,8 @@ 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 "" -"Si vous utilisez plusieurs bibliothèques de Plex d’un type, par exemple « " -"Films enfants » et « Films parents », assurez-vous de consulter le Wiki : " +"Si vous utilisez plusieurs bibliothèques de Plex d’un type, par exemple " +"«Films enfants» et «Films parents», assurez-vous de consulter le Wiki: " "https://goo.gl/JFtQV9" # PKC Settings - Appearance Tweaks @@ -1190,7 +1195,7 @@ msgstr "Nombre maximum de vidéos à afficher dans les widgets" # PKC Settings - Plex msgctxt "#39078" msgid "Plex Companion Update Port (change only if needed)" -msgstr "Plex Companion Update Port (change only if needed)" +msgstr "Plex Companion Update Port (à modifier uniquement si nécessaire)" # Error message msgctxt "#39079" @@ -1198,8 +1203,8 @@ msgid "" "Plex Companion could not open the GDM port. Please change it in the PKC " "settings." msgstr "" -"Plex Companion could not open the GDM port. Please change it in the PKC " -"settings." +"Plex Companion n'a pas pu ouvrir le port GDM. Veuillez le modifier dans les " +"paramètres du PKC." # Pop-up on initial sync. # Check that next translations for Add-on Paths and Direct Paths are @@ -1209,8 +1214,9 @@ msgid "" "Use Add-on Paths (default, easy) or Direct Paths? Choose Add-on Paths if " "you're unsure. PKC will not work if your Direct Paths setup is wrong!" msgstr "" -"Utiliser les chemins de l'Add-on (par défaut, simple) ou les chemins Directs? \n" -"Choisissez les chemins de l'Add-on si vous n'êtes pas sûr. PKC ne fonctionnera pas si vos réglages chemins Directs ne sont pas corrects." +"Utiliser les chemins de l'Add-on (par défaut, simple) ou les chemins " +"Directs? Choisissez les chemins de l'Add-on si vous n'êtes pas sûr. PKC ne " +"fonctionnera pas si vos réglages chemins Directs ne sont pas corrects." # Button text for choosing PKC mode msgctxt "#39081" @@ -1254,24 +1260,24 @@ msgstr "Synchroniser la bibliothèque manuellement" msgctxt "#39205" msgid "Unable to run the sync, the add-on is not connected to a Plex server." msgstr "" -"Impossible de lancer la synchronisation, l’Add-on n’est pas connecté à un " -"serveur Plex." +"Impossible de lancer la synchronisation, l’extension n’est pas connecté à un" +" serveur Plex." msgctxt "#39206" msgid "" "Plex might lock your account if you fail to log in too many times. Proceed " "anyway?" msgstr "" -"Plex pourrait bloquer votre compte si vous ne parvenez pas à vous connecter " -"trop de fois. Continuer néanmoins ?" +"Plex pourrait bloquer votre compte si vous vous connecter trop de fois. " +"Poursuivre quand même ?" msgctxt "#39207" msgid "Resetting PMS connections, please wait" -msgstr "Resetting PMS connections, please wait" +msgstr "Réinitialisation des connexions PMS, veuillez patienter" msgctxt "#39208" msgid "Failed to reset PKC. Try to restart Kodi." -msgstr "Failed to reset PKC. Try to restart Kodi." +msgstr "Impossible de réinitialiser PKC. Essayez de redémarrer Kodi." # PKC Settings - Plex msgctxt "#39209" @@ -1280,7 +1286,7 @@ msgstr "Interrupteur de connexion à plex.tv (se connecter ou se déconnecter)" msgctxt "#39210" msgid "Not yet connected to Plex Server" -msgstr "Not yet connected to Plex Server" +msgstr "Pas encore connecté au serveur Plex" msgctxt "#39211" msgid "Watch later" @@ -1294,11 +1300,11 @@ msgstr "{0} hors-ligne" msgctxt "#39215" msgid "Enter your Plex Media Server's IP or URL, Examples are:" -msgstr "Enter your Plex Media Server's IP or URL, Examples are:" +msgstr "Entrez l'IP ou l'URL du Plex Media Server, exemples: " msgctxt "#39217" msgid "Use HTTPS (SSL) connections? Answer should probably be yes." -msgstr "" +msgstr "Utiliser le HTTPS (SSL) ? La réponse devrait être oui." msgctxt "#39218" msgid "Error contacting PMS" @@ -1306,7 +1312,7 @@ msgstr "Error contacting PMS" msgctxt "#39219" msgid "Abort (Yes) or save address anyway (No)?" -msgstr "Abort (Yes) or save address anyway (No)?" +msgstr "Abandonner (Oui) ou enregistrer quand même l'adresse (Non) ?" # String attached at the end to get something like "PMS Name is offline" msgctxt "#39220" @@ -1326,8 +1332,8 @@ msgid "" "Only look for missing fanart or refresh all fanart? The scan will take quite" " a while and happen in the background." msgstr "" -"Only look for missing fanart or refresh all fanart? The scan will take quite" -" a while and happen in the background." +"Cherchez seulement le fanart manquant ou rafraîchissez tous les fanart ? Le " +"balayage prendra un certain temps et se fera en arrière-plan." msgctxt "#39224" msgid "Refresh all" @@ -1335,7 +1341,7 @@ msgstr "Tout rafraîchir" msgctxt "#39225" msgid "Missing only" -msgstr "Missing only" +msgstr "Manquant seulement" # Message in the PKC settings if user has not logged in to plex.tv msgctxt "#39226" @@ -1373,20 +1379,20 @@ msgid "" "Running the image cache process can take some time. It will happen in the " "background. Are you sure you want continue?" msgstr "" -"Running the image cache process can take some time. It will happen in the " -"background. Are you sure you want continue?" +"L'exécution du processus de mise en cache des images peut prendre un certain" +" temps. Il se fera en arrière-plan. Êtes-vous sûr de vouloir continuer ?" msgctxt "#39251" msgid "Reset all existing cache data first?" -msgstr "Reset all existing cache data first?" +msgstr "Supprimer d'abord tout le cache des données ?" msgctxt "#39303" msgid "Problems trying to contact plex.tv. Try again later" -msgstr "Problèmes en essayant de contacter plex.tv. Réessayez plus tard" +msgstr "Problèmes en essayant de connecter plex.tv. Réessayez plus tard" msgctxt "#39304" msgid "Go to https://plex.tv/pin and enter the code: " -msgstr "Allez sur https://plex.tv/pin et entrez le code : " +msgstr "Allez sur https://plex.tv/pin et entrez le code: " msgctxt "#39305" msgid "Could not sign in to plex.tv. Try again later" @@ -1421,8 +1427,8 @@ msgid "" "Library sync thread has crashed. You should restart Kodi now. Please report " "this on the forum" msgstr "" -"Library sync thread has crashed. You should restart Kodi now. Please report " -"this on the forum" +"La synchronisation de la bibliothèque s'est interrompue. Vous devriez " +"redémarrer Kodi maintenant. Veuillez le signaler sur le forum" msgctxt "#39401" msgid "" @@ -1469,9 +1475,10 @@ msgid "" "returned ERRORS. Try lowering the number of sync download threads in the " "settings. Skipped some items for now." msgstr "" -"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." +"Le serveur Plex n'a pas aimé que vous demandiez autant de données d'un seul " +"coup et a renvoyé des ERREURS. Essayez de réduire le nombre de threads de " +"téléchargement de synchronisation dans les paramètres. Certains éléments ont" +" été ignorés pour l'instant." msgctxt "#39410" msgid "ERROR in library sync" @@ -1500,19 +1507,20 @@ msgstr "" msgctxt "#39601" msgid "Could not stop the database from running. Please try again later." -msgstr "Could not stop the database from running. Please try again later." +msgstr "" +"Impossible de stopper la base de donnée. Veuillez réessayer plus tard." msgctxt "#39603" msgid "" "Reset all PlexKodiConnect Addon settings? (this is usually NOT recommended " "and unnecessary!)" msgstr "" -"Réinitialiser tous les paramètres de PlexKodiConnect Addon ? (ceci n’est " -"généralement pas recommandée et inutiles !)" +"Réinitialiser tous les paramètres de PlexKodiConnect Addon? (ceci n’est " +"généralement pas recommandée et inutiles!)" msgctxt "#39700" msgid "Amazon Alexa (Voice Recognition)" -msgstr "Amazon Alexa (Voice Recognition)" +msgstr "Amazon Alexa (Reconnaissance vocale)" msgctxt "#39701" msgid "Activate Alexa" @@ -1520,7 +1528,7 @@ msgstr "Activer Alexa" msgctxt "#39702" msgid "Browse by folder" -msgstr "Parcourir en suivant les répertoires" +msgstr "Parcourir par dossier" # For use with addon.xml (PKC metadata for Kodi, e.g. description) # Addon Summary @@ -1552,7 +1560,7 @@ msgstr "A utiliser à vos propres risques" # If user gets prompted to choose between several subtitles to burn in msgctxt "#39706" msgid "Don't burn-in any subtitle" -msgstr "" +msgstr "Ne pas incruster de sous-titres" # If user gets prompted to choose between several audio/subtitle tracks and # language is unknown @@ -1617,7 +1625,7 @@ msgid "" " correct your file!" msgstr "" "Kodi ne peut pas traiter {0}. PKC ne fonctionnera pas correctement. Merci de" -" visiter {1} et de corriger votre fichier !" +" visiter {1} et de corriger votre fichier!" # Shown once on first installation to comply with the terms of use of # themoviedb.org @@ -1625,7 +1633,7 @@ msgctxt "#39717" msgid "PKC uses free additional artwork from www.themoviedb.org. Many thanks!" msgstr "" "PKC utilise gratuitement des artwork additionnels provenant de " -"www.themoviedb.org. Merci beaucoup !" +"www.themoviedb.org. Merci beaucoup!" # Shown during very first PKC setup only msgctxt "#39718" @@ -1634,7 +1642,7 @@ msgid "" "many versions of a media item you posses?" msgstr "" "Voulez-vous remplacer vos notes d'utilisateurs personnalisées avec un " -"indicateur du nombre de versions d'un média que vous possédez ?" +"indicateur du nombre de versions d'un média que vous possédez?" # In PKC Settings under Sync msgctxt "#39719" diff --git a/resources/language/resource.language.hu_HU/strings.po b/resources/language/resource.language.hu_HU/strings.po index f17c0d44..ce515630 100644 --- a/resources/language/resource.language.hu_HU/strings.po +++ b/resources/language/resource.language.hu_HU/strings.po @@ -1543,7 +1543,7 @@ msgstr "Csak saját felelősségre használja" # If user gets prompted to choose between several subtitles to burn in msgctxt "#39706" msgid "Don't burn-in any subtitle" -msgstr "" +msgstr "Ne égessen be feliratot" # If user gets prompted to choose between several audio/subtitle tracks and # language is unknown diff --git a/resources/language/resource.language.lv_LV/strings.po b/resources/language/resource.language.lv_LV/strings.po index 19084f28..fa561faa 100644 --- a/resources/language/resource.language.lv_LV/strings.po +++ b/resources/language/resource.language.lv_LV/strings.po @@ -1,6 +1,6 @@ # XBMC Media Center language file # Translators: -# marcisbe , 2019 +# marcisbe , 2020 # msgid "" msgstr "" @@ -8,7 +8,7 @@ msgstr "" "Report-Msgid-Bugs-To: croneter@gmail.com\n" "POT-Creation-Date: 2017-04-15 13:13+0000\n" "PO-Revision-Date: 2017-04-30 08:30+0000\n" -"Last-Translator: marcisbe , 2019\n" +"Last-Translator: marcisbe , 2020\n" "Language-Team: Latvian (Latvia) (https://www.transifex.com/croneter/teams/73837/lv_LV/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -260,7 +260,7 @@ msgstr "Video Kvalitāte, ja nepieciešama Pārkodēšana" msgctxt "#30161" msgid "Auto-adjust transcoding quality (deactivate for Chromecast)" -msgstr "" +msgstr "Automātiski pielāgot transkodēšanas kvalitāti (deaktivizē Chromecast)" msgctxt "#30165" msgid "Direct Play" diff --git a/resources/lib/app/__init__.py b/resources/lib/app/__init__.py index c224d7b9..1788d304 100644 --- a/resources/lib/app/__init__.py +++ b/resources/lib/app/__init__.py @@ -30,3 +30,11 @@ def init(entrypoint=False): SYNC = Sync(entrypoint) if not entrypoint: PLAYSTATE = PlayState() + +def reload(): + """ + Reload PKC settings from xml file, e.g. on user-switch + """ + global APP, SYNC + APP.reload() + SYNC.reload() diff --git a/resources/lib/app/application.py b/resources/lib/app/application.py index 5738913d..79608afd 100644 --- a/resources/lib/app/application.py +++ b/resources/lib/app/application.py @@ -22,7 +22,7 @@ class App(object): if entrypoint: self.load_entrypoint() else: - self.load() + self.reload() # Quit PKC? self.stop_pkc = False # This will suspend the main thread also @@ -134,7 +134,7 @@ class App(object): thread.suspend(block=True) else: break - return xbmc.abortRequested + return self.monitor.abortRequested() def resume_threads(self): """ @@ -144,7 +144,7 @@ class App(object): LOG.debug('Resuming threads: %s', self.threads) for thread in self.threads: thread.resume() - return xbmc.abortRequested + return self.monitor.abortRequested() def stop_threads(self, block=True): """ @@ -160,7 +160,7 @@ class App(object): if xbmc.sleep(100): return True - def load(self): + def reload(self): # Number of items to fetch and display in widgets self.fetch_pms_item_number = int(utils.settings('fetch_pms_item_number')) # Hack to force Kodi widget for "in progress" to show up if it was empty diff --git a/resources/lib/app/libsync.py b/resources/lib/app/libsync.py index d018752b..c49db72b 100644 --- a/resources/lib/app/libsync.py +++ b/resources/lib/app/libsync.py @@ -42,6 +42,7 @@ class Sync(object): self.remapSMBphotoNew = None # Escape path? self.escape_path = None + self.escape_path_safe_chars = None # Shall we replace custom user ratings with the number of versions available? self.indicate_media_versions = None # Will sync movie trailer differently: either play trailer directly or show @@ -80,6 +81,7 @@ class Sync(object): # List of section_ids we're synching to Kodi - will be automatically # re-built if sections are set a-new self.section_ids = set() + self.enable_alexa = None self.load() @@ -99,7 +101,6 @@ class Sync(object): self.artwork = utils.settings('usePlexArtwork') == 'true' self.replace_smb_path = utils.settings('replaceSMB') == 'true' self.remap_path = utils.settings('remapSMB') == 'true' - self.force_transcode_pix = utils.settings('force_transcode_pix') == 'true' self.remapSMBmovieOrg = remove_trailing_slash(utils.settings('remapSMBmovieOrg')) self.remapSMBmovieNew = remove_trailing_slash(utils.settings('remapSMBmovieNew')) self.remapSMBtvOrg = remove_trailing_slash(utils.settings('remapSMBtvOrg')) @@ -109,15 +110,26 @@ class Sync(object): self.remapSMBphotoOrg = remove_trailing_slash(utils.settings('remapSMBphotoOrg')) self.remapSMBphotoNew = remove_trailing_slash(utils.settings('remapSMBphotoNew')) self.escape_path = utils.settings('escapePath') == 'true' + self.escape_path_safe_chars = utils.settings('escapePathSafeChars').encode('utf-8') self.indicate_media_versions = utils.settings('indicate_media_versions') == "true" - self.show_extras_instead_of_playing_trailer = utils.settings('showExtrasInsteadOfTrailer') == 'true' self.sync_specific_plex_playlists = utils.settings('syncSpecificPlexPlaylists') == 'true' self.sync_specific_kodi_playlists = utils.settings('syncSpecificKodiPlaylists') == 'true' - self.sync_dialog = utils.settings('dbSyncIndicator') == 'true' - - self.full_sync_intervall = int(utils.settings('fullSyncInterval')) * 60 - self.background_sync_disabled = utils.settings('enableBackgroundSync') == 'false' - self.backgroundsync_saftymargin = int(utils.settings('backgroundsync_saftyMargin')) self.sync_thread_number = int(utils.settings('syncThreadNumber')) + self.reload() + + def reload(self): + """ + Any settings unrelated to syncs to the Kodi database - can thus be + safely reset without a Kodi reboot + """ + self.background_sync_disabled = utils.settings('enableBackgroundSync') == 'false' + self.enable_alexa = utils.settings('enable_alexa') == 'true' + self.sync_dialog = utils.settings('dbSyncIndicator') == 'true' + self.full_sync_intervall = int(utils.settings('fullSyncInterval')) * 60 + self.backgroundsync_saftymargin = int(utils.settings('backgroundsync_saftyMargin')) self.image_sync_notifications = utils.settings('imageSyncNotifications') == 'true' + + self.force_transcode_pix = utils.settings('force_transcode_pix') == 'true' + # Trailers in Kodi DB will remain UNTIL DB is reset! + self.show_extras_instead_of_playing_trailer = utils.settings('showExtrasInsteadOfTrailer') == 'true' diff --git a/resources/lib/backgroundthread.py b/resources/lib/backgroundthread.py index c74fa83e..831b3274 100644 --- a/resources/lib/backgroundthread.py +++ b/resources/lib/backgroundthread.py @@ -8,8 +8,6 @@ import Queue import heapq from collections import deque -import xbmc - from . import utils, app, variables as v WORKER_COUNT = 3 @@ -305,7 +303,7 @@ class Task(object): self._canceled = True def should_cancel(self): - return self._canceled or xbmc.abortRequested + return self._canceled or app.APP.monitor.abortRequested() def isValid(self): return not self.finished and not self._canceled @@ -370,7 +368,7 @@ class BackgroundWorker(object): return self def aborted(self): - return self._abort or xbmc.abortRequested + return self._abort or app.APP.monitor.abortRequested() def start(self): if self._thread and self._thread.isAlive(): @@ -452,7 +450,7 @@ class BackgroundThreader: return self def aborted(self): - return self._abort or xbmc.abortRequested + return self._abort or app.APP.monitor.abortRequested() def shutdown(self, block=True): self.abort() diff --git a/resources/lib/entrypoint.py b/resources/lib/entrypoint.py index ee25c2b1..7983f5f0 100644 --- a/resources/lib/entrypoint.py +++ b/resources/lib/entrypoint.py @@ -66,8 +66,7 @@ def _wait_for_auth(): xbmcplugin.endOfDirectory(int(argv[1]), False) if failed WARNING - this will potentially stall the shutdown of Kodi since we cannot - poll xbmc.Monitor().abortRequested() or waitForAbort() or - xbmc.abortRequested + poll xbmc.Monitor().abortRequested() or waitForAbort() """ counter = 0 startupdelay = int(utils.settings('startupDelay') or 0) @@ -119,16 +118,15 @@ def show_main_menu(content_type=None): # we need to figure out which items to show in each listing. for # now we just only show picture nodes in the picture library video # nodes in the video library and all nodes in any other window - if node_type == 'photos' and content_type == 'image': + if node_type == v.CONTENT_TYPE_PHOTO and content_type == 'image': directory_item(label, path) - elif node_type in ('artists', - 'albums', - 'songs') and content_type == 'audio': + elif node_type in (v.CONTENT_TYPE_ARTIST, + v.CONTENT_TYPE_ALBUM, + v.CONTENT_TYPE_SONG) and content_type == 'audio': directory_item(label, path) - elif node_type in ('movies', - 'tvshows', - 'homevideos', - 'musicvideos') and content_type == 'video': + elif node_type in (v.CONTENT_TYPE_MOVIE, + v.CONTENT_TYPE_SHOW, + v.CONTENT_TYPE_MUSICVIDEO) and content_type == 'video': directory_item(label, path) elif content_type is None: # To let the user pick this node as a WIDGET (content_type is None) diff --git a/resources/lib/kodimonitor.py b/resources/lib/kodimonitor.py index ad7749b5..9c196f03 100644 --- a/resources/lib/kodimonitor.py +++ b/resources/lib/kodimonitor.py @@ -409,9 +409,15 @@ def _record_playstate(status, ended): return totaltime = float(timing.kodi_time_to_millis(status['totaltime'])) / 1000 if status['external_player']: - _external_player_correct_plex_watch_count(db_item) - progress = 0.0 - time = 0.0 + # video has either been entirely watched - or not. + # "ended" won't work, need a workaround + ended = _external_player_correct_plex_watch_count(db_item) + if ended: + progress = 0.99 + time = v.IGNORE_SECONDS_AT_START + 1 + else: + progress = 0.0 + time = 0.0 else: if ended: progress = 0.99 @@ -479,6 +485,7 @@ def _external_player_correct_plex_watch_count(db_item): playcount = kodidb.get_playcount(db_item['kodi_fileid']) LOG.debug('External player detected. Playcount: %s', playcount) PF.scrobble(db_item['plex_id'], 'watched' if playcount else 'unwatched') + return True if playcount else False def _clean_file_table(): diff --git a/resources/lib/migration.py b/resources/lib/migration.py index 1aac3c11..e99e3210 100644 --- a/resources/lib/migration.py +++ b/resources/lib/migration.py @@ -90,4 +90,13 @@ def check_migration(): from .playlists import remove_synced_playlists remove_synced_playlists() + if not utils.compare_version(last_migration, '2.12.2'): + LOG.info('Migrating to version 2.12.1') + # Sign user out to make sure he needs to sign in again + utils.settings('username', value='') + utils.settings('userid', value='') + utils.settings('plex_restricteduser', value='') + utils.settings('accessToken', value='') + utils.settings('plexAvatar', value='') + utils.settings('last_migrated_PKC_version', value=v.ADDON_VERSION) diff --git a/resources/lib/plex_api/media.py b/resources/lib/plex_api/media.py index 7d091fa4..60353d7c 100644 --- a/resources/lib/plex_api/media.py +++ b/resources/lib/plex_api/media.py @@ -319,7 +319,7 @@ class Media(object): if path.startswith('\\\\'): path = 'smb:' + path.replace('\\', '/') if app.SYNC.escape_path: - path = utils.escape_path(path) + path = utils.escape_path(path, app.SYNC.escape_path_safe_chars) if (app.SYNC.path_verified and not force_check) or omit_check: return path diff --git a/resources/lib/service_entry.py b/resources/lib/service_entry.py index ac65266e..dc732ff1 100644 --- a/resources/lib/service_entry.py +++ b/resources/lib/service_entry.py @@ -37,6 +37,10 @@ class Service(object): def __init__(self): self._init_done = False + # Detect switch of Kodi profile - a second instance of PKC is started + self.profile = xbmc.translatePath('special://profile') + utils.window('plex_kodi_profilepath', value=self.profile) + # Kodi Version supported by PKC? try: v.database_paths() @@ -100,9 +104,11 @@ class Service(object): self.auth_running = False self._init_done = True - @staticmethod - def should_cancel(): - return xbmc.abortRequested or app.APP.stop_pkc + def should_cancel(self): + if self.profile != utils.window('plex_kodi_profilepath'): + LOG.info('Kodi profile switch detected, shutting this instance down') + return True + return app.APP.monitor.abortRequested() or app.APP.stop_pkc def on_connection_check(self, result): """ @@ -248,6 +254,7 @@ class Service(object): icon='{plex}', time=2000, sound=False) + app.reload() app.APP.resume_threads() self.auth_running = False @@ -535,8 +542,7 @@ class Service(object): self.sync.start() self.plexcompanion.start() self.playqueue.start() - if utils.settings('enable_alexa') == 'true': - self.alexa.start() + self.alexa.start() xbmc.sleep(100) @@ -550,31 +556,14 @@ class Service(object): library_sync.clear_window_vars() # Will block until threads have quit app.APP.stop_threads() + # CLEANUP + # Kodi's xbmc.Monitor() stalls + # delete xbmc.Player() just to be sure + del app.APP.monitor + del app.APP.player def start(): - # Safety net - Kody starts PKC twice upon first installation! - if utils.window('plex_service_started') == 'true': - LOG.info('Another service.py instance is already running - shutting ' - 'it down now') - # Telling the other Python instance of PKC to shut down now - i = 0 - while utils.window('plexkodiconnect.command'): - xbmc.sleep(20) - i += 1 - if i > 300: - LOG.error('Could not tell other PKC instance to shut down') - return - utils.window('plexkodiconnect.command', value='EXIT-PKC') - # Telling successful - now wait for actual shut-down - i = 0 - while utils.window('plex_service_started'): - xbmc.sleep(20) - i += 1 - if i > 300: - LOG.error('Could not shut down other PKC instance') - return - utils.window('plex_service_started', value='true') DELAY = int(utils.settings('startupDelay')) LOG.info("Delaying Plex startup by: %s sec...", DELAY) if DELAY and xbmc.Monitor().waitForAbort(DELAY): @@ -582,5 +571,4 @@ def start(): LOG.info("Abort requested while waiting. PKC not started.") else: Service().ServiceEntryPoint() - utils.window('plex_service_started', clear=True) LOG.info("======== STOP PlexKodiConnect service ========") diff --git a/resources/lib/sync.py b/resources/lib/sync.py index 6ed3eae7..562363cb 100644 --- a/resources/lib/sync.py +++ b/resources/lib/sync.py @@ -35,7 +35,9 @@ class Sync(backgroundthread.KillableThread): """ if app.SYNC.run_lib_scan in ("full", "repair"): LOG.info('Full library scan requested, starting') - self.start_library_sync(show_dialog=True, + show_dialog = True if app.SYNC.run_lib_scan == 'repair' \ + else None + self.start_library_sync(show_dialog=show_dialog, repair=app.SYNC.run_lib_scan == 'repair', block=True) if (not self.sync_successful and diff --git a/resources/lib/utils.py b/resources/lib/utils.py index 72127168..5f14e5ea 100644 --- a/resources/lib/utils.py +++ b/resources/lib/utils.py @@ -56,7 +56,7 @@ REGEX_MUSICPATH = re.compile(r'''^\^(.+)\$$''') REGEX_PLEX_ID_FROM_URL = re.compile(r'''metadata%2F(\d+)''') SAFE_URL_CHARACTERS = "%/:=&?~#+!$,;'@()*[]".encode('utf-8') - +HTTP_DAV_FTP = re.compile(r'(http(s)?|dav(s)?|(s)?ftp)://((.+):(.+)@)?([\w\.]+)(:([\d]+))?/') def garbageCollect(): gc.collect(2) @@ -385,7 +385,7 @@ def urlparse(url, scheme='', allow_fragments=True): return _urlparse.urlparse(url, scheme, allow_fragments) -def escape_path(path): +def escape_path(path, safe_url_char=SAFE_URL_CHARACTERS): """ Uses urllib.quote to escape to escape path [unicode]. See here for the reasoning whether a character is safe or not and whether or not it should @@ -396,8 +396,34 @@ def escape_path(path): you in trouble (e.g. '@') Returns the escaped path as unicode """ - return urllib.quote(path.encode('utf-8'), - safe=SAFE_URL_CHARACTERS).decode('utf-8') + is_http_dav_ftp = HTTP_DAV_FTP.match(path) + if is_http_dav_ftp: + # If path seems to be a http(s), dav(s) or (s)ftp url, the escape path will be constructed + # using RegExp and using safe_url_char as safe characters not to be escaped + protocol = is_http_dav_ftp.group(1) + user = is_http_dav_ftp.group(6) + psswd = is_http_dav_ftp.group(7) + if user and psswd: + user = urllib.quote(user.encode('utf-8'), safe=safe_url_char).decode('utf-8') + psswd = urllib.quote(psswd.encode('utf-8'), safe=safe_url_char).decode('utf-8') + host = is_http_dav_ftp.group(8) + port = is_http_dav_ftp.group(10) + url_path = path.replace(is_http_dav_ftp.group(), '', 1) + if url_path: + url_path = urllib.quote(path.replace(is_http_dav_ftp.group(), '', 1).encode('utf-8'), + safe=safe_url_char).decode('utf-8') + return protocol + \ + u'://' + \ + (user + u':' + psswd + u'@' if (user and psswd) else u'') + \ + host + \ + (u':' + port if port else u'') + \ + u'/' + \ + (url_path if url_path else u'') + else: + # If paths does not seem to be a http(s), dav(s) or (s)ftp url (e.g. plugin://) + # escape path as before + return urllib.quote(path.encode('utf-8'), + safe=SAFE_URL_CHARACTERS).decode('utf-8') def quote(s, safe='/'): diff --git a/resources/lib/variables.py b/resources/lib/variables.py index a21926fe..b6fd59e8 100644 --- a/resources/lib/variables.py +++ b/resources/lib/variables.py @@ -92,7 +92,7 @@ DEVICENAME = DEVICENAME.replace("?", "") DEVICENAME = DEVICENAME.replace('|', "") DEVICENAME = DEVICENAME.replace('(', "") DEVICENAME = DEVICENAME.replace(')', "") -DEVICENAME = DEVICENAME.replace(' ', "") +DEVICENAME = DEVICENAME.strip() COMPANION_PORT = int(_ADDON.getSetting('companionPort')) @@ -238,11 +238,12 @@ CONTENT_TYPE_ALBUM = 'albums' CONTENT_TYPE_SONG = 'songs' CONTENT_TYPE_CLIP = 'movies' CONTENT_TYPE_SET = 'sets' -CONTENT_TYPE_PHOTO = 'photos' +CONTENT_TYPE_PHOTO = 'images' CONTENT_TYPE_GENRE = 'genres' CONTENT_TYPE_VIDEO = 'videos' CONTENT_TYPE_PLAYLIST = 'playlists' CONTENT_TYPE_FILE = 'files' +CONTENT_TYPE_MUSICVIDEO = 'musicvideos' KODI_VIDEOTYPES = ( diff --git a/resources/lib/websocket_client.py b/resources/lib/websocket_client.py index 8ff767b1..b0468617 100644 --- a/resources/lib/websocket_client.py +++ b/resources/lib/websocket_client.py @@ -22,6 +22,11 @@ class WebSocket(backgroundthread.KillableThread): self.sleeptime = 0.0 super(WebSocket, self).__init__() + def close_websocket(self): + if self.ws is not None: + self.ws.close() + self.ws = None + def process(self, opcode, message): raise NotImplementedError @@ -62,9 +67,7 @@ class WebSocket(backgroundthread.KillableThread): try: self._run() finally: - # Close websocket connection on shutdown - if self.ws is not None: - self.ws.close() + self.close_websocket() app.APP.deregister_thread(self) LOG.info("##===---- %s Stopped ----===##", self.__class__.__name__) @@ -73,9 +76,7 @@ class WebSocket(backgroundthread.KillableThread): # In the event the server goes offline if self.should_suspend(): # Set in service.py - if self.ws is not None: - self.ws.close() - self.ws = None + self.close_websocket() if self.wait_while_suspended(): # Abort was requested while waiting. We should exit return @@ -132,9 +133,7 @@ class WebSocket(backgroundthread.KillableThread): import traceback LOG.error("%s: Traceback:\n%s", self.__class__.__name__, traceback.format_exc()) - if self.ws is not None: - self.ws.close() - self.ws = None + self.close_websocket() class PMS_Websocket(WebSocket): @@ -143,9 +142,13 @@ class PMS_Websocket(WebSocket): """ def should_suspend(self): """ - Returns True if the thread is suspended + Returns True if the thread is suspended. """ - return self._suspended or app.SYNC.background_sync_disabled + suspend = self._suspended or app.SYNC.background_sync_disabled + if suspend: + # This thread needs to clear the Event() _is_not_suspended itself! + self.suspend() + return suspend def getUri(self): if self.redirect_uri: @@ -159,9 +162,8 @@ class PMS_Websocket(WebSocket): else: server = "ws%s" % server[4:] uri = "%s/:/websockets/notifications" % server - # Need to use plex.tv token, if any. NOT user token - if app.ACCOUNT.plex_token: - uri += '?X-Plex-Token=%s' % app.ACCOUNT.plex_token + if app.ACCOUNT.pms_token: + uri += '?X-Plex-Token=%s' % app.ACCOUNT.pms_token sslopt = {} if v.KODIVERSION == 17 and utils.settings('sslverify') == "false": sslopt["cert_reqs"] = CERT_NONE @@ -210,9 +212,14 @@ class Alexa_Websocket(WebSocket): """ Overwrite method since we need to check for plex token """ - return (self._suspended or - not app.ACCOUNT.plex_token or - app.ACCOUNT.restricted_user) + suspend = self._suspended or \ + not app.SYNC.enable_alexa or \ + app.ACCOUNT.restricted_user or \ + not app.ACCOUNT.plex_token + if suspend: + # This thread needs to clear the Event() _is_not_suspended itself! + self.suspend() + return suspend def getUri(self): if self.redirect_uri: diff --git a/resources/lib/windows/kodigui.py b/resources/lib/windows/kodigui.py index 7dc455ed..ee55335d 100644 --- a/resources/lib/windows/kodigui.py +++ b/resources/lib/windows/kodigui.py @@ -737,7 +737,7 @@ class MultiWindow(object): return mw def _open(self): - while not xbmc.abortRequested and not self._allClosed: + while not xbmc.Monitor().abortRequested() and not self._allClosed: self._setupCurrent(self._next) self._current.modal() @@ -922,9 +922,9 @@ class PropertyTimer(): self._callback() def _wait(self): - while not xbmc.abortRequested and time.time() < self._endTime: + while not xbmc.Monitor().abortRequested() and time.time() < self._endTime: app.APP.monitor.waitForAbort(0.1) - if xbmc.abortRequested: + if xbmc.Monitor().abortRequested(): return if self._endTime == 0: return diff --git a/resources/settings.xml b/resources/settings.xml index 6e3de284..a8b0cb76 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -101,6 +101,7 @@ +