diff --git a/screensaver.digitalclock/README.md b/screensaver.digitalclock/README.md index c3f3c6092..84fcd0a16 100644 --- a/screensaver.digitalclock/README.md +++ b/screensaver.digitalclock/README.md @@ -87,60 +87,33 @@ __Extra Options__ - Enable RSS (The screensaver will show the same RSS Kodi shows, so make sure it's properly configured and enabled in Kodi) This screensaver is configured for every skin separately since it has to use Fonts defined by the skin! - -Skin developers have an option to use script-screensaver-digitalclock-custom.xml in their skins 1080i, 720p... folder. -They should provide and maintain that xml file with their skin! -Screensaver will check for skin folders in this order: 1080i, 720p, 21x9, 16x9, 4x3Hirez. -If no script-screensaver-digitalclock-custom.xml is found screensaver will look for an appropriate xml file within screensavers folder. If there is no appropriate xml file it will use skin.default.xml -If the skin is not on the list screensaver will use default font names from confluence (It might not look pretty but it will work with any skin): - -- Ace2 -- Adonic -- Aeon Nox 5 +If the skin is not on the list below screensaver will use default font names from confluence (It might not look pretty but it will work with any skin). +List of supported skins (If the skin is in the official repository it will be supported): - Aeon Nox Silvo -- Aeon Tajo -- Aeon MQ5 -- Aeon MQ5 -- Aeon MQ6 -- Aeon MQ8 +- Aeon MQ7 (Matrix mod) +- Aeon MQ8 (Matrix mod, Nexus mod) +- Aeon MQ9 - Amber - AppTV -- Arctic: Zephyr -- Arctic: Zephyr 2 -- Aura -- Bello 6 -- Bello 7 -- Black Glass Nova -- Box -- Chroma +- Arctic: Zephyr - Reloaded +- Bello 8 - Confluence -- Embuary-Leia +- EllipsisUI +- Embuary-Matrix - Eminence.2 - Estouchy - Estuary - Ftv -- (Fuse)neue -- Grid -- Horizon -- Madnox - Metropolis -- Mimic -- Nebula -- Omni +- Mimic-LR - OSMC - Pellucid -- Phenomenal - Quartz - Rapier -- Retouched -- Reestuarized -- Revolve -- Titan -- Transparency +- TetradUI - Unity -- Xperience1080 If your skin is not on the list, and you would like it to be - send me a message. diff --git a/screensaver.digitalclock/addon.xml b/screensaver.digitalclock/addon.xml index 3933f4c9e..7faace042 100644 --- a/screensaver.digitalclock/addon.xml +++ b/screensaver.digitalclock/addon.xml @@ -1,7 +1,7 @@ @@ -14,6 +14,7 @@ https://forum.kodi.tv/showthread.php?tid=237338 https://github.com/vdb86/screensaver.digitalclock + 6.0.5 (2024-1-2) - Added support for AeonMQ7 matrix mod, AeonMQ8 mods, for AeonMQ9, Arctic Zephyr - Reloaded, EllipsisUI, Embuary-Matrix, Mimic-LR, TetradUI, updated OSMC skin - thanks Ch1llb0 and petroid! Improved handling of no hour zero padding, added 2 more time formats, added support for turning off screen via CEC 6.0.4 (2023-8-16) - Translations and a visual improvement for ftv skin - thanks Kevin! 6.0.3 (2021-9-7) - Bug fixes and translations 6.0.2 (2021-1-20) - Got skin.helper.backgrounds to work again diff --git a/screensaver.digitalclock/default.py b/screensaver.digitalclock/default.py index 2dd6454a8..ca57a8401 100644 --- a/screensaver.digitalclock/default.py +++ b/screensaver.digitalclock/default.py @@ -74,6 +74,8 @@ def onInit(self): self.logoutcounter = 0 self.switch = 0 self.iconswitch = 0 + self.turnedoff = 0 + self.ceccounter = 0 self.movementtype = int(Addon.getSetting('movementtype')) self.movementspeed = int(Addon.getSetting('movementspeed')) self.stayinplace = int(Addon.getSetting('stayinplace')) @@ -134,6 +136,9 @@ def onInit(self): self.logout = Addon.getSetting('logout') self.logoutplaying = Addon.getSetting('logoutplaying') self.logouttime = int(Addon.getSetting('logouttime')) + self.cecoff = Addon.getSetting('cecoff') + self.cecoffplaying = Addon.getSetting('cecoffplaying') + self.cecofftime = int(Addon.getSetting('cecofftime')) self.rss = Addon.getSetting('rss') self.monitor = xbmc.Monitor() @@ -335,8 +340,8 @@ def onInit(self): self.icon_control.setImage(os.path.join(path,"resources/weathericons/",self.weathericonset[int(self.weathericonf)],xbmc.getInfoLabel('Window(Weather).Property(Current.FanartCode)')) + ".png") #setting up the time format - self.timeformat = ['%H','%I','%I','%#I','%#I','%-I','%-I'] - if self.timef == '2' or self.timef == '4' or self.timef == '6': + self.timeformat = ['%H','%I','%I','%#H','%#I','%#I','%-H','%-I','%-I'] + if self.timef == '2' or self.timef == '5' or self.timef == '8': self.ampm_control.setVisible(True) self.time = self.timeformat[int(self.timef)] @@ -450,18 +455,25 @@ def DisplayTime(self): if self.logout == 'true' and xbmc.getCondVisibility('Window.Previous(loginscreen)') == 0: self.logoutcounter +=1 if self.logoutcounter >= (self.multiplier*self.logouttime*60): - if xbmc.getCondVisibility('Player.HasMedia') == 1: - if self.logoutplaying == 'true': - xbmc.executebuiltin("PlayerControl(Stop)") - xbmc.log('Digital Clock Screensaver %s: Stopping media' %Addonversion) - xbmc.executebuiltin("System.LogOff") - xbmc.log('Digital Clock Screensaver %s: Logging out' %Addonversion) - self.logoutcounter = 0 - else: - xbmc.executebuiltin("System.LogOff") - xbmc.log('Digital Clock Screensaver %s: Logging out' %Addonversion) - self.logoutcounter = 0 - + if self.logoutplaying == 'true' and xbmc.getCondVisibility('Player.HasMedia') == 1: + xbmc.executebuiltin("PlayerControl(Stop)") + xbmc.log('Digital Clock Screensaver %s: Stopping media' %Addonversion) + xbmc.executebuiltin("System.LogOff") + xbmc.log('Digital Clock Screensaver %s: Logging out' %Addonversion) + self.logoutcounter = 0 + + #Turn off screen via CEC + if self.cecoff == 'true' and self.turnedoff == 0: + self.ceccounter +=1 + if self.ceccounter >= (self.multiplier*self.cecofftime*60): + if self.cecoffplaying == 'true' and xbmc.getCondVisibility('Player.HasMedia') == 1: + xbmc.executebuiltin("PlayerControl(Stop)") + xbmc.log('Digital Clock Screensaver %s: Stopping media' %Addonversion) + xbmc.executebuiltin("CECStandby") + xbmc.log('Digital Clock Screensaver %s: Turning screen off via CEC' %Addonversion) + self.ceccounter = 0 + self.turnedoff = 1 + self.monitor.waitForAbort(self.waittimer) def setCTR(self): @@ -506,7 +518,10 @@ def setCTR(self): self.shadowcolor = self.rtr + self.shadowcolor[2:] def Display(self): - self.hour_control.setLabel(datetime.now().strftime(self.time)) + if int(self.timef) == 4 or int(self.timef) == 5 or int(self.timef) == 7 or int(self.timef) == 8 or ((int(self.timef) == 3 or int(self.timef) == 6) and int(datetime.now().strftime(self.time))<10): + self.hour_control.setLabel(' ' + datetime.now().strftime(self.time)) + else: + self.hour_control.setLabel(datetime.now().strftime(self.time)) self.colon_control.setLabel(" : ") self.minute_control.setLabel(datetime.now().strftime("%M")) self.ampm_control.setLabel(datetime.now().strftime("%p")) diff --git a/screensaver.digitalclock/resources/language/resource.language.af_za/strings.po b/screensaver.digitalclock/resources/language/resource.language.af_za/strings.po index b3ed8d0ab..2b6ab4f90 100644 --- a/screensaver.digitalclock/resources/language/resource.language.af_za/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.af_za/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.am_et/strings.po b/screensaver.digitalclock/resources/language/resource.language.am_et/strings.po index 2e4ff5e1b..fc5e927fa 100644 --- a/screensaver.digitalclock/resources/language/resource.language.am_et/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.am_et/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -655,6 +664,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32310" #~ msgid "Hour color" #~ msgstr "የ ሰአት ቀለም" diff --git a/screensaver.digitalclock/resources/language/resource.language.ar_sa/strings.po b/screensaver.digitalclock/resources/language/resource.language.ar_sa/strings.po index 5e2ec6c7d..5b2d86e5f 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ar_sa/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ar_sa/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.az_az/strings.po b/screensaver.digitalclock/resources/language/resource.language.az_az/strings.po index 43e0f2db1..fde0994bd 100644 --- a/screensaver.digitalclock/resources/language/resource.language.az_az/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.az_az/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.be_by/strings.po b/screensaver.digitalclock/resources/language/resource.language.be_by/strings.po index 5b78173a6..e0f627d64 100644 --- a/screensaver.digitalclock/resources/language/resource.language.be_by/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.be_by/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-21 04:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.bg_bg/strings.po b/screensaver.digitalclock/resources/language/resource.language.bg_bg/strings.po index 8e8e76868..a4611e956 100644 --- a/screensaver.digitalclock/resources/language/resource.language.bg_bg/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.bg_bg/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.bs_ba/strings.po b/screensaver.digitalclock/resources/language/resource.language.bs_ba/strings.po index dd747f9b9..d9ac30198 100644 --- a/screensaver.digitalclock/resources/language/resource.language.bs_ba/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.bs_ba/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.ca_es/strings.po b/screensaver.digitalclock/resources/language/resource.language.ca_es/strings.po index 5cf7f0e61..ad6ac4110 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ca_es/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ca_es/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.cs_cz/strings.po b/screensaver.digitalclock/resources/language/resource.language.cs_cz/strings.po index a85e4ae24..0d57bb045 100644 --- a/screensaver.digitalclock/resources/language/resource.language.cs_cz/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.cs_cz/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-09 13:42+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.cy_gb/strings.po b/screensaver.digitalclock/resources/language/resource.language.cy_gb/strings.po index 2922ff5c8..cc5e5daa8 100644 --- a/screensaver.digitalclock/resources/language/resource.language.cy_gb/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.cy_gb/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.da_dk/strings.po b/screensaver.digitalclock/resources/language/resource.language.da_dk/strings.po index fa01e9c27..fc05bc653 100644 --- a/screensaver.digitalclock/resources/language/resource.language.da_dk/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.da_dk/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-02-14 09:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.de_de/strings.po b/screensaver.digitalclock/resources/language/resource.language.de_de/strings.po index 099695a47..b6e50ed0d 100644 --- a/screensaver.digitalclock/resources/language/resource.language.de_de/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.de_de/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2023-02-06 14:15+0000\n" "Last-Translator: Demian \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "Jahr: yy(2-stelliges Jahr) yyyy(4-stelliges Jahr)" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "RSS aktivieren" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "RSS muss in Kodi richtig konfiguriert und aktiviert sein!" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.el_gr/strings.po b/screensaver.digitalclock/resources/language/resource.language.el_gr/strings.po index 2cca5f667..17fad3a48 100644 --- a/screensaver.digitalclock/resources/language/resource.language.el_gr/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.el_gr/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.en_au/strings.po b/screensaver.digitalclock/resources/language/resource.language.en_au/strings.po index 716f936e7..c9b1a5e07 100644 --- a/screensaver.digitalclock/resources/language/resource.language.en_au/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.en_au/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-09 13:42+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.en_gb/strings.po b/screensaver.digitalclock/resources/language/resource.language.en_gb/strings.po index 391bd1404..a4080cb2f 100644 --- a/screensaver.digitalclock/resources/language/resource.language.en_gb/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.en_gb/strings.po @@ -206,7 +206,17 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" -#empty strings from id 32174 to 32199 +#empty strings from id 32174 to 32179 + +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + +#empty strings from id 32182 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -691,3 +701,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" \ No newline at end of file diff --git a/screensaver.digitalclock/resources/language/resource.language.en_nz/strings.po b/screensaver.digitalclock/resources/language/resource.language.en_nz/strings.po index f0d487a12..dd01d35f6 100644 --- a/screensaver.digitalclock/resources/language/resource.language.en_nz/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.en_nz/strings.po @@ -185,6 +185,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Enable additional information" @@ -635,6 +644,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Colours" diff --git a/screensaver.digitalclock/resources/language/resource.language.en_us/strings.po b/screensaver.digitalclock/resources/language/resource.language.en_us/strings.po index 8acfd5bc3..ffe01bed9 100644 --- a/screensaver.digitalclock/resources/language/resource.language.en_us/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.en_us/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-10 15:00+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.eo/strings.po b/screensaver.digitalclock/resources/language/resource.language.eo/strings.po index fc7287fc1..906f5a606 100644 --- a/screensaver.digitalclock/resources/language/resource.language.eo/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.eo/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.es_ar/strings.po b/screensaver.digitalclock/resources/language/resource.language.es_ar/strings.po index 4eb557e31..fc05fa12b 100644 --- a/screensaver.digitalclock/resources/language/resource.language.es_ar/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.es_ar/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.es_es/strings.po b/screensaver.digitalclock/resources/language/resource.language.es_es/strings.po index ac15eefd2..b599dccee 100644 --- a/screensaver.digitalclock/resources/language/resource.language.es_es/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.es_es/strings.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: KODI Addons\n" "Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2023-02-06 14:15+0000\n" +"PO-Revision-Date: 2024-01-12 00:13+0000\n" "Last-Translator: José Antonio Alvarado \n" "Language-Team: Spanish (Spain) \n" "Language: es_es\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.15.2\n" +"X-Generator: Weblate 5.3\n" msgctxt "Addon Summary" msgid "Digital clock screensaver" @@ -186,6 +186,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "Año: yy(año en 2 dígitos) yyyy(año en 4 dígitos)" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "17:14 Sin relleno de ceros para la hora en Windows" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "17:14 Sin relleno de ceros para la hora en Unix" + msgctxt "#32200" msgid "Enable additional information" msgstr "Activar información adicional" @@ -622,7 +631,7 @@ msgstr "Cerrar sesión" msgctxt "#32611" msgid "Stop now playing media" -msgstr "Detener la reproducción multimedia" +msgstr "Detener ahora la reproducción multimedia" msgctxt "#32612" msgid "Log out after (minutes)" @@ -636,6 +645,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "¡RSS debe estar correctamente configurado en Kodi y activado!" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "Apagar la pantalla a través de CEC" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "Detener ahora la reproducción multimedia" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "Apagar la pantalla a través de CEC después de (minutos)" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Colores" diff --git a/screensaver.digitalclock/resources/language/resource.language.es_mx/strings.po b/screensaver.digitalclock/resources/language/resource.language.es_mx/strings.po index abb2ef9b0..dbb40e228 100644 --- a/screensaver.digitalclock/resources/language/resource.language.es_mx/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.es_mx/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.et_ee/strings.po b/screensaver.digitalclock/resources/language/resource.language.et_ee/strings.po index 7c212bbc9..cb910b6ad 100644 --- a/screensaver.digitalclock/resources/language/resource.language.et_ee/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.et_ee/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-10 15:00+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.eu_es/strings.po b/screensaver.digitalclock/resources/language/resource.language.eu_es/strings.po index 3bd1d39b0..427b36f11 100644 --- a/screensaver.digitalclock/resources/language/resource.language.eu_es/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.eu_es/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.fa_af/strings.po b/screensaver.digitalclock/resources/language/resource.language.fa_af/strings.po index 4dd2657ad..24ebfde47 100644 --- a/screensaver.digitalclock/resources/language/resource.language.fa_af/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.fa_af/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-09 13:42+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.fa_ir/strings.po b/screensaver.digitalclock/resources/language/resource.language.fa_ir/strings.po index 9de183818..db1445e13 100644 --- a/screensaver.digitalclock/resources/language/resource.language.fa_ir/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.fa_ir/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.fi_fi/strings.po b/screensaver.digitalclock/resources/language/resource.language.fi_fi/strings.po index 0b59b22bd..4edb420e8 100644 --- a/screensaver.digitalclock/resources/language/resource.language.fi_fi/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.fi_fi/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-08-20 09:14+0000\n" "Last-Translator: Oskari Lavinto \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.fo_fo/strings.po b/screensaver.digitalclock/resources/language/resource.language.fo_fo/strings.po index 7551564fd..0ed1e6593 100644 --- a/screensaver.digitalclock/resources/language/resource.language.fo_fo/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.fo_fo/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-10 15:00+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.fr_ca/strings.po b/screensaver.digitalclock/resources/language/resource.language.fr_ca/strings.po index a1160601c..20fd23cf5 100644 --- a/screensaver.digitalclock/resources/language/resource.language.fr_ca/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.fr_ca/strings.po @@ -185,6 +185,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Activer les informations supplémentaires" @@ -635,6 +644,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Couleurs" diff --git a/screensaver.digitalclock/resources/language/resource.language.fr_fr/strings.po b/screensaver.digitalclock/resources/language/resource.language.fr_fr/strings.po index 8db6ca647..3b344eff3 100644 --- a/screensaver.digitalclock/resources/language/resource.language.fr_fr/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.fr_fr/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2023-02-25 18:17+0000\n" "Last-Translator: skypichat \n" @@ -186,6 +186,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Activer les infos supplémentaires" @@ -636,6 +645,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Couleurs" diff --git a/screensaver.digitalclock/resources/language/resource.language.gl_es/strings.po b/screensaver.digitalclock/resources/language/resource.language.gl_es/strings.po index 045bafea8..3fbc7a9b7 100644 --- a/screensaver.digitalclock/resources/language/resource.language.gl_es/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.gl_es/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.he_il/strings.po b/screensaver.digitalclock/resources/language/resource.language.he_il/strings.po index e090fc8cb..cb490bd8d 100644 --- a/screensaver.digitalclock/resources/language/resource.language.he_il/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.he_il/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.hi_in/strings.po b/screensaver.digitalclock/resources/language/resource.language.hi_in/strings.po index 7eb57b006..316724aec 100644 --- a/screensaver.digitalclock/resources/language/resource.language.hi_in/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.hi_in/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-09 13:42+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.hr_hr/strings.po b/screensaver.digitalclock/resources/language/resource.language.hr_hr/strings.po index b8bef8679..e72dae131 100644 --- a/screensaver.digitalclock/resources/language/resource.language.hr_hr/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.hr_hr/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-21 04:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.hu_hu/strings.po b/screensaver.digitalclock/resources/language/resource.language.hu_hu/strings.po index 38108cb86..a35fc9873 100644 --- a/screensaver.digitalclock/resources/language/resource.language.hu_hu/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.hu_hu/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.id_id/strings.po b/screensaver.digitalclock/resources/language/resource.language.id_id/strings.po index 05c31bcf4..6570cba6f 100644 --- a/screensaver.digitalclock/resources/language/resource.language.id_id/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.id_id/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.is_is/strings.po b/screensaver.digitalclock/resources/language/resource.language.is_is/strings.po index 16620a526..6c0c70939 100644 --- a/screensaver.digitalclock/resources/language/resource.language.is_is/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.is_is/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.it_it/strings.po b/screensaver.digitalclock/resources/language/resource.language.it_it/strings.po index 34027dcc0..f260bf6b5 100644 --- a/screensaver.digitalclock/resources/language/resource.language.it_it/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.it_it/strings.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: KODI Addons\n" "Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-09-08 08:14+0000\n" +"PO-Revision-Date: 2024-01-12 00:13+0000\n" "Last-Translator: Massimo Pissarello \n" "Language-Team: Italian \n" "Language: it_it\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.14\n" +"X-Generator: Weblate 5.3\n" msgctxt "Addon Summary" msgid "Digital clock screensaver" @@ -186,6 +186,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "Anno: yy (anno a 2 cifre) yyyy (anno a 4 cifre)" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "17:14 Nessun riempimento zero per le ore su Windows" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "17:14 Nessun riempimento zero per le ore su Unix" + msgctxt "#32200" msgid "Enable additional information" msgstr "Abilita informazioni aggiuntive" @@ -636,6 +645,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "RSS deve essere configurato e abilitato correttamente in Kodi!" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "Spegni schermo tramite CEC" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "Interrompi ora la riproduzione" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "Spegni schermo tramite CEC dopo (minuti)" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Colori" diff --git a/screensaver.digitalclock/resources/language/resource.language.ja_jp/strings.po b/screensaver.digitalclock/resources/language/resource.language.ja_jp/strings.po index d4d9579b9..4f84fe3a0 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ja_jp/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ja_jp/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.ko_kr/strings.po b/screensaver.digitalclock/resources/language/resource.language.ko_kr/strings.po index f985dddfe..cc6fb45a4 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ko_kr/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ko_kr/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Minho Park \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.lt_lt/strings.po b/screensaver.digitalclock/resources/language/resource.language.lt_lt/strings.po index e309f46ce..11dbaa327 100644 --- a/screensaver.digitalclock/resources/language/resource.language.lt_lt/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.lt_lt/strings.po @@ -185,6 +185,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Įjungti papildomą informaciją" @@ -635,6 +644,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Spalvos" diff --git a/screensaver.digitalclock/resources/language/resource.language.lv_lv/strings.po b/screensaver.digitalclock/resources/language/resource.language.lv_lv/strings.po index 5a862030a..7bbbb5a6a 100644 --- a/screensaver.digitalclock/resources/language/resource.language.lv_lv/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.lv_lv/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.mi/strings.po b/screensaver.digitalclock/resources/language/resource.language.mi/strings.po index 594473f0d..4f17976f8 100644 --- a/screensaver.digitalclock/resources/language/resource.language.mi/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.mi/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-09 13:42+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.mk_mk/strings.po b/screensaver.digitalclock/resources/language/resource.language.mk_mk/strings.po index b367b29ce..604f9ef49 100644 --- a/screensaver.digitalclock/resources/language/resource.language.mk_mk/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.mk_mk/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.ms_my/strings.po b/screensaver.digitalclock/resources/language/resource.language.ms_my/strings.po index 3d97e2eff..61ab3d6c4 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ms_my/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ms_my/strings.po @@ -185,6 +185,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Benarkan maklumat tambahan" @@ -635,6 +644,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Warna" diff --git a/screensaver.digitalclock/resources/language/resource.language.mt_mt/strings.po b/screensaver.digitalclock/resources/language/resource.language.mt_mt/strings.po index c007063d9..1e6080582 100644 --- a/screensaver.digitalclock/resources/language/resource.language.mt_mt/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.mt_mt/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.my_mm/strings.po b/screensaver.digitalclock/resources/language/resource.language.my_mm/strings.po index 1be40df3f..018c3138b 100644 --- a/screensaver.digitalclock/resources/language/resource.language.my_mm/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.my_mm/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.nb_no/strings.po b/screensaver.digitalclock/resources/language/resource.language.nb_no/strings.po index 007e505ed..571a22d7e 100644 --- a/screensaver.digitalclock/resources/language/resource.language.nb_no/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.nb_no/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-27 01:16+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.nl_nl/strings.po b/screensaver.digitalclock/resources/language/resource.language.nl_nl/strings.po index bd77ff394..177e4ede9 100644 --- a/screensaver.digitalclock/resources/language/resource.language.nl_nl/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.nl_nl/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-10 15:00+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.pl_pl/strings.po b/screensaver.digitalclock/resources/language/resource.language.pl_pl/strings.po index 01b1a23c5..1db1d25cc 100644 --- a/screensaver.digitalclock/resources/language/resource.language.pl_pl/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.pl_pl/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-07-01 11:14+0000\n" "Last-Translator: Christian Gade \n" @@ -186,6 +186,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Aktywuj dodatkowe informacje" @@ -636,6 +645,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Kolory" diff --git a/screensaver.digitalclock/resources/language/resource.language.pt_br/strings.po b/screensaver.digitalclock/resources/language/resource.language.pt_br/strings.po index a6e70deb6..d76764c38 100644 --- a/screensaver.digitalclock/resources/language/resource.language.pt_br/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.pt_br/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-30 09:23+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.pt_pt/strings.po b/screensaver.digitalclock/resources/language/resource.language.pt_pt/strings.po index 2d65d21d9..876b6f974 100644 --- a/screensaver.digitalclock/resources/language/resource.language.pt_pt/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.pt_pt/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.ro_ro/strings.po b/screensaver.digitalclock/resources/language/resource.language.ro_ro/strings.po index b2250d41f..2204e4d56 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ro_ro/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ro_ro/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.ru_ru/strings.po b/screensaver.digitalclock/resources/language/resource.language.ru_ru/strings.po index 82bb6c77c..e44ad6bc4 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ru_ru/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ru_ru/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-09-13 11:14+0000\n" "Last-Translator: Andrei Stepanov \n" @@ -192,6 +192,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -653,6 +662,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "RSS должен быть включен и правильно настроен в Kodi!" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Цвета" diff --git a/screensaver.digitalclock/resources/language/resource.language.sk_sk/strings.po b/screensaver.digitalclock/resources/language/resource.language.sk_sk/strings.po index ead67e11f..c6032c679 100644 --- a/screensaver.digitalclock/resources/language/resource.language.sk_sk/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.sk_sk/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.sl_si/strings.po b/screensaver.digitalclock/resources/language/resource.language.sl_si/strings.po index 470828d21..41471a34d 100644 --- a/screensaver.digitalclock/resources/language/resource.language.sl_si/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.sl_si/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.sq_al/strings.po b/screensaver.digitalclock/resources/language/resource.language.sq_al/strings.po index 2ff7cbe6f..d4368ab65 100644 --- a/screensaver.digitalclock/resources/language/resource.language.sq_al/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.sq_al/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.sr_rs/strings.po b/screensaver.digitalclock/resources/language/resource.language.sr_rs/strings.po index 4530d7382..063f78a26 100644 --- a/screensaver.digitalclock/resources/language/resource.language.sr_rs/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.sr_rs/strings.po @@ -186,6 +186,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Омогући додатне податке" @@ -636,6 +645,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Боје" diff --git a/screensaver.digitalclock/resources/language/resource.language.sr_rs@latin/strings.po b/screensaver.digitalclock/resources/language/resource.language.sr_rs@latin/strings.po index 12024d5ee..4b0e039a0 100644 --- a/screensaver.digitalclock/resources/language/resource.language.sr_rs@latin/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.sr_rs@latin/strings.po @@ -186,6 +186,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Omogući dodatne podatke" @@ -636,6 +645,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Boje" diff --git a/screensaver.digitalclock/resources/language/resource.language.sv_se/strings.po b/screensaver.digitalclock/resources/language/resource.language.sv_se/strings.po index dc43b6b19..07fe739f0 100644 --- a/screensaver.digitalclock/resources/language/resource.language.sv_se/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.sv_se/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.ta_in/strings.po b/screensaver.digitalclock/resources/language/resource.language.ta_in/strings.po index b4c30e25d..af50f4447 100644 --- a/screensaver.digitalclock/resources/language/resource.language.ta_in/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.ta_in/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.tg_tj/strings.po b/screensaver.digitalclock/resources/language/resource.language.tg_tj/strings.po index 8456928f0..5d1fa40d1 100644 --- a/screensaver.digitalclock/resources/language/resource.language.tg_tj/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.tg_tj/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.th_th/strings.po b/screensaver.digitalclock/resources/language/resource.language.th_th/strings.po index 80b43d08d..80e187c3d 100644 --- a/screensaver.digitalclock/resources/language/resource.language.th_th/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.th_th/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.tr_tr/strings.po b/screensaver.digitalclock/resources/language/resource.language.tr_tr/strings.po index acd5c0d05..926e83330 100644 --- a/screensaver.digitalclock/resources/language/resource.language.tr_tr/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.tr_tr/strings.po @@ -185,6 +185,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + msgctxt "#32200" msgid "Enable additional information" msgstr "Ek bilgiyi etkinleştir" @@ -635,6 +644,18 @@ msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" + #~ msgctxt "#32010" #~ msgid "Colors" #~ msgstr "Renkler" diff --git a/screensaver.digitalclock/resources/language/resource.language.uk_ua/strings.po b/screensaver.digitalclock/resources/language/resource.language.uk_ua/strings.po index 2e7862aef..bf2abc53b 100644 --- a/screensaver.digitalclock/resources/language/resource.language.uk_ua/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.uk_ua/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.uz_uz/strings.po b/screensaver.digitalclock/resources/language/resource.language.uz_uz/strings.po index dccf6c097..ce00d054c 100644 --- a/screensaver.digitalclock/resources/language/resource.language.uz_uz/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.uz_uz/strings.po @@ -193,6 +193,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -653,3 +662,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.vi_vn/strings.po b/screensaver.digitalclock/resources/language/resource.language.vi_vn/strings.po index c97659f2e..075674e63 100644 --- a/screensaver.digitalclock/resources/language/resource.language.vi_vn/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.vi_vn/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-04-09 10:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.zh_cn/strings.po b/screensaver.digitalclock/resources/language/resource.language.zh_cn/strings.po index 177da0107..3e4ef808b 100644 --- a/screensaver.digitalclock/resources/language/resource.language.zh_cn/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.zh_cn/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2021-11-04 17:55+0000\n" "Last-Translator: taxigps \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "年:yy(2位数字年) yyyy(4位数字年)" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "启用 RSS" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "RSS 需要在 Kodi 中正确配置并启用!" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/language/resource.language.zh_tw/strings.po b/screensaver.digitalclock/resources/language/resource.language.zh_tw/strings.po index c2d9854fc..e6379d8f8 100644 --- a/screensaver.digitalclock/resources/language/resource.language.zh_tw/strings.po +++ b/screensaver.digitalclock/resources/language/resource.language.zh_tw/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: KODI Addons\n" -"Report-Msgid-Bugs-To: translations@kodi.tv\n" +"Report-Msgid-Bugs-To: http://trac.kodi.tv/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2022-03-01 17:13+0000\n" "Last-Translator: Christian Gade \n" @@ -194,6 +194,15 @@ msgctxt "#32173" msgid "Year: yy(2-digit year) yyyy(4-digit year)" msgstr "" +# empty strings from id 32174 to 32179 +msgctxt "#32180" +msgid "17:14 No hour zero padding Windows" +msgstr "" + +msgctxt "#32181" +msgid "17:14 No hour zero padding Unix" +msgstr "" + # empty strings from id 32174 to 32199 msgctxt "#32200" msgid "Enable additional information" @@ -654,3 +663,15 @@ msgstr "" msgctxt "#32621" msgid "RSS needs to be properly configured in Kodi and enabled!" msgstr "" + +msgctxt "#32630" +msgid "Turn off screen via CEC" +msgstr "" + +msgctxt "#32631" +msgid "Stop now playing media" +msgstr "" + +msgctxt "#32632" +msgid "Turn off screen via CEC after (minutes)" +msgstr "" diff --git a/screensaver.digitalclock/resources/settings.xml b/screensaver.digitalclock/resources/settings.xml index ebae39f03..0c0490806 100644 --- a/screensaver.digitalclock/resources/settings.xml +++ b/screensaver.digitalclock/resources/settings.xml @@ -9,7 +9,7 @@ - + @@ -84,5 +84,8 @@ + + + \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.aeon.nox.5.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.aeon.nox.5.xml deleted file mode 100644 index 0a199bde8..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.aeon.nox.5.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font15 - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font15 - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font15 - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.ace2.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq7.matrix.mod.xml similarity index 100% rename from screensaver.digitalclock/resources/skins/default/720p/skin.ace2.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq7.matrix.mod.xml diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.xperience1080.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq8.matrix.mod.xml similarity index 96% rename from screensaver.digitalclock/resources/skins/default/720p/skin.xperience1080.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq8.matrix.mod.xml index 780426ff5..c18179295 100644 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.xperience1080.xml +++ b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq8.matrix.mod.xml @@ -70,10 +70,10 @@ center keep true - + Hour - 60 + 50 10 120 65 @@ -83,7 +83,7 @@ center center - WeatherTemp + lyr2 Colon @@ -97,11 +97,11 @@ center center - WeatherTemp + lyr2 Minute - 180 + 190 10 120 65 @@ -111,11 +111,11 @@ center center - WeatherTemp + lyr2 AMPM - 280 + 285 45 70 35 @@ -125,7 +125,7 @@ center center - font24_title + font_lyrics Date @@ -140,8 +140,8 @@ center true - font24_title - + font_lyrics + Information 0 @@ -155,7 +155,7 @@ center true - font24_title + font_lyrics Hour color control diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq8.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq8.nexus.mod.xml similarity index 100% rename from screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq8.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq8.nexus.mod.xml diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq6.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq9.mod.xml similarity index 98% rename from screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq6.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq9.mod.xml index aa858fa7e..ad2da469c 100644 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq6.xml +++ b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq9.mod.xml @@ -83,7 +83,7 @@ center center - Font_100 + lyr2 Colon @@ -97,7 +97,7 @@ center center - Font_100 + lyr2 Minute @@ -111,7 +111,7 @@ center center - Font_100 + lyr2 AMPM @@ -125,7 +125,7 @@ center center - Font_24 + font_lyrics Date @@ -140,7 +140,7 @@ center true - Font_24 + font_lyrics Information @@ -155,7 +155,7 @@ center true - Font_24 + font_lyrics Hour color control diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq5.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq9.xml similarity index 97% rename from screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq5.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq9.xml index 1918d917b..ad2da469c 100644 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq5.xml +++ b/screensaver.digitalclock/resources/skins/default/720p/skin.aeonmq9.xml @@ -83,7 +83,7 @@ center center - Font_100 + lyr2 Colon @@ -97,7 +97,7 @@ center center - Font_100 + lyr2 Minute @@ -111,7 +111,7 @@ center center - Font_100 + lyr2 AMPM @@ -125,7 +125,7 @@ center center - Font_24 + font_lyrics Date @@ -140,8 +140,8 @@ center true - Font_24 - + font_lyrics + Information 0 @@ -155,7 +155,7 @@ center true - Font_24 + font_lyrics Hour color control @@ -211,7 +211,7 @@ font14 false - + Information color control 0 @@ -222,7 +222,7 @@ font14 false - + Shadow color control 0 diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.arctic.zephyr.2.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.arctic.zephyr.mod.xml similarity index 100% rename from screensaver.digitalclock/resources/skins/default/720p/skin.arctic.zephyr.2.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.arctic.zephyr.mod.xml diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.arctic.zephyr.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.arctic.zephyr.xml deleted file mode 100644 index 427749f2c..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.arctic.zephyr.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - SmallBold - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - SmallBold - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - SmallBold - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.aura.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.aura.xml deleted file mode 100644 index 6ed13ae6e..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.aura.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font_small - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font_small - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font_small - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.bello.6.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.bello.6.xml deleted file mode 100644 index 369dbd0d3..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.bello.6.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font13_title - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.blackglassnova.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.blackglassnova.xml deleted file mode 100644 index 325515773..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.blackglassnova.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - OSDFont - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - OSDFont - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - OSDFont - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.box.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.box.xml deleted file mode 100644 index d3fd9eea0..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.box.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - ScreensaverClock - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - ScreensaverClock - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - ScreensaverClock - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - List_PVR - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - List_PVR - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - List_PVR - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.carpc-carbon.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.carpc-carbon.xml deleted file mode 100644 index c1d4254d5..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.carpc-carbon.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font80_title - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font80_title - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font80_title - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font20_title - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font20_title - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font20_title - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.chroma.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.chroma.xml deleted file mode 100644 index 78d04416d..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.chroma.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - ScrollOffsetFont - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - ScrollOffsetFont - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - ScrollOffsetFont - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - InfoPlotFont - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - InfoPlotFont - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - InfoPlotFont - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.bello.7.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.ellipsisui.xml similarity index 98% rename from screensaver.digitalclock/resources/skins/default/720p/skin.bello.7.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.ellipsisui.xml index 369dbd0d3..76426b75e 100644 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.bello.7.xml +++ b/screensaver.digitalclock/resources/skins/default/720p/skin.ellipsisui.xml @@ -83,7 +83,7 @@ center center - WeatherTemp + Huge Colon @@ -97,7 +97,7 @@ center center - WeatherTemp + Huge Minute @@ -111,7 +111,7 @@ center center - WeatherTemp + Huge AMPM diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.embuary-leia.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.embuary-leia.xml deleted file mode 100644 index 369dbd0d3..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.embuary-leia.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font13_title - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.adonic.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.embuary-matrix.xml similarity index 100% rename from screensaver.digitalclock/resources/skins/default/720p/skin.adonic.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.embuary-matrix.xml diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.fuse.neue.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.fuse.neue.xml deleted file mode 100644 index 9ad412133..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.fuse.neue.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font_systeminfo_skinname - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font_systeminfo_skinname - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font_systeminfo_skinname - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.grid.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.grid.xml deleted file mode 100644 index 369dbd0d3..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.grid.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font13_title - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.horizon.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.horizon.xml deleted file mode 100644 index 47306e661..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.horizon.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font_small_bold - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font_small_bold - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font_small_bold - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.madnox.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.madnox.xml deleted file mode 100644 index 0c9eda9c1..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.madnox.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Font120_Caps_Lyrics - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Font120_Caps_Lyrics - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Font120_Caps_Lyrics - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Font32_Reg - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - Font32_Reg - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - Font32_Reg - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.omni.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.mimic.lr.xml similarity index 97% rename from screensaver.digitalclock/resources/skins/default/720p/skin.omni.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.mimic.lr.xml index 48fda568b..138dd781d 100644 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.omni.xml +++ b/screensaver.digitalclock/resources/skins/default/720p/skin.mimic.lr.xml @@ -83,7 +83,7 @@ center center - WeatherTemp + WeatherTempFont Colon @@ -97,7 +97,7 @@ center center - WeatherTemp + WeatherTempFont Minute @@ -111,7 +111,7 @@ center center - WeatherTemp + WeatherTempFont AMPM @@ -125,7 +125,7 @@ center center - font15_bold + font15 Date @@ -140,7 +140,7 @@ center true - font15_bold + font15 Information @@ -155,7 +155,7 @@ center true - font15_bold + font15 Hour color control diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.mimic.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.mimic.xml deleted file mode 100644 index 48fda568b..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.mimic.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font15_bold - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font15_bold - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font15_bold - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.nebula.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.nebula.xml deleted file mode 100644 index 7b300244e..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.nebula.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - Clock - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - LeftMenuButtonFont - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - LeftMenuButtonFont - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - LeftMenuButtonFont - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.osmc.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.osmc.xml index 2b84f0ce2..ce831fec1 100644 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.osmc.xml +++ b/screensaver.digitalclock/resources/skins/default/720p/skin.osmc.xml @@ -83,7 +83,7 @@ center center - Clock + Font120 Colon @@ -97,7 +97,7 @@ center center - Clock + Font120 Minute @@ -111,7 +111,7 @@ center center - Clock + Font120 AMPM @@ -125,7 +125,7 @@ center center - Small + Font36 Date @@ -140,7 +140,7 @@ center true - Small + Font36 Information @@ -155,7 +155,7 @@ center true - Small + Font36 Hour color control @@ -236,4 +236,4 @@ - \ No newline at end of file + diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.re-touched.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.re-touched.xml deleted file mode 100644 index 5b7e8ee31..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.re-touched.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font30_title - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font24_title - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font24_title - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.reestuarized.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.reestuarized.xml deleted file mode 100644 index 5fe81563c..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.reestuarized.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font30_title - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font30_title - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font30_title - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.revolve.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.revolve.xml deleted file mode 100644 index 72f2c7bbe..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.revolve.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - HomeMenuOptionFont - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - HomeMenuOptionFont - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - HomeMenuOptionFont - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - MediumViewFont - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - MediumViewFont - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - MediumViewFont - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.phenomenal.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.tetradui.xml similarity index 97% rename from screensaver.digitalclock/resources/skins/default/720p/skin.phenomenal.xml rename to screensaver.digitalclock/resources/skins/default/720p/skin.tetradui.xml index 599ccf7c4..d066328a9 100644 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.phenomenal.xml +++ b/screensaver.digitalclock/resources/skins/default/720p/skin.tetradui.xml @@ -83,7 +83,7 @@ center center - font-80 + font60 Colon @@ -97,7 +97,7 @@ center center - font-80 + font60 Minute @@ -111,7 +111,7 @@ center center - font-80 + font60 AMPM @@ -125,7 +125,7 @@ center center - font13 + font12 Date @@ -140,7 +140,7 @@ center true - font13 + font12 Information @@ -155,7 +155,7 @@ center true - font13 + font12 Hour color control @@ -233,7 +233,7 @@ font14 false - + \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.titan.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.titan.xml deleted file mode 100644 index 3c126a372..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.titan.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - WeatherTemp - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font13_title - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font13_title - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/screensaver.digitalclock/resources/skins/default/720p/skin.transparency.xml b/screensaver.digitalclock/resources/skins/default/720p/skin.transparency.xml deleted file mode 100644 index e8a100736..000000000 --- a/screensaver.digitalclock/resources/skins/default/720p/skin.transparency.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -0x00000000 - - - Background - 0 - 0 - 1280 - 720 - 500 - scale - - - Background - 0 - 0 - 1280 - 720 - 500 - keep - - - - 0 - 0 - 110% - 80 - special://home/addons/screensaver.digitalclock/resources/media/InfoBar.png - - - 0 - 0 - 40 - 100% - font12 - 1 - - button_focus - button_focus - text_shadow - FFFFFFFF - true - - - - Clock and Date - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - WindowOpen - 460 - 290 - 360 - 280 - true - - Weathericon - 120 - 160 - 120 - 120 - center - center - keep - true - - - Hour - 60 - 10 - 120 - 65 - $INFO[Control.GetLabel(30105)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font-80 - - - Colon - 0 - 10 - 360 - 65 - $INFO[Control.GetLabel(30106)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font-80 - - - Minute - 180 - 10 - 120 - 65 - $INFO[Control.GetLabel(30107)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font-80 - - - AMPM - 280 - 45 - 70 - 35 - $INFO[Control.GetLabel(30108)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - - font-28 - - - Date - 0 - 85 - 360 - 35 - $INFO[Control.GetLabel(30109)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font-22 - - - Information - 0 - 125 - 360 - 35 - $INFO[Control.GetLabel(30111)] - $INFO[Control.GetLabel(30112)] - 00000000 - center - center - true - - font-22 - - - Hour color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Colon color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Minute color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - AMPM color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Date color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Information color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - Shadow color control - 0 - 0 - 0 - 0 - center - - font14 - false - - - - \ No newline at end of file diff --git a/script.artistslideshow/addon.xml b/script.artistslideshow/addon.xml index 00e3f280b..88e84b09c 100644 --- a/script.artistslideshow/addon.xml +++ b/script.artistslideshow/addon.xml @@ -1,4 +1,4 @@ - + @@ -10,10 +10,9 @@ -v.3.3.5 -- fix for AS not accepting images with uppercase extensions -- removed Leia to Matrix transition code -- updated translation files +v.3.3.6 +- fix to allow blank as illegal replace character in Nexus +- updated language files icon.png @@ -76,7 +75,7 @@ v.3.3.5 הרחבה להורדת תמונות ומידע נוסף על האמן המושמע כעת מ-fanart.tv ו- theaudiodb.com. התמונות, בנוסף לתמונות אמנים מקומיות והמידע על אמן יכולים לשמש את המעטפת ליצירת מצגת עבור האמן המושמע כעת. Dodatak za preuzimanje slika i dodatnih informacije trenutno reproduciranog izvođača s fanart.tv, theaudiodb.com i theaudiodb.com. Slike, zajedno s lokalnim slikama izvođača i informacijama mogu se koristiti s presvlakom za stvaranje slikovne prezentacije izvođača koji se sluša. A Kiegészítő letölt képeket és infromációkat a fanart.tv és theaudiodb.com oldalakról az éppen hallgatott előadóhoz. A képek a helyben tárolt képekkel együtt felhasználhatóak a Felszín által diavetítéshez. - Addon per scaricare immagini ed informazioni aggiuntive da fanart.tv e theaudiodb.com sull'artista attualmente in esecuzione. Le immagini possono essere usate dallo skin, insieme a quelle locali, per creare una presentazione per l'artista che si sta ascoltando. + Add-on per scaricare immagini ed informazioni aggiuntive da fanart.tv e theaudiodb.com sull'artista attualmente in riproduzione. Le immagini possono essere usate dalla skin, insieme a quelle locali, per creare una presentazione per l'artista che si sta ascoltando. 현재 재생중인 아티스트의 이미지와 추가정보를 fanart.tv 와 theaudiodb.com 에서 다운로드합니다. 다운로드한 이미지와 정보는 로컬 이미지와 함께 현재 재생중인 음악의 아티스트 슬라이드쇼에 사용할 수 있습니다. Tillegg for å laste ned bilder og ytterligere informasjon fra fanart.tv og theaudiodb.com for artisten som spilles av for øyeblikket. Bildene, sammen med lokale artistbilder og info, kan bli brukt av skallet til å lage en lysbildefremvisning for artisten som blir lyttet til for øyeblikket. Add-on om afbeeldingen en bijkomende informatie van Fanart.tv en theaudiodb.com van de te horen artiest binnen te halen. de afbeeldingen, net als de lokaal aanwezige artiest-afbeeldingen en -info kunnen gebruikt worden door de skin om een diashow te tonen van de artiest di nu beluisterd wordt. diff --git a/script.artistslideshow/changelog.txt b/script.artistslideshow/changelog.txt index 35b3ed39b..3cbd86792 100644 --- a/script.artistslideshow/changelog.txt +++ b/script.artistslideshow/changelog.txt @@ -1,7 +1,12 @@ +v.3.3.6 +- fix to allow blank as illegal replace character in Nexus +- updated language files + v.3.3.5 -- fix for AS not accepting images with uppercase extensions +- fix for AS not accepting images with uppcase extensions + +v.3.3.4 - removed Leia to Matrix transition code -- updated translation files v.3.3.3 - trim_cache now deletes information as well as images diff --git a/script.artistslideshow/resources/language/resource.language.fi_fi/strings.po b/script.artistslideshow/resources/language/resource.language.fi_fi/strings.po index d5868a77c..9f8360eb5 100644 --- a/script.artistslideshow/resources/language/resource.language.fi_fi/strings.po +++ b/script.artistslideshow/resources/language/resource.language.fi_fi/strings.po @@ -5,9 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-07-07 18:14+0000\n" +"PO-Revision-Date: 2023-07-28 09:11+0000\n" "Last-Translator: Oskari Lavinto \n" "Language-Team: Finnish \n" "Language: fi_fi\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.13\n" +"X-Generator: Weblate 4.18.2\n" msgctxt "Addon Summary" msgid "Download images and additional info of the currently playing artist" diff --git a/script.artistslideshow/resources/language/resource.language.fr_fr/strings.po b/script.artistslideshow/resources/language/resource.language.fr_fr/strings.po index f01cd4584..8ce09584b 100644 --- a/script.artistslideshow/resources/language/resource.language.fr_fr/strings.po +++ b/script.artistslideshow/resources/language/resource.language.fr_fr/strings.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2023-01-01 16:15+0000\n" +"PO-Revision-Date: 2023-05-29 16:42+0000\n" "Last-Translator: skypichat \n" "Language-Team: French (France) \n" "Language: fr_fr\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.15\n" +"X-Generator: Weblate 4.17\n" msgctxt "Addon Summary" msgid "Download images and additional info of the currently playing artist" @@ -230,7 +230,7 @@ msgstr "Afficher une notification uniquement s'il y a des images à télécharge msgctxt "#32144" msgid "Use more agressive artist search for streams" -msgstr "Utilisez une recherche d'artistes plus agressive pour les flux" +msgstr "Utiliser une recherche d'artistes plus agressive pour les flux" msgctxt "#32145" msgid "Pause slideshow on playback pause" diff --git a/script.artistslideshow/resources/language/resource.language.it_it/strings.po b/script.artistslideshow/resources/language/resource.language.it_it/strings.po index 0b0546682..bff0cc280 100644 --- a/script.artistslideshow/resources/language/resource.language.it_it/strings.po +++ b/script.artistslideshow/resources/language/resource.language.it_it/strings.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2023-05-16 13:16+0000\n" +"PO-Revision-Date: 2023-05-22 04:42+0000\n" "Last-Translator: Massimo Pissarello \n" "Language-Team: Italian \n" "Language: it_it\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.15.2\n" +"X-Generator: Weblate 4.17\n" msgctxt "Addon Summary" msgid "Download images and additional info of the currently playing artist" @@ -23,7 +23,7 @@ msgstr "Scarica immagini e informazioni aggiuntive dell'artista attualmente in r msgctxt "Addon Description" msgid "Addon to download images and additional information from fanart.tv and theaudiodb.com of the currently playing artist. The images, along with local artists' images, and info can be used by the skin to create a slideshow for the artist being listened to." -msgstr "Addon per scaricare immagini ed informazioni aggiuntive da fanart.tv e theaudiodb.com sull'artista attualmente in esecuzione. Le immagini possono essere usate dallo skin, insieme a quelle locali, per creare una presentazione per l'artista che si sta ascoltando." +msgstr "Add-on per scaricare immagini ed informazioni aggiuntive da fanart.tv e theaudiodb.com sull'artista attualmente in riproduzione. Le immagini possono essere usate dalla skin, insieme a quelle locali, per creare una presentazione per l'artista che si sta ascoltando." # Section Headings msgctxt "#32000" @@ -90,7 +90,7 @@ msgstr "Scarica tutte le immagini indipendentemente dalla risoluzione" msgctxt "#32109" msgid "Client API key" -msgstr "Chiave API client" +msgstr "Chiave API del client" msgctxt "#32110" msgid "I donate to this service" @@ -102,7 +102,7 @@ msgstr "Usa presentazione di riserva" msgctxt "#32112" msgid "Use override slideshow" -msgstr "Usa override presentazione" +msgstr "Usa sovrascrivi presentazione" msgctxt "#32113" msgid "Custom location" @@ -110,15 +110,15 @@ msgstr "Posizione personalizzata" msgctxt "#32114" msgid "Include Kodi artist fanart" -msgstr "Includi fanart dell'artista Kodi" +msgstr "Includi fanart dell'artista di Kodi" msgctxt "#32115" msgid "Include Kodi album fanart" -msgstr "Includi fanart dell'album Kodi" +msgstr "Includi fanart dell'album di Kodi" msgctxt "#32116" msgid "Limit size of download cache" -msgstr "Limita la dimensione della cache di download" +msgstr "Limita dimensione della cache di download" msgctxt "#32117" msgid "Maximum cache size (in megabytes)" @@ -134,11 +134,11 @@ msgstr "Registra eventi di debug" msgctxt "#32120" msgid "Disable secondary and featured artist images" -msgstr "Disabilita immagini secondarie e in primo piano dell'artista" +msgstr "Disabilita immagini degli artisti secondari e in evidenza" msgctxt "#32121" msgid "Store artist images in" -msgstr "Memorizza le immagini dell'artista in" +msgstr "Memorizza immagini dell'artista in" msgctxt "#32122" msgid "addon_data folder" @@ -154,11 +154,11 @@ msgstr "Priorità" msgctxt "#32125" msgid "Store artist information in" -msgstr "Memorizza le informazioni sull'artista in" +msgstr "Memorizza informazioni sull'artista in" msgctxt "#32126" msgid "Preferred language for artist bio" -msgstr "Linguaggio preferito per la biografia dell'artista" +msgstr "Lingua preferita per la biografia dell'artista" msgctxt "#32127" msgid "Use extrafanart folder" @@ -170,7 +170,7 @@ msgstr "Piattaforma per archiviazione immagini" msgctxt "#32129" msgid "Replace illegal path characters in artist name with" -msgstr "Sostituisci i caratteri di percorso illegali nel nome dell'artista con" +msgstr "Sostituisci i caratteri non validi nel percorso del nome dell'artista con" msgctxt "#32130" msgid "Replace trailing period in artist name with" @@ -190,11 +190,11 @@ msgstr "MacOS" msgctxt "#32134" msgid "Move images to Kodi music artist folder" -msgstr "Sposta le immagini nella cartella dell'artista musicale di Kodi" +msgstr "Sposta immagini nella cartella dell'artista musicale di Kodi" msgctxt "#32135" msgid "Get artist bio from Kodi" -msgstr "Ottieni la biografia dell'artista da Kodi" +msgstr "Ottieni biografia dell'artista da Kodi" msgctxt "#32136" msgid "Custom location" @@ -206,41 +206,41 @@ msgstr "Ritardo tra le transizioni delle diapositive (in secondi)" msgctxt "#32138" msgid "Fade to black during change in artists" -msgstr "Sfuma al nero durante il cambio degli artisti" +msgstr "Sfuma sul nero durante il cambio artisti" msgctxt "#32139" msgid "Main thread sleep time (in seconds)" -msgstr "Tempo di sospensione del thread principale (in secondi)" +msgstr "Tempo di attesa del thread principale (sec)" msgctxt "#32140" msgid "Main thread idle sleep time (in seconds)" -msgstr "Tempo di inattività del thread principale (in secondi)" +msgstr "Tempo di inattività del thread principale (sec)" msgctxt "#32141" msgid "Slideshow thread sleep time (in seconds)" -msgstr "Tempo di sospensione del thread della presentazione (in secondi)" +msgstr "Tempo di attesa del thread della presentazione (sec)" msgctxt "#32142" msgid "Show notification during image downloads" -msgstr "Mostra la notifica durante il download delle immagini" +msgstr "Mostra notifica durante il download delle immagini" msgctxt "#32143" msgid "Only show notification if there are images to download" -msgstr "Mostra la notifica solo se ci sono immagini da scaricare" +msgstr "Mostra notifica solo se ci sono immagini da scaricare" msgctxt "#32144" msgid "Use more agressive artist search for streams" -msgstr "Usa una ricerca artistica più aggressiva per gli stream" +msgstr "Usa una ricerca di artisti più aggressiva per i flussi" msgctxt "#32145" msgid "Pause slideshow on playback pause" -msgstr "Metti in pausa la presentazione durante la pausa di riproduzione" +msgstr "Metti in pausa la presentazione quando la riproduzione è in pausa" # empty strings from id 32145 to 32199 # Dialog headings msgctxt "#32200" msgid "Artist Slideshow" -msgstr "Presentazione dell'artista" +msgstr "Presentazione artista" msgctxt "#32201" msgid "Warning" @@ -286,7 +286,7 @@ msgstr "Spostamento e ridenominazione di immagini dalla cartella addon_data..." msgctxt "#32305" msgid "No artist directories found." -msgstr "Nessuna directory artisti trovata." +msgstr "Nessuna cartella artisti trovata." msgctxt "#32306" msgid "Image move complete. You may now change the Artist Slideshow storage location to Kodi artist information folder." diff --git a/script.artistslideshow/resources/language/resource.language.pl_pl/strings.po b/script.artistslideshow/resources/language/resource.language.pl_pl/strings.po index adc28cdd3..29a5907f2 100644 --- a/script.artistslideshow/resources/language/resource.language.pl_pl/strings.po +++ b/script.artistslideshow/resources/language/resource.language.pl_pl/strings.po @@ -5,9 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2022-03-30 09:46+0000\n" +"PO-Revision-Date: 2023-12-12 14:11+0000\n" "Last-Translator: Christian Gade \n" "Language-Team: Polish \n" "Language: pl_pl\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.11.2\n" +"X-Generator: Weblate 5.2.1\n" msgctxt "Addon Summary" msgid "Download images and additional info of the currently playing artist" @@ -36,7 +36,7 @@ msgstr "" msgctxt "#32002" msgid "Images" -msgstr "" +msgstr "Obrazy" msgctxt "#32003" msgid "Album Info" diff --git a/script.artistslideshow/resources/language/resource.language.sk_sk/strings.po b/script.artistslideshow/resources/language/resource.language.sk_sk/strings.po index f83eed9f1..488d5833c 100644 --- a/script.artistslideshow/resources/language/resource.language.sk_sk/strings.po +++ b/script.artistslideshow/resources/language/resource.language.sk_sk/strings.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2023-04-11 08:16+0000\n" +"PO-Revision-Date: 2023-10-27 12:11+0000\n" "Last-Translator: Christian Gade \n" "Language-Team: Slovak \n" "Language: sk_sk\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 4.15.2\n" +"X-Generator: Weblate 5.1\n" msgctxt "Addon Summary" msgid "Download images and additional info of the currently playing artist" @@ -28,11 +28,11 @@ msgstr "" # Section Headings msgctxt "#32000" msgid "Slideshow" -msgstr "" +msgstr "Prezentácia" msgctxt "#32001" msgid "Storage" -msgstr "" +msgstr "Úložisko" msgctxt "#32002" msgid "Images" diff --git a/script.artistslideshow/resources/settings.xml b/script.artistslideshow/resources/settings.xml index 61001d315..e122b08a9 100644 --- a/script.artistslideshow/resources/settings.xml +++ b/script.artistslideshow/resources/settings.xml @@ -543,6 +543,9 @@ 0 _ + + true + 32129 diff --git a/script.extendedinfo/addon.xml b/script.extendedinfo/addon.xml index cd738a793..f7314c232 100644 --- a/script.extendedinfo/addon.xml +++ b/script.extendedinfo/addon.xml @@ -1,5 +1,5 @@ - + @@ -24,7 +24,7 @@ http://forum.kodi.tv/showthread.php?tid=160558 https://github.com/scott967/script.extendedinfo scott967@kodi.tv - Python 3 fixes and Nexus/Matrix updates by scott967. Original addon for Leia and prior by phil65 (Philipp Temminghoff). Requires Kutils module version 1.3.0 from Kodi official repo + Python 3 fixes and Omega/Nexus/Matrix updates by scott967. Original addon for Leia and prior by phil65 (Philipp Temminghoff). resources/icon.png resources/fanart.jpg diff --git a/script.extendedinfo/changelog.txt b/script.extendedinfo/changelog.txt index c4cc25072..09184aa84 100644 --- a/script.extendedinfo/changelog.txt +++ b/script.extendedinfo/changelog.txt @@ -1,3 +1,7 @@ +v6.0.7 +- reworked tmdb logon / accreditation +- various code refactoring / pylint items / docstrings (WIP) + v6.0.5 - removed support for broken/obsolete addons artwork downloader, couch potato, sick rage, trakt helper - removed support for youtube-dl diff --git a/script.extendedinfo/default.py b/script.extendedinfo/default.py index bdc856f17..7a19408ed 100644 --- a/script.extendedinfo/default.py +++ b/script.extendedinfo/default.py @@ -24,7 +24,7 @@ def pass_list_to_skin(name: str, data, prefix: str = "", limit: int = False) -> name (str): Type of data being returned derived from runscript info parameter. Used to construct the skin window property key eg. topratedmovies from invocation parameter info= - data (kutils.itemlist.ItemList): collection of ListItems + data (kutils131.itemlist.ItemList): collection of ListItems (Video or Audio) prefix (str, optional): Optional prefix for the name. May be set as a param in runscript. Defaults to "". diff --git a/script.extendedinfo/resources/kutil131/actionhandler.py b/script.extendedinfo/resources/kutil131/actionhandler.py index 20673be72..bacc5d441 100644 --- a/script.extendedinfo/resources/kutil131/actionhandler.py +++ b/script.extendedinfo/resources/kutil131/actionhandler.py @@ -109,6 +109,7 @@ "symbols": xbmcgui.ACTION_SYMBOLS, "cursorleft": xbmcgui.ACTION_CURSOR_LEFT, "cursorright": xbmcgui.ACTION_CURSOR_RIGHT, + "built-in": xbmcgui.ACTION_BUILT_IN_FUNCTION, "showtime": xbmcgui.ACTION_SHOW_OSD_TIME, "analogseekforward": xbmcgui.ACTION_ANALOG_SEEK_FORWARD, "analogseekback": xbmcgui.ACTION_ANALOG_SEEK_BACK, diff --git a/script.extendedinfo/resources/kutil131/dialogbaselist.py b/script.extendedinfo/resources/kutil131/dialogbaselist.py index a248c3884..c8187d515 100644 --- a/script.extendedinfo/resources/kutil131/dialogbaselist.py +++ b/script.extendedinfo/resources/kutil131/dialogbaselist.py @@ -1,6 +1,7 @@ # Copyright (C) 2015 - Philipp Temminghoff # This program is Free Software see LICENSE file for details +from __future__ import annotations import xbmc import xbmcgui diff --git a/script.extendedinfo/resources/kutil131/kodiaddon.py b/script.extendedinfo/resources/kutil131/kodiaddon.py index fe55df6a6..950f3b38f 100644 --- a/script.extendedinfo/resources/kutil131/kodiaddon.py +++ b/script.extendedinfo/resources/kutil131/kodiaddon.py @@ -113,14 +113,14 @@ def encode_string(clear: str) -> str: enc = [] key = str(uuid.getnode()) clear_enc = clear.encode() - for i in range(len(clear_enc)): + for i, ele in enumerate(clear_enc): key_c = key[i % len(key)] - enc_c = chr((clear_enc[i] + ord(key_c)) % 256) + enc_c = chr((ele + ord(key_c)) % 256) enc.append(enc_c) return base64.urlsafe_b64encode("".join(enc).encode()).decode() -def decode_string(enc: str) -> str: +def decode_string(enc: str, uuick: str='') -> str: """return decoded string (encoded with uuid) Args: @@ -130,10 +130,10 @@ def decode_string(enc: str) -> str: str: the decoded string """ dec = [] - key = str(uuid.getnode()) + key = str(uuid.getnode()) if not uuick else uuick enc = base64.urlsafe_b64decode(enc.encode()).decode() - for i in range(len(enc)): + for i, ele in enumerate(enc): key_c = key[i % len(key)] - dec_c = ((256 + ord(enc[i]) - ord(key_c)) % 256).to_bytes(1, 'little') + dec_c = ((256 + ord(ele) - ord(key_c)) % 256).to_bytes(1, 'little') dec.append(dec_c) return bytes.join(b'', dec).decode() diff --git a/script.extendedinfo/resources/kutil131/listitem.py b/script.extendedinfo/resources/kutil131/listitem.py index b04213398..8f36ed596 100644 --- a/script.extendedinfo/resources/kutil131/listitem.py +++ b/script.extendedinfo/resources/kutil131/listitem.py @@ -125,6 +125,7 @@ def __getitem__(self, key): def __repr__(self): return "\n".join(["Label:", self.label, "Label2:", self.label2, + "Path:", self.path, "InfoLabels:", utils.dump_dict(self._infos), "Properties:", utils.dump_dict(self._properties), "Artwork:", utils.dump_dict(self._artwork), @@ -387,7 +388,7 @@ class VideoItem(ListItem): """Kodi video listitem, based on built-in datatypes Args: - ListItem (class): The Kutils ListItem class + ListItem (class): The kutils131 ListItem class """ def __init__(self, *args, **kwargs): @@ -407,7 +408,7 @@ def __repr__(self): def from_listitem(self, listitem: xbmcgui.ListItem): """ - xbmcgui listitem -> kodi65 listitem + xbmcgui listitem -> kutils131 listitem """ info = listitem.getVideoInfoTag() self.label = listitem.getLabel() diff --git a/script.extendedinfo/resources/kutil131/localdb.py b/script.extendedinfo/resources/kutil131/localdb.py index 527400b7f..b08a15e44 100644 --- a/script.extendedinfo/resources/kutil131/localdb.py +++ b/script.extendedinfo/resources/kutil131/localdb.py @@ -191,7 +191,7 @@ def handle_movie(self, movie:dict) -> VideoItem: 'playcount': movie.get("playcount"), 'setid': movie.get("setid"), 'top250': movie.get("top250"), - 'imdbnumber': movie.get("uniqueid").get("imdb", ""), + 'imdbnumber': movie.get("uniqueid", {}).get("imdb", ""), 'userrating': movie.get('userrating'), 'trailer': trailer, 'rating': round(float(movie['rating']), 1), @@ -413,7 +413,7 @@ def get_imdb_id(self, media_type, dbid): data = kodijson.get_json(method="VideoLibrary.GetMovieDetails", params={"properties": ["uniqueid", "title", "year"], "movieid": int(dbid)}) if "result" in data and "moviedetails" in data["result"]: - try: + try: return data['result']['moviedetails']['uniqueid']['imdb'] except KeyError: return None @@ -441,7 +441,7 @@ def get_tmdb_id(self, media_type, dbid): if "result" in data and "tvshowdetails" in data["result"]: return data['result']['tvshowdetails']['uniqueid'].get('tmdb', None) return None - + def get_tvshow_id_by_episode(self, dbid): if not dbid: return None diff --git a/script.extendedinfo/resources/kutil131/player.py b/script.extendedinfo/resources/kutil131/player.py index 9d16a6e60..3a4a73c90 100644 --- a/script.extendedinfo/resources/kutil131/player.py +++ b/script.extendedinfo/resources/kutil131/player.py @@ -16,35 +16,52 @@ def __init__(self, *args, **kwargs): def onPlayBackEnded(self): self.stopped = True + self.started = False def onPlayBackStopped(self): self.stopped = True + self.started = False def onPlayBackError(self): self.stopped = True + self.started = False def onAVStarted(self): self.started = True self.stopped = False + def onPlayBackStarted(self): + self.started = True + self.stopped = False + @busy.set_busy - def youtube_info_by_id(self, youtube_id): - vid = utils.get_youtube_info(youtube_id) + def youtube_info_by_id(self, youtube_id) -> None: + """function uses inop YTStreamextractor + + Args: + youtube_id (_type_): _description_ + + Returns: + _type_: function retained for future use + """ + #vid = utils.get_youtube_info(youtube_id) + vid = {} if not vid: return None, None - listitem = xbmcgui.ListItem(label=vid.title) - listitem.setArt({'thumb': vid.thumbnail}) - listitem.setInfo(type='video', - infoLabels={"genre": vid.sourceName, - "plot": vid.description}) - return vid.streamURL(), listitem + #listitem = xbmcgui.ListItem(label=vid.title) + #listitem.setArt({'thumb': vid.thumbnail}) + #listitem.setInfo(type='video', + # infoLabels={"genre": vid.sourceName, + # "plot": vid.description}) + #return vid.streamURL(), listitem def wait_for_video_end(self): monitor: xbmc.Monitor = xbmc.Monitor() while not monitor.waitForAbort(1.0): + if monitor.abortRequested(): + break if self.stopped: break - self.stopped = False def wait_for_video_start(self): @@ -53,11 +70,28 @@ def wait_for_video_start(self): """ monitor = xbmc.Monitor() timeout = 15 - while not monitor.waitForAbort(1.0): #wait 10 sec to see if video starts + while not monitor.waitForAbort(1.5): #wait to see if video starts + if monitor.abortRequested(): + break + timeout += -1 + if self.started: + break + if timeout == 0: + self.stopped = True + break + + def wait_for_kodivideo_start(self): + """Timer called from dialogmovieinfo that checks if Kodi can play selected listitem + Sets a 20 sec timer to attempt play local db media. If + timer ends videoplayer self.stopped is set + """ + monitor = xbmc.Monitor() + timeout = 20 + while not monitor.waitForAbort(1): #wait to see if video starts if monitor.abortRequested(): break timeout += -1 - if self.stopped or self.started: + if self.started: break if timeout == 0: self.stopped = True diff --git a/script.extendedinfo/resources/kutil131/utils.py b/script.extendedinfo/resources/kutil131/utils.py index 45cff0fd8..a45541d9e 100644 --- a/script.extendedinfo/resources/kutil131/utils.py +++ b/script.extendedinfo/resources/kutil131/utils.py @@ -24,7 +24,16 @@ from resources.kutil131 import addon -def youtube_info_by_id(youtube_id): +def youtube_info_by_id(youtube_id) -> tuple: + """Gets youtube video info from YDSStreamExtractor + Currently inop due to YDSStreamextractor not maintained. + + Args: + youtube_id (_type_): _description_ + + Returns: + _type_: _description_ + """ #vid = get_youtube_info(youtube_id) vid = None #added if not vid: @@ -164,14 +173,14 @@ def get_skin_string(name): """ get String with name *name """ - return xbmc.getInfoLabel("Skin.String(%s)" % name) + return xbmc.getInfoLabel(f"Skin.String({name})") def set_skin_string(name, value): """ Set String *name to value *value """ - xbmc.executebuiltin("Skin.SetString(%s, %s)" % (name, value)) + xbmc.executebuiltin(f"Skin.SetString({name}, {value})") def run_async(func): @@ -222,14 +231,14 @@ def extract_youtube_id(raw_string): # YDStreamExtractor.handleDownload(vid) -def notify(header="", message="", icon=addon.ICON, time=5000, sound=True): +def notify(header="", message="", icon=addon.ICON, ntime=5000, sound=True): """ show kodi notification dialog """ xbmcgui.Dialog().notification(heading=header, message=message, icon=icon, - time=time, + time=ntime, sound=sound) @@ -256,19 +265,19 @@ def get_year(year_string): return year_string[:4] if year_string else "" -def format_time(time:int, time_format=None): +def format_time(ftime:int, time_format=None): """ get formatted time time (int): duration in secs time_format = h, m or None """ try: - intTime = int(time) + intTime = int(ftime) except Exception: - return time + return ftime #hour = str(intTime / 60) #minute = str(intTime % 60).zfill(2) - minute, second = divmod(time, 60) + minute, second = divmod(ftime, 60) hour, minute = divmod(minute, 60) if time_format == "h": return str(hour) @@ -358,29 +367,33 @@ def calculate_age(born, died=False): else: return "" actor_born = born.split("-") - base_age = int(ref_day[0]) - int(actor_born[0]) + try: + base_age = int(ref_day[0]) - int(actor_born[0]) + except ValueError as err: + log(f'utils.calculate_age fail for actor_born {actor_born} with error {err}') + return "" if len(actor_born) > 1: diff_months = int(ref_day[1]) - int(actor_born[1]) diff_days = int(ref_day[2]) - int(actor_born[2]) if diff_months < 0 or (diff_months == 0 and diff_days < 0): base_age -= 1 elif diff_months == 0 and diff_days == 0 and not died: - notify("%s (%i)" % (addon.LANG(32158), base_age)) + notify(f"{addon.LANG(32158)} ({base_age})") return base_age def get_http(url, headers=False): """ - fetches data from *url, returns it as a string + fetches data from *url as http GET, returns it as a string """ succeed = 0 if not headers: - headers = {'User-agent': 'Kodi/17.0 ( fbacher@kodi.tv )'} + headers = {'User-agent': 'Kodi/19.0 ( fbacher@kodi.tv )'} while (succeed < 2) and (not xbmc.Monitor().abortRequested()): try: - request = requests.get(url, headers=headers) + request = requests.get(url, headers=headers, timeout=10) return request.text - except Exception as err: + except requests.exceptions.RequestException as err: log(f"get_http: could not get data from {url} exception {err}") xbmc.sleep(1000) succeed += 1 @@ -391,9 +404,13 @@ def post(url, values, headers): """ retuns answer to post request """ - request = requests.post(url=url, - data=json.dumps(values), - headers=headers) + try: + request = requests.post(url=url, + data=json.dumps(values), + headers=headers, + timeout=10) + except requests.exceptions.RequestException as err: + log(f"get_http: could not get data from {url} exception {err}") return json.loads(request.text) @@ -401,9 +418,13 @@ def delete(url, values, headers): """ returns answer to delete request """ - request = requests.delete(url=url, - data=json.dumps(values), - headers=headers) + try: + request = requests.delete(url=url, + data=json.dumps(values), + headers=headers, + timeout=10) + except requests.exceptions.RequestException as err: + log(f"get_http: could not get data from {url} exception {err}") return json.loads(request.text) @@ -433,20 +454,20 @@ def get_JSON_response(url="", cache_days=7.0, folder=False, headers=False) -> di if prop: return prop except Exception: - # utils.log("could not load prop data for %s" % url) pass path = os.path.join(cache_path, hashed_url + ".txt") if xbmcvfs.exists(path) and ((now - os.path.getmtime(path)) < cache_seconds): results = read_from_file(path) - # utils.log("loaded file for %s. time: %f" % (url, time.time() - now)) else: response = get_http(url, headers) try: results = json.loads(response) # utils.log("download %s. time: %f" % (url, time.time() - now)) - save_to_file(results, hashed_url, cache_path) + if "status_code" in results and results.get("status_code") == 1: + save_to_file(results, hashed_url, cache_path) except Exception as err: - log(f"Exception: Could not get new JSON data from {url} with error {err}. Trying to fallback to cache") + log(f"Exception: Could not get new JSON data from {url} " + f"with error {err}. Trying to fallback to cache") #log(f'kutils131.utils.get_JSON_response {response}') results = read_from_file(path) if xbmcvfs.exists(path) else [] if not results: @@ -456,21 +477,32 @@ def get_JSON_response(url="", cache_days=7.0, folder=False, headers=False) -> di return results -def dict_to_windowprops(data=None, prefix="", window_id=10000): +def dict_to_windowprops(data:dict=None, prefix="", window_id=10000): + """Sets window property keys / values from dict + + Args: + data (dict optional): the data to be set as properties Defaults to None. + prefix (str, optional): a prefix for the property key Defaults to "". + window_id (int, optional): Kodi window id. Defaults to 10000. + """ window = xbmcgui.Window(window_id) if not data: return None for (key, value) in data.items(): value = str(value) - window.setProperty('%s%s' % (prefix, key), value) + window.setProperty(f'{prefix}{key}', value) def get_file(url): clean_url = translate_path(urllib.parse.unquote(url)).replace("image://", "") clean_url = clean_url.rstrip("/") cached_thumb = xbmc.getCacheThumbName(clean_url) - vid_cache_file = os.path.join("special://profile/Thumbnails/Video", cached_thumb[0], cached_thumb) - cache_file_jpg = os.path.join("special://profile/Thumbnails/", cached_thumb[0], cached_thumb[:-4] + ".jpg").replace("\\", "/") + vid_cache_file = os.path.join("special://profile/Thumbnails/Video", + cached_thumb[0], + cached_thumb) + cache_file_jpg = os.path.join("special://profile/Thumbnails/", + cached_thumb[0], + cached_thumb[:-4] + ".jpg").replace("\\", "/") cache_file_png = cache_file_jpg[:-4] + ".png" if xbmcvfs.exists(cache_file_jpg): log("cache_file_jpg Image: " + url + "-->" + cache_file_jpg) @@ -487,9 +519,9 @@ def get_file(url): response = urllib.request.urlopen(request, timeout=3) data = response.read() response.close() - log('image downloaded: ' + clean_url) + log(f'image downloaded: {clean_url}') except Exception: - log('image download failed: ' + clean_url) + log(f'image download failed: {clean_url}') return "" if not data: return "" @@ -499,7 +531,7 @@ def get_file(url): f.write(data) return translate_path(image) except Exception: - log('failed to save image ' + url) + log(f'failed to save image {url}') return "" @@ -509,12 +541,12 @@ def fetch_musicbrainz_id(artist, artist_id=-1): uses musicbrainz.org """ base_url = "http://musicbrainz.org/ws/2/artist/?fmt=json" - url = '&query=artist:%s' % urllib.parse.quote_plus(artist.encode('utf-8')) + url = f'&query=artist:{urllib.parse.quote_plus(artist.encode("utf-8"))}' results = get_JSON_response(url=base_url + url, cache_days=30, folder="MusicBrainz") if results and len(results["artists"]) > 0: - log("found artist id for %s: %s" % (artist, results["artists"][0]["id"])) + log(f'found artist id for {artist}: {results["artists"][0]["id"]}') return results["artists"][0]["id"] else: return None @@ -545,7 +577,7 @@ def dict_to_listitems(data=None): return [] itemlist = [] for (count, result) in enumerate(data): - listitem = xbmcgui.ListItem('%s' % (str(count))) + listitem = xbmcgui.ListItem(f'{str(count)}') for (key, value) in result.items(): if not value: continue @@ -562,7 +594,7 @@ def dict_to_listitems(data=None): return itemlist -def pretty_date(time=False): +def pretty_date(btime=False): """ Get a datetime object or a int() Epoch timestamp and return a pretty string like 'an hour ago', 'Yesterday', '3 months ago', @@ -570,11 +602,11 @@ def pretty_date(time=False): # https://stackoverflow.com/questions/1551382/user-friendly-time-format-in-python """ now = datetime.datetime.now() - if type(time) is int: - diff = now - datetime.datetime.fromtimestamp(time) - elif isinstance(time, datetime.datetime): - diff = now - time - elif not time: + if isinstance(btime, int): + diff = now - datetime.datetime.fromtimestamp(btime) + elif isinstance(btime, datetime.datetime): + diff = now - btime + elif not btime: diff = now - now second_diff = diff.seconds day_diff = diff.days diff --git a/script.extendedinfo/resources/kutil131/youtube.py b/script.extendedinfo/resources/kutil131/youtube.py index b00640bf9..52a813e30 100644 --- a/script.extendedinfo/resources/kutil131/youtube.py +++ b/script.extendedinfo/resources/kutil131/youtube.py @@ -75,19 +75,23 @@ def handle_videos(results:list[dict], extended=False, api_key=''): return videos -def get_duration_in_seconds(duration:str): +def get_duration_in_seconds(duration:str) -> int: """ convert youtube duration string to seconds int """ if not duration.endswith('S'): duration = duration + '0S' - duration = duration[2:-1].replace("H", "M").split("M") - if len(duration) == 3: - return int(duration[0]) * 3600 + int(duration[1]) * 60 + int(duration[2]) - elif len(duration) == 2: - return int(duration[0]) * 60 + int(duration[1]) - else: - return int(duration[0]) + try: + duration = duration[2:-1].replace("H", "M").split("M") + if len(duration) == 3: + return int(duration[0]) * 3600 + int(duration[1]) * 60 + int(duration[2]) + elif len(duration) == 2: + return int(duration[0]) * 60 + int(duration[1]) + else: + return int(duration[0]) + except Exception as err: + utils.log(f'kutils131.youtube unable decode youtube duration of {duration} error {err}') + return 0 def get_formatted_duration(duration): @@ -213,10 +217,10 @@ def search(search_str="", hd="", orderby="relevance", limit=40, extended=True, utils.log('youtube get_data ERROR: {error}'.format(error=results.get('error').get('message'))) if not results or 'items' not in results.keys(): return None - + # Give initial value to keep IDE happy as well as in case we drop through all # choices - + listitems: ItemList = ItemList() if media_type == "video": listitems = handle_videos(results["items"], extended=extended, api_key=api_key) diff --git a/script.extendedinfo/resources/lib/bandsintown.py b/script.extendedinfo/resources/lib/bandsintown.py index faa01157d..336760988 100644 --- a/script.extendedinfo/resources/lib/bandsintown.py +++ b/script.extendedinfo/resources/lib/bandsintown.py @@ -18,17 +18,17 @@ # TVRAGE_KEY = 'VBp9BuIr5iOiBeWCFRMG' API_KEY = '' -BASE_URL = "http://api.bandsintown.com/events/search?format=json&api_version=2.0&app_id=%s&" % API_KEY +BASE_URL = f"http://api.bandsintown.com/events/search?format=json&api_version=2.0&app_id={API_KEY}&" def handle_events(results: list) -> ItemList: - """converts a list of BandsinTown events to a kutils ItemList + """converts a list of BandsinTown events to a kutils131 ItemList Args: results (list): list of event dicts Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ events = ItemList() for event in results: @@ -54,7 +54,7 @@ def get_near_events(artists: str) -> ItemList: # not possible with api 2.0 artists (str): _description_ Returns: - ItemList: A kutils ItemList of VideoItems for artist events + ItemList: A kutils131 ItemList of VideoItems for artist events """ arts = [urllib.parse.quote(art['artist'].encode("utf-8")) for art in artists[:50]] diff --git a/script.extendedinfo/resources/lib/dialogs/dialogmovieinfo.py b/script.extendedinfo/resources/lib/dialogs/dialogmovieinfo.py index adc809209..792f7cf0a 100644 --- a/script.extendedinfo/resources/lib/dialogs/dialogmovieinfo.py +++ b/script.extendedinfo/resources/lib/dialogs/dialogmovieinfo.py @@ -145,7 +145,7 @@ def reviews_list(self, control_id): author = self.FocusedItem(control_id).getProperty("author") text = "[B]%s[/B][CR]%s" % (author, self.FocusedItem(control_id).getProperty("content")) - xbmcgui.Dialog().textviewer(heading=addon.LANG(207), + xbmcgui.Dialog().textviewer(heading=addon.LANG(183), text=text) @ch.click(ID_LIST_KEYWORDS) diff --git a/script.extendedinfo/resources/lib/dialogs/dialogvideolist.py b/script.extendedinfo/resources/lib/dialogs/dialogvideolist.py index 13ad8c75f..78e7d3fd7 100644 --- a/script.extendedinfo/resources/lib/dialogs/dialogvideolist.py +++ b/script.extendedinfo/resources/lib/dialogs/dialogvideolist.py @@ -375,7 +375,7 @@ def open_media(self, control_id): def set_company_filter(self, control_id): result = xbmcgui.Dialog().input(heading=addon.LANG(16017), type=xbmcgui.INPUT_ALPHANUM) - if not result or result < 0: + if not result: return None items = tmdb.search_companies(result) if len(items) > 1: diff --git a/script.extendedinfo/resources/lib/lastfm.py b/script.extendedinfo/resources/lib/lastfm.py index 7bd73f1d8..4f268540a 100644 --- a/script.extendedinfo/resources/lib/lastfm.py +++ b/script.extendedinfo/resources/lib/lastfm.py @@ -40,14 +40,14 @@ def _handle_albums(results: dict) -> ItemList: 'mbid': album.get('mbid', ""), 'mediatype': "album", 'thumb': album['image'][-1]['#text'], - 'label': "%s - %s" % (album['artist']['name'], album['name']), + 'label': f"{album['artist']['name']} - {album['name']}", 'title': album['name']}) albums.append(album) return albums def _handle_artists(results) -> ItemList: - """Converts TADB artist query to kutils ItemList + """Converts TADB artist query to kutils131 ItemList Args: results (_type_): _description_ @@ -111,7 +111,7 @@ def get_similar_artists(artist_mbid: str) -> ItemList: artist_mbid (str): The musicbrainz id for the artist Returns: - ItemList: a kutils object that wraps a list of artists info dicts + ItemList: a kutils131 object that wraps a list of artists info dicts """ if not artist_mbid: return ItemList(content_type="artists") @@ -163,8 +163,7 @@ def get_data(method: str, params=None, cache_days=0.5) -> dict: params["api_key"] = LAST_FM_API_KEY params["format"] = "json" params = {k: str(v) for k, v in params.items() if v} - url = "{base_url}{params}".format(base_url=BASE_URL, - params=urllib.parse.urlencode(params)) + url = f"{BASE_URL}{urllib.parse.urlencode(params)}" return utils.get_JSON_response(url=url, cache_days=cache_days, folder="LastFM") diff --git a/script.extendedinfo/resources/lib/process.py b/script.extendedinfo/resources/lib/process.py index 3dd6e260f..bbcdee822 100644 --- a/script.extendedinfo/resources/lib/process.py +++ b/script.extendedinfo/resources/lib/process.py @@ -359,7 +359,7 @@ def start_info_actions(info: str, params: dict[str, str]): mode="search") finally: addon.clear_global('infodialogs.active') - elif info == 'extendedinfo': # called with movie + elif info == 'extendedinfo': # called with movie id if addon.get_global('infodialogs.active'): return None addon.set_global('infodialogs.active', "true") diff --git a/script.extendedinfo/resources/lib/theaudiodb.py b/script.extendedinfo/resources/lib/theaudiodb.py index ecdd45d6e..9f24a4d99 100644 --- a/script.extendedinfo/resources/lib/theaudiodb.py +++ b/script.extendedinfo/resources/lib/theaudiodb.py @@ -23,14 +23,14 @@ PLUGIN_BASE = 'plugin://script.extendedinfo/?info=' -def _handle_albums(results): - """[summary] +def _handle_albums(results:dict) -> ItemList: + """Creates an ItemList of kutils131 AudioItems Args: - results ([type]): [description] + results (dict): TADB album info Returns: - [type]: [description] + ItemList: kutils131 ItemList of AudioItems """ albums = ItemList(content_type="albums") if not results.get('album'): @@ -45,8 +45,7 @@ def _handle_albums(results): elif item.get('strDescription'): desc = item['strDescription'] if item.get('strReview'): - desc += "[CR][CR][B]%s:[/B][CR][CR]%s" % ( - addon.LANG(185), item['strReview']) + desc += f"[CR][CR][B]{addon.LANG(185)}:[/B][CR][CR]{item['strReview']}" album = AudioItem(label=item['strAlbum'], path="") album.set_infos({'artist': item['strArtist'], @@ -77,43 +76,67 @@ def _handle_albums(results): def _handle_tracks(results: dict) -> ItemList: + """Creates an ItemList of track AudioItems + + Args: + results (dict): TADB tracks + + Returns: + ItemList: The kutils131 itemlist of the tracts + """ tracks = ItemList(content_type="songs") if not results.get('track'): return tracks for item in results['track']: youtube_id = utils.extract_youtube_id(item.get('strMusicVid', '')) track = AudioItem(label=item['strTrack'], - path="%syoutubevideo&&id=%s" % (PLUGIN_BASE, youtube_id)) + path=f"{PLUGIN_BASE}youtubevideo&&id={youtube_id}") track.set_infos({'title': item['strTrack'], 'album': item['strAlbum'], 'artist': item['strArtist'], 'mediatype': "song"}) track.set_properties({'mbid': item['strMusicBrainzID']}) track.set_artwork( - {'thumb': "http://i.ytimg.com/vi/%s/0.jpg" % youtube_id}) + {'thumb': f"http://i.ytimg.com/vi/{youtube_id}/0.jpg"}) tracks.append(track) return tracks -def _handle_musicvideos(results): +def _handle_musicvideos(results:dict) -> ItemList: + """Creates an ItemList of TADB VideoItems + + Args: + results (dict): TADB musicvideos + + Returns: + ItemList: the kutils131 ItemList of musicvideos + """ mvids = ItemList(content_type="musicvideos") if not results.get('mvids'): return mvids for item in results['mvids']: youtube_id = utils.extract_youtube_id(item.get('strMusicVid', '')) mvid = VideoItem(label=item['strTrack'], - path="%syoutubevideo&&id=%s" % (PLUGIN_BASE, youtube_id)) + path=f"{PLUGIN_BASE}youtubevideo&&id={youtube_id}") mvid.set_infos({'title': item['strTrack'], 'plot': item['strDescriptionEN'], 'mediatype': "musicvideo"}) mvid.set_properties({'id': item['idTrack']}) mvid.set_artwork( - {'thumb': "http://i.ytimg.com/vi/%s/0.jpg" % youtube_id}) + {'thumb': f"http://i.ytimg.com/vi/{youtube_id}/0.jpg"}) mvids.append(mvid) return mvids def extended_artist_info(results: dict) -> dict: + """Gets artist info from TADB and returns artist dict + + Args: + results (dict): TADB artist info + + Returns: + dict: artist details using Kodi properties keywords + """ if not results.get('artists'): return {} local_bio = 'strBiography' + addon.setting("LanguageID").upper() @@ -164,7 +187,7 @@ def get_artist_discography(search_str) -> ItemList: search_str (str): Artist name Returns: - [ItemList]: Kutils list instance of AudioItems + [ItemList]: kutils131 ItemList instance of AudioItems """ if not search_str: return ItemList(content_type="albums") @@ -214,7 +237,17 @@ def get_most_loved_tracks(search_str="", mbid="") -> ItemList | list: return _handle_tracks(results) -def get_album_details(audiodb_id="", mbid=""): +def get_album_details(audiodb_id="", mbid="") -> ItemList | list: + """Creates ItemList of TADB alubm detals + + Args: + audiodb_id (str, optional): TADB album id "". + mbid (str, optional): mbid album groupd id Defaults to "". + + Returns: + list: empty if no results + ItemList: kutils131 ItemList of album AudioItems + """ if audiodb_id: url = 'album' params = {"m": audiodb_id} @@ -227,7 +260,15 @@ def get_album_details(audiodb_id="", mbid=""): return _handle_albums(results)[0] -def get_musicvideos(audiodb_id): +def get_musicvideos(audiodb_id) -> ItemList: + """Creates ItemList of musicvideo Videoitems + + Args: + audiodb_id (str): TADB id + + Returns: + ItemList: kutils131 ItemList + """ if not audiodb_id: return ItemList(content_type="musicvideos") params = {"i": audiodb_id} @@ -265,7 +306,6 @@ def get_data(url: str, params: dict) -> dict: if tadb_key is None or tadb_key == '': tadb_key = AUDIO_DB_KEY #limited function key params: dict = {k: str(v) for k, v in params.items() if v} - url: str = "{0}/{1}/{2}.php?{3}".format(BASE_URL, - tadb_key, url, urllib.parse.urlencode(params)) + url: str = f"{BASE_URL}/{tadb_key}/{url}.php?{urllib.parse.urlencode(params)}" return utils.get_JSON_response(url=url, folder="TheAudioDB") diff --git a/script.extendedinfo/resources/lib/themoviedb.py b/script.extendedinfo/resources/lib/themoviedb.py index 99369d590..8cfdcdd70 100644 --- a/script.extendedinfo/resources/lib/themoviedb.py +++ b/script.extendedinfo/resources/lib/themoviedb.py @@ -10,7 +10,8 @@ creation Public functions: - set_rating: sets local videodb userrating or TMDB user rating (called from button in dialogvideoinfo) + set_rating: sets local videodb userrating or TMDB user rating + (called from button in dialogvideoinfo) change_fav_status: sets TMDB user favorite (called from button in dialogvideoinfo) create_list: creates a new user list on TMDB remove_list_dialog: opens a Kodi select dialog to allow user to select @@ -18,13 +19,13 @@ change_list_status: Adds or removes a video item from user's TMDB list get_account_lists: gets the user's TMDB lists get_certification_list: gets the TMDB certifications ("MPAA") - handle_movies/tvshows/episodes: creates a kutils ItemList instance - of kutils VideoItems instances with Kodi listitem properties for the + handle_movies/tvshows/episodes: creates a kutils131 ItemList instance + of kutils131 VideoItems instances with Kodi listitem properties for the video media type to display as Kodi container content items - handle_lists: adds user TMDB lists to kutils ItemList instance for display + handle_lists: adds user TMDB lists to kutils131 ItemList instance for display in Kodi cantainer content - handle_seasons: adds seasons to kutils ItemList instance - handle_videos: adds video clips as kutils VideoItems to kutils ItemList instance + handle_seasons: adds seasons to kutils131 ItemList instance + handle_videos: adds video clips as kutils131 VideoItems to kutils131 ItemList instance search_companies: gets the TMDB company ID for company (studio) name string multi_search: performs TMDB multisearch "Multi search currently supports searching for movies, tv shows and people in a single request." @@ -58,7 +59,7 @@ extended_actor_info: sets Kodi listitem properties as a kutils VideoItem instance and additionally returns a dict of kutil itemlists instances - get_movie_lists: gets kutils ItemList instance for movie lists + get_movie_lists: gets kutils131 ItemList instance for movie lists get_rated_media_items: queries TMDB for user media ratings get_fav_items: queries TMDB for user favorites get_movies_from_list: queries TMDB for movie list @@ -81,11 +82,17 @@ import urllib.parse import urllib.request -from resources.kutil131 import ItemList, addon, kodijson, selectdialog - -from resources.kutil131 import VideoItem, local_db, utils - -TMDB_KEY = '34142515d9d23817496eeb4ff1d223d0' +from resources.kutil131 import (ItemList, VideoItem, addon, kodiaddon, kodijson, local_db, + selectdialog, utils) + +TMDB_TOKEN = ('wpjCrsKBwpjClnvCmsKiwoDCmcKCf8KFwrB8ZsKFwpl-bWXCnsKqesKgwprCh8K' + 'HwpzChMKgesKhwoJ7wqXCmn3CssKIwpzChcKHwpjCscKJwojCisKiwofCm37CoMK' + 'QdHdlwoJ7wonCrsKBacKKYX3Csn9iwoN3wpjCsX93fcKqwoLCn35pwo_CmX9pfsK' + 'hwonCrcKBe8KGwqh9wqV7ZcKQwop6wrF-ZsKJwq7ChnVxbcKEdMKLwqrCj8KkfsK' + 'fwo3CisKCwqR5wqbChMKawphmd8KjwpPCrX1twpDCqnrCoMKZd8KiwpnCmMKkwob' + 'CnMKOesKDwpV8e8KAYsKQwot_wrHCkcKLbcKswoLCm8KfwrDCnMKBZHfCgMKAwpT' + 'CjsKJwpzCr8KWwpbCkcKnwoV5wpliesKYaWzChcKJwovCoMKua3htwojCj396wox' + '8woLChcKQwqDCscKDwpHCpMKe') POSTER_SIZES = ["w92", "w154", "w185", "w342", "w500", "w780", "original"] LOGO_SIZES = ["w45", "w92", "w154", "w185", "w300", "w500", "original"] BACKDROP_SIZES = ["w300", "w780", "w1280", "original"] @@ -94,13 +101,16 @@ HEADERS = { 'Accept': 'application/json', 'Content-Type': 'application/json', - 'User-agent': 'Kodi/17.0 ( phil65@kodi.tv )' + 'User-agent': 'Kodi/19.0 ( scott967@kodi.tv )', + 'Authorization': '' } IMAGE_BASE_URL = "http://image.tmdb.org/t/p/" POSTER_SIZE = "w500" URL_BASE = "https://api.themoviedb.org/3/" -ALL_MOVIE_PROPS = "account_states,alternative_titles,credits,images,keywords,release_dates,videos,translations,similar,reviews,lists,rating" -ALL_TV_PROPS = "account_states,alternative_titles,content_ratings,credits,external_ids,images,keywords,rating,similar,translations,videos" +ALL_MOVIE_PROPS = ("account_states,alternative_titles,credits,images,keywords," + "release_dates,videos,translations,similar,reviews,lists,rating") +ALL_TV_PROPS = ("account_states,alternative_titles,content_ratings,credits," + "external_ids,images,keywords,rating,similar,translations,videos") ALL_ACTOR_PROPS = "tv_credits,movie_credits,combined_credits,images,tagged_images" ALL_SEASON_PROPS = "videos,images,external_ids,credits" ALL_EPISODE_PROPS = "account_states,credits,external_ids,images,rating,videos" @@ -125,13 +135,31 @@ "planned": addon.LANG(32076)} +def _mulitple_repl(text:str) -> str: + """ replaces html tags in text with Kodi label formats + TRANS is a literal dict with regex patterns to match and replace + Args: + text (str): string to replace tags + + Returns: + str: string with Kodi formatting + + """ + TRANS = {"": "", + "": "[B]", + "": "[/B]", + "": "[I]", + "": "[/I]"} + regex = re.compile(f"({'|'.join(map(re.escape, TRANS.keys()))})") + return regex.sub(lambda mo: TRANS[mo.group()], text) + class LoginProvider: """ logs into TMDB for user or guest and gets corresponding session or guest session id """ def __init__(self, *args, **kwargs) -> LoginProvider: - """Creates a new session for user at tmdb + """Creates a new user for accessing tmdb Returns: LoginProvider: session for user @@ -142,12 +170,22 @@ def __init__(self, *args, **kwargs) -> LoginProvider: self.username = kwargs.get("username") self.password = kwargs.get("password") + def reset_session_id(self): + """Resets the user session_id in settings when tmdb authentication fails + This will require obraining a new session_id via get_session_id + """ + utils.log('tmdb.LoginProvider tmdb authentication failed, resetting session_id') + if addon.setting("session_id"): + addon.set_setting("session_id", "") + + def check_login(self) -> bool: """determines if user has an active login (session id) on tmdb when opening a tmdb-based dialog see https://developers.themoviedb.org/3/authentication/how-do-i-generate-a-session-id for the tmdb protocol Note: in api v4 this will become mandatory. Optional in v3 + Note2: checks addon settings for a saved session id first. Returns: bool: true if user has an active session id from tmdb @@ -157,7 +195,7 @@ def check_login(self) -> bool: return False def get_account_id(self) -> str: - """returns TMDB account id + """returns TMDB account id. Requires an active session id Returns: str: the tmdb account id or None @@ -185,6 +223,23 @@ def get_guest_session_id(self) -> str: return None return str(response["guest_session_id"]) + def test_session_id(self, session_id) -> bool: + """tests session_id by getting account_id + If no account_id returned session_id is invalid. + + Args: + session_id (str): a session_id stored in settings + + Returns: + bool: True if session_id got and account_id + """ + response = get_data(url="account", + params={"session_id": session_id}, + cache_days=999999) + if response and "status_code" in response: + return response.get("status_code") == 1 + return False + def get_session_id(self, cache_days=999) -> str: """gets the tmdb session id from addon settings or creates one if not found @@ -196,12 +251,16 @@ def get_session_id(self, cache_days=999) -> str: str: the tmdb session id """ if addon.setting("session_id"): - return addon.setting("session_id") + self.session_id = addon.setting("session_id") + if self.test_session_id(self.session_id): + return addon.setting("session_id") self.create_session_id() return self.session_id def create_session_id(self) -> None: """gets session id from tmdb as self.session_id and saves it in addon settings + 1. get request token from tmdb + 2. create session with login using username/pass """ response = get_data(url="authentication/token/new", cache_days=0) @@ -221,7 +280,7 @@ def create_session_id(self) -> None: def set_rating(media_type, media_id, rating, dbid=None): - ''' + '''Sets rating for a user media item on tmdb account and Kodi userrating media_type: movie, tv or episode media_id: tmdb_id / episode ident array rating: rating value (1 - 10, 0 for deleting) @@ -236,13 +295,13 @@ def set_rating(media_type, media_id, rating, dbid=None): params["session_id"] = Login.get_session_id() else: params["guest_session_id"] = Login.get_guest_session_id() + utils.log('tmdb.set_rating no login use guest session id') if media_type == "episode": if not media_id[1]: media_id[1] = "0" - url = "tv/%s/season/%s/episode/%s/rating" % ( - media_id[0], media_id[1], media_id[2]) + url = f"tv/{media_id[0]}/season/{media_id[1]}/episode/{media_id[2]}/rating" else: - url = "%s/%s/rating" % (media_type, media_id) + url = f"{media_type}/{media_id}/rating" results = send_request(url=url, params=params, values={"value": "%.1f" % @@ -254,16 +313,37 @@ def set_rating(media_type, media_id, rating, dbid=None): def send_request(url, params, values, delete=False): - params["api_key"] = TMDB_KEY + """formats a tmdb api query url + + Args: + url (_type_): _description_ + params (_type_): _description_ + values (_type_): _description_ + delete (bool, optional): request is a post or delete. Defaults to False. + + Returns: + _type_: _description_ + """ + HEADERS['Authorization'] = 'Bearer ' + kodiaddon.decode_string(TMDB_TOKEN, uuick=addon.setting('tmdb_tok')) params = {k: str(v) for k, v in params.items() if v} - url = "%s%s?%s" % (URL_BASE, url, urllib.parse.urlencode(params)) + url = f"{URL_BASE}{url}?{urllib.parse.urlencode(params)}" if delete: return utils.delete(url, values=values, headers=HEADERS) else: return utils.post(url, values=values, headers=HEADERS) -def change_fav_status(media_id=None, media_type="movie", status="true"): +def change_fav_status(media_id=None, media_type="movie", status="true") -> str: + """Updates user favorites list on tmdb + + Args: + media_id (_type_, optional): tmdb id. Defaults to None. + media_type (str, optional): _tmdb medi type. Defaults to "movie". + status (str, optional): tmdb favorite status. Defaults to "true". + + Returns: + str: tmdb result status message + """ session_id = Login.get_session_id() if not session_id: utils.notify("Could not get session id") @@ -271,7 +351,7 @@ def change_fav_status(media_id=None, media_type="movie", status="true"): values = {"media_type": media_type, "media_id": media_id, "favorite": status} - results = send_request(url="account/%s/favorite" % Login.get_account_id(), + results = send_request(url=f"account/{Login.get_account_id()}/favorite", params={"session_id": session_id}, values=values) if results: @@ -293,7 +373,15 @@ def create_list(list_name): return results["list_id"] -def remove_list_dialog(account_lists): +def remove_list_dialog(account_lists) -> bool: + """opens select dialog to remove list from user tmdb lists + + Args: + account_lists (_type_): user's existing tgmdb lists + + Returns: + bool: True if user successfully removed a list + """ index = selectdialog.open(header=addon.LANG(32138), listitems=account_lists) if index >= 0: @@ -302,7 +390,16 @@ def remove_list_dialog(account_lists): def remove_list(list_id): - results = send_request(url="list/%s" % list_id, + """removes user selected list from user's tmdb lists + raises toast with results from tmdb + + Args: + list_id (_type_): id of user tmdb list to remove + + Returns: + _type_: _description_ + """ + results = send_request(url=f"list/{list_id}", params={"session_id": Login.get_session_id()}, values={'media_id': list_id}, delete=True) @@ -312,8 +409,16 @@ def remove_list(list_id): def change_list_status(list_id, movie_id, status): + """adds or removes item from user tmdb list + raises toast with results from tmdb + + Args: + list_id (_type_): the user list to update + movie_id (_type_): th eitem tmdb id to update + status (_type_): add or remove item + """ method = "add_item" if status else "remove_item" - results = send_request(url="list/%s/%s" % (list_id, method), + results = send_request(url=f"list/{list_id}/{method}", params={"session_id": Login.get_session_id()}, values={'media_id': movie_id}) if results: @@ -328,7 +433,7 @@ def get_account_lists(cache_days=0): account_id = Login.get_account_id() if not session_id or not account_id: return [] - response = get_data(url="account/%s/lists" % (account_id), + response = get_data(url=f"account/{account_id}/lists", params={"session_id": session_id}, cache_days=cache_days) return response["results"] @@ -406,7 +511,7 @@ def handle_multi_search(results): return listitems -def handle_movies(results: list[dict], local_first=True, sortkey="year") ->ItemList: +def handle_movies(results: list[dict], local_first=True, sortkey="year") ->ItemList[VideoItem]: """takes a list of movies (dicts) and adds local db data and then sorts as an ItemList The tmdb movie keys are converted to extendedinfo keys and genre ids converted to localized text strings, then a VideoItem is created for each movie. The @@ -419,7 +524,7 @@ def handle_movies(results: list[dict], local_first=True, sortkey="year") ->ItemL sortkey (str, optional): key to sort the movies. Defaults to "year". Returns: - ItemList: a kutils ItemList of the movies to display in a Kodi container + ItemList: a kutils131 ItemList of the movies to display in a Kodi container """ response: dict = get_data(url="genre/movie/list", params={"language": addon.setting("LanguageID")}, @@ -440,7 +545,7 @@ def handle_movies(results: list[dict], local_first=True, sortkey="year") ->ItemL 'mediatype': "movie", 'country': movie.get('original_language'), 'plot': movie.get('overview'), - 'Trailer': "%splaytrailer&&id=%s" % (PLUGIN_BASE, movie.get("id")), + 'Trailer': f"{PLUGIN_BASE}playtrailer&&id={movie.get('id')}", 'genre': " / ".join([i for i in genres if i]), 'votes': movie.get('vote_count'), 'year': utils.get_year(release_date), @@ -481,7 +586,7 @@ def handle_tvshows(results:list[dict], local_first=True, sortkey="year"): elif len(tv["episode_run_time"]) == 1: duration = "%i" % (tv["episode_run_time"][0]) newtv = VideoItem(label=tv.get('name'), - path=PLUGIN_BASE + 'extendedtvinfo&&id=%s' % tmdb_id) + path=f'{PLUGIN_BASE}extendedtvinfo&&id={tmdb_id}') newtv.set_infos({'originaltitle': tv.get('original_name', ""), 'title': tv.get('name'), 'duration': duration, @@ -510,7 +615,15 @@ def handle_tvshows(results:list[dict], local_first=True, sortkey="year"): return tvshows -def handle_episodes(results): +def handle_episodes(results:list[dict]) -> ItemList[VideoItem]: + """Creates an ItemList of VideoItems for episodes + + Args: + results (_type_): tmdb episode details + + Returns: + _type_: Kutils131 ItemList of episode VideoItmes + """ listitems = ItemList(content_type="episodes") for item in results: title = item.get("name") @@ -535,7 +648,7 @@ def handle_episodes(results): return listitems -def handle_release_dates(results:list[dict]) -> ItemList: +def handle_release_dates(results:list[dict]) -> ItemList[VideoItem]: """Creates ItemList of video mpaa cert and dates as VideoItems Args: @@ -573,7 +686,7 @@ def handle_release_dates(results:list[dict]) -> ItemList: return listitems -def handle_content_ratings(results): +def handle_content_ratings(results:list[dict]) -> ItemList[VideoItem]: listitems = ItemList() for item in results: listitem = VideoItem(label=item['rating']) @@ -583,12 +696,20 @@ def handle_content_ratings(results): return listitems -def handle_reviews(results): +def handle_reviews(results:list[dict]) -> ItemList[VideoItem]: + """Creates an ItemList of VideoItems for tmdb reviews + + Args: + results (_type_): tmdb review details + + Returns: + ItemList: Kutils131 ItemList of review VideoItmes + """ listitems = ItemList() for item in results: listitem = VideoItem(label=item.get('author')) listitem.set_properties({'author': item.get('author'), - 'content': re.sub("", "", item.get('content')).lstrip(), + 'content': _mulitple_repl(item.get('content')).lstrip(), 'id': item.get('id'), 'url': item.get('url')}) listitems.append(listitem) @@ -638,7 +759,15 @@ def handle_lists(results:list[dict]) -> ItemList[VideoItem]: return listitems -def handle_seasons(results): +def handle_seasons(results:list[dict]) -> ItemList[VideoItem]: + """Creates an ItemList of VideoItems for seasons + + Args: + results (_type_): tmdb season details + + Returns: + ItemList: Kutils131 ItemList of season VideoItmes + """ listitems = ItemList(content_type="seasons") for item in results: season = item.get('season_number') @@ -678,8 +807,8 @@ def handle_videos(results:list[dict]) -> ItemList[VideoItem]: return listitems -def handle_people(results: list[dict], select: bool = False) -> ItemList[VideoItem]: - """converts list of tmdb people into kutils videoitems +def handle_people(results:list[dict], select: bool = False) -> ItemList[VideoItem]: + """converts list of tmdb people into kutils131 videoitems The VideoItem properties are tmdb query results Args: @@ -687,7 +816,7 @@ def handle_people(results: list[dict], select: bool = False) -> ItemList[VideoIt select (bool): True if people are to be added to select dialog listing Returns: - ItemList: A kutils ItemList of VideoItems for tmdb persons + ItemList: A kutils131 ItemList of VideoItems for tmdb persons """ people = ItemList(content_type="actors") for item in results: @@ -728,7 +857,7 @@ def handle_images(results:list[dict]) -> ItemList[VideoItem]: results (list[dict]): image list Returns: - ItemList: kutils itemlist of the images as VideoItems type 'music'? + ItemList: kutils131 itemlist of the images as VideoItems type 'music'? """ images = ItemList(content_type="images") for item in results: @@ -880,7 +1009,7 @@ def get_set_id(set_name): return response["results"][0]["id"] -def get_data(url: str = "", params: dict = None, cache_days: float = 14) -> dict: +def get_data(url:str = "", params:dict = None, cache_days:float = 14) -> dict|None: """Queries tmdb api v3 or local cache Args: @@ -895,15 +1024,17 @@ def get_data(url: str = "", params: dict = None, cache_days: float = 14) -> dict TMDB response """ params = params if params else {} - params["api_key"] = TMDB_KEY + HEADERS['Authorization'] = 'Bearer ' + kodiaddon.decode_string(TMDB_TOKEN, uuick=addon.setting('tmdb_tok')) params = {k: str(v) for k, v in params.items() if v} url = "%s%s?%s" % (URL_BASE, url, urllib.parse.urlencode(params)) - response = utils.get_JSON_response(url, cache_days, "TheMovieDB") + response = utils.get_JSON_response(url, cache_days, folder='TheMovieDB', headers=HEADERS) if not response: utils.log("tmdb.get_data No response from TMDB") return None if "status_code" in response and response.get("status_code") != 1: - utils.log(f'tmdb.get_data FAIL TMDB status code: {response.get("status_code")} {traceback.format_stack(limit=-3)}') + utils.log(f'tmdb.get_data FAIL TMDB status code: {response.get("status_code")} - {response.get("status_message")} {traceback.format_stack(limit=-3)}') + if response.get('status_code') == 3: + Login.reset_session_id() return None return response @@ -921,7 +1052,7 @@ def get_company_data(company_id): def get_credit_info(credit_id): if not credit_id: return [] - return get_data(url="credit/%s" % (credit_id), + return get_data(url=f"credit/{credit_id}", params={"language": addon.setting("LanguageID")}, cache_days=30) @@ -1030,14 +1161,13 @@ def extended_movie_info(movie_id=None, dbid=None, cache_days=14) -> tuple[VideoI cache_days (int, optional): Days to use cached info. Defaults to 14. Returns: - tuple: kutils VideoItem of movie info - dict of key str value kutils ItemList + tuple: kutils131 VideoItem of movie info + dict of key str value kutils131 ItemList dict of account states """ if not movie_id: return None - info: dict | None = get_movie( - movie_id=movie_id, cache_days=cache_days) + info: dict | None = get_movie(movie_id=movie_id, cache_days=cache_days) if not info or info.get('success') is False: utils.notify("Could not get tmdb movie information") return (None, None, None) @@ -1064,7 +1194,7 @@ def extended_movie_info(movie_id=None, dbid=None, cache_days=14) -> tuple[VideoI 'writer': " / ".join(authors), 'plot': info.get('overview'), 'originaltitle': info.get('original_title'), - 'Country': info.get('original_language'), + 'country': info.get('original_language'), 'imdbnumber': info.get('imdb_id'), 'genre': " / ".join([i["name"] for i in info["genres"]]), 'year': utils.get_year(info.get("release_date")), @@ -1285,8 +1415,8 @@ def extended_actor_info(actor_id: int) -> tuple[VideoItem, dict[str, ItemList]]: Returns: info[VideoItem]: a populated Kodi listitem - lists[dict]: a dict of kutils Itemlists (one per category) Itemlist is sequence - of kutils VideoItems + lists[dict]: a dict of kutils131 Itemlists (one per category) Itemlist is sequence + of kutils131 VideoItems None: if no results from tmdb """ if not actor_id: @@ -1407,7 +1537,7 @@ def get_fav_items(media_type, sort_by=None, page=1): return itemlist -def get_movies_from_list(list_id, cache_days=5): +def get_movies_from_list(list_id:str, cache_days=5): ''' get movie dict list from tmdb list. ''' @@ -1436,7 +1566,7 @@ def get_actor_credits(actor_id, media_type): def get_movie(movie_id, light=False, cache_days=30) -> dict | None: - """gets details from tmdb for a moview with tmdb movie-id + """gets details from tmdb for a movie with tmdb movie-id Args: movie_id (str): tmdb movie id @@ -1448,17 +1578,16 @@ def get_movie(movie_id, light=False, cache_days=30) -> dict | None: Union[dict, None]: A dict of movie infos. If no response from TMDB returns None """ - params = {"include_image_language": "en,null,%s" % addon.setting("LanguageID"), + params = {"include_image_language": f"en,null,{addon.setting('LanguageID')}", "language": addon.setting("LanguageID"), "append_to_response": None if light else ALL_MOVIE_PROPS } if Login.check_login(): params["session_id"] = Login.get_session_id() - return get_data(url="movie/%s" % (movie_id), + return get_data(url=f"movie/{movie_id}", params=params, cache_days=cache_days) - def get_similar_movies(movie_id): ''' get dict list containing movies similar to *movie_id @@ -1468,7 +1597,6 @@ def get_similar_movies(movie_id): return [] return handle_movies(response["similar"]["results"]) - def get_similar_tvshows(tvshow_id): ''' return list with similar tvshows for show with *tvshow_id (TMDB ID) diff --git a/script.extendedinfo/resources/lib/trakt.py b/script.extendedinfo/resources/lib/trakt.py index c05502d7b..5148f67f6 100644 --- a/script.extendedinfo/resources/lib/trakt.py +++ b/script.extendedinfo/resources/lib/trakt.py @@ -8,14 +8,14 @@ Public functions: get_episodes(content) gets upcoming episodes content shows or premiering shows content premieres - returns a kutils ItemList + returns a kutils131 ItemList get_shows(show_type) gets tvshows for showtype trending/popular/anticipated - returns a kutils ItemList + returns a kutils131 ItemList get_shows_from_time(show_type, period) gets tvshos for showtype collected/played/ watched for previous month - returns a kutils ItemList + returns a kutils131 ItemList get_movies(movie_type) gets movies for movietype trending/popular/anticipated - returns a kutils ItemList + returns a kutils131 ItemList get_movies_from_time(movie_type, period) gets movies forf movietype collected/ played/watched for previous month get_similar(media_type, imdb_id) gets related mediatype show(s)/movie(s) from @@ -49,7 +49,7 @@ def get_episodes(content): content (str): enum shows (upcoming) or premieres (new shows) Returns: - ItemList: a kutils ItemList instance of VideoItems + ItemList: a kutils131 ItemList instance of VideoItems """ shows = ItemList(content_type="episodes") url = "" @@ -72,12 +72,9 @@ def get_episodes(content): ep = episode["episode"] tv = episode["show"] title = ep["title"] if ep["title"] else "" - label = "{0} - {1}x{2}. {3}".format(tv["title"], - ep["season"], - ep["number"], - title) + label = f'{tv["title"]} - {ep["season"]}x{ep["number"]}. {title}' show = VideoItem(label=label, - path=PLUGIN_BASE + 'extendedtvinfo&&tvdb_id=%s' % tv["ids"]["tvdb"]) + path=f'{PLUGIN_BASE}extendedtvinfo&&tvdb_id={tv["ids"]["tvdb"]}') show.set_infos({'title': title, 'aired': ep["first_aired"], 'season': ep["season"], @@ -114,21 +111,20 @@ def get_episodes(content): def handle_movies(results): - """helper function creates kutils VideoItems and adds to an ItemList + """helper function creates kutils131 VideoItems and adds to an ItemList Args: results (list): a list of dicts, each dict is Trakt data for movie Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ movies = ItemList(content_type="movies") path = 'extendedinfo&&id=%s' if addon.bool_setting( "infodialog_onclick") else "playtrailer&&id=%s" for i in results: item = i["movie"] if "movie" in i else i - trailer = "%syoutubevideo&&id=%s" % ( - PLUGIN_BASE, utils.extract_youtube_id(item["trailer"])) + trailer = f'{PLUGIN_BASE}youtubevideo&&id={utils.extract_youtube_id(item["trailer"])}' movie = VideoItem(label=item["title"], path=PLUGIN_BASE + path % item["ids"]["tmdb"]) movie.set_infos({'title': item["title"], @@ -163,20 +159,20 @@ def handle_movies(results): def handle_tvshows(results): - """helper function creates kutils VideoItems and adds to an ItemList + """helper function creates kutils131 VideoItems and adds to an ItemList Args: results (list): a list of dicts, each dict is Trakt data for show Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ shows = ItemList(content_type="tvshows") for i in results: item = i["show"] if "show" in i else i airs = item.get("airs", {}) show = VideoItem(label=item["title"], - path='%sextendedtvinfo&&tvdb_id=%s' % (PLUGIN_BASE, item['ids']["tvdb"])) + path=f'{PLUGIN_BASE}extendedtvinfo&&tvdb_id={item["ids"]["tvdb"]}') show.set_infos({'mediatype': "tvshow", 'title': item["title"], 'duration': item["runtime"] * 60 if item["runtime"] else "", @@ -221,9 +217,9 @@ def get_shows(show_type): show_type (str): enum trending/popular/anticipated Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ - results = get_data(url='shows/%s' % show_type, + results = get_data(url=f'shows/{show_type}', params={"extended": "full"}) return handle_tvshows(results) if results else [] @@ -236,9 +232,9 @@ def get_shows_from_time(show_type, period="monthly"): period (str, optional): enum daily/weekly/monthly/yearly/all Defaults to "monthly" Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ - results = get_data(url='shows/%s/%s' % (show_type, period), + results = get_data(url=f'shows/{show_type}/{period}', params={"extended": "full"}) return handle_tvshows(results) if results else [] @@ -250,9 +246,9 @@ def get_movies(movie_type): movie_type (str): enum trending/popular/anticipated Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ - results = get_data(url='movies/%s' % movie_type, + results = get_data(url=f'movies/{movie_type}', params={"extended": "full"}) return handle_movies(results) if results else [] @@ -265,9 +261,9 @@ def get_movies_from_time(movie_type, period="monthly"): period (str, optional): enum daily/weekly/monthly/yearly/all Defaults to "monthly" Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ - results = get_data(url='movies/%s/%s' % (movie_type, period), + results = get_data(url=f'movies/{movie_type}/{period}', params={"extended": "full"}) return handle_movies(results) if results else [] @@ -280,11 +276,11 @@ def get_similar(media_type, imdb_id): imdb_id (str): the imbd id for show or movie Returns: - ItemList: a kutils ItemList of VideoItems + ItemList: a kutils131 ItemList of VideoItems """ if not imdb_id or not media_type: return None - results = get_data(url='%ss/%s/related' % (media_type, imdb_id), + results = get_data(url=f'{media_type}s/{imdb_id}/related', params={"extended": "full"}) if not results: return None @@ -307,11 +303,11 @@ def get_data(url, params=None, cache_days=10): Returns: dict: a dict from the deserialized JSON response from api or None - Note: kutils does not return the GET failure code (ie if not 200) + Note: kutils131 does not return the GET failure code (ie if not 200) """ params = params if params else {} params["limit"] = 10 - url = "%s%s?%s" % (BASE_URL, url, urllib.parse.urlencode(params)) + url = f"{BASE_URL}{url}?{urllib.parse.urlencode(params)}" return utils.get_JSON_response(url=url, folder="Trakt", headers=HEADERS, diff --git a/script.extendedinfo/resources/lib/windowmanager.py b/script.extendedinfo/resources/lib/windowmanager.py index 2199645b3..23eb9b135 100644 --- a/script.extendedinfo/resources/lib/windowmanager.py +++ b/script.extendedinfo/resources/lib/windowmanager.py @@ -242,8 +242,9 @@ def open_infodialog(self, dialog): """opens the info dialog Args: - dialog (DialogActorInfo): a DialogActorinfo instance of a Kodi dialog - self.info is a kutils.VideoItem or AudioItem to display in dialog + dialog (DialogActorInfo | DialogMovieInfo | DialogTVShowInfo | DialogEpisodeInfo | DialogSeasonInfo): + a Dialog*Info instance of a Kodi dialog + dialog.info is a kutils131.VideoItem or AudioItem to display in dialog """ if dialog.info: self.open_dialog(dialog) @@ -255,7 +256,7 @@ def open_dialog(self, dialog): """Opens a Kodi dialog managing a stack of dialogs Args: - dialog (DialogActorInfo): a Kodi xml dialog window + dialog (DialogVideoList | DialogYoutubeList | Dialog*Info): a Kodi xml dialog window """ if self.active_dialog: self.window_stack.append(self.active_dialog) @@ -274,7 +275,12 @@ def open_dialog(self, dialog): # addon.set_global("infobackground", self.saved_background) # self.window_stack = [] # return None - if self.window_stack and not self.monitor.abortRequested(): +# +# if self.window_stack and not self.monitor.abortRequested(): +# + if self.window_stack: + while not self.monitor.abortRequested() and player.started and not player.stopped: + self.monitor.waitForAbort(2) self.active_dialog = self.window_stack.pop() xbmc.sleep(300) try: diff --git a/script.extendedinfo/resources/settings.xml b/script.extendedinfo/resources/settings.xml index c85574644..b44adf6f0 100644 --- a/script.extendedinfo/resources/settings.xml +++ b/script.extendedinfo/resources/settings.xml @@ -4,6 +4,18 @@ + + 0 + false + 35704479108606 + + false + + + 32172 + true + + 0 true diff --git a/script.extendedinfo/resources/skins/Default/1080i/script-script.extendedinfo-DialogVideoInfo.xml b/script.extendedinfo/resources/skins/Default/1080i/script-script.extendedinfo-DialogVideoInfo.xml index f199dd760..e7d75b482 100644 --- a/script.extendedinfo/resources/skins/Default/1080i/script-script.extendedinfo-DialogVideoInfo.xml +++ b/script.extendedinfo/resources/skins/Default/1080i/script-script.extendedinfo-DialogVideoInfo.xml @@ -265,7 +265,7 @@ 44 44 !String.IsEmpty(Window.Property(favorite)) - !String.IsEmpty(Window.Property(tmdb_logged_in)) + !String.IsEmpty(Window.Property(tmdb_logged_in)) + !String.IsEmpty(Window.Property(FavButton_Label)) !String.IsEqual(Window.Property(type),season) + !String.IsEqual(Window.Property(type),episode) diff --git a/script.service.checkpreviousepisode/addon.xml b/script.service.checkpreviousepisode/addon.xml index 64fab87a3..0b7638d24 100644 --- a/script.service.checkpreviousepisode/addon.xml +++ b/script.service.checkpreviousepisode/addon.xml @@ -1,5 +1,5 @@ - + @@ -16,8 +16,8 @@ https://forum.kodi.tv/showthread.php?tid=355464 https://kodi.wiki/view/Add-on:XBMC_Check_Previous_Episode https://github.com/bossanova808/script.service.checkpreviousepisode - v0.4.5 - - Fix logic of ignore if previous episode not actually in library + v0.4.6 + - Ignore shows that have already been decided on (i.e. those with a non-zero resume point) icon.png diff --git a/script.service.checkpreviousepisode/changelog.txt b/script.service.checkpreviousepisode/changelog.txt index ebaa6cdc7..89b340b44 100644 --- a/script.service.checkpreviousepisode/changelog.txt +++ b/script.service.checkpreviousepisode/changelog.txt @@ -1,3 +1,6 @@ +v0.4.6 +- Ignore shows that have already been decided on (i.e. those with a non-zero resume point) + v0.4.5 - Fix logic of ignore if previous episode not actually in library diff --git a/script.service.checkpreviousepisode/resources/lib/player.py b/script.service.checkpreviousepisode/resources/lib/player.py index 746909535..d0b584dec 100644 --- a/script.service.checkpreviousepisode/resources/lib/player.py +++ b/script.service.checkpreviousepisode/resources/lib/player.py @@ -58,7 +58,7 @@ def onAVStarted(self): "method": "VideoLibrary.GetEpisodeDetails", "params": { "episodeid": json_object['result']['item']['id'], - "properties": ["tvshowid", "showtitle", "season", "episode"] + "properties": ["tvshowid", "showtitle", "season", "episode", "resume"] } }) json_object = send_kodi_json("Get episode details", command) @@ -70,11 +70,18 @@ def onAVStarted(self): playing_tvshow_title = json_object['result']['episodedetails']['showtitle'] playing_season = json_object['result']['episodedetails']['season'] playing_episode = json_object['result']['episodedetails']['episode'] - log(f'Playing - title: {playing_tvshow_title} , id: {playing_tvshowid} , season: {playing_season}, episode: {playing_episode}') + resume_point = json_object['result']['episodedetails']['resume']['position'] + + log(f'Playing - title: {playing_tvshow_title} , id: {playing_tvshowid} , season: {playing_season}, episode: {playing_episode}, resume: {resume_point}') # Is show set to be ignored? if Store.ignored_shows and playing_tvshowid in Store.ignored_shows: - log(f'Show {playing_tvshow_title} set to ignore, carry on...') + log(f'Show {playing_tvshow_title} set to ignore, so allowing.') + return + + # Is the resume point is non-zero - then we've previously made a decision about playing this episode, so don't make the user make it again + if resume_point > 0.0: + log(f"Show {playing_tvshow_title} Season {playing_season} Episode {playing_episode} has a non-zero resume point, so decision has been previously made to play this episode, so allowing.") return # We ignore first episodes... @@ -106,7 +113,7 @@ def onAVStarted(self): # If we couldn't find the previous episode in the library # AND the user has asked us to ignore this, we're done. if not found and Store.ignore_if_episode_absent_from_library: - log("Previous episode was not found, and ignore if absent from library is true") + log("Previous episode was not found in library, and setting ignore if absent from library is true, so allowing.") return # If we couldn't find the previous episode in the library, diff --git a/script.service.next-episode/addon.xml b/script.service.next-episode/addon.xml index c53599f83..8589fc98f 100644 --- a/script.service.next-episode/addon.xml +++ b/script.service.next-episode/addon.xml @@ -1,14 +1,11 @@ + version="1.2.6" + provider-name="Roman V.M."> - - - @@ -25,14 +22,14 @@ GPL-3.0-or-later http://next-episode.net roman1972@gmail.com - https://github.com/santah/next-episode-kodi + https://github.com/romanvm/next-episode-kodi icon.png - 1.2.5: -- Fixed crashes when movies do not have IMDB ID. + 1.2.6: +- Removed Python 2 compatibility -1.2.4: -- Fixed compatibility with Kodi 20 "Nexus". +1.2.5: +- Fixed crashes when movies do not have IMDB ID. diff --git a/script.service.next-episode/libs/__init__.py b/script.service.next-episode/libs/__init__.py index 44ba1f94e..6f71f52f3 100644 --- a/script.service.next-episode/libs/__init__.py +++ b/script.service.next-episode/libs/__init__.py @@ -1,4 +1,14 @@ -# coding: utf-8 -# Created on: 15.03.2016 -# Author: Roman Miroshnychenko aka Roman V.M. (romanvm@yandex.ua) -# License: GPL v. 3 +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . diff --git a/script.service.next-episode/libs/addon.py b/script.service.next-episode/libs/addon.py index 2c943f361..44a0378ff 100644 --- a/script.service.next-episode/libs/addon.py +++ b/script.service.next-episode/libs/addon.py @@ -1,20 +1,24 @@ -# coding: utf-8 -# (c) 2018, Roman Miroshnychenko -# License: GPL v. 3 - -from __future__ import unicode_literals +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import os -from kodi_six.xbmc import getInfoLabel -from kodi_six.xbmcaddon import Addon - -try: - from kodi_six.xbmcvfs import translatePath -except (ImportError, AttributeError): - from kodi_six.xbmc import translatePath +from xbmc import getInfoLabel +from xbmcaddon import Addon +from xbmcvfs import translatePath -__all__ = ['ADDON', 'ADDON_ID', 'ADDON_VERSION', 'ADDON_PATH', 'ICON'] ADDON = Addon() ADDON_ID = ADDON.getAddonInfo('id') diff --git a/script.service.next-episode/libs/exception_logger.py b/script.service.next-episode/libs/exception_logger.py index 1b020dd78..928dd8086 100644 --- a/script.service.next-episode/libs/exception_logger.py +++ b/script.service.next-episode/libs/exception_logger.py @@ -1,5 +1,4 @@ -# coding: utf-8 -# (c) Roman Miroshnychenko 2020 +# (c) Roman Miroshnychenko 2023 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,44 +19,39 @@ from contextlib import contextmanager from platform import uname from pprint import pformat +from typing import Any, Dict, Callable, Generator, Iterable, Optional -import six -from kodi_six import xbmc +import xbmc -from .logger import log_error -try: - from typing import Text, Dict, Callable, Generator # pylint: disable=unused-import -except ImportError: - pass +def _log_error(message: str) -> None: + xbmc.log(message, level=xbmc.LOGERROR) -def _format_vars(variables): - # type: (dict) -> Text +def _format_vars(variables: Dict[str, Any]) -> str: """ Format variables dictionary :param variables: variables dict :return: formatted string with sorted ``var = val`` pairs """ - var_list = [(var, val) for var, val in six.iteritems(variables) + var_list = [(var, val) for var, val in variables.items() if not (var.startswith('__') or var.endswith('__'))] var_list.sort(key=lambda i: i[0]) lines = [] for var, val in var_list: - lines.append('{} = {}'.format(var, pformat(val))) + lines.append(f'{var} = {pformat(val)}') return '\n'.join(lines) -def _format_code_context(frame_info): - # type: (tuple) -> Text +def _format_code_context(frame_info: inspect.FrameInfo) -> str: context = '' - if frame_info[4] is not None: - for i, line in enumerate(frame_info[4], frame_info[2] - frame_info[5]): - if i == frame_info[2]: - context += '{}:>{}'.format(six.text_type(i).rjust(5), line) + if frame_info.code_context is not None: + for i, line in enumerate(frame_info.code_context, frame_info.lineno - frame_info.index): + if i == frame_info.lineno: + context += f'{str(i).rjust(5)}:>{line}' else: - context += '{}: {}'.format(six.text_type(i).rjust(5), line) + context += f'{str(i).rjust(5)}: {line}' return context @@ -73,41 +67,96 @@ def _format_code_context(frame_info): """ -def _format_frame_info(frame_info): - # type: (tuple) -> Text +def _format_frame_info(frame_info: inspect.FrameInfo) -> str: return FRAME_INFO_TEMPLATE.format( - file_path=frame_info[1], - lineno=frame_info[2], + file_path=frame_info.filename, + lineno=frame_info.lineno, code_context=_format_code_context(frame_info), - local_vars=_format_vars(frame_info[0].f_locals) + local_vars=_format_vars(frame_info.frame.f_locals) ) +STACK_TRACE_TEMPLATE = """ +#################################################################################################### + Stack Trace +==================================================================================================== +{stack_trace} +************************************* End of diagnostic info *************************************** +""" + + +def _format_stack_trace(frames: Iterable[inspect.FrameInfo]) -> str: + stack_trace = '' + for frame_info in frames: + stack_trace += _format_frame_info(frame_info) + return STACK_TRACE_TEMPLATE.format(stack_trace=stack_trace) + + EXCEPTION_TEMPLATE = """ -*********************************** Unhandled exception detected *********************************** #################################################################################################### - Diagnostic info + Exception Diagnostic Info ---------------------------------------------------------------------------------------------------- -Exception type : {exc_type} -Exception value : {exc} -System info : {system_info} -Python version : {python_version} -Kodi version : {kodi_version} -sys.argv : {sys_argv} +Exception type : {exc_type} +Exception message : {exc} +System info : {system_info} +Python version : {python_version} +Kodi version : {kodi_version} +sys.argv : {sys_argv} ---------------------------------------------------------------------------------------------------- sys.path: {sys_path} -#################################################################################################### - Stack Trace -==================================================================================================== -{stack_trace} -************************************* End of diagnostic info *************************************** +{stack_trace_info} """ +def format_trace(frames_to_exclude: int = 1) -> str: + """ + Returns a pretty stack trace with code context and local variables + + Stack trace info includes the following: + + * File path and line number + * Code fragment + * Local variables + + It allows to inspect execution state at the point of this function call + + :param frames_to_exclude: How many top frames are excluded from the trace + to skip unnecessary info. Since each function call creates a stack frame + you need to exclude at least this function frame. + """ + frames = inspect.stack(5)[frames_to_exclude:] + return _format_stack_trace(reversed(frames)) + + +def format_exception(exc_obj: Optional[Exception] = None) -> str: + """ + Returns a pretty exception stack trace with code context and local variables + + :param exc_obj: exception object (optional) + :raises ValueError: if no exception is being handled + """ + if exc_obj is None: + _, exc_obj, _ = sys.exc_info() + if exc_obj is None: + raise ValueError('No exception is currently being handled') + stack_trace = inspect.getinnerframes(exc_obj.__traceback__, context=5) + stack_trace_info = _format_stack_trace(stack_trace) + message = EXCEPTION_TEMPLATE.format( + exc_type=exc_obj.__class__.__name__, + exc=exc_obj, + system_info=uname(), + python_version=sys.version.replace('\n', ' '), + kodi_version=xbmc.getInfoLabel('System.BuildVersion'), + sys_argv=pformat(sys.argv), + sys_path=pformat(sys.path), + stack_trace_info=stack_trace_info + ) + return message + + @contextmanager -def log_exception(logger_func=log_error): - # type: (Callable[[Text], None]) -> Generator[None, None, None] +def catch_exception(logger_func: Callable[[str], None] = _log_error) -> Generator[None, None, None]: """ Diagnostic helper context manager @@ -128,7 +177,7 @@ def log_exception(logger_func=log_error): Example:: - with debug_exception(): + with catch_exception(): # Some risky code raise RuntimeError('Fatal error!') @@ -138,18 +187,8 @@ def log_exception(logger_func=log_error): try: yield except Exception as exc: - stack_trace = '' - for frame_info in inspect.trace(5): - stack_trace += _format_frame_info(frame_info) - message = EXCEPTION_TEMPLATE.format( - exc_type=exc.__class__.__name__, - exc=exc, - system_info=uname(), - python_version=sys.version.replace('\n', ' '), - kodi_version=xbmc.getInfoLabel('System.BuildVersion'), - sys_argv=pformat(sys.argv), - sys_path=pformat(sys.path), - stack_trace=stack_trace - ) - logger_func(message) - raise exc + message = format_exception(exc) + # pylint: disable=line-too-long + logger_func('\n*********************************** Unhandled exception detected ***********************************\n' + + message) + raise diff --git a/script.service.next-episode/libs/gui.py b/script.service.next-episode/libs/gui.py index b9f66291c..739e6a886 100644 --- a/script.service.next-episode/libs/gui.py +++ b/script.service.next-episode/libs/gui.py @@ -1,16 +1,24 @@ -# coding: utf-8 -# Created on: 15.03.2016 -# Author: Roman Miroshnychenko aka Roman V.M. (romanvm@yandex.ua) -# License: GPL v. 3 - -from __future__ import absolute_import, unicode_literals - -from abc import ABCMeta, abstractmethod +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from abc import ABC, abstractmethod from contextlib import contextmanager import pyxbmct -from future.utils import with_metaclass -from kodi_six.xbmc import executebuiltin + +from xbmc import executebuiltin from xbmcgui import ACTION_NAV_BACK from .addon import ADDON @@ -45,7 +53,7 @@ def busy_spinner(): executebuiltin('Dialog.Close(10138)') # Busy spinner off -class NextEpDialog(with_metaclass(ABCMeta, pyxbmct.AddonDialogWindow)): +class NextEpDialog(ABC, pyxbmct.AddonDialogWindow): """ Base class for addon dialogs """ diff --git a/script.service.next-episode/libs/logger.py b/script.service.next-episode/libs/logger.py index ddd7bec9d..e2bd8791e 100644 --- a/script.service.next-episode/libs/logger.py +++ b/script.service.next-episode/libs/logger.py @@ -1,44 +1,61 @@ -# coding: utf-8 -# Author: Roman Miroshnychenko aka Roman V.M. -# E-mail: roman1972@gmail.com -# License: GPL v. 3 - -from __future__ import absolute_import, unicode_literals -import os -from inspect import currentframe -from kodi_six import xbmc -from .addon import ADDON_ID, ADDON_VERSION - -__all__ = ['log_debug', 'log_error', 'log_info', 'log_warning'] - -FORMAT = '{id} [v.{version}] - {filename}:{lineno} - {message}' - - -def log_message(msg, level=xbmc.LOGDEBUG): - curr_frame = currentframe() - xbmc.log( - FORMAT.format( - id=ADDON_ID, - version=ADDON_VERSION, - filename=os.path.basename(curr_frame.f_back.f_back.f_code.co_filename), - lineno=curr_frame.f_back.f_back.f_lineno, - message=msg - ), - level +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import logging + +import xbmc + +from libs.addon import ADDON_ID, ADDON_VERSION + +LOG_FORMAT = '[{addon_id} v.{addon_version}] {filename}:{lineno} - {message}' + + +class KodiLogHandler(logging.Handler): + """ + Logging handler that writes to the Kodi log with correct levels + + It also adds {addon_id} and {addon_version} variables available to log format. + """ + LEVEL_MAP = { + logging.NOTSET: xbmc.LOGNONE, + logging.DEBUG: xbmc.LOGDEBUG, + logging.INFO: xbmc.LOGINFO, + logging.WARN: xbmc.LOGWARNING, + logging.WARNING: xbmc.LOGWARNING, + logging.ERROR: xbmc.LOGERROR, + logging.CRITICAL: xbmc.LOGFATAL, + } + + def emit(self, record): + record.addon_id = ADDON_ID + record.addon_version = ADDON_VERSION + message = self.format(record) + kodi_log_level = self.LEVEL_MAP.get(record.levelno, xbmc.LOGDEBUG) + xbmc.log(message, level=kodi_log_level) + + +def initialize_logging(): + """ + Initialize the root logger that writes to the Kodi log + + After initialization, you can use Python logging facilities as usual. + """ + logging.basicConfig( + format=LOG_FORMAT, + style='{', + level=logging.DEBUG, + handlers=[KodiLogHandler()], + force=True ) - - -def log_info(msg): - log_message(msg, xbmc.LOGINFO) - - -def log_warning(msg): - log_message(msg, xbmc.LOGWARNING) - - -def log_error(msg): - log_message(msg, xbmc.LOGERROR) - - -def log_debug(msg): - log_message(msg, xbmc.LOGDEBUG) diff --git a/script.service.next-episode/libs/medialibrary.py b/script.service.next-episode/libs/medialibrary.py index 9adc77cb4..10b7d41b0 100644 --- a/script.service.next-episode/libs/medialibrary.py +++ b/script.service.next-episode/libs/medialibrary.py @@ -1,21 +1,23 @@ -# coding: utf-8 -# Created on: 15.03.2016 -# Author: Roman Miroshnychenko aka Roman V.M. (romanvm@yandex.ua) -# License: GPL v. 3 +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -from __future__ import absolute_import, unicode_literals import json +import logging from pprint import pformat -from kodi_six import xbmc -from . import logger -__all__ = ['get_item_details', 'get_tvdb_id', 'get_movies', 'get_tvshows', - 'get_episodes'] - -# Starting from v.17.0 (Krypton), Kodi JSON-RPC API returns item's unique IDs -# (IMDB ID, TheTVDB ID etc.) in "uniqueid" property. Old "imdbnumber" property -# may contain incorrect data or be empty. -HAS_UNIQUEID = xbmc.getInfoLabel('System.BuildVersion') >= '17.0' +import xbmc class NoDataError(Exception): @@ -36,9 +38,9 @@ def send_json_rpc(method, params=None): request = {'jsonrpc': '2.0', 'method': method, 'id': '1'} if params is not None: request['params'] = params - logger.log_debug('JSON-RPC request:\n{0}'.format(pformat(request))) + logging.debug('JSON-RPC request:\n%s', pformat(request)) json_reply = json.loads(xbmc.executeJSONRPC(json.dumps(request))) - logger.log_debug('JSON-RPC reply:\n{0}'.format(pformat(json_reply))) + logging.debug('JSON-RPC reply:\n%s', pformat(json_reply)) return json_reply['result'] @@ -53,11 +55,9 @@ def get_movies(): :raises NoDataError: if the Kodi library has no movies """ params = { - 'properties': ['playcount', 'imdbnumber'], + 'properties': ['playcount', 'imdbnumber', 'uniqueid'], 'sort': {'order': 'ascending', 'method': 'label'} } - if HAS_UNIQUEID: - params['properties'].append('uniqueid') result = send_json_rpc('VideoLibrary.GetMovies', params) if not result.get('movies'): raise NoDataError @@ -114,9 +114,7 @@ def get_tvdb_id(tvshowid): :return: TheTVDB ID :rtype: str """ - params = {'tvshowid': tvshowid, 'properties': ['imdbnumber']} - if HAS_UNIQUEID: - params['properties'].append('uniqueid') + params = {'tvshowid': tvshowid, 'properties': ['imdbnumber', 'uniqueid']} result = send_json_rpc('VideoLibrary.GetTVShowDetails', params)['tvshowdetails'] tvdbid = None @@ -135,9 +133,7 @@ def get_recent_movies(): :rtype: list :raises NoDataError: if the Kodi library has no recent movies. """ - params = {'properties': ['imdbnumber', 'playcount']} - if HAS_UNIQUEID: - params['properties'].append('uniqueid') + params = {'properties': ['imdbnumber', 'playcount', 'uniqueid']} result = send_json_rpc('VideoLibrary.GetRecentlyAddedMovies', params) if not result.get('movies'): raise NoDataError @@ -176,7 +172,5 @@ def get_item_details(id_, type_): params['properties'].append('imdbnumber') else: method = 'VideoLibrary.GetEpisodeDetails' - params['properties'] += ['tvshowid', 'season', 'episode'] - if HAS_UNIQUEID: - params['properties'].append('uniqueid') + params['properties'] += ['tvshowid', 'season', 'episode', 'uniqueid'] return send_json_rpc(method, params)[type_ + 'details'] diff --git a/script.service.next-episode/libs/monitoring.py b/script.service.next-episode/libs/monitoring.py index dd5424ac1..0e908126f 100644 --- a/script.service.next-episode/libs/monitoring.py +++ b/script.service.next-episode/libs/monitoring.py @@ -1,17 +1,28 @@ -# coding: utf-8 -# Created on: 17.03.2016 -# Author: Roman Miroshnychenko aka Roman V.M. (romanvm@yandex.ua) -# License: GPL v. 3 +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -from __future__ import absolute_import, unicode_literals import json -from kodi_six import xbmc -from kodi_six.xbmcgui import Dialog -from . import logger -from .addon import ADDON -from .utils import sync_library, sync_new_items, login, update_single_item -from .medialibrary import get_item_details -from .gui import ui_string +import logging + +import xbmc +from xbmcgui import Dialog + +from libs.addon import ADDON +from libs.gui import ui_string +from libs.medialibrary import get_item_details +from libs.utils import sync_library, sync_new_items, login, update_single_item # Here ``addon`` is imported from another module to prevent a bug # when username and hash are not stored in the addon settings. @@ -29,7 +40,7 @@ class UpdateMonitor(xbmc.Monitor): def onScanFinished(self, library): if library == 'video': sync_new_items() - logger.log_debug('New items updated') + logging.debug('New items updated') def onNotification(self, sender, method, data): """ diff --git a/script.service.next-episode/libs/nextepisode.py b/script.service.next-episode/libs/nextepisode.py index d8f5b9db8..9b9567549 100644 --- a/script.service.next-episode/libs/nextepisode.py +++ b/script.service.next-episode/libs/nextepisode.py @@ -1,21 +1,25 @@ -# coding: utf-8 -# Created on: 15.03.2016 -# Author: Roman Miroshnychenko aka Roman V.M. (romanvm@yandex.ua) -# License: GPL v. 3 - -from __future__ import absolute_import, unicode_literals +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import json +import logging from copy import deepcopy from pprint import pformat -from future.utils import python_2_unicode_compatible -from requests import post - -from . import logger -from .medialibrary import get_tvdb_id - -__all__ = ['prepare_movies_list', 'prepare_episodes_list', 'update_data'] +from libs import simple_requests as requests +from libs.medialibrary import get_tvdb_id UPDATE_DATA = 'https://next-episode.net/api/kodi/v1/update_data' LOGIN = 'https://next-episode.net/api/kodi/v1/login' @@ -25,7 +29,6 @@ class LoginError(Exception): pass -@python_2_unicode_compatible class DataUpdateError(Exception): """ Exception that carries information about movies and/or TV shows @@ -59,9 +62,7 @@ def failed_shows(self): def __str__(self): return ( 'Data update error! ' - 'Failed movies: {0}. Failed TV shows: {1}'.format( - self.failed_movies, - self.failed_shows) + f'Failed movies: {self.failed_movies}. Failed TV shows: {self.failed_shows}' ) @@ -76,12 +77,12 @@ def web_client(url, data=None): :return. website JSON response :rtype: dict """ - reply = post(url, json=data, verify=False) + reply = requests.post(url, json=data, verify=False) result = json.loads(reply.text) logged_data = deepcopy(result) if 'hash' in logged_data: logged_data['hash'] = '*****' - logger.log_debug('next-episode reply:\n{0}'.format(pformat(logged_data))) + logging.debug('next-episode reply:\n%s', pformat(logged_data)) return result diff --git a/script.service.next-episode/libs/simple_requests.py b/script.service.next-episode/libs/simple_requests.py new file mode 100644 index 000000000..0d755e4d8 --- /dev/null +++ b/script.service.next-episode/libs/simple_requests.py @@ -0,0 +1,235 @@ +# Copyright (C) 2019, Roman Miroshnychenko aka Roman V.M. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +""" +A simple library for making HTTP requests with API similar to the popular "requests" library + +It depends only on the Python standard library. + +Supported: +* HTTP methods: GET, POST +* HTTP and HTTPS. +* Disabling SSL certificates validation. +* Request payload as form data and JSON. +* Custom headers. +* Basic authentication. +* Gzipped response content. +Not supported: +* Cookies. +* File upload. +""" +# pylint: skip-file +import gzip +import io +import json as _json +import ssl +from base64 import b64encode +from email.message import Message +from typing import Optional, Dict, Any, Tuple, Union, List +from urllib import request as url_request +from urllib.error import HTTPError as _HTTPError +from urllib.parse import urlparse, urlencode + +__all__ = [ + 'RequestException', + 'ConnectionError', + 'HTTPError', + 'get', + 'post', +] + + +class RequestException(IOError): + + def __repr__(self) -> str: + return self.__str__() + + +class ConnectionError(RequestException): + + def __init__(self, message: str, url: str): + super().__init__(message) + self.message = message + self.url = url + + def __str__(self) -> str: + return f'ConnectionError for url {self.url}: {self.message}' + + +class HTTPError(RequestException): + + def __init__(self, response: 'Response'): + self.response = response + + def __str__(self) -> str: + return f'HTTPError: {self.response.status_code} for url: {self.response.url}' + + +class HTTPMessage(Message): + + def update(self, dct: Dict[str, str]) -> None: + for key, value in dct.items(): + self[key] = value + + +class Response: + NULL = object() + + def __init__(self): + self.encoding: str = 'utf-8' + self.status_code: int = -1 + self.headers: Dict[str, str] = {} + self.url: str = '' + self.content: bytes = b'' + self._text = None + self._json = self.NULL + + def __str__(self) -> str: + return f'' + + def __repr__(self) -> str: + return self.__str__() + + @property + def ok(self) -> bool: + return self.status_code < 400 + + @property + def text(self) -> str: + """ + :return: Response payload as decoded text + """ + if self._text is None: + self._text = self.content.decode(self.encoding) + return self._text + + def json(self) -> Optional[Union[Dict[str, Any], List[Any]]]: + try: + if self._json is self.NULL: + self._json = _json.loads(self.content) + return self._json + except ValueError as exc: + raise ValueError('Response content is not a valid JSON') from exc + + def raise_for_status(self) -> None: + if not self.ok: + raise HTTPError(self) + + +def _create_request(url_structure, params=None, data=None, headers=None, auth=None, json=None): + query = url_structure.query + if params is not None: + separator = '&' if query else '' + query += separator + urlencode(params, doseq=True) + full_url = url_structure.scheme + '://' + url_structure.netloc + url_structure.path + if query: + full_url += '?' + query + prepared_headers = HTTPMessage() + if headers is not None: + prepared_headers.update(headers) + body = None + if json is not None: + body = _json.dumps(json).encode('utf-8') + prepared_headers['Content-Type'] = 'application/json' + if body is None and data is not None: + body = urlencode(data, doseq=True).encode('ascii') + prepared_headers['Content-Type'] = 'application/x-www-form-urlencoded' + if auth is not None: + encoded_credentials = b64encode((auth[0] + ':' + auth[1]).encode('utf-8')).decode('ascii') + prepared_headers['Authorization'] = f'Basic {encoded_credentials}' + if 'Accept-Encoding' not in prepared_headers: + prepared_headers['Accept-Encoding'] = 'gzip' + return url_request.Request(full_url, body, prepared_headers) + + +def post(url: str, + params: Optional[Dict[str, Any]] = None, + data: Optional[Dict[str, Any]] = None, + headers: Optional[Dict[str, str]] = None, + auth: Optional[Tuple[str, str]] = None, + timeout: Optional[float] = None, + verify: bool = True, + json: Optional[Dict[str, Any]] = None) -> Response: + """ + POST request + + This function assumes that a request body should be encoded with UTF-8 + and by default sends Accept-Encoding: gzip header to receive response content compressed. + + :param url: URL + :param params: URL query params + :param data: request payload as form data. If "data" or "json" are passed + then a POST request is sent + :param headers: additional headers + :param auth: a tuple of (login, password) for Basic authentication + :param timeout: request timeout in seconds + :param verify: verify SSL certificates + :param json: request payload as JSON. This parameter has precedence over "data", that is, + if it's present then "data" is ignored. + :return: Response object + """ + url_structure = urlparse(url) + request = _create_request(url_structure, params, data, headers, auth, json) + context = None + if url_structure.scheme == 'https': + context = ssl.SSLContext() + if not verify: + context.verify_mode = ssl.CERT_NONE + context.check_hostname = False + fp = None + try: + r = fp = url_request.urlopen(request, timeout=timeout, context=context) + content = fp.read() + except _HTTPError as exc: + r = exc + fp = exc.fp + content = fp.read() + except Exception as exc: + raise ConnectionError(str(exc), request.full_url) from exc + finally: + if fp is not None: + fp.close() + response = Response() + response.status_code = r.status if hasattr(r, 'status') else r.getstatus() + response.headers = r.headers + response.url = r.url if hasattr(r, 'url') else r.geturl() + if r.headers.get('Content-Encoding') == 'gzip': + temp_fo = io.BytesIO(content) + gzip_file = gzip.GzipFile(fileobj=temp_fo) + content = gzip_file.read() + response.content = content + return response + + +def get(url: str, + params: Optional[Dict[str, Any]] = None, + headers: Optional[Dict[str, str]] = None, + auth: Optional[Tuple[str, str]] = None, + timeout: Optional[float] = None, + verify: bool = True) -> Response: + """ + GET request + + This function by default sends Accept-Encoding: gzip header + to receive response content compressed. + + :param url: URL + :param params: URL query params + :param headers: additional headers + :param auth: a tuple of (login, password) for Basic authentication + :param timeout: request timeout in seconds + :param verify: verify SSL certificates + :return: Response object + """ + return post(url=url, params=params, headers=headers, auth=auth, timeout=timeout, verify=verify) diff --git a/script.service.next-episode/libs/utils.py b/script.service.next-episode/libs/utils.py index b850ce97e..ec1312642 100644 --- a/script.service.next-episode/libs/utils.py +++ b/script.service.next-episode/libs/utils.py @@ -1,28 +1,32 @@ -# coding: utf-8 -# Created on: 17.03.2016 -# Author: Roman Miroshnychenko aka Roman V.M. (romanvm@yandex.ua) -# License: GPL v. 3 - -from __future__ import absolute_import, unicode_literals +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +import logging from copy import deepcopy from pprint import pformat -import pyxbmct -from future.builtins import str -from kodi_six.xbmcgui import Dialog - -from . import logger -from .addon import ADDON, ICON, KODI_VERSION -from .gui import NextEpDialog, ui_string, busy_spinner -from .medialibrary import (get_movies, get_tvshows, get_episodes, - get_recent_movies, get_recent_episodes, get_tvdb_id, - NoDataError) -from .nextepisode import (prepare_movies_list, prepare_episodes_list, update_data, - get_password_hash, LoginError, DataUpdateError) +from xbmcgui import Dialog -__all__ = ['LoginDialog', 'sync_library', 'sync_new_items', 'login', - 'update_single_item'] +import pyxbmct +from libs.addon import ADDON, ICON, KODI_VERSION +from libs.gui import NextEpDialog, ui_string, busy_spinner +from libs.medialibrary import (get_movies, get_tvshows, get_episodes, + get_recent_movies, get_recent_episodes, get_tvdb_id, + NoDataError) +from libs.nextepisode import (prepare_movies_list, prepare_episodes_list, update_data, + get_password_hash, LoginError, DataUpdateError) DIALOG = Dialog() @@ -98,10 +102,10 @@ def send_data(data): try: update_data(data) except LoginError: - logger.log_error('Login failed! Re-enter your username and password.') + logging.error('Login failed! Re-enter your username and password.') DIALOG.notification('next-episode.net', ui_string(32007), icon='error') except DataUpdateError as ex: - logger.log_error(str(ex)) + logging.exception(str(ex)) if ADDON.getSetting('disable_error_dialogs') != 'true': DIALOG.ok('next-epsisode.net', '[CR]'.join(( @@ -126,7 +130,7 @@ def log_data_sent(data): """ logged_data = deepcopy(data) logged_data['user']['username'] = logged_data['user']['hash'] = '*****' - logger.log_debug('Data sent:\n{0}'.format(pformat(logged_data))) + logging.debug('Data sent:\n%s', pformat(logged_data)) def sync_library(): @@ -162,7 +166,7 @@ def sync_library(): log_data_sent(data) send_data(data) else: - logger.log_warning( + logging.warning( 'Kodi video library has no movies and TV episodes.' ) @@ -188,7 +192,7 @@ def sync_new_items(): log_data_sent(data) send_data(data) else: - logger.log_warning( + logging.warning( 'Kodi video library has no recent movies and episodes.' ) @@ -254,11 +258,11 @@ def login(): ui_string(32007), ui_string(32010) ))) - logger.log_error('Login failed!') + logging.error('Login failed!') else: ADDON.setSetting('username', username) ADDON.setSetting('hash', hash_) - logger.log_debug('Successful login') + logging.debug('Successful login') DIALOG.notification('next-episode.net', ui_string(32011), time=3000, sound=False) result = True diff --git a/script.service.next-episode/main.py b/script.service.next-episode/main.py index 11a6478e1..7004e5448 100644 --- a/script.service.next-episode/main.py +++ b/script.service.next-episode/main.py @@ -1,13 +1,26 @@ -# coding: utf-8 -# Author: Roman Miroshnychenko aka Roman V.M. -# E-mail: romanvm@yandex.ua -# License: GPL v. 3 +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -from __future__ import unicode_literals +import logging import sys + import pyxbmct -from libs.exception_logger import log_exception + +from libs.exception_logger import catch_exception from libs.gui import NextEpDialog, ui_string +from libs.logger import initialize_logging from libs.utils import sync_library, login @@ -40,7 +53,8 @@ def _enter_login(self): if __name__ == '__main__': - with log_exception(): + initialize_logging() + with catch_exception(logging.error): if 'sync_library' in sys.argv: sync_library() elif 'login' in sys.argv: diff --git a/script.service.next-episode/resources/settings.xml b/script.service.next-episode/resources/settings.xml index f310b0a20..54721a199 100644 --- a/script.service.next-episode/resources/settings.xml +++ b/script.service.next-episode/resources/settings.xml @@ -1,15 +1,47 @@ - - - - - - - - - + +
+ + + + 0 + false + + + + 0 + RunScript(script.service.next-episode,login) + + true + + + + 0 + RunScript(script.service.next-episode,sync_library) + + true + + + + false + + false + + + + + true + + false + + + + + true + + false + + + +
diff --git a/script.service.next-episode/service.py b/script.service.next-episode/service.py index f33b4ba61..0dbd68569 100644 --- a/script.service.next-episode/service.py +++ b/script.service.next-episode/service.py @@ -1,17 +1,28 @@ -# coding: utf-8 -# Created on: 15.03.2016 -# Author: Roman Miroshnychenko aka Roman V.M. (romanvm@yandex.ua) -# License: GPL v. 3 +# (c) Roman Miroshnychenko, 2023 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . -from __future__ import unicode_literals +import logging -from libs.exception_logger import log_exception -from libs.logger import log_info +from libs.exception_logger import catch_exception +from libs.logger import initialize_logging from libs.monitoring import UpdateMonitor, initial_prompt -with log_exception(): +initialize_logging() +with catch_exception(logging.error): initial_prompt() update_monitor = UpdateMonitor() - log_info('Service started') + logging.debug('Service started') update_monitor.waitForAbort() - log_info('Service stopped') + logging.debug('Service stopped') diff --git a/script.simkl/addon.xml b/script.simkl/addon.xml index 6f04e23f5..3d8e805f9 100644 --- a/script.simkl/addon.xml +++ b/script.simkl/addon.xml @@ -1,7 +1,7 @@ @@ -25,6 +25,8 @@
en + v3.2.2 (05-01-24) + - fixed new pything isAlive fn v3.2 (22-09-22) - right click, mark as watched/unwatched added v3.1 (21-07-13) diff --git a/script.simkl/changelog.txt b/script.simkl/changelog.txt index a4925be25..b44dc2ad8 100644 --- a/script.simkl/changelog.txt +++ b/script.simkl/changelog.txt @@ -1,3 +1,6 @@ +v 3.2.1 +- is_live fixed + v 3.0 - Kodi v19+ support diff --git a/script.simkl/resources/lib/engine.py b/script.simkl/resources/lib/engine.py index d43f915b9..e832befcf 100644 --- a/script.simkl/resources/lib/engine.py +++ b/script.simkl/resources/lib/engine.py @@ -130,7 +130,7 @@ def _stop_tracker(self): if hasattr(self, '_playback_lock'): self._playback_lock.clear() if not hasattr(self, '_tracker'): return if self._tracker is None: return - if self._tracker.isAlive(): self._tracker.join() + if self._tracker.is_alive(): self._tracker.join() self._tracker = None def _thread_tracker(self): diff --git a/script.tvmaze.integration/addon.xml b/script.tvmaze.integration/addon.xml index e2aa60662..01020e682 100644 --- a/script.tvmaze.integration/addon.xml +++ b/script.tvmaze.integration/addon.xml @@ -1,9 +1,8 @@ - + - @@ -47,17 +46,36 @@ - v.0.7.1 -fix for Python3 logging issue + v.0.8.0 +- fix for translatePath error in Nexus +- updated translation files icon.png - Integration between Kodi and TV Maze. - This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows. all GPL-3.0-only https://forum.kodi.tv/showthread.php?tid=354945 https://github.com/pkscout/script.tvmaze.integration + Integration mellem Kodi og TV Maze. + Integration zwischen Kodi und TV Maze. + Integration between Kodi and TV Maze. + Integración entre Kodi y TV Maze. + Yhdistä TV Maze -palvelu Kodiin. + Intégration entre Kodi et TV Maze. + Integracija između Kodija i TV Maze. + Integrazione tra Kodi e TV Maze. + Kodi와 TV Maze의 통합. + Kodi与TV Maze的集成。 + Denne integration giver dig mulighed for at markere serier som erhvervet på TV Maze (og føje dem til dine fulgte shows, hvis det er nødvendigt), når du tilføjer dem til dit bibliotek og markerer dem som set på TV Maze, efter du har set dem. Du kan også manuelt følge, fjerne, markere og fjerne markerede serier. + Diese Integration erlaubt das Markieren von Serien als über TV Maze bezogen (und das Hinzufügen zu den beobachteten Serien, falls benötigt), wenn sie zur Bibliothek hinzugefügt werden, und das Markieren dieser als auf TV Maze angesehen, nachdem sie angesehen worden sind. Das manuelle Folgen, Entfolgen, Taggen und Untaggen von Serien ist ebenso möglich. + This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows. + Esta integración te permite marcar programas como adquiridos en TV Maze (y añadirlos a los programas que sigues si es necesario) cuando los añades a tu biblioteca y marcarlos como vistos en TV Maze después de verlos. También puedes seguir, dejar de seguir, etiquetar y desetiquetar programas manualmente. + Tämän avulla Kodin kirjastoon lisätyt sarjat voidaan merkitä TV Maze -palvelussa hankituiksi (tarvittaessa ne voidaan myös lisätä seurattuihin sarjoihin) ja katsotuiksi, kun ne katsellaan Kodissa. Sarjojen seurantaa ja tunnisteita voidaan muuttaa myös manuaalisesti. + Cette intégration vous permet de marquer les programmes comme acquis sur TV Maze (et de les ajouter à vos programmes suivis si nécessaire) lorsque vous les ajoutez à votre bibliothèque et de les marquer comme regardés sur TV Maze après les avoir regardés. Vous pouvez également suivre, désélectionner, taguer et dé-taguer manuellement des programmes. + Ova integracija omogućuje vam da označite serije kao kupljene na TV Mazeu (i dodate ih svojim praćenim serijama ako je potrebno) kada ih dodate u svoju videoteku i označite ih kao gledane na TV Mazeu nakon što ih pogledate. Također ih možete ručno pratiti, prestati pratiti, označavati i poništavati oznake serija. + Questa integrazione ti consente di contrassegnare le serie come acquisite su TV Maze (e di aggiungerle alle tue serie seguite, se necessario) quando le aggiungi alla tua libreria e di contrassegnarle come viste su TV Maze dopo averli guardate. Puoi anche seguire manualmente, smettere di seguire, aggiungere e rimuovere etichette alle serie. + 시청후에 라이브러리에 추가하고 TV Maze에서 시청한 것으로 표시할 때, 이 통합으로 TV Maze에서 얻은 것으로 표시하고 필요한 경우 팔로우하는 프로그램에 추가할 수 있습니다 . 또한 프로그램을 수동으로 팔로우, 팔로우 해제, 태그 지정 및 태그 해제할 수 있습니다. + 这种集成允许您在TV Maze上获取节目(并在当需要时将其添加到您的关注)当您将其添加到您的库中,观看后会将其标记在TV Maze。 您还可以手动关注、取消关注、标记和取消标记放映。 diff --git a/script.tvmaze.integration/changelog.txt b/script.tvmaze.integration/changelog.txt index 37d35fa46..dd959b65f 100644 --- a/script.tvmaze.integration/changelog.txt +++ b/script.tvmaze.integration/changelog.txt @@ -1,3 +1,7 @@ +v.0.8.0 +- fix for translatePath error on Nexus +- updated translation files + v.0.7.1 - fix for Python3 logging error diff --git a/script.tvmaze.integration/context.py b/script.tvmaze.integration/context.py index 02441657e..9ead25bed 100644 --- a/script.tvmaze.integration/context.py +++ b/script.tvmaze.integration/context.py @@ -2,5 +2,5 @@ from resources.lib.tvmi import tvmContext import sys -if ( __name__ == "__main__" ): - tvmContext( sys.argv[1] ) +if (__name__ == "__main__"): + tvmContext(sys.argv[1]) diff --git a/script.tvmaze.integration/default.py b/script.tvmaze.integration/default.py index a95e88c0b..a68448962 100644 --- a/script.tvmaze.integration/default.py +++ b/script.tvmaze.integration/default.py @@ -1,5 +1,5 @@ from resources.lib.tvmi import tvmManual -if ( __name__ == "__main__" ): +if (__name__ == "__main__"): tvmManual() diff --git a/script.tvmaze.integration/resources/__init__.py b/script.tvmaze.integration/resources/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/script.tvmaze.integration/resources/language/resource.language.af_za/strings.po b/script.tvmaze.integration/resources/language/resource.language.af_za/strings.po index b16a0f3ea..50b0492e0 100644 --- a/script.tvmaze.integration/resources/language/resource.language.af_za/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.af_za/strings.po @@ -7,21 +7,32 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Afrikaans (South Africa) \n" "Language: af_za\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Algemeen" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Gevorderde" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Stel ontfout loghouding in staat" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.am_et/strings.po b/script.tvmaze.integration/resources/language/resource.language.am_et/strings.po index 44c695547..a665c40da 100644 --- a/script.tvmaze.integration/resources/language/resource.language.am_et/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.am_et/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Amharic (Ethiopia) \n" "Language: am_et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "ባጠቃላይ" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.ar_sa/strings.po b/script.tvmaze.integration/resources/language/resource.language.ar_sa/strings.po index 44b28bff3..1146e7455 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ar_sa/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ar_sa/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Arabic (Saudi Arabia) \n" "Language: ar_sa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "عام" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "تمكين تسجيل التصحيح" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.ast_es/strings.po b/script.tvmaze.integration/resources/language/resource.language.ast_es/strings.po index 73206e397..37c5cf6b9 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ast_es/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ast_es/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-02-25 21:13+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Asturian (Spain) \n" "Language: ast_es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Xeneral" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.az_az/strings.po b/script.tvmaze.integration/resources/language/resource.language.az_az/strings.po index 801755238..1dcdfc2fe 100644 --- a/script.tvmaze.integration/resources/language/resource.language.az_az/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.az_az/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-02-25 21:13+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Azerbaijani \n" "Language: az_az\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Ümumi" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.be_by/strings.po b/script.tvmaze.integration/resources/language/resource.language.be_by/strings.po index 3364386e5..064fc982b 100644 --- a/script.tvmaze.integration/resources/language/resource.language.be_by/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.be_by/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-02-25 21:13+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Belarusian \n" "Language: be_by\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.11\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Асноўныя" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Пашыраны" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Уключыць журнал адладкі" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.bg_bg/strings.po b/script.tvmaze.integration/resources/language/resource.language.bg_bg/strings.po index 4174b2080..1f2b556e2 100644 --- a/script.tvmaze.integration/resources/language/resource.language.bg_bg/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.bg_bg/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Bulgarian \n" "Language: bg_bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Основни" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Включи дебъг журнала" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.bs_ba/strings.po b/script.tvmaze.integration/resources/language/resource.language.bs_ba/strings.po index b54d33a40..16e4317f4 100644 --- a/script.tvmaze.integration/resources/language/resource.language.bs_ba/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.bs_ba/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Bosnian (Bosnia and Herzegovina) \n" "Language: bs_ba\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Opšte" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Omogući bilježenje grešaka" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.ca_es/strings.po b/script.tvmaze.integration/resources/language/resource.language.ca_es/strings.po index 374ff9e59..d98fc7d3b 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ca_es/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ca_es/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Catalan (Spain) \n" "Language: ca_es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "General" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Habilita el registrament de depuració" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.cs_cz/strings.po b/script.tvmaze.integration/resources/language/resource.language.cs_cz/strings.po index 2222c7513..a93532a19 100644 --- a/script.tvmaze.integration/resources/language/resource.language.cs_cz/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.cs_cz/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-09 14:05+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Czech \n" "Language: cs_cz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Obecné" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Rozšířený" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Povolit protokolování ladění" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.cy_gb/strings.po b/script.tvmaze.integration/resources/language/resource.language.cy_gb/strings.po index a93369520..3187ff4a9 100644 --- a/script.tvmaze.integration/resources/language/resource.language.cy_gb/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.cy_gb/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Welsh (United Kingdom) \n" "Language: cy_gb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=(n==0) ? 0 : (n==1) ? 1 : (n==2) ? 2 : (n==3) ? 3 :(n==6) ? 4 : 5;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Cyffredinol" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Galluogi cofnodi dadfygio" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.da_dk/strings.po b/script.tvmaze.integration/resources/language/resource.language.da_dk/strings.po index 23f929775..a500b44df 100644 --- a/script.tvmaze.integration/resources/language/resource.language.da_dk/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.da_dk/strings.po @@ -5,9 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2021-02-07 14:28+0000\n" +"PO-Revision-Date: 2021-08-06 17:29+0000\n" "Last-Translator: Christian Gade \n" "Language-Team: Danish \n" "Language: da_dk\n" @@ -15,12 +15,20 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.4.2\n" +"X-Generator: Weblate 4.7.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Integration mellem Kodi og TV Maze." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "Denne integration giver dig mulighed for at markere serier som erhvervet på TV Maze (og føje dem til dine fulgte shows, hvis det er nødvendigt), når du tilføjer dem til dit bibliotek og markerer dem som set på TV Maze, efter du har set dem. Du kan også manuelt følge, fjerne, markere og fjerne markerede serier." # Section Headings msgctxt "#32000" msgid "General" -msgstr "Generel" +msgstr "Generelt" msgctxt "#32001" msgid "Advanced" @@ -34,7 +42,7 @@ msgstr "TV Maze handling" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "Aktivér fejlfindingslogføring" +msgstr "Aktiver fejlfindingslogføring" msgctxt "#32101" msgid "TV Maze User" @@ -50,11 +58,11 @@ msgstr "Tilføj nye Kodi-serier til den fulgte liste" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "Marker nye Kodi-episoder som erhvervet" +msgstr "Marker nye Kodi-afsnit som erhvervet" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "Marker sete Kodi-episoder som sete" +msgstr "Marker sete Kodi-afsnit som sete" msgctxt "#32106" msgid "Mark watched after" @@ -66,7 +74,7 @@ msgstr "Marker som set ved fjernelse fra Kodi" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "Skjul emner i kontekstmenuen" # empty strings from id 32108 to 32199 # Dialog Headings @@ -88,15 +96,15 @@ msgstr "Vælg serier der ikke skal følges" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "Vælg nøgleord" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "Vælg serier der skal tildeles nøgleord" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "Vælg serier der skal have fjernet nøgleord" # empty strings from id 32207 to 32300 # Dialog Messages @@ -132,24 +140,24 @@ msgstr "Følg ikke serie" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "Tildel nøgleord til serie" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "Fjern nøgleord fra serie" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "Marker episode som erhvervet" +msgstr "Marker afsnit som erhvervet" msgctxt "#32407" msgid "Mark episode watched" -msgstr "Marker episode som set" +msgstr "Marker afsnit som set" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "Marker episode som sprunget over" +msgstr "Marker afsnit som sprunget over" msgctxt "#32409" msgid "Unmark episode" -msgstr "Marker ikke episode" +msgstr "Marker ikke afsnit" diff --git a/script.tvmaze.integration/resources/language/resource.language.de_de/strings.po b/script.tvmaze.integration/resources/language/resource.language.de_de/strings.po index a5d9ace49..6744d93c9 100644 --- a/script.tvmaze.integration/resources/language/resource.language.de_de/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.de_de/strings.po @@ -5,148 +5,159 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2023-02-06 23:15+0000\n" +"Last-Translator: Demian \n" +"Language-Team: German \n" "Language: de_de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.15.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Integration zwischen Kodi und TV Maze." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "Diese Integration erlaubt das Markieren von Serien als über TV Maze bezogen (und das Hinzufügen zu den beobachteten Serien, falls benötigt), wenn sie zur Bibliothek hinzugefügt werden, und das Markieren dieser als auf TV Maze angesehen, nachdem sie angesehen worden sind. Das manuelle Folgen, Entfolgen, Taggen und Untaggen von Serien ist ebenso möglich." # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Allgemein" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Erweitert" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "TV-Maze-Aktion" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Debugprotokollierung aktivieren" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "TV-Maze-Nutzer" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "TV-Maze-API-Schlüssel" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "Neue Kodi-Serien zur Gefolgt-Liste hinzufügen" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "Neue Kodi-Episoden als bezogen markieren" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "Gesehene Kodi-Episoden als gesehen markieren" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "Als gesehen markieren nach" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "Beim Entfernen aus Kodi als gesehen markieren" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "Kontextmenüeinträge ausblenden" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "API-Anmeldedaten benötigt" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Aktion auswählen" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "Serien zum Folgen auswählen" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "Serien zum Entfolgen auswählen" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "Tag auswählen" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "Serien zum Taggen auswählen" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "Serien zum Untaggen auswählen" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "TV-Maze-API-Anmeldedaten müssen vor dem Fortsetzen angegeben werden." msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "Einstellungen öffnen" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "Alle auswählen (OK zum Neuladen der Liste klicken)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "Alle abwählen (OK zum Neuladen der Liste klicken)" # empty strings from 32305 to 32400 # Context Menu msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV Maze" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "Serie folgen" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "Serie entfolgen" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "Serie taggen" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "Serie untaggen" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "Episode als bezogen markieren" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "Episode als gesehen markieren" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "Episode als übersprungen markieren" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "Episode unmarkieren" diff --git a/script.tvmaze.integration/resources/language/resource.language.el_gr/strings.po b/script.tvmaze.integration/resources/language/resource.language.el_gr/strings.po index 03a42b825..162617e4a 100644 --- a/script.tvmaze.integration/resources/language/resource.language.el_gr/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.el_gr/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Greek \n" "Language: el_gr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Γενικά" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Καταγραφή σφαλμάτων" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.en_au/strings.po b/script.tvmaze.integration/resources/language/resource.language.en_au/strings.po index 3e549af04..8e1e55b41 100644 --- a/script.tvmaze.integration/resources/language/resource.language.en_au/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.en_au/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-09 14:05+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: English (Australia) \n" "Language: en_au\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "General" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Enable debug logging" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.en_gb/strings.po b/script.tvmaze.integration/resources/language/resource.language.en_gb/strings.po index 78732120c..704f49533 100644 --- a/script.tvmaze.integration/resources/language/resource.language.en_gb/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.en_gb/strings.po @@ -14,6 +14,14 @@ msgstr "" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" + # Section Headings msgctxt "#32000" diff --git a/script.tvmaze.integration/resources/language/resource.language.en_nz/strings.po b/script.tvmaze.integration/resources/language/resource.language.en_nz/strings.po index d715c54ca..33af932b2 100644 --- a/script.tvmaze.integration/resources/language/resource.language.en_nz/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.en_nz/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-09 14:05+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: English (New Zealand) \n" "Language: en_nz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "General" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Enable debug logging" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.en_us/strings.po b/script.tvmaze.integration/resources/language/resource.language.en_us/strings.po index 43eaeae54..cab4809cd 100644 --- a/script.tvmaze.integration/resources/language/resource.language.en_us/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.en_us/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-11 03:07+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: English (United States) \n" "Language: en_us\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "General" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Enable debug logging" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.eo/strings.po b/script.tvmaze.integration/resources/language/resource.language.eo/strings.po index ffdbaa589..8c8b02257 100644 --- a/script.tvmaze.integration/resources/language/resource.language.eo/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.eo/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Generalo" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.es_ar/strings.po b/script.tvmaze.integration/resources/language/resource.language.es_ar/strings.po index c946d6cdd..cba556f13 100644 --- a/script.tvmaze.integration/resources/language/resource.language.es_ar/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.es_ar/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Spanish (Argentina) \n" "Language: es_ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "General" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Habilitar trazas de depuración" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.es_es/strings.po b/script.tvmaze.integration/resources/language/resource.language.es_es/strings.po index edf9c436d..eb5321f84 100644 --- a/script.tvmaze.integration/resources/language/resource.language.es_es/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.es_es/strings.po @@ -5,17 +5,25 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: 2021-03-20 08:28+0000\n" -"Last-Translator: Edson Armando \n" +"PO-Revision-Date: 2023-03-08 13:16+0000\n" +"Last-Translator: José Antonio Alvarado \n" "Language-Team: Spanish (Spain) \n" "Language: es_es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.5.1\n" +"X-Generator: Weblate 4.15.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Integración entre Kodi y TV Maze." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "Esta integración te permite marcar programas como adquiridos en TV Maze (y añadirlos a los programas que sigues si es necesario) cuando los añades a tu biblioteca y marcarlos como vistos en TV Maze después de verlos. También puedes seguir, dejar de seguir, etiquetar y desetiquetar programas manualmente." # Section Headings msgctxt "#32000" @@ -24,132 +32,132 @@ msgstr "General" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Avanzado" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "Acción TV Maze" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Habilitar modo depuración" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "Usuario de TV Maze" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "API Key de TV Maze" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "Añadir nuevas series Kodi a la lista de seguimiento" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "Marcar nuevos episodios de Kodi como adquiridos" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "Marcar los episodios de Kodi que se han visto como vistos" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "Marcar que se ha visto después" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "Marca que se ha visto al quitarlo de Kodi" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "Ocultar elementos del menú contextual" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "Credenciales API necesarias" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Seleccionar acción" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "Seleccionar series para seguir" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "Seleccionar series para dejar de seguir" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "Seleccionar etiqueta" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "Seleccionar series para etiquetar" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "Seleccionar series para desetiquetar" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "Las credenciales api de TV Maze deben proporcionarse antes de continuar." msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "Abrir Ajustes" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "Seleccionar todo (Haga clic en OK para recargar la lista)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "Deseleccionar todo (Haga clic en OK para recargar la lista)" # empty strings from 32305 to 32400 # Context Menu msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV Maze" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "Seguir serie" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "Dejar de seguir la serie" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "Etiquetar serie" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "Desetiquetar serie" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "Marca del episodio adquirido" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "Marca de episodio visto" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "Marca de episodio omitido" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "Desmarcar episodio" diff --git a/script.tvmaze.integration/resources/language/resource.language.es_mx/strings.po b/script.tvmaze.integration/resources/language/resource.language.es_mx/strings.po index af4dbea7f..765be49d3 100644 --- a/script.tvmaze.integration/resources/language/resource.language.es_mx/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.es_mx/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-04-08 00:13+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Spanish (Mexico) \n" "Language: es_mx\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "General" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Avanzado" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Activar registro de depuración" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.et_ee/strings.po b/script.tvmaze.integration/resources/language/resource.language.et_ee/strings.po index 44cac8f03..8cd76a843 100644 --- a/script.tvmaze.integration/resources/language/resource.language.et_ee/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.et_ee/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2023-02-25 20:15+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Estonian \n" "Language: et_ee\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.15.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Üldine" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Täpsem" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Luba silumise logimine" msgctxt "#32101" msgid "TV Maze User" @@ -73,7 +84,7 @@ msgstr "" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Vali toiming" msgctxt "#32202" msgid "Select shows to follow" diff --git a/script.tvmaze.integration/resources/language/resource.language.eu_es/strings.po b/script.tvmaze.integration/resources/language/resource.language.eu_es/strings.po index 56eac9051..8e121777a 100644 --- a/script.tvmaze.integration/resources/language/resource.language.eu_es/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.eu_es/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Basque (Spain) \n" "Language: eu_es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Orokorra" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Gaitu arazketa-erregistroa" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.fa_af/strings.po b/script.tvmaze.integration/resources/language/resource.language.fa_af/strings.po index bfd423714..bbd626554 100644 --- a/script.tvmaze.integration/resources/language/resource.language.fa_af/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.fa_af/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Persian (Afghanistan) \n" "Language: fa_af\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "عمومی" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.fa_ir/strings.po b/script.tvmaze.integration/resources/language/resource.language.fa_ir/strings.po index 484de0d73..bfe299cf1 100644 --- a/script.tvmaze.integration/resources/language/resource.language.fa_ir/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.fa_ir/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Persian (Iran) \n" "Language: fa_ir\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "عمومی" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "فعال‌کردن گزارش‌گیری اشکال‌زدایی" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.fi_fi/strings.po b/script.tvmaze.integration/resources/language/resource.language.fi_fi/strings.po index 8e4d37f54..c3c906cdd 100644 --- a/script.tvmaze.integration/resources/language/resource.language.fi_fi/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.fi_fi/strings.po @@ -5,148 +5,159 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-07-07 18:14+0000\n" +"Last-Translator: Oskari Lavinto \n" +"Language-Team: Finnish \n" "Language: fi_fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.13\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Yhdistä TV Maze -palvelu Kodiin." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "Tämän avulla Kodin kirjastoon lisätyt sarjat voidaan merkitä TV Maze -palvelussa hankituiksi (tarvittaessa ne voidaan myös lisätä seurattuihin sarjoihin) ja katsotuiksi, kun ne katsellaan Kodissa. Sarjojen seurantaa ja tunnisteita voidaan muuttaa myös manuaalisesti." # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Yleiset" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Lisäasetukset" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "TV Maze -toiminto" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Käytä vianselvityslokia" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "TV Maze -käyttäjä" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "TV Maze API-avain" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "Lisää Kodin uudet sarjat seurantalistalle" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "Merkitse Kodin uudet jaksot hankituiksi" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "Merkitse Kodin katsotut jaksot katsotuiksi" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "Merkitse katsotuksi, kun on katsottu" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "Merkitse katsotuksi, kun poistetaan Kodista" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "Piilota sisältövalikon kohteet" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "Tarvitaan API-tunnukset" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Valitse toiminto" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "Valitse seurattavat sarjat" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "Valitse sarjat, joiden seuranta lopetetaan" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "Valitse tunniste" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "Valitse tunnisteilla merkittävät sarjat" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "Valitse sarjat, joilta tunnisteet poistetaan" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "TV Maze API -tunnukset on ilmoitettava ennen jatkoa." msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "Avaa asetukset" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "Valitse kaikki (päivitä lista painamalla OK)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "Poista kaikkien valinnat (päivitä lista painamalla OK)" # empty strings from 32305 to 32400 # Context Menu msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV Maze" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "Seuraa sarjaa" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "Lopeta sarjan seuranta" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "Merkitse sarja tunnisteella" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "Poista tunniste sarjalta" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "Merkitse jakso hankituksi" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "Merkitse jakso katsotuksi" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "Merkitse jakso ohitetuksi" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "Poista jakson merkintä" diff --git a/script.tvmaze.integration/resources/language/resource.language.fo_fo/strings.po b/script.tvmaze.integration/resources/language/resource.language.fo_fo/strings.po index 710801b72..ee85146aa 100644 --- a/script.tvmaze.integration/resources/language/resource.language.fo_fo/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.fo_fo/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Faroese \n" "Language: fo_fo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Vanligt" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Tendra skráseting av handlingum" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.fr_ca/strings.po b/script.tvmaze.integration/resources/language/resource.language.fr_ca/strings.po index 2b8a51a08..5708827b8 100644 --- a/script.tvmaze.integration/resources/language/resource.language.fr_ca/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.fr_ca/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: French (Canada) \n" "Language: fr_ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Général" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Activer la journalisation de débogage" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.fr_fr/strings.po b/script.tvmaze.integration/resources/language/resource.language.fr_fr/strings.po index 3ae90b1cb..cfe775bcf 100644 --- a/script.tvmaze.integration/resources/language/resource.language.fr_fr/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.fr_fr/strings.po @@ -5,148 +5,160 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2023-07-18 17:11+0000\n" +"Last-Translator: skypichat \n" +"Language-Team: French (France) \n" "Language: fr_fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.18.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Intégration entre Kodi et TV Maze." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "Cette intégration vous permet de marquer les programmes comme acquis sur TV Maze (et de les ajouter à vos programmes suivis si nécessaire) lorsque vous les ajoutez à votre bibliothèque et de les marquer comme regardés sur TV Maze après les avoir regardés. Vous pouvez également suivre, désélectionner, taguer et dé-taguer manuellement des programmes." # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Général" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Avancé" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "Action TV Maze" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Activer le mode de débogage" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "Utilisateur TV Maze" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "Clé d'API de TV Maze" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "Ajouter de nouveaux programmes à la liste suivie" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "Marquer les nouveaux épisodes de Kodi comme acquis" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "Marquer un épisode de Kodi comme vu" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "Marquer comme vu après" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "Marquer comme vu lors de la suppression de Kodi" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "Masquer les items du menu contextuel" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "Informations d'identification de l'API nécessaires" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Sélectionner une action" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "Sélectionner les programmes à suivre" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "Sélectionner les programmes à ne plus suivre" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "Sélectionner le tag" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "Sélectionner les programmes à taguer" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "Sélectionner les programmes à dé-taguer" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "Les informations de connexion de l'API TV Maze doivent être fournies avant de continuer." msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "Ouvrir les paramètres" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "Tout sélectionner (Cliquer sur OK pour recharger la liste)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "Tout désélectionner (Cliquer OK pour recharger la liste)" # empty strings from 32305 to 32400 # Context Menu +#, fuzzy msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV Maze" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "Suivre le programme" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "Ne pas suivre ce programme" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "Tag de l'émission" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "Dé-taguer le programme" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "Marquer les épisodes comme acquis" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "Marquer l'épisode comme vu" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "Marquer l'épisode sauté" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "Retirer la marque sur l'épisode" diff --git a/script.tvmaze.integration/resources/language/resource.language.gl_es/strings.po b/script.tvmaze.integration/resources/language/resource.language.gl_es/strings.po index 36f8b791b..279605436 100644 --- a/script.tvmaze.integration/resources/language/resource.language.gl_es/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.gl_es/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Galician (Spain) \n" "Language: gl_es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Xeral" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Activar rexistro de depuración" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.he_il/strings.po b/script.tvmaze.integration/resources/language/resource.language.he_il/strings.po index 9df92662f..20325df99 100644 --- a/script.tvmaze.integration/resources/language/resource.language.he_il/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.he_il/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Hebrew (Israel) \n" "Language: he_il\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && n % 10 == 0) ? 2 : 3));\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "כללי" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "הפעל יומן רישום מורחב" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.hi_in/strings.po b/script.tvmaze.integration/resources/language/resource.language.hi_in/strings.po index 0840e2883..9b0622c20 100644 --- a/script.tvmaze.integration/resources/language/resource.language.hi_in/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.hi_in/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Hindi (India) \n" "Language: hi_in\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "सामान्य" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "लॉगिंग डिबग सक्षम" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.hr_hr/strings.po b/script.tvmaze.integration/resources/language/resource.language.hr_hr/strings.po index 4e414bbda..d1d905571 100644 --- a/script.tvmaze.integration/resources/language/resource.language.hr_hr/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.hr_hr/strings.po @@ -5,148 +5,159 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2023-01-14 18:15+0000\n" +"Last-Translator: gogogogi \n" +"Language-Team: Croatian \n" "Language: hr_hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.15\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Integracija između Kodija i TV Maze." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "Ova integracija omogućuje vam da označite serije kao kupljene na TV Mazeu (i dodate ih svojim praćenim serijama ako je potrebno) kada ih dodate u svoju videoteku i označite ih kao gledane na TV Mazeu nakon što ih pogledate. Također ih možete ručno pratiti, prestati pratiti, označavati i poništavati oznake serija." # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Općenito" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Napredno" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "TV Maze radnja" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Omogući zapisivanje otklanjanja grešaka" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "TV Maze korisnik" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "TV Maze API ključ" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "Dodaj nove Kodi serije na popis koji slijedi" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "Označi nove Kodi epizode kao kupljene" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "Označi gledane Kodi epizode kao pogledane" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "Označi za gledanje nakon" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "Označi pogledano kada se uklanja iz Kodija" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "Sakrij stavke sadržajnog izbornika" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "Potrebne su API vjerodajnice" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Odaberi radnju" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "Odaberi seriju za slijediti" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "Odaberi seriju za prekid slijeđenja" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "Odaberi oznaku" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "Odaberi seriju za označavanje" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "Odaberi seriju za uklanjanje oznake" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "TV Maze api vjerodajnice moraju biti pružene prije nastavka." msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "Otvori postavke" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "Odaberi sve (Kliknite 'U redu' za ponovno učitavanje popisa)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "Ukloni sav odabir (Kliknite 'U redu' za ponovno učitavanje popisa)" # empty strings from 32305 to 32400 # Context Menu msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV Maze" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "Slijedi seriju" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "Prekini slijeđenje serije" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "Označi seriju" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "Ukloni oznaku serije" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "Označi kupljenu epizodu" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "Označi epizodu kao odgledanu" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "Označi epizodu kao preskočenu" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "Ukloni oznaku epizode" diff --git a/script.tvmaze.integration/resources/language/resource.language.hu_hu/strings.po b/script.tvmaze.integration/resources/language/resource.language.hu_hu/strings.po index 5b1f65bc4..63890f279 100644 --- a/script.tvmaze.integration/resources/language/resource.language.hu_hu/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.hu_hu/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-27 01:17+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Hungarian \n" "Language: hu_hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Általános" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Haladó" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Naplózás engedélyezése" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.hy_am/strings.po b/script.tvmaze.integration/resources/language/resource.language.hy_am/strings.po index ec06d1ced..d80d61666 100644 --- a/script.tvmaze.integration/resources/language/resource.language.hy_am/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.hy_am/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Armenian \n" "Language: hy_am\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Գլխավոր" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.id_id/strings.po b/script.tvmaze.integration/resources/language/resource.language.id_id/strings.po index 7ccb2fdb6..7d2a92a5d 100644 --- a/script.tvmaze.integration/resources/language/resource.language.id_id/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.id_id/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Indonesian \n" "Language: id_id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Umum" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Mendeteksi Nilai HDD" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.is_is/strings.po b/script.tvmaze.integration/resources/language/resource.language.is_is/strings.po index 246f54faf..bd7b61748 100644 --- a/script.tvmaze.integration/resources/language/resource.language.is_is/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.is_is/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Icelandic \n" "Language: is_is\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n % 10 != 1 || n % 100 == 11;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Almennt" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Virkja villuskráningu" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.it_it/strings.po b/script.tvmaze.integration/resources/language/resource.language.it_it/strings.po index 2fc0b7f16..a00abf543 100644 --- a/script.tvmaze.integration/resources/language/resource.language.it_it/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.it_it/strings.po @@ -5,148 +5,159 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2023-04-19 04:14+0000\n" +"Last-Translator: Massimo Pissarello \n" +"Language-Team: Italian \n" "Language: it_it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.15.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Integrazione tra Kodi e TV Maze." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "Questa integrazione ti consente di contrassegnare le serie come acquisite su TV Maze (e di aggiungerle alle tue serie seguite, se necessario) quando le aggiungi alla tua libreria e di contrassegnarle come viste su TV Maze dopo averli guardate. Puoi anche seguire manualmente, smettere di seguire, aggiungere e rimuovere etichette alle serie." # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Generale" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Avanzate" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "Azione TV Maze" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Registra eventi di debug" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "Utente TV Maze" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "Chiave API TV Maze" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "Aggiungi nuove serie di Kodi all'elenco dei seguiti" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "Contrassegna i nuovi episodi di Kodi come acquisiti" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "Contrassegna come guardati gli episodi guardati di Kodi" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "Segna dopo come guardati" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "Contrassegna come guardati quando li rimuovi da Kodi" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "Nascondi voci menu contestuale" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "Credenziali API necessarie" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Seleziona azione" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "Seleziona serie da seguire" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "Seleziona serie da non seguire" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "Seleziona etichetta" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "Seleziona serie da etichettare" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "Seleziona serie da rimuovere etichetta" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "Prima di continuare, è necessario fornire le credenziali API di TV Maze." msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "Apri impostazioni" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "Seleziona tutto (clic su OK per ricaricare l'elenco)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "Deseleziona tutto (clic su OK per ricaricare l'elenco)" # empty strings from 32305 to 32400 # Context Menu msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV Maze" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "Segui serie" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "Non seguire serie" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "Etichetta serie" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "Rimuovi etichetta da serie" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "Contrassegna episodio come acquisito" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "Contrassegna episodio come guardato" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "Contrassegna episodio come saltato" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "Rimuovi contrassegno da episodio" diff --git a/script.tvmaze.integration/resources/language/resource.language.ja_jp/strings.po b/script.tvmaze.integration/resources/language/resource.language.ja_jp/strings.po index e787d552b..987bad5f7 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ja_jp/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ja_jp/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Japanese \n" "Language: ja_jp\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "一般" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "デバッグ ロギングを有効にする" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.kn_in/strings.po b/script.tvmaze.integration/resources/language/resource.language.kn_in/strings.po index 0faf8cfbb..e1f45f52c 100644 --- a/script.tvmaze.integration/resources/language/resource.language.kn_in/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.kn_in/strings.po @@ -14,6 +14,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" + # Section Headings msgctxt "#32000" msgid "General" diff --git a/script.tvmaze.integration/resources/language/resource.language.ko_kr/strings.po b/script.tvmaze.integration/resources/language/resource.language.ko_kr/strings.po index 6bf965d55..b202e347c 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ko_kr/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ko_kr/strings.po @@ -5,148 +5,159 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-08-30 03:29+0000\n" +"Last-Translator: Minho Park \n" +"Language-Team: Korean \n" "Language: ko_kr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.8\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Kodi와 TV Maze의 통합." + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "시청후에 라이브러리에 추가하고 TV Maze에서 시청한 것으로 표시할 때, 이 통합으로 TV Maze에서 얻은 것으로 표시하고 필요한 경우 팔로우하는 프로그램에 추가할 수 있습니다 . 또한 프로그램을 수동으로 팔로우, 팔로우 해제, 태그 지정 및 태그 해제할 수 있습니다." # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "일반" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "고급" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "TV Maze 행동" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "디버그 로그 사용" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "TV Maze 사용자" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "TV Maze API 키" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "팔로우 목록에 새로운 Kodi 쇼 추가" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "새로운 Kodi 에피소드를 얻은 것으로 표시" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "시청한 Kodi 에피소드를 시청한 것으로 표시" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "이후로 시청한 것으로 표시" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "Kodi에서 지울 때 시청한 것으로 표시" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "컨텍스트 메뉴 항목 숨기기" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "API 자격 증명 필요함" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "행동 선택" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "팔로우할 프로그램 선택" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "팔로우 해제할 프로그램 선택" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "태그 선택" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "태그할 프로그램 선택" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "태그를 해제할 프로그램 선택" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "계속하기 전에 TV Maze API 자격 증명을 제공해야 합니다." msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "설정 열기" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "모두 선택 (예를 클릭하여 목록을 다시 읽기)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "모두 선택 취소(목록을 다시 로드하려면 확인을 클릭)" # empty strings from 32305 to 32400 # Context Menu msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV Maze" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "프로그램 팔로우" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "프로그램 팔로우 해제" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "태그 프로그램" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "프로그램 태그 해제" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "에피소드 획득 표시" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "시청한 에피소드로 표시" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "건너뛴 에피소드로 표시" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "에피소드 표시 해제" diff --git a/script.tvmaze.integration/resources/language/resource.language.lt_lt/strings.po b/script.tvmaze.integration/resources/language/resource.language.lt_lt/strings.po index f6f86bdf9..4b6e06e22 100644 --- a/script.tvmaze.integration/resources/language/resource.language.lt_lt/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.lt_lt/strings.po @@ -7,21 +7,32 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-23 10:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Lithuanian \n" "Language: lt_lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Weblate 4.6.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Pagrindinis" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Išplėstiniai" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Įjungti derinimo žurnalą" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.lv_lv/strings.po b/script.tvmaze.integration/resources/language/resource.language.lv_lv/strings.po index acdf9e149..25dd5fcc2 100644 --- a/script.tvmaze.integration/resources/language/resource.language.lv_lv/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.lv_lv/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Latvian \n" "Language: lv_lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= 19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Vispārīgi" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Ieslēgt atkļūdošanas reģistrēšanu" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.mi/strings.po b/script.tvmaze.integration/resources/language/resource.language.mi/strings.po index 6627720ae..932136ad2 100644 --- a/script.tvmaze.integration/resources/language/resource.language.mi/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.mi/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-09 14:05+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Maori \n" "Language: mi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Āhuawhānui" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.mk_mk/strings.po b/script.tvmaze.integration/resources/language/resource.language.mk_mk/strings.po index 0b05a9d00..5d1bf2af1 100644 --- a/script.tvmaze.integration/resources/language/resource.language.mk_mk/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.mk_mk/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Macedonian \n" "Language: mk_mk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Општо" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Овозможи логирање на грешки" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.ml_in/strings.po b/script.tvmaze.integration/resources/language/resource.language.ml_in/strings.po index 62362086e..a80c18d7b 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ml_in/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ml_in/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Malayalam (India) \n" "Language: ml_in\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "പോതുവായത്" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.mn_mn/strings.po b/script.tvmaze.integration/resources/language/resource.language.mn_mn/strings.po index 7bf93bfdb..24f7d2e63 100644 --- a/script.tvmaze.integration/resources/language/resource.language.mn_mn/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.mn_mn/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Mongolian \n" "Language: mn_mn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Ерөнхий" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.ms_my/strings.po b/script.tvmaze.integration/resources/language/resource.language.ms_my/strings.po index c582a922f..9da23c51d 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ms_my/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ms_my/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Malay \n" "Language: ms_my\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Am" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Benarkan pengelogan nyahpepijat" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.mt_mt/strings.po b/script.tvmaze.integration/resources/language/resource.language.mt_mt/strings.po index 5612ec3de..5fd0c52bb 100644 --- a/script.tvmaze.integration/resources/language/resource.language.mt_mt/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.mt_mt/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Maltese \n" "Language: mt_mt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Ġenerali" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Attiva d-debug logging" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.my_mm/strings.po b/script.tvmaze.integration/resources/language/resource.language.my_mm/strings.po index 7930ac505..3a39e2712 100644 --- a/script.tvmaze.integration/resources/language/resource.language.my_mm/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.my_mm/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Burmese \n" "Language: my_mm\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "ယေဘုယျ" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.nb_no/strings.po b/script.tvmaze.integration/resources/language/resource.language.nb_no/strings.po index 69f355248..94363c04d 100644 --- a/script.tvmaze.integration/resources/language/resource.language.nb_no/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.nb_no/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Norwegian Bokmål \n" "Language: nb_no\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Generelt" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Aktiver feilsøkingslogg" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.nl_nl/strings.po b/script.tvmaze.integration/resources/language/resource.language.nl_nl/strings.po index 59c08fbf2..1e968ffa3 100644 --- a/script.tvmaze.integration/resources/language/resource.language.nl_nl/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.nl_nl/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-11 03:07+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Dutch \n" "Language: nl_nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Algemeen" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Geavanceerd" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Activeer foutregistratie" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.scn/strings.po b/script.tvmaze.integration/resources/language/resource.language.oc_fr/strings.po similarity index 78% rename from script.tvmaze.integration/resources/language/resource.language.scn/strings.po rename to script.tvmaze.integration/resources/language/resource.language.oc_fr/strings.po index b80c4ab44..12993c170 100644 --- a/script.tvmaze.integration/resources/language/resource.language.scn/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.oc_fr/strings.po @@ -7,21 +7,32 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Language: scn\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Mejans \n" +"Language-Team: Occitan (France) \n" +"Language: oc_fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "General" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Avançat" msgctxt "#32002" msgid "TV Maze action" diff --git a/script.tvmaze.integration/resources/language/resource.language.os_os/strings.po b/script.tvmaze.integration/resources/language/resource.language.os_os/strings.po index f8bf0a194..86759e6c5 100644 --- a/script.tvmaze.integration/resources/language/resource.language.os_os/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.os_os/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-09 14:05+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Ossetian \n" "Language: os_os\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Сӕйраг" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.pl_pl/strings.po b/script.tvmaze.integration/resources/language/resource.language.pl_pl/strings.po index abc1b28a1..11c94e7b9 100644 --- a/script.tvmaze.integration/resources/language/resource.language.pl_pl/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.pl_pl/strings.po @@ -7,21 +7,32 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-23 10:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Polish \n" "Language: pl_pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Ogólne" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Zaawansowany" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Rejestruj komunikaty diagnostyczne" msgctxt "#32101" msgid "TV Maze User" @@ -103,7 +114,7 @@ msgstr "" msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "Otwórz ustawienia" msgctxt "#32303" msgid "Select All (Click OK to reload list)" diff --git a/script.tvmaze.integration/resources/language/resource.language.pt_br/strings.po b/script.tvmaze.integration/resources/language/resource.language.pt_br/strings.po index ca04c34e5..267c87b4c 100644 --- a/script.tvmaze.integration/resources/language/resource.language.pt_br/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.pt_br/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-30 09:46+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Portuguese (Brazil) \n" "Language: pt_br\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Geral" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Avançado" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Habilitar registro de depuração" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.pt_pt/strings.po b/script.tvmaze.integration/resources/language/resource.language.pt_pt/strings.po index 5bfd8eb8f..9420eef4e 100644 --- a/script.tvmaze.integration/resources/language/resource.language.pt_pt/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.pt_pt/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Portuguese (Portugal) \n" "Language: pt_pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Geral" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Ativar registo de depuração" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.ro_md/strings.po b/script.tvmaze.integration/resources/language/resource.language.ro_md/strings.po deleted file mode 100644 index 28c8e8af7..000000000 --- a/script.tvmaze.integration/resources/language/resource.language.ro_md/strings.po +++ /dev/null @@ -1,152 +0,0 @@ -# Kodi Media Center language file -# Addon Name: Artist Slideshow -# Addon id: script.tvmaze.integration -# Addon Provider: pkscout -msgid "" -msgstr "" -"Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" -"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Language: ro_md\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n == 0 || n % 100 >= 2 && n % 100 <= 19) ? 1 : 2);\n" - -# Section Headings -msgctxt "#32000" -msgid "General" -msgstr "" - -msgctxt "#32001" -msgid "Advanced" -msgstr "" - -msgctxt "#32002" -msgid "TV Maze action" -msgstr "" - -# empty strings from id 32001 to 32099 -# Settings -msgctxt "#32100" -msgid "Enable debug logging" -msgstr "" - -msgctxt "#32101" -msgid "TV Maze User" -msgstr "" - -msgctxt "#32102" -msgid "TV Maze API Key" -msgstr "" - -msgctxt "#32103" -msgid "Add new Kodi shows to followed list" -msgstr "" - -msgctxt "#32104" -msgid "Mark new Kodi episodes as acquired" -msgstr "" - -msgctxt "#32105" -msgid "Mark watched Kodi episodes as watched" -msgstr "" - -msgctxt "#32106" -msgid "Mark watched after" -msgstr "" - -msgctxt "#32107" -msgid "Mark watched when removing from Kodi" -msgstr "" - -msgctxt "#32108" -msgid "Hide context menu items" -msgstr "" - -# empty strings from id 32108 to 32199 -# Dialog Headings -msgctxt "#32200" -msgid "API Credentials Needed" -msgstr "" - -msgctxt "#32201" -msgid "Select action" -msgstr "" - -msgctxt "#32202" -msgid "Select shows to follow" -msgstr "" - -msgctxt "#32203" -msgid "Select shows to unfollow" -msgstr "" - -msgctxt "#32204" -msgid "Select tag" -msgstr "" - -msgctxt "#32205" -msgid "Select shows to tag" -msgstr "" - -msgctxt "#32206" -msgid "Select shows to untag" -msgstr "" - -# empty strings from id 32207 to 32300 -# Dialog Messages -msgctxt "#32301" -msgid "TV Maze api credentials must be provided before continuing." -msgstr "" - -msgctxt "#32302" -msgid "Open settings" -msgstr "" - -msgctxt "#32303" -msgid "Select All (Click OK to reload list)" -msgstr "" - -msgctxt "#32304" -msgid "Deselect All (Click OK to reload list)" -msgstr "" - -# empty strings from 32305 to 32400 -# Context Menu -msgctxt "#32401" -msgid "TV Maze" -msgstr "" - -msgctxt "#32402" -msgid "Follow show" -msgstr "" - -msgctxt "#32403" -msgid "Unfollow show" -msgstr "" - -msgctxt "#32404" -msgid "Tag show" -msgstr "" - -msgctxt "#32405" -msgid "Untag show" -msgstr "" - -msgctxt "#32406" -msgid "Mark episode acquired" -msgstr "" - -msgctxt "#32407" -msgid "Mark episode watched" -msgstr "" - -msgctxt "#32408" -msgid "Mark episode skipped" -msgstr "" - -msgctxt "#32409" -msgid "Unmark episode" -msgstr "" diff --git a/script.tvmaze.integration/resources/language/resource.language.ro_ro/strings.po b/script.tvmaze.integration/resources/language/resource.language.ro_ro/strings.po index 022349825..a1cf656e2 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ro_ro/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ro_ro/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Romanian \n" "Language: ro_ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Generale" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Activează jurnalizare depanare" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.ru_ru/strings.po b/script.tvmaze.integration/resources/language/resource.language.ru_ru/strings.po index 6ee366867..3a7b785b7 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ru_ru/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ru_ru/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-05-09 13:14+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Russian \n" "Language: ru_ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.12.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Общие" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Расширенный" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Включить журнал отладки" msgctxt "#32101" msgid "TV Maze User" @@ -73,7 +84,7 @@ msgstr "" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "Выберите действие" msgctxt "#32202" msgid "Select shows to follow" diff --git a/script.tvmaze.integration/resources/language/resource.language.si_lk/strings.po b/script.tvmaze.integration/resources/language/resource.language.si_lk/strings.po index f6e3aaa7c..dfbbf0b6b 100644 --- a/script.tvmaze.integration/resources/language/resource.language.si_lk/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.si_lk/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-09 14:05+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Sinhala (Sri Lanka) \n" "Language: si_lk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "සාමාන්‍ය" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.sk_sk/strings.po b/script.tvmaze.integration/resources/language/resource.language.sk_sk/strings.po index 62fbbd4b1..d6ffc53ee 100644 --- a/script.tvmaze.integration/resources/language/resource.language.sk_sk/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.sk_sk/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2023-04-11 08:16+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Slovak \n" "Language: sk_sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 4.15.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Obecné" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "Pokročilé" msgctxt "#32002" msgid "TV Maze action" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Začať ukladať informácie / debug log" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.sl_si/strings.po b/script.tvmaze.integration/resources/language/resource.language.sl_si/strings.po index 55c150306..656376941 100644 --- a/script.tvmaze.integration/resources/language/resource.language.sl_si/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.sl_si/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Slovenian \n" "Language: sl_si\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Splošno" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Omogoči zapisovanje razhroščevanja" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.sq_al/strings.po b/script.tvmaze.integration/resources/language/resource.language.sq_al/strings.po index b005fc819..bde59fc08 100644 --- a/script.tvmaze.integration/resources/language/resource.language.sq_al/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.sq_al/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Albanian \n" "Language: sq_al\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Të përgjithshëm" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Aktivoni debug logging" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.sr_rs/strings.po b/script.tvmaze.integration/resources/language/resource.language.sr_rs/strings.po index 9a55a080d..8230a8027 100644 --- a/script.tvmaze.integration/resources/language/resource.language.sr_rs/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.sr_rs/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Serbian \n" "Language: sr_rs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Опште" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Омогући евиденцију грешака" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.sr_rs@latin/strings.po b/script.tvmaze.integration/resources/language/resource.language.sr_rs@latin/strings.po index 626df099e..bd8d7423d 100644 --- a/script.tvmaze.integration/resources/language/resource.language.sr_rs@latin/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.sr_rs@latin/strings.po @@ -7,18 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Language: sr_Latn\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Serbian (latin) \n" +"Language: sr_rs@latin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Opšte" msgctxt "#32001" msgid "Advanced" @@ -32,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Omogući evidenciju grešaka" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.sv_se/strings.po b/script.tvmaze.integration/resources/language/resource.language.sv_se/strings.po index aa764880f..c46dbc0d1 100644 --- a/script.tvmaze.integration/resources/language/resource.language.sv_se/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.sv_se/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Swedish \n" "Language: sv_se\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Allmänt" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Aktivera felsökningsloggning" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.szl/strings.po b/script.tvmaze.integration/resources/language/resource.language.szl/strings.po index 069a9c24e..54a514bbb 100644 --- a/script.tvmaze.integration/resources/language/resource.language.szl/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.szl/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-04-08 00:13+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Silesian \n" "Language: szl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Głōwnŏ" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.ta_in/strings.po b/script.tvmaze.integration/resources/language/resource.language.ta_in/strings.po index 39d8de8d6..03ea622ca 100644 --- a/script.tvmaze.integration/resources/language/resource.language.ta_in/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.ta_in/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Tamil (India) \n" "Language: ta_in\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "பொதுவானது" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "பிழைநீக்கு பதிவை செயல்படுத்தவும்" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.te_in/strings.po b/script.tvmaze.integration/resources/language/resource.language.te_in/strings.po index e1a3c419f..9443f1e0a 100644 --- a/script.tvmaze.integration/resources/language/resource.language.te_in/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.te_in/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-03-09 14:05+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Telugu (India) \n" "Language: te_in\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "సాధారణం" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.tg_tj/strings.po b/script.tvmaze.integration/resources/language/resource.language.tg_tj/strings.po index f708633ef..c9b4c7287 100644 --- a/script.tvmaze.integration/resources/language/resource.language.tg_tj/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.tg_tj/strings.po @@ -5,19 +5,30 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-04-08 00:13+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Tajik \n" "Language: tg_tj\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Умумӣ" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.th_th/strings.po b/script.tvmaze.integration/resources/language/resource.language.th_th/strings.po index d0e778488..6a2bcd058 100644 --- a/script.tvmaze.integration/resources/language/resource.language.th_th/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.th_th/strings.po @@ -5,23 +5,34 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2022-04-08 00:13+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Thai \n" "Language: th_th\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.11.2\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "ทั่วไป" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "ขั้นสูง" msgctxt "#32002" msgid "TV Maze action" diff --git a/script.tvmaze.integration/resources/language/resource.language.tr_tr/strings.po b/script.tvmaze.integration/resources/language/resource.language.tr_tr/strings.po index 23efdd689..f17c2697f 100644 --- a/script.tvmaze.integration/resources/language/resource.language.tr_tr/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.tr_tr/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Turkish \n" "Language: tr_tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Genel" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Hata ayıklama günlüğünü etkinleştir" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.uk_ua/strings.po b/script.tvmaze.integration/resources/language/resource.language.uk_ua/strings.po index c5520b536..dec2f6f85 100644 --- a/script.tvmaze.integration/resources/language/resource.language.uk_ua/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.uk_ua/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Ukrainian \n" "Language: uk_ua\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Загальні" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Увімкнути журнал налагодження" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.uz_uz/strings.po b/script.tvmaze.integration/resources/language/resource.language.uz_uz/strings.po index e3e6a12a6..d29743b6a 100644 --- a/script.tvmaze.integration/resources/language/resource.language.uz_uz/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.uz_uz/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Uzbek \n" "Language: uz_uz\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Umumiy" msgctxt "#32001" msgid "Advanced" diff --git a/script.tvmaze.integration/resources/language/resource.language.vi_vn/strings.po b/script.tvmaze.integration/resources/language/resource.language.vi_vn/strings.po index 90c9eb04a..51c3fa85f 100644 --- a/script.tvmaze.integration/resources/language/resource.language.vi_vn/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.vi_vn/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Vietnamese \n" "Language: vi_vn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "Tổng quan" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "Cho phép ghi nhật ký gỡ lỗi" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/language/resource.language.zh_cn/strings.po b/script.tvmaze.integration/resources/language/resource.language.zh_cn/strings.po index d374139e4..444638b60 100644 --- a/script.tvmaze.integration/resources/language/resource.language.zh_cn/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.zh_cn/strings.po @@ -5,148 +5,159 @@ msgid "" msgstr "" "Project-Id-Version: XBMC Addons\n" -"Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" +"Report-Msgid-Bugs-To: translations@kodi.tv\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-11-11 05:30+0000\n" +"Last-Translator: 撷星芒 \n" +"Language-Team: Chinese (China) \n" "Language: zh_cn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.8.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "Kodi与TV Maze的集成。" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "这种集成允许您在TV Maze上获取节目(并在当需要时将其添加到您的关注)当您将其添加到您的库中,观看后会将其标记在TV Maze。 您还可以手动关注、取消关注、标记和取消标记放映。" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "常规" msgctxt "#32001" msgid "Advanced" -msgstr "" +msgstr "进阶" msgctxt "#32002" msgid "TV Maze action" -msgstr "" +msgstr "TV Maze动作" # empty strings from id 32001 to 32099 # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "启用调试日志" msgctxt "#32101" msgid "TV Maze User" -msgstr "" +msgstr "TV Maze用户" msgctxt "#32102" msgid "TV Maze API Key" -msgstr "" +msgstr "TV Maze API密钥" msgctxt "#32103" msgid "Add new Kodi shows to followed list" -msgstr "" +msgstr "将Kodi中新的节目添加到关注列表" msgctxt "#32104" msgid "Mark new Kodi episodes as acquired" -msgstr "" +msgstr "将新的Kodi剧集标记为已获得" msgctxt "#32105" msgid "Mark watched Kodi episodes as watched" -msgstr "" +msgstr "将已观看的Kodi剧集标记为已观看" msgctxt "#32106" msgid "Mark watched after" -msgstr "" +msgstr "在此之后标记已观看" msgctxt "#32107" msgid "Mark watched when removing from Kodi" -msgstr "" +msgstr "从Kodi删除时,标记已观看" msgctxt "#32108" msgid "Hide context menu items" -msgstr "" +msgstr "隐藏上下文菜单项" # empty strings from id 32108 to 32199 # Dialog Headings msgctxt "#32200" msgid "API Credentials Needed" -msgstr "" +msgstr "需要API凭据" msgctxt "#32201" msgid "Select action" -msgstr "" +msgstr "选择动作" msgctxt "#32202" msgid "Select shows to follow" -msgstr "" +msgstr "选择要关注的节目" msgctxt "#32203" msgid "Select shows to unfollow" -msgstr "" +msgstr "选择要取消关注的节目" msgctxt "#32204" msgid "Select tag" -msgstr "" +msgstr "选择" msgctxt "#32205" msgid "Select shows to tag" -msgstr "" +msgstr "选择要打标签的节目" msgctxt "#32206" msgid "Select shows to untag" -msgstr "" +msgstr "选择要取消标签的节目" # empty strings from id 32207 to 32300 # Dialog Messages msgctxt "#32301" msgid "TV Maze api credentials must be provided before continuing." -msgstr "" +msgstr "TV Maze在继续之前,必须提供API凭据。" msgctxt "#32302" msgid "Open settings" -msgstr "" +msgstr "打开设置" msgctxt "#32303" msgid "Select All (Click OK to reload list)" -msgstr "" +msgstr "全选(单击“确定”重新加载列表)" msgctxt "#32304" msgid "Deselect All (Click OK to reload list)" -msgstr "" +msgstr "取消选择所有(单击“确定”重新加载列表)" # empty strings from 32305 to 32400 # Context Menu msgctxt "#32401" msgid "TV Maze" -msgstr "" +msgstr "TV MAZE" msgctxt "#32402" msgid "Follow show" -msgstr "" +msgstr "关注节目" msgctxt "#32403" msgid "Unfollow show" -msgstr "" +msgstr "取消关注节目" msgctxt "#32404" msgid "Tag show" -msgstr "" +msgstr "打标签节目" msgctxt "#32405" msgid "Untag show" -msgstr "" +msgstr "去标签节目" msgctxt "#32406" msgid "Mark episode acquired" -msgstr "" +msgstr "标记已获取的剧集" msgctxt "#32407" msgid "Mark episode watched" -msgstr "" +msgstr "标记已观看的剧集" msgctxt "#32408" msgid "Mark episode skipped" -msgstr "" +msgstr "标记已跳过的剧集" msgctxt "#32409" msgid "Unmark episode" -msgstr "" +msgstr "取消标记剧集" diff --git a/script.tvmaze.integration/resources/language/resource.language.zh_tw/strings.po b/script.tvmaze.integration/resources/language/resource.language.zh_tw/strings.po index 5e50e2ac3..9c09cc600 100644 --- a/script.tvmaze.integration/resources/language/resource.language.zh_tw/strings.po +++ b/script.tvmaze.integration/resources/language/resource.language.zh_tw/strings.po @@ -7,17 +7,28 @@ msgstr "" "Project-Id-Version: XBMC Addons\n" "Report-Msgid-Bugs-To: alanwww1@xbmc.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2021-05-06 20:29+0000\n" +"Last-Translator: Christian Gade \n" +"Language-Team: Chinese (Taiwan) \n" "Language: zh_tw\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6.1\n" + +msgctxt "Addon Summary" +msgid "Integration between Kodi and TV Maze." +msgstr "" + +msgctxt "Addon Description" +msgid "This integration allows you to mark shows as acquired on TV Maze (and add them to your followed shows if needed) when you add them to your library and mark them as watched on TV Maze after you watch them. You can also manually follow, unfollow, tag, and untag shows." +msgstr "" # Section Headings msgctxt "#32000" msgid "General" -msgstr "" +msgstr "一般設定" msgctxt "#32001" msgid "Advanced" @@ -31,7 +42,7 @@ msgstr "" # Settings msgctxt "#32100" msgid "Enable debug logging" -msgstr "" +msgstr "啟用除錯記錄" msgctxt "#32101" msgid "TV Maze User" diff --git a/script.tvmaze.integration/resources/lib/__init__.py b/script.tvmaze.integration/resources/lib/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/script.tvmaze.integration/resources/lib/apis/__init__.py b/script.tvmaze.integration/resources/lib/apis/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/script.tvmaze.integration/resources/lib/apis/tvmaze.py b/script.tvmaze.integration/resources/lib/apis/tvmaze.py index b566dd36d..6e324e4d5 100644 --- a/script.tvmaze.integration/resources/lib/apis/tvmaze.py +++ b/script.tvmaze.integration/resources/lib/apis/tvmaze.py @@ -1,4 +1,4 @@ -#v.0.5.2 +# v.0.5.2 import json from . import url @@ -6,13 +6,13 @@ headers = {} headers['Content-Type'] = 'application/json' headers['Accept'] = 'application/json' -JSONURL = url.URL( 'json', headers=headers ) +JSONURL = url.URL('json', headers=headers) TXTURL = url.URL() -class API( object ): +class API(object): - def __init__( self, user='', apikey='' ): + def __init__(self, user='', apikey=''): """Create a TV Maze API object.""" self.PUBLICURL = 'https://api.tvmaze.com' self.USER = user @@ -22,60 +22,47 @@ def __init__( self, user='', apikey='' ): else: self.AUTHURL = self.PUBLICURL + def getShow(self, tvmazeid, params=None): + return self._call('shows/%s' % tvmazeid, params) - def getShow( self, tvmazeid, params=None ): - return self._call( 'shows/%s' % tvmazeid, params ) + def getEpisode(self, episodeid, params=None): + return self._call('episodes/%s' % episodeid, params) + def getEpisodeBySeasonEpNumber(self, tvmazeid, params): + return self._call('shows/%s/episodebynumber' % tvmazeid, params) - def getEpisode( self, episodeid, params=None ): - return self._call( 'episodes/%s' % episodeid, params ) + def getFollowedShows(self, params=None): + return self._call('follows/shows', params, auth=True) + def getTaggedShows(self, tag, params=None): + return self._call('tags/%s/shows' % tag, params, auth=True) - def getEpisodeBySeasonEpNumber( self, tvmazeid, params ): - return self._call( 'shows/%s/episodebynumber' % tvmazeid, params ) + def getTags(self, params=None): + return self._call('tags', params, auth=True) + def findSingleShow(self, showname): + params = {'q': showname} + return self._call('/singlesearch/shows', params) - def getFollowedShows( self, params=None ): - return self._call( 'follows/shows', params, auth=True ) + def followShow(self, showid, params=None): + return self._call('follows/shows/%s' % showid, params, thetype='put', auth=True) - - def getTaggedShows( self, tag, params=None ): - return self._call( 'tags/%s/shows' % tag, params, auth=True ) - - - def getTags( self, params=None ): - return self._call( 'tags', params, auth=True ) - - - def findSingleShow( self, showname ): - params = {'q':showname} - return self._call( '/singlesearch/shows', params ) - - - def followShow( self, showid, params=None ): - return self._call( 'follows/shows/%s' % showid, params, thetype='put', auth=True ) - - - def markEpisode( self, episodeid, marked_as=0, marked_at=0, params=None ): + def markEpisode(self, episodeid, marked_as=0, marked_at=0, params=None): if marked_as == -1: - return self._call( 'episodes/%s' % episodeid, params, thetype='delete', auth=True ) - payload = {'episode_id':0, 'type':marked_as, 'marked_at':marked_at } - return self._call( 'episodes/%s' % episodeid, params, data=json.dumps( payload ), thetype='put', auth=True ) - - - def tagShow( self, showid, tagid, params=None ): - return self._call( 'tags/%s/shows/%s' % (tagid, showid), params, auth=True, thetype='put' ) - - - def unTagShow( self, showid, tagid, params=None ): - return self._call( 'tags/%s/shows/%s' % (tagid, showid), params, auth=True, thetype='delete' ) + return self._call('episodes/%s' % episodeid, params, thetype='delete', auth=True) + payload = {'episode_id': 0, 'type': marked_as, 'marked_at': marked_at} + return self._call('episodes/%s' % episodeid, params, data=json.dumps(payload), thetype='put', auth=True) + def tagShow(self, showid, tagid, params=None): + return self._call('tags/%s/shows/%s' % (tagid, showid), params, auth=True, thetype='put') - def unFollowShow( self, showid, params=None ): - return self._call( 'follows/shows/%s' % showid, params, thetype='delete', auth=True ) + def unTagShow(self, showid, tagid, params=None): + return self._call('tags/%s/shows/%s' % (tagid, showid), params, auth=True, thetype='delete') + def unFollowShow(self, showid, params=None): + return self._call('follows/shows/%s' % showid, params, thetype='delete', auth=True) - def _call( self, url_end, params, data=None, auth=False, thetype="get" ): + def _call(self, url_end, params, data=None, auth=False, thetype="get"): loglines = [] if not params: params = {} @@ -83,18 +70,22 @@ def _call( self, url_end, params, data=None, auth=False, thetype="get" ): data = {} if auth: if self.AUTHURL == self.PUBLICURL: - loglines.append( 'authorization credentials required but not supplied' ) + loglines.append( + 'authorization credentials required but not supplied') return False, loglines, {} url_base = self.AUTHURL auth = (self.USER, self.APIKEY) else: url_base = self.PUBLICURL - theurl = '%s/%s' % (url_base, url_end ) + theurl = '%s/%s' % (url_base, url_end) if thetype == 'get': - status, j_loglines, results = JSONURL.Get( theurl, auth=auth, params=params ) + status, j_loglines, results = JSONURL.Get( + theurl, auth=auth, params=params) if thetype == 'put': - status, j_loglines, results = JSONURL.Put( theurl,auth=auth, params=params, data=data ) + status, j_loglines, results = JSONURL.Put( + theurl, auth=auth, params=params, data=data) if thetype == 'delete': - status, j_loglines, results = TXTURL.Delete( theurl, auth=auth, params=params ) - loglines.extend( j_loglines ) + status, j_loglines, results = TXTURL.Delete( + theurl, auth=auth, params=params) + loglines.extend(j_loglines) return status == 200, loglines, results diff --git a/script.tvmaze.integration/resources/lib/apis/url.py b/script.tvmaze.integration/resources/lib/apis/url.py index 9c450710e..bb6336b78 100644 --- a/script.tvmaze.integration/resources/lib/apis/url.py +++ b/script.tvmaze.integration/resources/lib/apis/url.py @@ -1,77 +1,77 @@ -#v.0.5.4 +# v.0.5.4 import socket import requests as _requests -class URL( object ): - def __init__( self, returntype='text', headers='', timeout=10 ): +class URL(object): + + def __init__(self, returntype='text', headers='', timeout=10): """Creates a Requests wrapper object.""" self.TIMEOUT = timeout self.HEADERS = headers self.RETURNTYPE = returntype + def Get(self, theurl, **kwargs): + return self._urlcall(theurl, 'get', kwargs) - def Get( self, theurl, **kwargs ): - return self._urlcall( theurl, 'get', kwargs ) - - - def Post( self, theurl, **kwargs ): - return self._urlcall( theurl, 'post', kwargs ) - + def Post(self, theurl, **kwargs): + return self._urlcall(theurl, 'post', kwargs) - def Put( self, theurl, **kwargs ): - return self._urlcall( theurl, 'put', kwargs ) + def Put(self, theurl, **kwargs): + return self._urlcall(theurl, 'put', kwargs) + def Delete(self, theurl, **kwargs): + return self._urlcall(theurl, 'delete', kwargs) - def Delete( self, theurl, **kwargs ): - return self._urlcall( theurl, 'delete', kwargs ) - - - def _urlcall( self, theurl, urltype, kwargs ): + def _urlcall(self, theurl, urltype, kwargs): loglines = [] urldata = '' bad_r = False - auth, params, thedata = self._unpack_args( kwargs ) + auth, params, thedata = self._unpack_args(kwargs) try: if urltype == "get": - urldata = _requests.get( theurl, auth=auth, params=params, headers=self.HEADERS, timeout=self.TIMEOUT ) + urldata = _requests.get( + theurl, auth=auth, params=params, headers=self.HEADERS, timeout=self.TIMEOUT) elif urltype == "post": - urldata = _requests.post( theurl, auth=auth, params=params, data=thedata, headers=self.HEADERS, timeout=self.TIMEOUT ) + urldata = _requests.post( + theurl, auth=auth, params=params, data=thedata, headers=self.HEADERS, timeout=self.TIMEOUT) elif urltype == "put": - urldata = _requests.put( theurl, auth=auth, params=params, data=thedata, headers=self.HEADERS, timeout=self.TIMEOUT ) + urldata = _requests.put(theurl, auth=auth, params=params, + data=thedata, headers=self.HEADERS, timeout=self.TIMEOUT) elif urltype == "delete": - urldata = _requests.delete( theurl, auth=auth, params=params, data=thedata, headers=self.HEADERS, timeout=self.TIMEOUT ) - loglines.append( "the url is: " + urldata.url ) - loglines.append( 'the params are: ') - loglines.append( params ) - loglines.append( 'the data are: ') - loglines.append( thedata ) + urldata = _requests.delete( + theurl, auth=auth, params=params, data=thedata, headers=self.HEADERS, timeout=self.TIMEOUT) + loglines.append("the url is: " + urldata.url) + loglines.append('the params are: ') + loglines.append(params) + loglines.append('the data are: ') + loglines.append(thedata) urldata.raise_for_status() except _requests.exceptions.ConnectionError as e: - loglines.append( 'site unreachable at ' + theurl ) - loglines.append( e ) + loglines.append('site unreachable at ' + theurl) + loglines.append(e) bad_r = True except _requests.exceptions.Timeout as e: - loglines.append( 'timeout error while downloading from ' + theurl ) - loglines.append( e ) + loglines.append('timeout error while downloading from ' + theurl) + loglines.append(e) bad_r = True except socket.timeout as e: - loglines.append( 'timeout error while downloading from ' + theurl ) - loglines.append( e ) + loglines.append('timeout error while downloading from ' + theurl) + loglines.append(e) bad_r = True except _requests.exceptions.HTTPError as e: - loglines.append( 'HTTP Error while downloading from ' + theurl ) - loglines.append( e ) + loglines.append('HTTP Error while downloading from ' + theurl) + loglines.append(e) bad_r = True except _requests.exceptions.RequestException as e: - loglines.append( 'unknown error while downloading from ' + theurl ) - loglines.append( e ) + loglines.append('unknown error while downloading from ' + theurl) + loglines.append(e) bad_r = True if bad_r: return False, loglines, '' if urldata: - loglines.append( 'returning URL as ' + self.RETURNTYPE ) + loglines.append('returning URL as ' + self.RETURNTYPE) if self.RETURNTYPE == 'text': thedata = urldata.text elif self.RETURNTYPE == 'binary': @@ -79,16 +79,16 @@ def _urlcall( self, theurl, urltype, kwargs ): elif self.RETURNTYPE == 'json': thedata = urldata.json() else: - loglines.append( 'unable to convert returned object to acceptable type' ) + loglines.append( + 'unable to convert returned object to acceptable type') return False, loglines, '' else: return False, loglines, '' - loglines.append( '-----URL OBJECT RETURNED-----' ) - loglines.append( thedata ) + loglines.append('-----URL OBJECT RETURNED-----') + loglines.append(thedata) return urldata.status_code, loglines, thedata - - def _unpack_args( self, kwargs ): + def _unpack_args(self, kwargs): try: auth = kwargs['auth'] except KeyError: @@ -104,4 +104,4 @@ def _unpack_args( self, kwargs ): thedata = [] else: thedata = '' - return auth, params, thedata \ No newline at end of file + return auth, params, thedata diff --git a/script.tvmaze.integration/resources/lib/fileops.py b/script.tvmaze.integration/resources/lib/fileops.py index bce2b7734..7c5803ed7 100644 --- a/script.tvmaze.integration/resources/lib/fileops.py +++ b/script.tvmaze.integration/resources/lib/fileops.py @@ -1,259 +1,267 @@ # v.0.12.4 -import os, re, sys +import os +import re +import sys try: from kodi_six import xbmcvfs isXBMC = True except ImportError: - isXBMC= False + isXBMC = False if isXBMC: - _mkdirs = xbmcvfs.mkdirs - _rmdir = xbmcvfs.rmdir - _exists = xbmcvfs.exists - _delete = xbmcvfs.delete - _copy = xbmcvfs.copy - _open = xbmcvfs.File - _rename = xbmcvfs.rename + _mkdirs = xbmcvfs.mkdirs + _rmdir = xbmcvfs.rmdir + _exists = xbmcvfs.exists + _delete = xbmcvfs.delete + _copy = xbmcvfs.copy + _open = xbmcvfs.File + _rename = xbmcvfs.rename else: import shutil - _mkdirs = os.makedirs - _rmdir = os.rmdir - _exists = os.path.exists - _delete = os.remove - _copy = shutil.copyfile - _open = open - _rename = os.rename + _mkdirs = os.makedirs + _rmdir = os.rmdir + _exists = os.path.exists + _delete = os.remove + _copy = shutil.copyfile + _open = open + _rename = os.rename -def checkPath( thepath, createdir=True ): +def checkPath(thepath, createdir=True): log_lines = [] - log_lines.append( 'checking for %s' % thepath ) - if not _exists( thepath ): + log_lines.append('checking for %s' % thepath) + if not _exists(thepath): if createdir: - log_lines.append( '%s does not exist, creating it' % thepath ) - _mkdirs( thepath ) + log_lines.append('%s does not exist, creating it' % thepath) + _mkdirs(thepath) else: - log_lines.append( '%s does not exist' % thepath ) + log_lines.append('%s does not exist' % thepath) return False, log_lines else: - log_lines.append( '%s exists' % thepath ) + log_lines.append('%s exists' % thepath) return True, log_lines -def copyFile( thesource, thedest ): +def copyFile(thesource, thedest): log_lines = [] - if _exists( thesource ): - log_lines.append( 'copying file %s to %s' % (thesource, thedest) ) + if _exists(thesource): + log_lines.append('copying file %s to %s' % (thesource, thedest)) try: - _copy( thesource, thedest ) + _copy(thesource, thedest) except IOError: - log_lines.append( 'unable to copy %s to %s' % (thesource, thedest) ) + log_lines.append('unable to copy %s to %s' % (thesource, thedest)) return False, log_lines except Exception as e: - log_lines.append( 'unknown error while attempting to copy %s to %s' % (thesource, thedest) ) - log_lines.append( e ) + log_lines.append( + 'unknown error while attempting to copy %s to %s' % (thesource, thedest)) + log_lines.append(e) return False, log_lines return True, log_lines else: - log_lines.append( '%s does not exist' % thesource ) + log_lines.append('%s does not exist' % thesource) return False, log_lines -def deleteFile( thesource ): - return deleteFolder( thesource, thetype='file') +def deleteFile(thesource): + return deleteFolder(thesource, thetype='file') -def deleteFolder( thesource, thetype='folder' ): +def deleteFolder(thesource, thetype='folder'): log_lines = [] - if _exists( thesource ): + if _exists(thesource): if thetype == 'folder': - #in Mac OSX the .DS_Store file, if present, will block a folder from being deleted, so delete the file + # in Mac OSX the .DS_Store file, if present, will block a folder from being deleted, so delete the file try: - _delete( os.path.join( thesource, '.DS_Store' ) ) + _delete(os.path.join(thesource, '.DS_Store')) except IOError: - log_lines.append( 'unable to delete .DS_Store file' ) + log_lines.append('unable to delete .DS_Store file') except Exception as e: - log_lines.append( 'unknown error while attempting to delete .DS_Store file' ) - log_lines.append( e ) + log_lines.append( + 'unknown error while attempting to delete .DS_Store file') + log_lines.append(e) _action = _rmdir else: _action = _delete - log_lines.append( 'deleting %s %s' % (thetype, thesource) ) + log_lines.append('deleting %s %s' % (thetype, thesource)) try: if isXBMC: - if not _action( thesource ): - raise IOError( 'unable to delete item' ) + if not _action(thesource): + raise IOError('unable to delete item') else: - _action( thesource ) + _action(thesource) except IOError: - log_lines.append( 'unable to delete %s' % thesource ) + log_lines.append('unable to delete %s' % thesource) return False, log_lines except Exception as e: - log_lines.append( 'unknown error while attempting to delete %s' % thesource ) - log_lines.append( e ) + log_lines.append( + 'unknown error while attempting to delete %s' % thesource) + log_lines.append(e) return False, log_lines return True, log_lines else: - log_lines.append( '%s does not exist' % thesource ) + log_lines.append('%s does not exist' % thesource) return False, log_lines -def listDirectory( thesource, thefilter='all' ): +def listDirectory(thesource, thefilter='all'): log_lines = [] - log_lines.append( 'getting contents of folder %s' % thesource ) + log_lines.append('getting contents of folder %s' % thesource) if isXBMC: try: - dirs, files = xbmcvfs.listdir( thesource ) + dirs, files = xbmcvfs.listdir(thesource) except OSError: - log_lines.append( 'OSError getting directory list' ) + log_lines.append('OSError getting directory list') return [], log_lines except Exception as e: - log_lines.append( 'unexpected error getting directory list' ) - log_lines.append( e ) + log_lines.append('unexpected error getting directory list') + log_lines.append(e) return [], log_lines if thefilter == 'files': - log_lines.append( 'returning files from %s' % thesource ) - log_lines.append( files ) + log_lines.append('returning files from %s' % thesource) + log_lines.append(files) return files, log_lines - elif thefilter =='folders': - log_lines.append( 'returning folders from %s' % thesource ) - log_lines.append( dirs ) + elif thefilter == 'folders': + log_lines.append('returning folders from %s' % thesource) + log_lines.append(dirs) return dirs, log_lines else: - log_lines.append( 'returning files and folders from %s' % thesource ) - log_lines.append( files + dirs ) + log_lines.append('returning files and folders from %s' % thesource) + log_lines.append(files + dirs) return files + dirs, log_lines else: try: - contents = os.listdir( thesource ) + contents = os.listdir(thesource) except OSError: - log_lines.append( 'OSError getting directory list' ) + log_lines.append('OSError getting directory list') return [], log_lines except Exception as e: - log_lines.append( 'unexpected error getting directory list' ) - log_lines.append( e ) + log_lines.append('unexpected error getting directory list') + log_lines.append(e) return [], log_lines - log_lines.append( 'returning files and folders from %s' % thesource ) + log_lines.append('returning files and folders from %s' % thesource) return contents, log_lines -def moveFile( thesource, thedest ): +def moveFile(thesource, thedest): log_lines = [] cp_loglines = [] dl_loglines = [] success = False - if _exists( thesource ): - cp_success, cp_loglines = copyFile( thesource, thedest ) + if _exists(thesource): + cp_success, cp_loglines = copyFile(thesource, thedest) if cp_success: - dl_success, dl_loglines = deleteFile( thesource ) + dl_success, dl_loglines = deleteFile(thesource) if dl_success: success = True else: - log_lines.append( '%s does not exist' % thesource) + log_lines.append('%s does not exist' % thesource) success = False return success, log_lines + cp_loglines + dl_loglines -def _atoi( text ): +def _atoi(text): return int(text) if text.isdigit() else text -def naturalKeys( thelist ): +def naturalKeys(thelist): # from http://nedbatchelder.com/blog/200712/human_sorting.html - return [ _atoi( c ) for c in re.split( r'(\d+)', thelist ) ] + return [_atoi(c) for c in re.split(r'(\d+)', thelist)] -def osPathFromString( spath, sep='/' ): - pathlist = spath.split( sep ) - if spath.startswith( sep ): - pathlist.insert( 0, os.sep ) +def osPathFromString(spath, sep='/'): + pathlist = spath.split(sep) + if spath.startswith(sep): + pathlist.insert(0, os.sep) pathlist[2] = pathlist[2] + os.sep return os.path.join(*pathlist) -def readFile( filename ): +def readFile(filename): log_lines = [] - if _exists( filename ): + if _exists(filename): try: if sys.version_info >= (3, 0): - with _open( filename, 'r') as thefile: + with _open(filename, 'r') as thefile: thedata = thefile.read() else: - thefile = _open( filename, 'r' ) + thefile = _open(filename, 'r') thedata = thefile.read() thefile.close() except IOError: - log_lines.append( 'unable to read data from ' + filename ) + log_lines.append('unable to read data from ' + filename) return log_lines, '' except Exception as e: - log_lines.append( 'unknown error while reading data from ' + filename ) - log_lines.append( e ) + log_lines.append( + 'unknown error while reading data from ' + filename) + log_lines.append(e) return log_lines, '' return log_lines, thedata else: - log_lines.append( '%s does not exist' % filename ) + log_lines.append('%s does not exist' % filename) return log_lines, '' -def renameFile ( thesource, thedest ): +def renameFile(thesource, thedest): log_lines = [] - log_lines.append( 'renaming file %s to %s' % (thesource, thedest) ) + log_lines.append('renaming file %s to %s' % (thesource, thedest)) try: - _rename( thesource, thedest ) + _rename(thesource, thedest) except IOError: - log_lines.append( 'unable to rename %s to %s' % (thesource, thedest) ) + log_lines.append('unable to rename %s to %s' % (thesource, thedest)) return False, log_lines except Exception as e: - log_lines.append( 'unknown error while attempting to rename %s to %s' % (thesource, thedest) ) - log_lines.append( e ) + log_lines.append( + 'unknown error while attempting to rename %s to %s' % (thesource, thedest)) + log_lines.append(e) return False, log_lines return True, log_lines -def _remove_trailing_dot( thename, endreplace='' ): - if thename[-1] == '.' and len( thename ) > 1 and endreplace != '.': - return _remove_trailing_dot( thename[:-1] + endreplace ) +def _remove_trailing_dot(thename, endreplace=''): + if thename[-1] == '.' and len(thename) > 1 and endreplace != '.': + return _remove_trailing_dot(thename[:-1] + endreplace) else: return thename -def setSafeName( thename, illegalchars='<>:"/\|?*', illegalreplace='_', endreplace='' ): +def setSafeName(thename, illegalchars='<>:"/\|?*', illegalreplace='_', endreplace=''): loglines = [] if not thename: - loglines.append( 'name is empty, returning it' ) + loglines.append('name is empty, returning it') return thename, loglines s_name = '' - loglines.append( 'started with %s' % thename ) - loglines.append( 'the illegal characters are %s and the replacement is %s' % (illegalchars, illegalreplace) ) - for c in list( _remove_trailing_dot( thename, endreplace=endreplace ) ): + loglines.append('started with %s' % thename) + loglines.append('the illegal characters are %s and the replacement is %s' % ( + illegalchars, illegalreplace)) + for c in list(_remove_trailing_dot(thename, endreplace=endreplace)): if c in illegalchars: s_name = s_name + illegalreplace else: s_name = s_name + c - loglines.append( 'finished with %s' % s_name ) + loglines.append('finished with %s' % s_name) return s_name, loglines -def writeFile( data, filename, wtype='wb' ): +def writeFile(data, filename, wtype='wb'): log_lines = [] - if type(data).__name__=='unicode': + if type(data).__name__ == 'unicode': data = data.encode('utf-8') try: if sys.version_info >= (3, 0): - with _open( filename, wtype) as thefile: - thefile.write( data ) + with _open(filename, wtype) as thefile: + thefile.write(data) else: - thefile = _open( filename, wtype ) - thefile.write( data ) + thefile = _open(filename, wtype) + thefile.write(data) thefile.close() except IOError as e: - log_lines.append( 'unable to write data to ' + filename ) - log_lines.append( e ) + log_lines.append('unable to write data to ' + filename) + log_lines.append(e) return False, log_lines except Exception as e: - log_lines.append( 'unknown error while writing data to ' + filename ) - log_lines.append( e ) + log_lines.append('unknown error while writing data to ' + filename) + log_lines.append(e) return False, log_lines - log_lines.append( 'successfuly wrote data to ' + filename ) + log_lines.append('successfuly wrote data to ' + filename) return True, log_lines diff --git a/script.tvmaze.integration/resources/lib/kodisettings.py b/script.tvmaze.integration/resources/lib/kodisettings.py index 22a49cf47..5bafba2ba 100644 --- a/script.tvmaze.integration/resources/lib/kodisettings.py +++ b/script.tvmaze.integration/resources/lib/kodisettings.py @@ -1,54 +1,56 @@ -#v.0.3.4 +# v.0.3.5 -from kodi_six import xbmc, xbmcaddon +import xbmc +import xbmcaddon +import xbmcvfs -ADDON = xbmcaddon.Addon() -ADDONNAME = ADDON.getAddonInfo('id') +ADDON = xbmcaddon.Addon() +ADDONNAME = ADDON.getAddonInfo('id') ADDONLONGNAME = ADDON.getAddonInfo('name') -ADDONVERSION = ADDON.getAddonInfo('version') -ADDONPATH = ADDON.getAddonInfo('path') -ADDONDATAPATH = xbmc.translatePath( ADDON.getAddonInfo('profile') ) -ADDONICON = xbmc.translatePath('%s/icon.png' % ADDONPATH ) +ADDONVERSION = ADDON.getAddonInfo('version') +ADDONPATH = ADDON.getAddonInfo('path') +ADDONDATAPATH = xbmcvfs.translatePath(ADDON.getAddonInfo('profile')) +ADDONICON = xbmcvfs.translatePath('%s/icon.png' % ADDONPATH) ADDONLANGUAGE = ADDON.getLocalizedString -SKINNAME = xbmc.getSkinDir() +SKINNAME = xbmc.getSkinDir() -def _get_setting( setting_name, default, thetype="string" ): +def _get_setting(setting_name, default, thetype="string"): if thetype.lower() == "bool": - if ADDON.getSetting( setting_name ).lower() == 'true': + if ADDON.getSetting(setting_name).lower() == 'true': return True - if ADDON.getSetting( setting_name ).lower() == 'false': + if ADDON.getSetting(setting_name).lower() == 'false': return False return default if thetype.lower() == "int": try: - return int( ADDON.getSetting( setting_name ) ) + return int(ADDON.getSetting(setting_name)) except ValueError: return default if thetype.lower() == "number": try: - return float( ADDON.getSetting( setting_name ) ) + return float(ADDON.getSetting(setting_name)) except ValueError: return default else: - setting = ADDON.getSetting( setting_name ) + setting = ADDON.getSetting(setting_name) if setting: return setting else: return default -def getSettingBool( setting_name, default=False ): - return _get_setting( setting_name, default, 'bool' ) +def getSettingBool(setting_name, default=False): + return _get_setting(setting_name, default, 'bool') -def getSettingInt( setting_name, default=0 ): - return _get_setting( setting_name, default, 'int' ) +def getSettingInt(setting_name, default=0): + return _get_setting(setting_name, default, 'int') -def getSettingNumber( setting_name, default=0.0 ): - return _get_setting( setting_name, default, 'number' ) +def getSettingNumber(setting_name, default=0.0): + return _get_setting(setting_name, default, 'number') -def getSettingString( setting_name, default='' ): - return _get_setting( setting_name, default, 'string' ) +def getSettingString(setting_name, default=''): + return _get_setting(setting_name, default, 'string') diff --git a/script.tvmaze.integration/resources/lib/tvmi.py b/script.tvmaze.integration/resources/lib/tvmi.py index 9f04a9111..ee5affb99 100644 --- a/script.tvmaze.integration/resources/lib/tvmi.py +++ b/script.tvmaze.integration/resources/lib/tvmi.py @@ -3,8 +3,12 @@ # * # * original TV Maze Integration code by pkscout -from kodi_six import xbmc, xbmcgui -import contextlib, json, os, re, sys +import xbmc +import xbmcgui +import json +import os +import re +import sys from resources.lib.apis import tvmaze from resources.lib.fileops import readFile, writeFile from resources.lib.xlogger import Logger @@ -14,218 +18,244 @@ def _upgrade(): settings = loadSettings() if settings['version_upgrade'] != settings['ADDONVERSION']: - settings['ADDON'].setSetting( 'version_upgrade', settings['ADDONVERSION'] ) + settings['ADDON'].setSetting( + 'version_upgrade', settings['ADDONVERSION']) -def _logsafe_settings( settings ): + +def _logsafe_settings(settings): show_in_log = settings.copy() - show_in_log.pop( 'tvmaze_user', '' ) - show_in_log.pop( 'tvmaze_apikey', '' ) + show_in_log.pop('tvmaze_user', '') + show_in_log.pop('tvmaze_apikey', '') return show_in_log -def _manage_followed( showname, action, tvmazeapi, lw ): - success, loglines, result = tvmazeapi.findSingleShow( showname ) - lw.log( loglines ) + +def _manage_followed(showname, action, tvmazeapi, lw): + success, loglines, result = tvmazeapi.findSingleShow(showname) + lw.log(loglines) if success: - showid = result.get( 'id', 0 ) + showid = result.get('id', 0) if showid: if action == 'follow': - success, loglines, result = tvmazeapi.followShow( showid ) + success, loglines, result = tvmazeapi.followShow(showid) else: - success, loglines, result = tvmazeapi.unFollowShow( showid ) - lw.log( loglines ) + success, loglines, result = tvmazeapi.unFollowShow(showid) + lw.log(loglines) return showid -def _mark_one( show_info, mark_type, add_followed, tvmcache, tvmcachefile, tvmazeapi, lw ): - lw.log( ['starting process to mark show'] ) + +def _mark_one(show_info, mark_type, add_followed, tvmcache, tvmcachefile, tvmazeapi, lw): + lw.log(['starting process to mark show']) tvmazeid = '' if show_info: - lw.log( ['show info found, trying to match with cached TV Maze information first'] ) - tvmazeid = _match_from_followed_shows( show_info, tvmcache, lw ) + lw.log( + ['show info found, trying to match with cached TV Maze information first']) + tvmazeid = _match_from_followed_shows(show_info, tvmcache, lw) if not tvmazeid: - lw.log( ['no match, loading cache file from disk and trying again'] ) - loglines, results = readFile( tvmcachefile ) - lw.log( loglines ) + lw.log(['no match, loading cache file from disk and trying again']) + loglines, results = readFile(tvmcachefile) + lw.log(loglines) if results: - tvmcache = json.loads( results ) + tvmcache = json.loads(results) else: tvmcache = [] - tvmazeid = _match_from_followed_shows( show_info, tvmcache, lw ) + tvmazeid = _match_from_followed_shows(show_info, tvmcache, lw) if not tvmazeid: - lw.log( ['no match, getting updated followed shows from TV Maze and trying again'] ) + lw.log( + ['no match, getting updated followed shows from TV Maze and trying again']) if add_followed: showname = show_info['name'] else: showname = '' - tvmcache = _update_followed_cache( tvmcachefile, tvmazeapi, lw, showname=showname ) - tvmazeid = _match_from_followed_shows( show_info, tvmcache, lw ) + tvmcache = _update_followed_cache( + tvmcachefile, tvmazeapi, lw, showname=showname) + tvmazeid = _match_from_followed_shows(show_info, tvmcache, lw) if tvmazeid: - lw.log( ['found tvmazeid of %s' % tvmazeid, 'attempting to get episode id'] ) - params = {'season':show_info['season'], 'number':show_info['episode']} - success, loglines, results = tvmazeapi.getEpisodeBySeasonEpNumber( tvmazeid, params ) - lw.log( loglines ) + lw.log(['found tvmazeid of %s' % + tvmazeid, 'attempting to get episode id']) + params = {'season': show_info['season'], + 'number': show_info['episode']} + success, loglines, results = tvmazeapi.getEpisodeBySeasonEpNumber( + tvmazeid, params) + lw.log(loglines) if not success: - lw.log( ['no valid response returned from TV Maze, aborting'] ) + lw.log(['no valid response returned from TV Maze, aborting']) return try: episodeid = results['id'] except KeyError: episodeid = '' if episodeid: - lw.log( ['got back episode id of %s' % episodeid, 'marking episode on TV Maze'] ) - success, loglines, results = tvmazeapi.markEpisode( episodeid, marked_as=mark_type ) - lw.log( loglines ) + lw.log(['got back episode id of %s' % + episodeid, 'marking episode on TV Maze']) + success, loglines, results = tvmazeapi.markEpisode( + episodeid, marked_as=mark_type) + lw.log(loglines) if not success: - lw.log( ['no valid response returned from TV Maze, show was not marked'] ) + lw.log( + ['no valid response returned from TV Maze, show was not marked']) else: - lw.log( ['no episode id found'] ) + lw.log(['no episode id found']) else: - lw.log( ['no tvmazeid found'] ) + lw.log(['no tvmazeid found']) else: - lw.log( ['no show information from Kodi'] ) + lw.log(['no show information from Kodi']) return tvmcache -def _match_from_followed_shows( show_info, tvmcache, lw ): + +def _match_from_followed_shows(show_info, tvmcache, lw): tvmazeid = '' - lw.log( ['using show name of %s' % show_info['name']], xbmc.LOGINFO ) + lw.log(['using show name of %s' % show_info['name']], xbmc.LOGINFO) if not tvmcache: return '' for followed_show in tvmcache: followed_name = followed_show['_embedded']['show']['name'] - lw.log( ['checking for %s matching %s' % (show_info['name'], followed_name)] ) + lw.log(['checking for %s matching %s' % + (show_info['name'], followed_name)]) if followed_name == show_info['name']: - lw.log( ['found match for %s' % show_info['name'] ], xbmc.LOGINFO ) + lw.log(['found match for %s' % show_info['name']], xbmc.LOGINFO) tvmazeid = followed_show['show_id'] break return tvmazeid -def _build_tag_list( tvmazeapi, lw ): - lw.log( ['building tag list'] ) + +def _build_tag_list(tvmazeapi, lw): + lw.log(['building tag list']) taglist = [] tagmap = {} success, loglines, results = tvmazeapi.getTags() - lw.log( loglines ) + lw.log(loglines) if not success or not results: return [], {} - items = sorted( results, key=lambda x:x['name'] ) + items = sorted(results, key=lambda x: x['name']) for item in items: - taglist.append( item['name'] ) + taglist.append(item['name']) tagmap[item['name']] = item['id'] return taglist, tagmap -def _update_followed_cache( tvmcachefile, tvmazeapi, lw, showname='' ): + +def _update_followed_cache(tvmcachefile, tvmazeapi, lw, showname=''): if showname: - _manage_followed( showname, 'follow', tvmazeapi, lw ) - success, loglines, results = tvmazeapi.getFollowedShows( params={'embed':'show'} ) - lw.log( loglines ) + _manage_followed(showname, 'follow', tvmazeapi, lw) + success, loglines, results = tvmazeapi.getFollowedShows( + params={'embed': 'show'}) + lw.log(loglines) if success: tvmcache = results else: - lw.log( ['no valid response returned from TV Maze'] ) + lw.log(['no valid response returned from TV Maze']) tvmcache = [] if tvmcache: - success, loglines = writeFile( json.dumps( tvmcache ), tvmcachefile, wtype='w' ) - lw.log( loglines ) + success, loglines = writeFile( + json.dumps(tvmcache), tvmcachefile, wtype='w') + lw.log(loglines) return tvmcache -def _get_json( method, params, lw ): - json_call = '{"jsonrpc":"2.0", "method":"%s", "params":%s, "id":1}' % (method, params) - lw.log( ['sending: %s' % json_call ]) - response = xbmc.executeJSONRPC( json_call ) - lw.log( ['the response was:', response] ) + +def _get_json(method, params, lw): + json_call = '{"jsonrpc":"2.0", "method":"%s", "params":%s, "id":1}' % ( + method, params) + lw.log(['sending: %s' % json_call]) + response = xbmc.executeJSONRPC(json_call) + lw.log(['the response was:', response]) try: - r_dict = json.loads( response ) + r_dict = json.loads(response) except ValueError: r_dict = {} - return r_dict.get( 'result', {} ) + return r_dict.get('result', {}) + -def _startup( lw, settings, dialog ): - lw.log( ['script version %s started' % settings['ADDONVERSION']], xbmc.LOGINFO ) - lw.log( ['debug logging set to %s' % settings['debug']], xbmc.LOGINFO ) +def _startup(lw, settings, dialog): + lw.log(['script version %s started' % + settings['ADDONVERSION']], xbmc.LOGINFO) + lw.log(['debug logging set to %s' % settings['debug']], xbmc.LOGINFO) if not (settings['tvmaze_user'] and settings['tvmaze_apikey']): - dialog.ok( settings['ADDONLANGUAGE']( 32200 ), settings['ADDONLANGUAGE']( 32301 ) ) + dialog.ok(settings['ADDONLANGUAGE'](32200), + settings['ADDONLANGUAGE'](32301)) settings['ADDON'].openSettings() - class busyDialog(): - def __enter__( self ): - xbmc.executebuiltin( 'ActivateWindow(busydialognocancel)' ) - - def __exit__( self, *args ): - xbmc.executebuiltin( 'Dialog.Close(busydialognocancel)' ) + def __enter__(self): + xbmc.executebuiltin('ActivateWindow(busydialognocancel)') + def __exit__(self, *args): + xbmc.executebuiltin('Dialog.Close(busydialognocancel)') class tvmContext: - def __init__( self, action ): + def __init__(self, action): """Allows access to TV Maze from context menu.""" self._init_vars() - _startup( self.LW, self.SETTINGS, self.DIALOG ) - self.LW.log( ['list item label: %s' % sys.listitem.getLabel()] ) - self.LW.log( ['list item path: %s' % sys.listitem.getPath()] ) + _startup(self.LW, self.SETTINGS, self.DIALOG) + self.LW.log(['list item label: %s' % sys.listitem.getLabel()]) + self.LW.log(['list item path: %s' % sys.listitem.getPath()]) if 'follow' in action: - self._manage_show_follow( action ) + self._manage_show_follow(action) elif 'tag' in action: - self._manage_show_tag( action ) + self._manage_show_tag(action) elif 'mark' in action: - self._manage_show_mark( action ) - + self._manage_show_mark(action) - def _init_vars( self ): + def _init_vars(self): self.SETTINGS = loadSettings() - self.LW = Logger( preamble='[TVMI Context]', logdebug=self.SETTINGS['debug'] ) - self.LW.log( ['loaded settings', _logsafe_settings( self.SETTINGS )] ) - self.TVMAZE = tvmaze.API( user=self.SETTINGS['tvmaze_user'], apikey=self.SETTINGS['tvmaze_apikey'] ) + self.LW = Logger(preamble='[TVMI Context]', + logdebug=self.SETTINGS['debug']) + self.LW.log(['loaded settings', _logsafe_settings(self.SETTINGS)]) + self.TVMAZE = tvmaze.API( + user=self.SETTINGS['tvmaze_user'], apikey=self.SETTINGS['tvmaze_apikey']) self.DIALOG = xbmcgui.Dialog() self.KODIMONITOR = xbmc.Monitor() - self.TVMCACHEFILE = os.path.join( self.SETTINGS['ADDONDATAPATH'], 'tvm_followed_cache.json' ) + self.TVMCACHEFILE = os.path.join( + self.SETTINGS['ADDONDATAPATH'], 'tvm_followed_cache.json') - - def _get_details_from_path( self, thepath ): - showid = re.findall( 'tvshowid=(.*)', thepath )[0] - self.LW.log( ['showid is: %s' % showid] ) + def _get_details_from_path(self, thepath): + showid = re.findall('tvshowid=(.*)', thepath)[0] + self.LW.log(['showid is: %s' % showid]) method = 'VideoLibrary.GetTVShowDetails' - params = '{"tvshowid":%s}' % str( showid ) - results = _get_json( method, params, self.LW ) - self.LW.log( ['the show details are:', results] ) - showname = results.get( 'tvshowdetails', {} ).get( 'label', '' ) + params = '{"tvshowid":%s}' % str(showid) + results = _get_json(method, params, self.LW) + self.LW.log(['the show details are:', results]) + showname = results.get('tvshowdetails', {}).get('label', '') method = 'VideoLibrary.GetEpisodeDetails' - epid = re.findall( '\/titles\/[0-9].*[0-9]\/.*\/([0-9].*[0-9])\?season', thepath )[0] - self.LW.log( ['epid is: %s' % epid] ) + epid = re.findall( + '\/titles\/[0-9].*[0-9]\/.*\/([0-9].*[0-9])\?season', thepath)[0] + self.LW.log(['epid is: %s' % epid]) params = '{"episodeid":%s, "properties":["season", "episode"]}' % epid - results = _get_json( method, params, self.LW ) - self.LW.log( ['the episode details are:', results] ) - season = results.get( 'episodedetails', {} ).get( 'season', 0 ) - episode = results.get( 'episodedetails', {} ).get( 'episode', 0 ) - self.LW.log( ['returning showname of %s, season of %s, and episode of %s' % (showname, str( season ), str( episode ))] ) - return {'name':showname, 'season':season, 'episode':episode} - - - def _manage_show_follow( self, action ): + results = _get_json(method, params, self.LW) + self.LW.log(['the episode details are:', results]) + season = results.get('episodedetails', {}).get('season', 0) + episode = results.get('episodedetails', {}).get('episode', 0) + self.LW.log(['returning showname of %s, season of %s, and episode of %s' % ( + showname, str(season), str(episode))]) + return {'name': showname, 'season': season, 'episode': episode} + + def _manage_show_follow(self, action): with busyDialog(): - _manage_followed( sys.listitem.getLabel(), action, self.TVMAZE, self.LW ) + _manage_followed(sys.listitem.getLabel(), + action, self.TVMAZE, self.LW) - - def _manage_show_tag( self, action ): + def _manage_show_tag(self, action): with busyDialog(): - taglist, tagmap = _build_tag_list( self.TVMAZE, self.LW ) - ret = self.DIALOG.select( self.SETTINGS['ADDONLANGUAGE']( 32204 ), taglist ) + taglist, tagmap = _build_tag_list(self.TVMAZE, self.LW) + ret = self.DIALOG.select( + self.SETTINGS['ADDONLANGUAGE'](32204), taglist) if ret == -1: return tagid = tagmap[taglist[ret]] with busyDialog(): - showid = _manage_followed( re.sub( r' \([0-9]{4}\)', '', sys.listitem.getLabel() ), 'follow', self.TVMAZE, self.LW ) + showid = _manage_followed(re.sub( + r' \([0-9]{4}\)', '', sys.listitem.getLabel()), 'follow', self.TVMAZE, self.LW) if action == 'tag': - success, loglines, result = self.TVMAZE.tagShow( showid, tagid ) + success, loglines, result = self.TVMAZE.tagShow(showid, tagid) else: - success, loglines, result = self.TVMAZE.unTagShow( showid, tagid ) - self.LW.log( loglines ) - + success, loglines, result = self.TVMAZE.unTagShow( + showid, tagid) + self.LW.log(loglines) - def _manage_show_mark( self, action ): - show_info = self._get_details_from_path( sys.listitem.getPath() ) + def _manage_show_mark(self, action): + show_info = self._get_details_from_path(sys.listitem.getPath()) if action == 'mark_watched': mark_type = 0 elif action == 'mark_acquired': @@ -235,23 +265,24 @@ def _manage_show_mark( self, action ): else: mark_type = -1 with busyDialog(): - _mark_one( show_info, mark_type, self.SETTINGS['add_followed'], [], self.TVMCACHEFILE, self.TVMAZE, self.LW ) - + _mark_one(show_info, mark_type, self.SETTINGS['add_followed'], [ + ], self.TVMCACHEFILE, self.TVMAZE, self.LW) class tvmManual: - def __init__( self ): + def __init__(self): """Runs some manual functions for following and tagging shows on TV Maze.""" self._init_vars() - _startup( self.LW, self.SETTINGS, self.DIALOG ) - options = [ self.SETTINGS['ADDONLANGUAGE']( 32202 ), - self.SETTINGS['ADDONLANGUAGE']( 32203 ), - self.SETTINGS['ADDONLANGUAGE']( 32205 ), - self.SETTINGS['ADDONLANGUAGE']( 32206 ), - self.SETTINGS['ADDONLANGUAGE']( 32302 ) ] - ret = self.DIALOG.select( self.SETTINGS['ADDONLANGUAGE']( 32201 ), options ) - self.LW.log( ['got back %s from the dialog box' % str( ret )] ) + _startup(self.LW, self.SETTINGS, self.DIALOG) + options = [self.SETTINGS['ADDONLANGUAGE'](32202), + self.SETTINGS['ADDONLANGUAGE'](32203), + self.SETTINGS['ADDONLANGUAGE'](32205), + self.SETTINGS['ADDONLANGUAGE'](32206), + self.SETTINGS['ADDONLANGUAGE'](32302)] + ret = self.DIALOG.select( + self.SETTINGS['ADDONLANGUAGE'](32201), options) + self.LW.log(['got back %s from the dialog box' % str(ret)]) if ret == -1: return if ret == 0: @@ -264,348 +295,369 @@ def __init__( self ): self._option_untag_shows() elif ret == 4: self.SETTINGS['ADDON'].openSettings() - self.LW.log( ['script version %s stopped' % self.SETTINGS['ADDONVERSION']], xbmc.LOGINFO ) - + self.LW.log(['script version %s stopped' % + self.SETTINGS['ADDONVERSION']], xbmc.LOGINFO) - def _init_vars( self ): + def _init_vars(self): self.SETTINGS = loadSettings() - self.LW = Logger( preamble='[TVMI Manual]', logdebug=self.SETTINGS['debug'] ) - self.LW.log( ['loaded settings', _logsafe_settings( self.SETTINGS )] ) - self.TVMAZE = tvmaze.API( user=self.SETTINGS['tvmaze_user'], apikey=self.SETTINGS['tvmaze_apikey'] ) - self.TVMCACHEFILE = os.path.join( self.SETTINGS['ADDONDATAPATH'], 'tvm_followed_cache.json' ) + self.LW = Logger(preamble='[TVMI Manual]', + logdebug=self.SETTINGS['debug']) + self.LW.log(['loaded settings', _logsafe_settings(self.SETTINGS)]) + self.TVMAZE = tvmaze.API( + user=self.SETTINGS['tvmaze_user'], apikey=self.SETTINGS['tvmaze_apikey']) + self.TVMCACHEFILE = os.path.join( + self.SETTINGS['ADDONDATAPATH'], 'tvm_followed_cache.json') self.DIALOG = xbmcgui.Dialog() self.KODIMONITOR = xbmc.Monitor() - - def _option_follow_shows( self ): + def _option_follow_shows(self): showlist = self._build_show_list() - ret = self._select_shows_dialog( self.SETTINGS['ADDONLANGUAGE']( 32202 ), showlist ) + ret = self._select_shows_dialog( + self.SETTINGS['ADDONLANGUAGE'](32202), showlist) if not ret: return else: with busyDialog(): - self._add_shows( ret, showlist ) - + self._add_shows(ret, showlist) - def _option_unfollow_shows( self ): + def _option_unfollow_shows(self): with busyDialog(): followedlist, followedmap = self._build_tvmaze_list() - ret = self._select_shows_dialog( self.SETTINGS['ADDONLANGUAGE']( 32203 ), followedlist ) + ret = self._select_shows_dialog( + self.SETTINGS['ADDONLANGUAGE'](32203), followedlist) if not ret: return else: with busyDialog(): - self._unfollow_shows( ret, followedlist, followedmap ) + self._unfollow_shows(ret, followedlist, followedmap) - - def _option_tag_shows( self ): + def _option_tag_shows(self): with busyDialog(): - taglist, tagmap = _build_tag_list( self.TVMAZE, self.LW ) - ret = self.DIALOG.select( self.SETTINGS['ADDONLANGUAGE']( 32204 ), taglist ) + taglist, tagmap = _build_tag_list(self.TVMAZE, self.LW) + ret = self.DIALOG.select( + self.SETTINGS['ADDONLANGUAGE'](32204), taglist) if ret == -1: return tagid = tagmap[taglist[ret]] showlist = self._build_show_list() - ret = self._select_shows_dialog( self.SETTINGS['ADDONLANGUAGE']( 32205 ), showlist ) + ret = self._select_shows_dialog( + self.SETTINGS['ADDONLANGUAGE'](32205), showlist) if not ret: return else: with busyDialog(): - self._add_shows( ret, showlist, tagid=tagid ) - + self._add_shows(ret, showlist, tagid=tagid) - def _option_untag_shows( self ): + def _option_untag_shows(self): with busyDialog(): - taglist, tagmap = _build_tag_list( self.TVMAZE, self.LW ) - ret = self.DIALOG.select( self.SETTINGS['ADDONLANGUAGE']( 32204 ), taglist ) + taglist, tagmap = _build_tag_list(self.TVMAZE, self.LW) + ret = self.DIALOG.select( + self.SETTINGS['ADDONLANGUAGE'](32204), taglist) if ret == -1: return tagid = tagmap[taglist[ret]] with busyDialog(): - taggedlist, taggedmap = self._build_tvmaze_list( tagid=tagid ) - ret = self._select_shows_dialog( self.SETTINGS['ADDONLANGUAGE']( 32206 ), taggedlist ) + taggedlist, taggedmap = self._build_tvmaze_list(tagid=tagid) + ret = self._select_shows_dialog( + self.SETTINGS['ADDONLANGUAGE'](32206), taggedlist) if not ret: return else: with busyDialog(): - self._unfollow_shows( ret, taggedlist, taggedmap, tagid=tagid ) + self._unfollow_shows(ret, taggedlist, taggedmap, tagid=tagid) return - - def _select_shows_dialog( self, header, options ): - firstitem = self.SETTINGS['ADDONLANGUAGE']( 32303 ) + def _select_shows_dialog(self, header, options): + firstitem = self.SETTINGS['ADDONLANGUAGE'](32303) response = False while not response: - if firstitem == self.SETTINGS['ADDONLANGUAGE']( 32303 ): + if firstitem == self.SETTINGS['ADDONLANGUAGE'](32303): preselect = [] else: preselect = [] - for i in range( 1,len( options ) ): - preselect.append( i ) + for i in range(1, len(options)): + preselect.append(i) options[0] = firstitem - ret = self.DIALOG.multiselect( header, options, preselect=preselect ) - self.LW.log( ['got back a response of:', ret] ) + ret = self.DIALOG.multiselect(header, options, preselect=preselect) + self.LW.log(['got back a response of:', ret]) if not ret: response = True elif ret[0] == 0: - if firstitem == self.SETTINGS['ADDONLANGUAGE']( 32303 ): - firstitem = self.SETTINGS['ADDONLANGUAGE']( 32304 ) + if firstitem == self.SETTINGS['ADDONLANGUAGE'](32303): + firstitem = self.SETTINGS['ADDONLANGUAGE'](32304) else: - firstitem = self.SETTINGS['ADDONLANGUAGE']( 32303 ) + firstitem = self.SETTINGS['ADDONLANGUAGE'](32303) else: response = True return ret - - def _build_show_list( self ): - self.LW.log( ['building show list'] ) + def _build_show_list(self): + self.LW.log(['building show list']) showlist = [''] method = 'VideoLibrary.GetTVShows' params = '{"properties":["title"]}' - items = sorted( _get_json( method, params, self.LW ).get( 'tvshows', [] ), key=lambda x:x['label'] ) + items = sorted(_get_json(method, params, self.LW).get( + 'tvshows', []), key=lambda x: x['label']) for item in items: - showlist.append( item['label'] ) + showlist.append(item['label']) return showlist - - def _build_tvmaze_list( self, tagid = '' ): + def _build_tvmaze_list(self, tagid=''): if tagid: - self.LW.log( ['building tagged list'] ) + self.LW.log(['building tagged list']) else: - self.LW.log( ['building followed list'] ) + self.LW.log(['building followed list']) tvmazelist = [''] tvmazemap = {} if tagid: - success, loglines, results = self.TVMAZE.getTaggedShows( tagid, params={'embed':'show'} ) + success, loglines, results = self.TVMAZE.getTaggedShows( + tagid, params={'embed': 'show'}) else: - results = _update_followed_cache( self.TVMCACHEFILE, self.TVMAZE, self.LW ) + results = _update_followed_cache( + self.TVMCACHEFILE, self.TVMAZE, self.LW) if not results: return [], {} - items = sorted( results, key=lambda x:x['_embedded']['show']['name'] ) + items = sorted(results, key=lambda x: x['_embedded']['show']['name']) for item in items: - tvmazelist.append( item['_embedded']['show']['name'] ) + tvmazelist.append(item['_embedded']['show']['name']) tvmazemap[item['_embedded']['show']['name']] = item['show_id'] return tvmazelist, tvmazemap - - def _add_shows( self, showchoices, showlist, tagid = '' ): + def _add_shows(self, showchoices, showlist, tagid=''): if tagid: - self.LW.log( ['tagging shows'] ) + self.LW.log(['tagging shows']) else: - self.LW.log( ['following shows'] ) + self.LW.log(['following shows']) for showchoice in showchoices: if showchoice == 0: continue - showid = _manage_followed( re.sub( r' \([0-9]{4}\)', '', showlist[showchoice] ), 'follow', self.TVMAZE, self.LW ) + showid = _manage_followed(re.sub( + r' \([0-9]{4}\)', '', showlist[showchoice]), 'follow', self.TVMAZE, self.LW) if showid and tagid: - self.KODIMONITOR.waitForAbort( 0.12 ) - success, loglines, result = self.TVMAZE.tagShow( showid, tagid ) - self.LW.log( loglines ) - self.KODIMONITOR.waitForAbort( 0.12 ) - + self.KODIMONITOR.waitForAbort(0.12) + success, loglines, result = self.TVMAZE.tagShow(showid, tagid) + self.LW.log(loglines) + self.KODIMONITOR.waitForAbort(0.12) - def _unfollow_shows( self, showchoices, showlist, showmap, tagid='' ): + def _unfollow_shows(self, showchoices, showlist, showmap, tagid=''): if tagid: - self.LW.log( 'untagging shows' ) + self.LW.log('untagging shows') else: - self.LW.log( 'unfollowing shows' ) + self.LW.log('unfollowing shows') for showchoice in showchoices: if showchoice == 0: continue if tagid: - success, loglines, result = self.TVMAZE.unTagShow( showmap.get( showlist[showchoice], 0 ), tagid ) + success, loglines, result = self.TVMAZE.unTagShow( + showmap.get(showlist[showchoice], 0), tagid) else: - success, loglines, result = self.TVMAZE.unFollowShow( showmap.get( showlist[showchoice], 0 ) ) - self.LW.log( loglines ) - self.KODIMONITOR.waitForAbort( 0.12 ) - + success, loglines, result = self.TVMAZE.unFollowShow( + showmap.get(showlist[showchoice], 0)) + self.LW.log(loglines) + self.KODIMONITOR.waitForAbort(0.12) -class tvmMonitor( xbmc.Monitor ): +class tvmMonitor(xbmc.Monitor): - def __init__( self ): + def __init__(self): """Starts the background process for automatic marking of played TV shows.""" - xbmc.Monitor.__init__( self ) + xbmc.Monitor.__init__(self) _upgrade() self.WINDOW = xbmcgui.Window(10000) self._init_vars() - self.LW.log( ['background monitor version %s started' % self.SETTINGS['ADDONVERSION']], xbmc.LOGINFO ) - self.LW.log( ['debug logging set to %s' % self.SETTINGS['debug']], xbmc.LOGINFO ) + self.LW.log(['background monitor version %s started' % + self.SETTINGS['ADDONVERSION']], xbmc.LOGINFO) + self.LW.log(['debug logging set to %s' % + self.SETTINGS['debug']], xbmc.LOGINFO) while not self.abortRequested(): - if self.waitForAbort( 10 ): + if self.waitForAbort(10): break if self.PLAYINGEPISODE: try: self.PLAYINGEPISODETIME = self.KODIPLAYER.getTime() except RuntimeError: self.PLAYINGEPISODETIME = self.PLAYINGEPISODETIME - self._set_property('script.tvmi.hidemenu', '' ) - self.LW.log( ['background monitor version %s stopped' % self.SETTINGS['ADDONVERSION']], xbmc.LOGINFO ) + self._set_property('script.tvmi.hidemenu', '') + self.LW.log(['background monitor version %s stopped' % + self.SETTINGS['ADDONVERSION']], xbmc.LOGINFO) - - def onNotification( self, sender, method, data ): + def onNotification(self, sender, method, data): if 'Player.OnPlay' in method: - self.waitForAbort( 1 ) + self.waitForAbort(1) if self.KODIPLAYER.isPlayingVideo(): - data = json.loads( data ) - is_an_episode = data.get( 'item', {} ).get( 'type', '' ) == 'episode' + data = json.loads(data) + is_an_episode = data.get('item', {}).get( + 'type', '') == 'episode' if is_an_episode: - self.LW.log( ['MONITOR METHOD: %s DATA: %s' % (str( method ), str( data ))] ) + self.LW.log(['MONITOR METHOD: %s DATA: %s' % + (str(method), str(data))]) self.PLAYINGEPISODE = True self.PLAYINGEPISODETOTALTIME = self.KODIPLAYER.getTotalTime() - self._get_show_ep_info( 'playing', data ) + self._get_show_ep_info('playing', data) elif 'Player.OnStop' in method and self.PLAYINGEPISODE: if self.PLAYINGEPISODE: self.PLAYINGEPISODE = False - data = json.loads( data ) - self.LW.log( ['MONITOR METHOD: %s DATA: %s' % (str( method ), str( data ))] ) - played_percentage = (self.PLAYINGEPISODETIME / self.PLAYINGEPISODETOTALTIME) * 100 - self.LW.log( ['got played percentage of %s' % str( played_percentage )], xbmc.LOGINFO ) - if played_percentage >= float( self.SETTINGS['percent_watched'] ): - self.LW.log( ['item was played for the minimum percentage in settings, trying to mark'], xbmc.LOGINFO ) - self._mark_episodes( 'playing' ) + data = json.loads(data) + self.LW.log(['MONITOR METHOD: %s DATA: %s' % + (str(method), str(data))]) + played_percentage = ( + self.PLAYINGEPISODETIME / self.PLAYINGEPISODETOTALTIME) * 100 + self.LW.log(['got played percentage of %s' % + str(played_percentage)], xbmc.LOGINFO) + if played_percentage >= float(self.SETTINGS['percent_watched']): + self.LW.log( + ['item was played for the minimum percentage in settings, trying to mark'], xbmc.LOGINFO) + self._mark_episodes('playing') else: - self.LW.log( ['item was not played long enough to be marked, skipping'], xbmc.LOGINFO ) + self.LW.log( + ['item was not played long enough to be marked, skipping'], xbmc.LOGINFO) self._reset_playing() elif 'VideoLibrary.OnScanStarted' in method: - data = json.loads( data ) - self.LW.log( ['MONITOR METHOD: %s DATA: %s' % (str( method ), str( data ))] ) + data = json.loads(data) + self.LW.log(['MONITOR METHOD: %s DATA: %s' % + (str(method), str(data))]) self.SCANSTARTED = True elif 'VideoLibrary.OnUpdate' in method and self.SCANSTARTED: - data = json.loads( data ) - self.LW.log( ['MONITOR METHOD: %s DATA: %s' % (str( method ), str( data ))] ) - self.SCANNEDDATA.append( data ) + data = json.loads(data) + self.LW.log(['MONITOR METHOD: %s DATA: %s' % + (str(method), str(data))]) + self.SCANNEDDATA.append(data) elif 'VideoLibrary.OnScanFinished' in method and self.SCANSTARTED: - data = json.loads( data ) - self.LW.log( ['MONITOR METHOD: %s DATA: %s' % (str( method ), str( data ))] ) + data = json.loads(data) + self.LW.log(['MONITOR METHOD: %s DATA: %s' % + (str(method), str(data))]) for item in self.SCANNEDDATA: - self._get_show_ep_info( 'scanned', item ) + self._get_show_ep_info('scanned', item) if self.abortRequested(): break if self.SETTINGS['mark_on_remove']: - self._update_episode_cache( items=self.SCANNEDITEMS ) - self._mark_episodes( 'scanned' ) + self._update_episode_cache(items=self.SCANNEDITEMS) + self._mark_episodes('scanned') self._reset_scanned() elif 'VideoLibrary.OnRemove' in method and self.SETTINGS['mark_on_remove']: - data = json.loads( data ) - self.LW.log( ['MONITOR METHOD: %s DATA: %s' % (str( method ), str( data ))] ) - self._get_show_ep_info( 'removed', data ) - self._mark_episodes( 'removed' ) + data = json.loads(data) + self.LW.log(['MONITOR METHOD: %s DATA: %s' % + (str(method), str(data))]) + self._get_show_ep_info('removed', data) + self._mark_episodes('removed') self.REMOVEDITEMS = [] - - def onSettingsChanged( self ): + def onSettingsChanged(self): self._init_vars() - - def _init_vars( self ): + def _init_vars(self): self.SETTINGS = loadSettings() - self.LW = Logger( preamble='[TVMI Monitor]', logdebug=self.SETTINGS['debug'] ) - self.LW.log( ['the settings are:', _logsafe_settings( self.SETTINGS )] ) - self._set_property('script.tvmi.hidemenu', str( self.SETTINGS['hidemenu']).lower() ) - self.TVMCACHEFILE = os.path.join( self.SETTINGS['ADDONDATAPATH'], 'tvm_followed_cache.json' ) - self.EPISODECACHE = os.path.join( self.SETTINGS['ADDONDATAPATH'], 'episode_cache.json' ) + self.LW = Logger(preamble='[TVMI Monitor]', + logdebug=self.SETTINGS['debug']) + self.LW.log(['the settings are:', _logsafe_settings(self.SETTINGS)]) + self._set_property('script.tvmi.hidemenu', str( + self.SETTINGS['hidemenu']).lower()) + self.TVMCACHEFILE = os.path.join( + self.SETTINGS['ADDONDATAPATH'], 'tvm_followed_cache.json') + self.EPISODECACHE = os.path.join( + self.SETTINGS['ADDONDATAPATH'], 'episode_cache.json') self.KODIPLAYER = xbmc.Player() - self.TVMAZE = tvmaze.API( user=self.SETTINGS['tvmaze_user'], apikey=self.SETTINGS['tvmaze_apikey'] ) - self.TVMCACHE = _update_followed_cache( self.TVMCACHEFILE, self.TVMAZE, self.LW ) + self.TVMAZE = tvmaze.API( + user=self.SETTINGS['tvmaze_user'], apikey=self.SETTINGS['tvmaze_apikey']) + self.TVMCACHE = _update_followed_cache( + self.TVMCACHEFILE, self.TVMAZE, self.LW) self.REMOVEDITEMS = [] self._reset_playing() self._reset_scanned() - self.LW.log( ['initialized variables'] ) - + self.LW.log(['initialized variables']) - def _reset_playing( self ): + def _reset_playing(self): self.PLAYINGEPISODE = False self.PLAYINGITEMS = [] self.PLAYINGEPISODETIME = 0 self.PLAYINGEPISODETOTALTIME = 0 - - def _reset_scanned( self ): + def _reset_scanned(self): self.SCANSTARTED = False self.SCANNEDITEMS = [] self.SCANNEDDATA = [] - - def _get_show_ep_info( self, thetype, data ): + def _get_show_ep_info(self, thetype, data): showid = 0 epid = 0 showname = '' - if data.get( 'item', {} ).get( 'type', '' ) == 'episode': - epid = data['item'].get( 'id', 0 ) + if data.get('item', {}).get('type', '') == 'episode': + epid = data['item'].get('id', 0) if epid: method = 'VideoLibrary.GetEpisodeDetails' - params = '{"episodeid":%s, "properties":["season", "episode", "tvshowid"]}' % str( epid ) - r_dict = _get_json( method, params, self.LW ) - season = r_dict.get( 'episodedetails', {} ).get( 'season', 0 ) - episode = r_dict.get( 'episodedetails', {} ).get( 'episode', 0 ) - showid = r_dict.get( 'episodedetails', {} ).get( 'tvshowid', 0 ) - self.LW.log( ['moving on with season of %s, episode of %s, and showid of %s' % (str(season), str(episode), str(showid))] ) + params = '{"episodeid":%s, "properties":["season", "episode", "tvshowid"]}' % str( + epid) + r_dict = _get_json(method, params, self.LW) + season = r_dict.get('episodedetails', {}).get('season', 0) + episode = r_dict.get('episodedetails', {}).get('episode', 0) + showid = r_dict.get('episodedetails', {}).get('tvshowid', 0) + self.LW.log(['moving on with season of %s, episode of %s, and showid of %s' % ( + str(season), str(episode), str(showid))]) if showid: method = 'VideoLibrary.GetTVShowDetails' - params = '{"tvshowid":%s}' % str( showid ) - r_dict = _get_json( method, params, self.LW ) - showname = r_dict.get( 'tvshowdetails', {} ).get( 'label', '' ) - self.LW.log( ['moving on with TV show name of %s' % showname] ) + params = '{"tvshowid":%s}' % str(showid) + r_dict = _get_json(method, params, self.LW) + showname = r_dict.get('tvshowdetails', {}).get('label', '') + self.LW.log(['moving on with TV show name of %s' % showname]) elif thetype == 'removed': - epid = data.get( 'id', 0 ) - loglines, episode_cache = readFile( self.EPISODECACHE ) - self.LW.log( loglines ) + epid = data.get('id', 0) + loglines, episode_cache = readFile(self.EPISODECACHE) + self.LW.log(loglines) if episode_cache: - self.LW.log( ['checking in cache for epid of %s' % str( epid )] ) - ep_info = json.loads( episode_cache ).get( str( epid ), {} ) + self.LW.log(['checking in cache for epid of %s' % str(epid)]) + ep_info = json.loads(episode_cache).get(str(epid), {}) else: ep_info = {} - showname = ep_info.get( 'name', '' ) - season = ep_info.get( 'season', 0 ) - episode = ep_info.get( 'episode', 0 ) + showname = ep_info.get('name', '') + season = ep_info.get('season', 0) + episode = ep_info.get('episode', 0) if showname and season and episode: - item = {'epid': epid, 'name':showname, 'season':season, 'episode':episode} + item = {'epid': epid, 'name': showname, + 'season': season, 'episode': episode} else: item = {} if item: - self.LW.log( ['storing item data of:', item] ) + self.LW.log(['storing item data of:', item]) if thetype == 'scanned': - self.SCANNEDITEMS.append( item ) + self.SCANNEDITEMS.append(item) elif thetype == 'playing': - self.PLAYINGITEMS.append( item ) + self.PLAYINGITEMS.append(item) elif thetype == 'removed': - self.REMOVEDITEMS.append( item ) - self._update_episode_cache( epid=epid ) - + self.REMOVEDITEMS.append(item) + self._update_episode_cache(epid=epid) - def _set_property( self, property_name, value='' ): + def _set_property(self, property_name, value=''): try: - self.WINDOW.setProperty( property_name, value ) - self.LW.log( ['%s set to %s' % (property_name, value)] ) + self.WINDOW.setProperty(property_name, value) + self.LW.log(['%s set to %s' % (property_name, value)]) except Exception as e: - self.LW.log( ['Exception: Could not set property %s to value %s' % (property_name, value), e]) + self.LW.log(['Exception: Could not set property %s to value %s' % ( + property_name, value), e]) - - def _update_episode_cache( self, epid=None, item=None, items=None ): - loglines, episode_cache = readFile( self.EPISODECACHE ) - self.LW.log( loglines ) + def _update_episode_cache(self, epid=None, item=None, items=None): + loglines, episode_cache = readFile(self.EPISODECACHE) + self.LW.log(loglines) cache_changed = True if episode_cache: - epcache_json = json.loads( episode_cache ) + epcache_json = json.loads(episode_cache) else: epcache_json = {} if epid: try: - del epcache_json[str( epid )] + del epcache_json[str(epid)] except KeyError: cache_changed = False elif item: - epcache_json[str( item['epid'] )] = item + epcache_json[str(item['epid'])] = item elif items: for item in items: - epcache_json[str( item['epid'] )] = item + epcache_json[str(item['epid'])] = item if cache_changed: - success, loglines = writeFile( json.dumps( epcache_json ), self.EPISODECACHE, 'w' ) - self.LW.log( loglines ) - + success, loglines = writeFile(json.dumps( + epcache_json), self.EPISODECACHE, 'w') + self.LW.log(loglines) - def _mark_episodes( self, thetype ): + def _mark_episodes(self, thetype): items = [] if thetype == 'playing': mark_type = 0 @@ -618,9 +670,8 @@ def _mark_episodes( self, thetype ): items = self.REMOVEDITEMS for item in items: if self.SETTINGS['mark_on_remove'] and not thetype == 'scanned': - self._update_episode_cache( epid=item.get( 'epid', 0 ) ) - self.TVMCACHE = _mark_one( item, mark_type, self.SETTINGS['add_followed'], self.TVMCACHE, self.TVMCACHEFILE, self.TVMAZE, self.LW ) + self._update_episode_cache(epid=item.get('epid', 0)) + self.TVMCACHE = _mark_one( + item, mark_type, self.SETTINGS['add_followed'], self.TVMCACHE, self.TVMCACHEFILE, self.TVMAZE, self.LW) if self.abortRequested(): break - - diff --git a/script.tvmaze.integration/resources/lib/tvmisettings.py b/script.tvmaze.integration/resources/lib/tvmisettings.py index ba7d56baf..7b5e81529 100644 --- a/script.tvmaze.integration/resources/lib/tvmisettings.py +++ b/script.tvmaze.integration/resources/lib/tvmisettings.py @@ -1,18 +1,18 @@ from resources.lib.kodisettings import * -SETTINGSLIST = [ {'name': 'version_upgrade', 'default':''}, - {'name': 'show_cache', 'default': ''}, - {'name': 'tvmaze_user', 'default': ''}, - {'name': 'tvmaze_apikey', 'default': ''}, - {'name': 'add_followed', 'default': False}, - {'name': 'mark_acquired', 'default': True}, - {'name': 'mark_watched', 'default': True}, - {'name': 'mark_on_remove', 'default': True}, - {'name': 'percent_watched', 'default': 85}, - {'name': 'hidemenu', 'default': False}, - {'name': 'debug', 'default': False} - ] +SETTINGSLIST = [{'name': 'version_upgrade', 'default': ''}, + {'name': 'show_cache', 'default': ''}, + {'name': 'tvmaze_user', 'default': ''}, + {'name': 'tvmaze_apikey', 'default': ''}, + {'name': 'add_followed', 'default': False}, + {'name': 'mark_acquired', 'default': True}, + {'name': 'mark_watched', 'default': True}, + {'name': 'mark_on_remove', 'default': True}, + {'name': 'percent_watched', 'default': 85}, + {'name': 'hidemenu', 'default': False}, + {'name': 'debug', 'default': False} + ] def loadSettings(): @@ -26,13 +26,13 @@ def loadSettings(): settings['ADDONICON'] = ADDONICON settings['ADDONLANGUAGE'] = ADDONLANGUAGE for item in SETTINGSLIST: - if isinstance( item['default'], bool ): + if isinstance(item['default'], bool): getset = getSettingBool - elif isinstance( item['default'], int ): + elif isinstance(item['default'], int): getset = getSettingInt - elif isinstance( item['default'], float ): + elif isinstance(item['default'], float): getset = getSettingNumber else: getset = getSettingString - settings[item['name']] = getset( item['name'], item['default'] ) + settings[item['name']] = getset(item['name'], item['default']) return settings diff --git a/script.tvmaze.integration/resources/lib/xlogger.py b/script.tvmaze.integration/resources/lib/xlogger.py index 46aef4173..6e21ced8e 100644 --- a/script.tvmaze.integration/resources/lib/xlogger.py +++ b/script.tvmaze.integration/resources/lib/xlogger.py @@ -1,36 +1,41 @@ -#v.0.4.14 +# v.0.4.14 try: - from kodi_six import xbmc + import xbmc LOGTYPE = 'xbmc' except ImportError: - import os, logging, logging.handlers + import os + import logging + import logging.handlers LOGTYPE = 'file' -#this class creates an object used to log stuff to the xbmc log file -class Logger( object ): - def __init__( self, logconfig="timed", logformat='%(asctime)-15s %(levelname)-8s %(message)s', logfile='logfile.log', - logname='_logger', numbackups=5, logdebug=False, maxsize=100000, when='midnight', preamble='' ): +# this class creates an object used to log stuff to the xbmc log file + + +class Logger(object): + def __init__(self, logconfig="timed", logformat='%(asctime)-15s %(levelname)-8s %(message)s', logfile='logfile.log', + logname='_logger', numbackups=5, logdebug=False, maxsize=100000, when='midnight', preamble=''): """Logs interactions.""" self.LOGPREAMBLE = preamble self.LOGDEBUG = logdebug if LOGTYPE == 'file': - checkdir = os.sep.join( logfile.split(os.sep)[:-1] ) + checkdir = os.sep.join(logfile.split(os.sep)[:-1]) if not checkdir == 'logfile.log': - if not os.path.exists( checkdir ): - os.makedirs( checkdir ) - self.logger = logging.getLogger( logname ) - self.logger.setLevel( logging.DEBUG ) + if not os.path.exists(checkdir): + os.makedirs(checkdir) + self.logger = logging.getLogger(logname) + self.logger.setLevel(logging.DEBUG) if logconfig == 'timed': - lr = logging.handlers.TimedRotatingFileHandler( logfile, when=when, backupCount=numbackups, encoding='utf-8') + lr = logging.handlers.TimedRotatingFileHandler( + logfile, when=when, backupCount=numbackups, encoding='utf-8') else: - lr = logging.handlers.RotatingFileHandler( logfile, maxBytes=maxsize, backupCount=numbackups, encoding='utf-8' ) - lr.setLevel( logging.DEBUG ) - lr.setFormatter( logging.Formatter( logformat ) ) - self.logger.addHandler( lr ) - + lr = logging.handlers.RotatingFileHandler( + logfile, maxBytes=maxsize, backupCount=numbackups, encoding='utf-8') + lr.setLevel(logging.DEBUG) + lr.setFormatter(logging.Formatter(logformat)) + self.logger.addHandler(lr) - def log( self, loglines, loglevel='' ): + def log(self, loglines, loglevel=''): if LOGTYPE == 'xbmc' and not loglevel: loglevel = xbmc.LOGDEBUG elif LOGTYPE == 'file': @@ -49,32 +54,32 @@ def log( self, loglines, loglevel='' ): str_line = line.__str__() except Exception as e: str_line = '' - self._output( 'error parsing logline', loglevel ) - self._output( e, loglevel ) + self._output('error parsing logline', loglevel) + self._output(e, loglevel) if str_line: - self._output( str_line, loglevel ) + self._output(str_line, loglevel) - - def _output( self, line, loglevel ): + def _output(self, line, loglevel): if LOGTYPE == 'file': - self._output_file( line, loglevel ) + self._output_file(line, loglevel) else: - self._output_xbmc( line, loglevel ) - + self._output_xbmc(line, loglevel) - def _output_file( self, line, loglevel ): + def _output_file(self, line, loglevel): if self.LOGDEBUG or loglevel != self.logger.debug: try: - loglevel( '%s %s' % (self.LOGPREAMBLE, line ) ) + loglevel('%s %s' % (self.LOGPREAMBLE, line)) except Exception as e: - self.logger.debug( '%s unable to output logline' % self.LOGPREAMBLE ) - self.logger.debug( '%s %s' % (self.LOGPREAMBLE, e.__str__()) ) - + self.logger.debug('%s unable to output logline' % + self.LOGPREAMBLE) + self.logger.debug('%s %s' % (self.LOGPREAMBLE, e.__str__())) - def _output_xbmc( self, line, loglevel ): + def _output_xbmc(self, line, loglevel): if self.LOGDEBUG or loglevel != xbmc.LOGDEBUG: try: - xbmc.log( '%s %s' % (self.LOGPREAMBLE, line.__str__()), loglevel) + xbmc.log('%s %s' % + (self.LOGPREAMBLE, line.__str__()), loglevel) except Exception as e: - xbmc.log( '%s unable to output logline' % self.LOGPREAMBLE, loglevel) - xbmc.log ('%s %s' % (self.LOGPREAMBLE, e.__str__()), loglevel) + xbmc.log('%s unable to output logline' % + self.LOGPREAMBLE, loglevel) + xbmc.log('%s %s' % (self.LOGPREAMBLE, e.__str__()), loglevel) diff --git a/service.iptv.manager/addon.xml b/service.iptv.manager/addon.xml index 7d3a0d2b3..9270679f9 100644 --- a/service.iptv.manager/addon.xml +++ b/service.iptv.manager/addon.xml @@ -1,5 +1,5 @@ - + diff --git a/service.subtitles.opensubtitles-com/README.md b/service.subtitles.opensubtitles-com/README.md index 6cd07e1fd..6bb34e348 100644 --- a/service.subtitles.opensubtitles-com/README.md +++ b/service.subtitles.opensubtitles-com/README.md @@ -4,6 +4,12 @@ Search and download subtitles for movies and TV-Series from OpenSubtitles.com. S REST API implementation based on tomburke25 [python-opensubtitles-rest-api](https://github.com/tomburke25/python-opensubtitles-rest-api) +v1.0.4 (2024-01-15) +- Sanitize language query +- Improved sorting +- Improved error messages +- Improved usage of moviehash + v1.0.3 (2023-12-18) - Fixed issue with file path diff --git a/service.subtitles.opensubtitles-com/addon.xml b/service.subtitles.opensubtitles-com/addon.xml index 6d112956a..c1fefe298 100644 --- a/service.subtitles.opensubtitles-com/addon.xml +++ b/service.subtitles.opensubtitles-com/addon.xml @@ -1,7 +1,7 @@ @@ -52,6 +52,12 @@ 多语种的电影及剧集字幕,每日更新千余条翻译好的字幕。免费下载,提供API接口,已拥有上百万的用户。 Users need to provide OpenSubtitles.com username and password in add-on configuration. This is our new extension, old opensubtitles.org will not work on this, but the account can be easily imported on opensubtitles.com. +v1.0.4 (2024-01-15) +- Sanitize language query +- Improved sorting +- Improved error messages +- Improved usage of moviehash + v1.0.3 (2023-12-18) - Fixed issue with file path diff --git a/service.subtitles.opensubtitles-com/changelog.txt b/service.subtitles.opensubtitles-com/changelog.txt index edd14eb61..6d2aaf77a 100644 --- a/service.subtitles.opensubtitles-com/changelog.txt +++ b/service.subtitles.opensubtitles-com/changelog.txt @@ -1,3 +1,9 @@ +v1.0.4 (2024-01-17) +- Sanitize language query +- Improved sorting +- Improved error messages +- Improved usage of moviehash + v1.0.3 (2023-12-18) - Fixed issue with file path diff --git a/service.subtitles.opensubtitles-com/resources/language/resource.language.en_GB/strings.po b/service.subtitles.opensubtitles-com/resources/language/resource.language.en_GB/strings.po index 87eab7aa4..9b45099fb 100644 --- a/service.subtitles.opensubtitles-com/resources/language/resource.language.en_GB/strings.po +++ b/service.subtitles.opensubtitles-com/resources/language/resource.language.en_GB/strings.po @@ -21,7 +21,7 @@ msgid "Plugin is not properly configured, insert valid OpenSubtitles.com usernam msgstr "" msgctxt "#32003" -msgid "Unable to authenticate. Check your OpenSubtitles.com username, password." +msgid "Unable to authenticate. Check your OpenSubtitles.com username and password." msgstr "" msgctxt "#32004" @@ -63,3 +63,7 @@ msgstr "" msgctxt "#32213" msgid "Machine Translated" msgstr "" + +msgctxt "#32214" +msgid "Bad username. Make sure you have entered your username and not your email in the username field." +msgstr "" \ No newline at end of file diff --git a/service.subtitles.opensubtitles-com/resources/language/resource.language.fr_FR/strings.po b/service.subtitles.opensubtitles-com/resources/language/resource.language.fr_FR/strings.po index 33132b79e..e466ef61c 100644 --- a/service.subtitles.opensubtitles-com/resources/language/resource.language.fr_FR/strings.po +++ b/service.subtitles.opensubtitles-com/resources/language/resource.language.fr_FR/strings.po @@ -62,3 +62,7 @@ msgstr "Pièces étrangères uniquement" msgctxt "#32213" msgid "Machine Translated" msgstr "Traduction automatique" + +msgctxt "#32214" +msgid "Bad username. Make sure you have entered your username and not your email in the username field" +msgstr "Mauvais nom d'utilisateur. Assurez-vous d'avoir saisi votre nom d'utilisateur et non votre adresse email dans le champ du nom d'utilisateur." \ No newline at end of file diff --git a/service.subtitles.opensubtitles-com/resources/language/resource.language.hu_HU/strings.po b/service.subtitles.opensubtitles-com/resources/language/resource.language.hu_HU/strings.po index 1e7783b28..ff968930b 100644 --- a/service.subtitles.opensubtitles-com/resources/language/resource.language.hu_HU/strings.po +++ b/service.subtitles.opensubtitles-com/resources/language/resource.language.hu_HU/strings.po @@ -63,3 +63,7 @@ msgstr "Csak külföldi" msgctxt "#32213" msgid "Machine Translated" msgstr "Gépi fordítás" + +msgctxt "#32214" +msgid "Bad username. Make sure you have entered your username and not your email in the username field" +msgstr "Rossz felhasználónév. Győződjön meg róla, hogy a felhasználónév mezőbe a felhasználónevét írta be, nem pedig az e-mail címét." diff --git a/service.subtitles.opensubtitles-com/resources/language/resource.language.sv_SE/strings.po b/service.subtitles.opensubtitles-com/resources/language/resource.language.sv_SE/strings.po index 3c14cc5ae..748ef7d1f 100644 --- a/service.subtitles.opensubtitles-com/resources/language/resource.language.sv_SE/strings.po +++ b/service.subtitles.opensubtitles-com/resources/language/resource.language.sv_SE/strings.po @@ -63,3 +63,7 @@ msgstr "Endast delar med främmande språk" msgctxt "#32213" msgid "Machine Translated" msgstr "Maskinöversatt" + +msgctxt "#32214" +msgid "Bad username. Make sure you have entered your username and not your email in the username field" +msgstr "Felaktigt användarnamn. Kontrollera att du har angett ditt användarnamn och inte din e-postadress i fältet för användarnamn." diff --git a/service.subtitles.opensubtitles-com/resources/language/resource.language.zh_CN/strings.po b/service.subtitles.opensubtitles-com/resources/language/resource.language.zh_CN/strings.po index c29f377ce..13a57be59 100644 --- a/service.subtitles.opensubtitles-com/resources/language/resource.language.zh_CN/strings.po +++ b/service.subtitles.opensubtitles-com/resources/language/resource.language.zh_CN/strings.po @@ -6,8 +6,20 @@ msgid "Error searching for subtitles" msgstr "字幕搜索出错" msgctxt "#32002" -msgid "Your OpenSubtitles.com username, password or API key is empty or not valid" -msgstr "" +msgid "Plugin is not properly configured, insert valid OpenSubtitles.com username and password." +msgstr "插件配置不正确,请输入有效的 OpenSubtitles.com 用户名和密码。" + +msgctxt "#32003" +msgid "Unable to authenticate. Check your OpenSubtitles.com username and password." +msgstr "无法验证。请检查您的 OpenSubtitles.com 用户名和密码。" + +msgctxt "#32004" +msgid "You have reached OpenSubtitles.com download limit. Get a VIP subscription or try again tomorrow." +msgstr "您已达到 OpenSubtitles.com 的下载上限。获取 VIP 订阅或明天再试。" + +msgctxt "#32006" +msgid "You have reached OpenSubtitles.com download limit for unauthenticated users. Create an account on opensubtitles.com and enter your credentials in addon settings, or try again tomorrow." +msgstr "您已达到 OpenSubtitles.com 未认证用户的下载上限。请在 opensubtitles.com 上创建一个账户并在插件设置中输入您的凭据,或明天再试。" msgctxt "#32101" msgid "Login Details" @@ -27,16 +39,21 @@ msgstr "" msgctxt "#32102" msgid "Subtitle Options" -msgstr "" +msgstr "字幕选项" msgctxt "#32211" msgid "Hearing Impaired" -msgstr "" +msgstr "听障人士" msgctxt "#32212" msgid "Foreign Parts Only" -msgstr "" +msgstr "仅限外国零件" msgctxt "#32213" msgid "Machine Translated" -msgstr "" +msgstr 机器翻译" + +msgctxt "#32214" +msgid "Bad username. Make sure you have entered your username and not your email in the username field" +msgstr "用户名错误。请确保在用户名栏中输入的是用户名而不是电子邮件." + diff --git a/service.subtitles.opensubtitles-com/resources/lib/data_collector.py b/service.subtitles.opensubtitles-com/resources/lib/data_collector.py index 741086640..405377f79 100644 --- a/service.subtitles.opensubtitles-com/resources/lib/data_collector.py +++ b/service.subtitles.opensubtitles-com/resources/lib/data_collector.py @@ -24,7 +24,8 @@ def get_media_data(): # "original_title": normalize_string(xbmc.getInfoLabel("VideoPlayer.OriginalTitle")), # "imdb_id": xbmc.getInfoLabel("VideoPlayer.IMDBNumber")} - item = {"year": xbmc.getInfoLabel("VideoPlayer.Year"), + item = {"query": None, + "year": xbmc.getInfoLabel("VideoPlayer.Year"), "season_number": str(xbmc.getInfoLabel("VideoPlayer.Season")), "episode_number": str(xbmc.getInfoLabel("VideoPlayer.Episode")), "tv_show_title": normalize_string(xbmc.getInfoLabel("VideoPlayer.TVshowtitle")), @@ -33,7 +34,6 @@ def get_media_data(): - if item["tv_show_title"]: item["query"] = item["tv_show_title"] item["year"] = None # Kodi gives episode year, OS searches by series year. Without year safer. @@ -43,10 +43,10 @@ def get_media_data(): elif item["original_title"]: item["query"] = item["original_title"] - # if not item["query"]: - # log(__name__, "VideoPlayer.OriginalTitle not found") - # item["query"] = normalize_string(xbmc.getInfoLabel("VideoPlayer.Title")) # no original title, get just Title - # # TODO try guessit if no proper title here + + if not item["query"]: + log(__name__, "query still blank, fallback to title") + item["query"] = normalize_string(xbmc.getInfoLabel("VideoPlayer.Title")) # no original title, get just Title # TODO get episodes like that and test them properly out if item["episode_number"].lower().find("s") > -1: # Check if season is "Special" @@ -65,33 +65,33 @@ def get_language_data(params): - if preferred_language and preferred_language not in search_languages and preferred_language != "Unknown" and preferred_language != "Undetermined": + if preferred_language and preferred_language not in search_languages and preferred_language != "Unknown" and preferred_language != "Undetermined": search_languages.append(preferred_language) search_languages_str=search_languages_str+","+preferred_language """ should implement properly as fallback, not additional language, leave it for now """ - + #if fallback_language and fallback_language not in search_languages: # search_languages_str=search_languages_str+","+fallback_language #search_languages_str=fallback_language - + for language in search_languages: lang = convert_language(language) if lang: log(__name__, f"Language found: '{lang}' search_languages_str:'{search_languages_str}") if search_languages_str=="": - search_languages_str=lang + search_languages_str=lang else: search_languages_str=search_languages_str+","+lang #item["languages"].append(lang) #if search_languages_str=="": - # search_languages_str=lang + # search_languages_str=lang # if lang=="Undetermined": # search_languages_str=search_languages_str - #else: - + #else: + else: log(__name__, f"Language code not found: '{language}'") @@ -103,7 +103,7 @@ def get_language_data(params): - + item = { "hearing_impaired": __addon__.getSetting("hearing_impaired"), "foreign_parts_only": __addon__.getSetting("foreign_parts_only"), @@ -118,7 +118,7 @@ def get_language_data(params): # item["languages"]=item["languages"]+","+lang # else: # log(__name__, f"Language code not found: '{language}'") - + return item diff --git a/service.subtitles.opensubtitles-com/resources/lib/exceptions.py b/service.subtitles.opensubtitles-com/resources/lib/exceptions.py index 6e1f46426..4c9b37e05 100644 --- a/service.subtitles.opensubtitles-com/resources/lib/exceptions.py +++ b/service.subtitles.opensubtitles-com/resources/lib/exceptions.py @@ -27,3 +27,8 @@ class DownloadLimitExceeded(ProviderError): class TooManyRequests(ProviderError): """Exception raised by providers when too many requests are made.""" pass + + +class BadUsernameError(ProviderError): + """Exception raised by providers when user entered the email instead of the username in the username field.""" + pass \ No newline at end of file diff --git a/service.subtitles.opensubtitles-com/resources/lib/file_operations.py b/service.subtitles.opensubtitles-com/resources/lib/file_operations.py index ec82f497d..e23409c18 100644 --- a/service.subtitles.opensubtitles-com/resources/lib/file_operations.py +++ b/service.subtitles.opensubtitles-com/resources/lib/file_operations.py @@ -14,12 +14,17 @@ def get_file_data(file_original_path): if file_original_path.find("http") > -1: orig_path = xbmc.getInfoLabel('Window(10000).Property(videoinfo.current_path)') orig_size = xbmc.getInfoLabel('Window(10000).Property(videoinfo.current_size)') + orig_oshash = xbmc.getInfoLabel('Window(10000).Property(videoinfo.current_oshash)') if orig_path: orig_path = str(orig_path) item["basename"] = os.path.basename(orig_path) item["file_original_path"] = orig_path if orig_size: item["file_size"] = int(orig_size) + if orig_oshash: + item["moviehash"] = orig_oshash + + if any((orig_path, orig_size, orig_oshash)): return item item["temp"] = True diff --git a/service.subtitles.opensubtitles-com/resources/lib/os/provider.py b/service.subtitles.opensubtitles-com/resources/lib/os/provider.py index f0aec3a4f..06530fdad 100644 --- a/service.subtitles.opensubtitles-com/resources/lib/os/provider.py +++ b/service.subtitles.opensubtitles-com/resources/lib/os/provider.py @@ -8,7 +8,7 @@ '''local kodi module imports. replace by any other exception, cache, log provider''' from resources.lib.exceptions import AuthenticationError, ConfigurationError, DownloadLimitExceeded, ProviderError, \ - ServiceUnavailable, TooManyRequests + ServiceUnavailable, TooManyRequests, BadUsernameError from resources.lib.cache import Cache from resources.lib.utilities import log @@ -69,9 +69,12 @@ def __init__(self, api_key, username, password): self.username = username self.password = password - self.request_headers = {"Api-Key": self.api_key, "User-Agent": "Opensubtitles.com Kodi plugin v1.0.3" ,"Content-Type": CONTENT_TYPE, "Accept": CONTENT_TYPE} + if not self.username or not self.password: + logging(f"Username: {self.username}, Password: {self.password}") + self.request_headers = {"Api-Key": self.api_key, "User-Agent": "Opensubtitles.com Kodi plugin v1.0.4" ,"Content-Type": CONTENT_TYPE, "Accept": CONTENT_TYPE} + self.session = Session() self.session.headers = self.request_headers @@ -95,6 +98,8 @@ def login(self): status_code = e.response.status_code if status_code == 401: raise AuthenticationError(f"Login failed: {e}") + elif status_code == 400: + raise BadUsernameError(f"Login failed: {e}") elif status_code == 429: raise TooManyRequests() elif status_code == 503: @@ -154,24 +159,42 @@ def search_subtitles(self, query: Union[dict, OpenSubtitlesSubtitlesRequest]): return None +# def download_subtitle(self, query: Union[dict, OpenSubtitlesDownloadRequest]): +# if self.user_token is None: +# logging("No cached token, we'll try to login again.") +# try: +# self.login() +# except AuthenticationError as e: +# logging("Unable to authenticate.") +# raise AuthenticationError("Unable to authenticate.") +# except (ServiceUnavailable, TooManyRequests, ProviderError, ValueError) as e: +# logging("Unable to obtain an authentication token.") +# raise ProviderError(f"Unable to obtain an authentication token: {e}") +# if self.user_token == "": +# logging("Unable to obtain an authentication token.") +# #raise ProviderError("Unable to obtain an authentication token") + def download_subtitle(self, query: Union[dict, OpenSubtitlesDownloadRequest]): - if self.user_token is None: + if self.user_token is None and self.username and self.password: logging("No cached token, we'll try to login again.") try: self.login() except AuthenticationError as e: logging("Unable to authenticate.") - # raise AuthenticationError("Unable to authenticate.") - #except (ServiceUnavailable, TooManyRequests, ProviderError, ValueError) as e: - # logging("Unable to obtain an authentication token.") - # raise ProviderError(f"Unable to obtain an authentication token: {e}") + raise AuthenticationError("Unable to authenticate.") + except BadUsernameError as e: + logging("Bad username, email instead of useername.") + raise BadUsernameError("Bad username. Email instead of username. ") + except (ServiceUnavailable, TooManyRequests, ProviderError, ValueError) as e: + logging("Unable to obtain an authentication token.") + raise ProviderError(f"Unable to obtain an authentication token: {e}") + elif self.user_token is None: + logging("No cached token, but username or password is missing. Proceeding with free downloads.") if self.user_token == "": logging("Unable to obtain an authentication token.") - #raise ProviderError("Unable to obtain an authentication token") - + #raise ProviderError("Unable to obtain an authentication token") - - logging(f"user token is {self.user_token}") + logging(f"user token is {self.user_token}") params = query_to_params(query, "OpenSubtitlesDownloadRequest") @@ -217,5 +240,4 @@ def download_subtitle(self, query: Union[dict, OpenSubtitlesDownloadRequest]): if not subtitle["content"]: logging(f"Could not download subtitle from {subtitle.download_link}") - return subtitle \ No newline at end of file diff --git a/service.subtitles.opensubtitles-com/resources/lib/subtitle_downloader.py b/service.subtitles.opensubtitles-com/resources/lib/subtitle_downloader.py index 6ce95e95d..45202f173 100644 --- a/service.subtitles.opensubtitles-com/resources/lib/subtitle_downloader.py +++ b/service.subtitles.opensubtitles-com/resources/lib/subtitle_downloader.py @@ -12,7 +12,7 @@ from resources.lib.data_collector import get_language_data, get_media_data, get_file_path, convert_language, \ clean_feature_release_name, get_flag from resources.lib.exceptions import AuthenticationError, ConfigurationError, DownloadLimitExceeded, ProviderError, \ - ServiceUnavailable, TooManyRequests + ServiceUnavailable, TooManyRequests, BadUsernameError from resources.lib.file_operations import get_file_data from resources.lib.os.provider import OpenSubtitlesProvider from resources.lib.utilities import get_params, log, error @@ -100,6 +100,9 @@ def download(self): except AuthenticationError as e: error(__name__, 32003, e) valid = 0 + except BadUsernameError as e: + error(__name__, 32214, e) + valid = 0 except DownloadLimitExceeded as e: log(__name__, f"XYXYXX limit excedded, username: {self.username} {e}") if self.username=="": @@ -132,21 +135,26 @@ def download(self): def list_subtitles(self): """TODO rewrite using new data. do not forget Series/Episodes""" - for subtitle in self.subtitles: - attributes = subtitle["attributes"] - language = convert_language(attributes["language"], True) - log(__name__, attributes) - clean_name = clean_feature_release_name(attributes["feature_details"]["title"], attributes["release"], - attributes["feature_details"]["movie_name"]) - list_item = xbmcgui.ListItem(label=language, - label2=clean_name) - list_item.setArt({ - "icon": str(int(round(float(attributes["ratings"]) / 2))), - "thumb": get_flag(attributes["language"])}) - list_item.setProperty("sync", "true" if ("moviehash_match" in attributes and attributes["moviehash_match"]) else "false") - list_item.setProperty("hearing_imp", "true" if attributes["hearing_impaired"] else "false") - """TODO take care of multiple cds id&id or something""" - url = f"plugin://{__scriptid__}/?action=download&id={attributes['files'][0]['file_id']}" - - xbmcplugin.addDirectoryItem(handle=self.handle, url=url, listitem=list_item, isFolder=False) + if self.subtitles: + for subtitle in reversed(sorted(self.subtitles, key=lambda x: ( + bool(x["attributes"].get("from_trusted", False)), + x["attributes"].get("votes", 0) or 0, + x["attributes"].get("ratings", 0) or 0, + x["attributes"].get("download_count", 0) or 0))): + attributes = subtitle["attributes"] + language = convert_language(attributes["language"], True) + log(__name__, attributes) + clean_name = clean_feature_release_name(attributes["feature_details"]["title"], attributes["release"], + attributes["feature_details"]["movie_name"]) + list_item = xbmcgui.ListItem(label=language, + label2=clean_name) + list_item.setArt({ + "icon": str(int(round(float(attributes["ratings"]) / 2))), + "thumb": get_flag(attributes["language"])}) + list_item.setProperty("sync", "true" if ("moviehash_match" in attributes and attributes["moviehash_match"]) else "false") + list_item.setProperty("hearing_imp", "true" if attributes["hearing_impaired"] else "false") + """TODO take care of multiple cds id&id or something""" + url = f"plugin://{__scriptid__}/?action=download&id={attributes['files'][0]['file_id']}" + + xbmcplugin.addDirectoryItem(handle=self.handle, url=url, listitem=list_item, isFolder=False) xbmcplugin.endOfDirectory(self.handle) diff --git a/weather.ozweather/addon.xml b/weather.ozweather/addon.xml index 3d2fa8a33..7d773e76a 100644 --- a/weather.ozweather/addon.xml +++ b/weather.ozweather/addon.xml @@ -1,5 +1,5 @@ - + @@ -22,8 +22,8 @@ icon.png fanart.jpg
- 2.1.0 - - Fix light_rain icon & update BOM radar list + 2.1.1 + - Add Latitude and Longitude to Window data for skins that display 'season' using (arguably dubious) logic
diff --git a/weather.ozweather/changelog.txt b/weather.ozweather/changelog.txt index 5e201acc3..ae59be684 100644 --- a/weather.ozweather/changelog.txt +++ b/weather.ozweather/changelog.txt @@ -1,3 +1,6 @@ +2.1.1 +- Add Latitude and Longitude to Window data for skins that display 'season' using (arguably dubious) logic + 2.1.0 - Fix light_rain icon & update BOM radar list diff --git a/weather.ozweather/resources/lib/forecast.py b/weather.ozweather/resources/lib/forecast.py index 33cdbad60..ac83876dd 100644 --- a/weather.ozweather/resources/lib/forecast.py +++ b/weather.ozweather/resources/lib/forecast.py @@ -27,6 +27,8 @@ def clear_properties(): set_property(WEATHER_WINDOW, 'Forecast.City') set_property(WEATHER_WINDOW, 'Forecast.Country') + set_property(WEATHER_WINDOW, 'Forecast.Latitude') + set_property(WEATHER_WINDOW, 'Forecast.Longitude') set_property(WEATHER_WINDOW, 'Forecast.Updated') set_property(WEATHER_WINDOW, 'ForecastUpdated') @@ -248,6 +250,8 @@ def get_weather(): # Set the location we updated location_in_use = ADDON.getSetting(f'Location{sys.argv[1]}BOM') + latitude = ADDON.getSetting(f'Location{sys.argv[1]}Lat') + longitude = ADDON.getSetting(f'Location{sys.argv[1]}Lon') try: location_in_use = location_in_use[0:location_in_use.index(' (')] except ValueError: @@ -258,5 +262,7 @@ def get_weather(): set_property(WEATHER_WINDOW, 'Current.Location', location_in_use) set_property(WEATHER_WINDOW, 'Forecast.City', location_in_use) set_property(WEATHER_WINDOW, 'Forecast.Country', "Australia") + set_property(WEATHER_WINDOW, 'Forecast.Latitude', latitude) + set_property(WEATHER_WINDOW, 'Forecast.Longitude', longitude) set_property(WEATHER_WINDOW, 'Forecast.Updated', time.strftime("%d/%m @ %H:%M").lower())