diff --git a/pvr.waipu/addon.xml.in b/pvr.waipu/addon.xml.in index 2641393..b459c80 100644 --- a/pvr.waipu/addon.xml.in +++ b/pvr.waipu/addon.xml.in @@ -1,7 +1,7 @@ @ADDON_DEPENDS@ diff --git a/pvr.waipu/resources/language/resource.language.af_za/strings.po b/pvr.waipu/resources/language/resource.language.af_za/strings.po index 12065e1..65209e0 100644 --- a/pvr.waipu/resources/language/resource.language.af_za/strings.po +++ b/pvr.waipu/resources/language/resource.language.af_za/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.am_et/strings.po b/pvr.waipu/resources/language/resource.language.am_et/strings.po index a4afa38..3ffc7c6 100644 --- a/pvr.waipu/resources/language/resource.language.am_et/strings.po +++ b/pvr.waipu/resources/language/resource.language.am_et/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ar_sa/strings.po b/pvr.waipu/resources/language/resource.language.ar_sa/strings.po index 2c6ee12..05be7a6 100644 --- a/pvr.waipu/resources/language/resource.language.ar_sa/strings.po +++ b/pvr.waipu/resources/language/resource.language.ar_sa/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ast_es/strings.po b/pvr.waipu/resources/language/resource.language.ast_es/strings.po index 72480b8..6a1c9b1 100644 --- a/pvr.waipu/resources/language/resource.language.ast_es/strings.po +++ b/pvr.waipu/resources/language/resource.language.ast_es/strings.po @@ -206,6 +206,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.az_az/strings.po b/pvr.waipu/resources/language/resource.language.az_az/strings.po index 6c9ce48..64e0e4a 100644 --- a/pvr.waipu/resources/language/resource.language.az_az/strings.po +++ b/pvr.waipu/resources/language/resource.language.az_az/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.be_by/strings.po b/pvr.waipu/resources/language/resource.language.be_by/strings.po index 0a0d883..a4021b1 100644 --- a/pvr.waipu/resources/language/resource.language.be_by/strings.po +++ b/pvr.waipu/resources/language/resource.language.be_by/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.bg_bg/strings.po b/pvr.waipu/resources/language/resource.language.bg_bg/strings.po index 7ea13f8..8954ef7 100644 --- a/pvr.waipu/resources/language/resource.language.bg_bg/strings.po +++ b/pvr.waipu/resources/language/resource.language.bg_bg/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.bs_ba/strings.po b/pvr.waipu/resources/language/resource.language.bs_ba/strings.po index d160bd6..20f3f21 100644 --- a/pvr.waipu/resources/language/resource.language.bs_ba/strings.po +++ b/pvr.waipu/resources/language/resource.language.bs_ba/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ca_es/strings.po b/pvr.waipu/resources/language/resource.language.ca_es/strings.po index b772796..630668b 100644 --- a/pvr.waipu/resources/language/resource.language.ca_es/strings.po +++ b/pvr.waipu/resources/language/resource.language.ca_es/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.cs_cz/strings.po b/pvr.waipu/resources/language/resource.language.cs_cz/strings.po index acbdbb0..01a5960 100644 --- a/pvr.waipu/resources/language/resource.language.cs_cz/strings.po +++ b/pvr.waipu/resources/language/resource.language.cs_cz/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Chyba Inputstream" diff --git a/pvr.waipu/resources/language/resource.language.cy_gb/strings.po b/pvr.waipu/resources/language/resource.language.cy_gb/strings.po index 8971d8f..00490db 100644 --- a/pvr.waipu/resources/language/resource.language.cy_gb/strings.po +++ b/pvr.waipu/resources/language/resource.language.cy_gb/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.da_dk/strings.po b/pvr.waipu/resources/language/resource.language.da_dk/strings.po index 14b974a..0dcc0f2 100644 --- a/pvr.waipu/resources/language/resource.language.da_dk/strings.po +++ b/pvr.waipu/resources/language/resource.language.da_dk/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Inputstream fejl" diff --git a/pvr.waipu/resources/language/resource.language.de_de/strings.po b/pvr.waipu/resources/language/resource.language.de_de/strings.po index 71e040e..db055be 100644 --- a/pvr.waipu/resources/language/resource.language.de_de/strings.po +++ b/pvr.waipu/resources/language/resource.language.de_de/strings.po @@ -5,8 +5,8 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: translations@kodi.tv\n" -"PO-Revision-Date: 2024-05-29 02:03+0000\n" -"Last-Translator: flubshi \n" +"PO-Revision-Date: 2024-06-08 03:13+0000\n" +"Last-Translator: Kai Sommerfeld \n" "Language-Team: German \n" "Language: de_de\n" "MIME-Version: 1.0\n" @@ -193,22 +193,26 @@ msgstr "Experimentelles EPG" msgctxt "#30050" msgid "Provider/Authentication: Using Waipu (Device Login) or O2 TV is recommended! Do not use credentials login." -msgstr "" +msgstr "Provider/Authentifizierung: Benutzung von Waipu (Geräte-Login) oder O2 TV empfohlen! Nicht Login mit Credentials verwenden." msgctxt "#30051" msgid "Widevine CDM is required to play non public channels. Click to install Widevine CDM if some channels are not working!" -msgstr "" +msgstr "Widevine CDM wird zur Wiedergabe von nicht-öffentlichen Sendern benötigt. Klicken, um Widevine CDM zu installieren, falls einige Sender nicht funktionieren!" msgctxt "#30052" msgid "Check whether Widevine CDM is installed. Required to play non public channels." -msgstr "" +msgstr "Prüfen, ob Widevine CDM installiert ist. Wird zur Wiedergabe von nicht-öffentlichen Sendern benötigt." msgctxt "#30053" msgid "Select streaming protocol. Use AUTO or MPEG_DASH. Do not use HLS, because not all channels support this." -msgstr "" +msgstr "Streamingprotokoll auswählen. AUTO oder MPEG_DASH verwenden. HLS nicht verwenden, weil nicht von allen Sendern unterstützt." msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." +msgstr "Standardmäßig wird inputstream.adaptive für die Wiedergabe von HLS verwendet. Diese Einstellung aktivieren, um stattdessen inputstream.ffmpegdirect zu verwenden." + +msgctxt "#30055" +msgid "Recordings: Load description and year" msgstr "" msgctxt "#30500" diff --git a/pvr.waipu/resources/language/resource.language.el_gr/strings.po b/pvr.waipu/resources/language/resource.language.el_gr/strings.po index 2beead6..714846a 100644 --- a/pvr.waipu/resources/language/resource.language.el_gr/strings.po +++ b/pvr.waipu/resources/language/resource.language.el_gr/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.en_au/strings.po b/pvr.waipu/resources/language/resource.language.en_au/strings.po index bbfa362..c905365 100644 --- a/pvr.waipu/resources/language/resource.language.en_au/strings.po +++ b/pvr.waipu/resources/language/resource.language.en_au/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.en_gb/strings.po b/pvr.waipu/resources/language/resource.language.en_gb/strings.po index 176b072..094220f 100644 --- a/pvr.waipu/resources/language/resource.language.en_gb/strings.po +++ b/pvr.waipu/resources/language/resource.language.en_gb/strings.po @@ -206,6 +206,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.en_nz/strings.po b/pvr.waipu/resources/language/resource.language.en_nz/strings.po index ad27584..89a5997 100644 --- a/pvr.waipu/resources/language/resource.language.en_nz/strings.po +++ b/pvr.waipu/resources/language/resource.language.en_nz/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.en_us/strings.po b/pvr.waipu/resources/language/resource.language.en_us/strings.po index 6cf38b5..f6a5b8c 100644 --- a/pvr.waipu/resources/language/resource.language.en_us/strings.po +++ b/pvr.waipu/resources/language/resource.language.en_us/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.eo/strings.po b/pvr.waipu/resources/language/resource.language.eo/strings.po index 3186806..a5e4067 100644 --- a/pvr.waipu/resources/language/resource.language.eo/strings.po +++ b/pvr.waipu/resources/language/resource.language.eo/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.es_ar/strings.po b/pvr.waipu/resources/language/resource.language.es_ar/strings.po index c258f0f..1358a46 100644 --- a/pvr.waipu/resources/language/resource.language.es_ar/strings.po +++ b/pvr.waipu/resources/language/resource.language.es_ar/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.es_es/strings.po b/pvr.waipu/resources/language/resource.language.es_es/strings.po index 7352bcb..6e2d48a 100644 --- a/pvr.waipu/resources/language/resource.language.es_es/strings.po +++ b/pvr.waipu/resources/language/resource.language.es_es/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: translations@kodi.tv\n" -"PO-Revision-Date: 2024-05-24 17:13+0000\n" +"PO-Revision-Date: 2024-06-08 03:13+0000\n" "Last-Translator: Alfonso Cachero \n" "Language-Team: Spanish (Spain) \n" "Language: es_es\n" @@ -193,22 +193,26 @@ msgstr "EPG experimental" msgctxt "#30050" msgid "Provider/Authentication: Using Waipu (Device Login) or O2 TV is recommended! Do not use credentials login." -msgstr "" +msgstr "Proveedor/Autenticación: ¡Se recomienda usar Waipu (Inicio de sesión por dispositivo) o O2 TV! No usar inicio de sesión por credenciales." msgctxt "#30051" msgid "Widevine CDM is required to play non public channels. Click to install Widevine CDM if some channels are not working!" -msgstr "" +msgstr "Se requiere Widevine CDM para reproducir canales no públicos. ¡Si algunos canales no funcionan, haz click para instalar Widevine CDM!" msgctxt "#30052" msgid "Check whether Widevine CDM is installed. Required to play non public channels." -msgstr "" +msgstr "Comprueba si Widevine CDM está instalado. Se requiere para reproducir canales no públicos." msgctxt "#30053" msgid "Select streaming protocol. Use AUTO or MPEG_DASH. Do not use HLS, because not all channels support this." -msgstr "" +msgstr "Elegir protocolo de emisión. Usar AUTO o MPEG_DASH. No usar HLS porque no todos los canales lo soportan." msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." +msgstr "Por defecto se usa inputstream.adaptive para reproducir HLS. Comprueba esta opción para usar inputstream.ffmpegdirect en su lugar." + +msgctxt "#30055" +msgid "Recordings: Load description and year" msgstr "" msgctxt "#30500" diff --git a/pvr.waipu/resources/language/resource.language.es_mx/strings.po b/pvr.waipu/resources/language/resource.language.es_mx/strings.po index 132eaf6..7a7f550 100644 --- a/pvr.waipu/resources/language/resource.language.es_mx/strings.po +++ b/pvr.waipu/resources/language/resource.language.es_mx/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.et_ee/strings.po b/pvr.waipu/resources/language/resource.language.et_ee/strings.po index 69a8f29..ea58b82 100644 --- a/pvr.waipu/resources/language/resource.language.et_ee/strings.po +++ b/pvr.waipu/resources/language/resource.language.et_ee/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.eu_es/strings.po b/pvr.waipu/resources/language/resource.language.eu_es/strings.po index 66aa3de..8c31e2c 100644 --- a/pvr.waipu/resources/language/resource.language.eu_es/strings.po +++ b/pvr.waipu/resources/language/resource.language.eu_es/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.fa_af/strings.po b/pvr.waipu/resources/language/resource.language.fa_af/strings.po index 3e12804..9dd2c88 100644 --- a/pvr.waipu/resources/language/resource.language.fa_af/strings.po +++ b/pvr.waipu/resources/language/resource.language.fa_af/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.fa_ir/strings.po b/pvr.waipu/resources/language/resource.language.fa_ir/strings.po index 894173c..5db6753 100644 --- a/pvr.waipu/resources/language/resource.language.fa_ir/strings.po +++ b/pvr.waipu/resources/language/resource.language.fa_ir/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.fi_fi/strings.po b/pvr.waipu/resources/language/resource.language.fi_fi/strings.po index acbd3d7..674c201 100644 --- a/pvr.waipu/resources/language/resource.language.fi_fi/strings.po +++ b/pvr.waipu/resources/language/resource.language.fi_fi/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Inputstream-virhe" diff --git a/pvr.waipu/resources/language/resource.language.fo_fo/strings.po b/pvr.waipu/resources/language/resource.language.fo_fo/strings.po index 6e2ea6f..3507f19 100644 --- a/pvr.waipu/resources/language/resource.language.fo_fo/strings.po +++ b/pvr.waipu/resources/language/resource.language.fo_fo/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.fr_ca/strings.po b/pvr.waipu/resources/language/resource.language.fr_ca/strings.po index 2c72c49..e14dbe2 100644 --- a/pvr.waipu/resources/language/resource.language.fr_ca/strings.po +++ b/pvr.waipu/resources/language/resource.language.fr_ca/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.fr_fr/strings.po b/pvr.waipu/resources/language/resource.language.fr_fr/strings.po index 6bc69f6..1ddcbd1 100644 --- a/pvr.waipu/resources/language/resource.language.fr_fr/strings.po +++ b/pvr.waipu/resources/language/resource.language.fr_fr/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Erreur de flux d'entrée" diff --git a/pvr.waipu/resources/language/resource.language.gl_es/strings.po b/pvr.waipu/resources/language/resource.language.gl_es/strings.po index 9def851..52839c1 100644 --- a/pvr.waipu/resources/language/resource.language.gl_es/strings.po +++ b/pvr.waipu/resources/language/resource.language.gl_es/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.he_il/strings.po b/pvr.waipu/resources/language/resource.language.he_il/strings.po index ec15f36..8dd0a2a 100644 --- a/pvr.waipu/resources/language/resource.language.he_il/strings.po +++ b/pvr.waipu/resources/language/resource.language.he_il/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.hi_in/strings.po b/pvr.waipu/resources/language/resource.language.hi_in/strings.po index 5f8d799..2e66269 100644 --- a/pvr.waipu/resources/language/resource.language.hi_in/strings.po +++ b/pvr.waipu/resources/language/resource.language.hi_in/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.hr_hr/strings.po b/pvr.waipu/resources/language/resource.language.hr_hr/strings.po index 630f9e7..214ff40 100644 --- a/pvr.waipu/resources/language/resource.language.hr_hr/strings.po +++ b/pvr.waipu/resources/language/resource.language.hr_hr/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Inputstream greška" diff --git a/pvr.waipu/resources/language/resource.language.hu_hu/strings.po b/pvr.waipu/resources/language/resource.language.hu_hu/strings.po index 48254f7..8aaf9ae 100644 --- a/pvr.waipu/resources/language/resource.language.hu_hu/strings.po +++ b/pvr.waipu/resources/language/resource.language.hu_hu/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.hy_am/strings.po b/pvr.waipu/resources/language/resource.language.hy_am/strings.po index 7ad7c9e..bc275b0 100644 --- a/pvr.waipu/resources/language/resource.language.hy_am/strings.po +++ b/pvr.waipu/resources/language/resource.language.hy_am/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.id_id/strings.po b/pvr.waipu/resources/language/resource.language.id_id/strings.po index 9de6348..db7d1aa 100644 --- a/pvr.waipu/resources/language/resource.language.id_id/strings.po +++ b/pvr.waipu/resources/language/resource.language.id_id/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Inputstream error" diff --git a/pvr.waipu/resources/language/resource.language.is_is/strings.po b/pvr.waipu/resources/language/resource.language.is_is/strings.po index 40317fb..f72e27a 100644 --- a/pvr.waipu/resources/language/resource.language.is_is/strings.po +++ b/pvr.waipu/resources/language/resource.language.is_is/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.it_it/strings.po b/pvr.waipu/resources/language/resource.language.it_it/strings.po index 16e294b..3aff2ad 100644 --- a/pvr.waipu/resources/language/resource.language.it_it/strings.po +++ b/pvr.waipu/resources/language/resource.language.it_it/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: translations@kodi.tv\n" -"PO-Revision-Date: 2024-05-24 17:13+0000\n" +"PO-Revision-Date: 2024-06-08 03:13+0000\n" "Last-Translator: Massimo Pissarello \n" "Language-Team: Italian \n" "Language: it_it\n" @@ -193,22 +193,26 @@ msgstr "EPG sperimentale" msgctxt "#30050" msgid "Provider/Authentication: Using Waipu (Device Login) or O2 TV is recommended! Do not use credentials login." -msgstr "" +msgstr "Fornitore/Autenticazione: è consigliato l'uso di Waipu (accesso al dispositivo) o O2 TV! Non usare credenziali di accesso." msgctxt "#30051" msgid "Widevine CDM is required to play non public channels. Click to install Widevine CDM if some channels are not working!" -msgstr "" +msgstr "Per riprodurre canali non pubblici è necessario Widevine CDM. Fai clic per installare Widevine CDM se alcuni canali non funzionano!" msgctxt "#30052" msgid "Check whether Widevine CDM is installed. Required to play non public channels." -msgstr "" +msgstr "Controlla se Widevine CDM è installato. È necessario per riprodurre canali non pubblici." msgctxt "#30053" msgid "Select streaming protocol. Use AUTO or MPEG_DASH. Do not use HLS, because not all channels support this." -msgstr "" +msgstr "Seleziona il protocollo di streaming. Usa AUTO o MPEG_DASH. Non usare HLS perché non tutti i canali lo supportano." msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." +msgstr "Per impostazione predefinita per riprodurre HLS viene usato inputstream.adaptive. Seleziona questa opzione per usare invece inputstream.ffmpegdirect." + +msgctxt "#30055" +msgid "Recordings: Load description and year" msgstr "" msgctxt "#30500" diff --git a/pvr.waipu/resources/language/resource.language.ja_jp/strings.po b/pvr.waipu/resources/language/resource.language.ja_jp/strings.po index 61a6132..e084e8c 100644 --- a/pvr.waipu/resources/language/resource.language.ja_jp/strings.po +++ b/pvr.waipu/resources/language/resource.language.ja_jp/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "入力ストリーム エラー" diff --git a/pvr.waipu/resources/language/resource.language.ko_kr/strings.po b/pvr.waipu/resources/language/resource.language.ko_kr/strings.po index 54958c7..607ca4f 100644 --- a/pvr.waipu/resources/language/resource.language.ko_kr/strings.po +++ b/pvr.waipu/resources/language/resource.language.ko_kr/strings.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: translations@kodi.tv\n" -"PO-Revision-Date: 2024-05-24 17:13+0000\n" +"PO-Revision-Date: 2024-06-08 03:13+0000\n" "Last-Translator: Minho Park \n" "Language-Team: Korean \n" "Language: ko_kr\n" @@ -193,22 +193,26 @@ msgstr "실험적인 EPG" msgctxt "#30050" msgid "Provider/Authentication: Using Waipu (Device Login) or O2 TV is recommended! Do not use credentials login." -msgstr "" +msgstr "공급자/인증: Waipu(장치 로그인) 또는 O2 TV 사용을 권장합니다! 자격 증명 로그인을 사용하지 마십시오." msgctxt "#30051" msgid "Widevine CDM is required to play non public channels. Click to install Widevine CDM if some channels are not working!" -msgstr "" +msgstr "비공개 채널을 재생하려면 Widevine CDM이 필요합니다. 일부 채널이 작동하지 않으면 클릭하여 Widevine CDM을 설치하세요!" msgctxt "#30052" msgid "Check whether Widevine CDM is installed. Required to play non public channels." -msgstr "" +msgstr "Widevine CDM이 설치되어 있는지 확인하세요. 비공개 채널을 재생하는 데 필요합니다." msgctxt "#30053" msgid "Select streaming protocol. Use AUTO or MPEG_DASH. Do not use HLS, because not all channels support this." -msgstr "" +msgstr "스트리밍 프로토콜을 선택합니다. 자동 또는 MPEG_DASH를 사용하십시오. 모든 채널이 HLS를 지원하는 것은 아니므로 사용하지 마십시오." msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." +msgstr "기본적으로 HLS 재생에는 inputstream.adaptive를 사용합니다. 대신 inputstream.ffmpegdirect를 사용하려면 이 옵션을 선택합니다." + +msgctxt "#30055" +msgid "Recordings: Load description and year" msgstr "" msgctxt "#30500" diff --git a/pvr.waipu/resources/language/resource.language.lt_lt/strings.po b/pvr.waipu/resources/language/resource.language.lt_lt/strings.po index 05b797a..7d19072 100644 --- a/pvr.waipu/resources/language/resource.language.lt_lt/strings.po +++ b/pvr.waipu/resources/language/resource.language.lt_lt/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.lv_lv/strings.po b/pvr.waipu/resources/language/resource.language.lv_lv/strings.po index 39da7da..13c90ab 100644 --- a/pvr.waipu/resources/language/resource.language.lv_lv/strings.po +++ b/pvr.waipu/resources/language/resource.language.lv_lv/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.mi/strings.po b/pvr.waipu/resources/language/resource.language.mi/strings.po index 08bb763..511f440 100644 --- a/pvr.waipu/resources/language/resource.language.mi/strings.po +++ b/pvr.waipu/resources/language/resource.language.mi/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.mk_mk/strings.po b/pvr.waipu/resources/language/resource.language.mk_mk/strings.po index deaa2f2..dd7b3b8 100644 --- a/pvr.waipu/resources/language/resource.language.mk_mk/strings.po +++ b/pvr.waipu/resources/language/resource.language.mk_mk/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ml_in/strings.po b/pvr.waipu/resources/language/resource.language.ml_in/strings.po index 8b5ee6a..3ff31e8 100644 --- a/pvr.waipu/resources/language/resource.language.ml_in/strings.po +++ b/pvr.waipu/resources/language/resource.language.ml_in/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.mn_mn/strings.po b/pvr.waipu/resources/language/resource.language.mn_mn/strings.po index eb67600..34e09d0 100644 --- a/pvr.waipu/resources/language/resource.language.mn_mn/strings.po +++ b/pvr.waipu/resources/language/resource.language.mn_mn/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ms_my/strings.po b/pvr.waipu/resources/language/resource.language.ms_my/strings.po index 46d0feb..ac6b618 100644 --- a/pvr.waipu/resources/language/resource.language.ms_my/strings.po +++ b/pvr.waipu/resources/language/resource.language.ms_my/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.mt_mt/strings.po b/pvr.waipu/resources/language/resource.language.mt_mt/strings.po index e8718f2..fe1ad6b 100644 --- a/pvr.waipu/resources/language/resource.language.mt_mt/strings.po +++ b/pvr.waipu/resources/language/resource.language.mt_mt/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.my_mm/strings.po b/pvr.waipu/resources/language/resource.language.my_mm/strings.po index b9c222f..29c2f9a 100644 --- a/pvr.waipu/resources/language/resource.language.my_mm/strings.po +++ b/pvr.waipu/resources/language/resource.language.my_mm/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.nb_no/strings.po b/pvr.waipu/resources/language/resource.language.nb_no/strings.po index 1080c72..913e861 100644 --- a/pvr.waipu/resources/language/resource.language.nb_no/strings.po +++ b/pvr.waipu/resources/language/resource.language.nb_no/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.nl_nl/strings.po b/pvr.waipu/resources/language/resource.language.nl_nl/strings.po index 17eb1b7..40127eb 100644 --- a/pvr.waipu/resources/language/resource.language.nl_nl/strings.po +++ b/pvr.waipu/resources/language/resource.language.nl_nl/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.pl_pl/strings.po b/pvr.waipu/resources/language/resource.language.pl_pl/strings.po index 7ac25be..5c3d449 100644 --- a/pvr.waipu/resources/language/resource.language.pl_pl/strings.po +++ b/pvr.waipu/resources/language/resource.language.pl_pl/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Błąd inputstream" diff --git a/pvr.waipu/resources/language/resource.language.pt_br/strings.po b/pvr.waipu/resources/language/resource.language.pt_br/strings.po index 4357ac2..3c5cc46 100644 --- a/pvr.waipu/resources/language/resource.language.pt_br/strings.po +++ b/pvr.waipu/resources/language/resource.language.pt_br/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Erro no inputstream" diff --git a/pvr.waipu/resources/language/resource.language.pt_pt/strings.po b/pvr.waipu/resources/language/resource.language.pt_pt/strings.po index 25078e6..7753471 100644 --- a/pvr.waipu/resources/language/resource.language.pt_pt/strings.po +++ b/pvr.waipu/resources/language/resource.language.pt_pt/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ro_ro/strings.po b/pvr.waipu/resources/language/resource.language.ro_ro/strings.po index 3b50c26..649014f 100644 --- a/pvr.waipu/resources/language/resource.language.ro_ro/strings.po +++ b/pvr.waipu/resources/language/resource.language.ro_ro/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ru_ru/strings.po b/pvr.waipu/resources/language/resource.language.ru_ru/strings.po index 8b69d46..0bcc1d4 100644 --- a/pvr.waipu/resources/language/resource.language.ru_ru/strings.po +++ b/pvr.waipu/resources/language/resource.language.ru_ru/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "Ошибка Inputstream" diff --git a/pvr.waipu/resources/language/resource.language.si_lk/strings.po b/pvr.waipu/resources/language/resource.language.si_lk/strings.po index eba6f6c..83ca751 100644 --- a/pvr.waipu/resources/language/resource.language.si_lk/strings.po +++ b/pvr.waipu/resources/language/resource.language.si_lk/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.sk_sk/strings.po b/pvr.waipu/resources/language/resource.language.sk_sk/strings.po index bc75e55..305a717 100644 --- a/pvr.waipu/resources/language/resource.language.sk_sk/strings.po +++ b/pvr.waipu/resources/language/resource.language.sk_sk/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.sl_si/strings.po b/pvr.waipu/resources/language/resource.language.sl_si/strings.po index 30b4a0f..230e564 100644 --- a/pvr.waipu/resources/language/resource.language.sl_si/strings.po +++ b/pvr.waipu/resources/language/resource.language.sl_si/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.sq_al/strings.po b/pvr.waipu/resources/language/resource.language.sq_al/strings.po index dd7e2ea..c9c9356 100644 --- a/pvr.waipu/resources/language/resource.language.sq_al/strings.po +++ b/pvr.waipu/resources/language/resource.language.sq_al/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.sr_rs/strings.po b/pvr.waipu/resources/language/resource.language.sr_rs/strings.po index 0657fe7..df1d718 100644 --- a/pvr.waipu/resources/language/resource.language.sr_rs/strings.po +++ b/pvr.waipu/resources/language/resource.language.sr_rs/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.sr_rs@latin/strings.po b/pvr.waipu/resources/language/resource.language.sr_rs@latin/strings.po index 5e0e294..0e845a6 100644 --- a/pvr.waipu/resources/language/resource.language.sr_rs@latin/strings.po +++ b/pvr.waipu/resources/language/resource.language.sr_rs@latin/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.sv_se/strings.po b/pvr.waipu/resources/language/resource.language.sv_se/strings.po index a13f6ac..ecfff8c 100644 --- a/pvr.waipu/resources/language/resource.language.sv_se/strings.po +++ b/pvr.waipu/resources/language/resource.language.sv_se/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.szl/strings.po b/pvr.waipu/resources/language/resource.language.szl/strings.po index 6a3f8f9..b7658fc 100644 --- a/pvr.waipu/resources/language/resource.language.szl/strings.po +++ b/pvr.waipu/resources/language/resource.language.szl/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.ta_in/strings.po b/pvr.waipu/resources/language/resource.language.ta_in/strings.po index abaaace..5ae19d6 100644 --- a/pvr.waipu/resources/language/resource.language.ta_in/strings.po +++ b/pvr.waipu/resources/language/resource.language.ta_in/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.te_in/strings.po b/pvr.waipu/resources/language/resource.language.te_in/strings.po index fadcfcb..3b085c1 100644 --- a/pvr.waipu/resources/language/resource.language.te_in/strings.po +++ b/pvr.waipu/resources/language/resource.language.te_in/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.tg_tj/strings.po b/pvr.waipu/resources/language/resource.language.tg_tj/strings.po index 5d794b0..d832707 100644 --- a/pvr.waipu/resources/language/resource.language.tg_tj/strings.po +++ b/pvr.waipu/resources/language/resource.language.tg_tj/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.th_th/strings.po b/pvr.waipu/resources/language/resource.language.th_th/strings.po index 1adb57b..f846662 100644 --- a/pvr.waipu/resources/language/resource.language.th_th/strings.po +++ b/pvr.waipu/resources/language/resource.language.th_th/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.tr_tr/strings.po b/pvr.waipu/resources/language/resource.language.tr_tr/strings.po index 1c81823..323e59c 100644 --- a/pvr.waipu/resources/language/resource.language.tr_tr/strings.po +++ b/pvr.waipu/resources/language/resource.language.tr_tr/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.uk_ua/strings.po b/pvr.waipu/resources/language/resource.language.uk_ua/strings.po index 1a028af..0c9cad0 100644 --- a/pvr.waipu/resources/language/resource.language.uk_ua/strings.po +++ b/pvr.waipu/resources/language/resource.language.uk_ua/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.uz_uz/strings.po b/pvr.waipu/resources/language/resource.language.uz_uz/strings.po index bf7551f..d9e1105 100644 --- a/pvr.waipu/resources/language/resource.language.uz_uz/strings.po +++ b/pvr.waipu/resources/language/resource.language.uz_uz/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.vi_vn/strings.po b/pvr.waipu/resources/language/resource.language.vi_vn/strings.po index c4e5354..3dd890d 100644 --- a/pvr.waipu/resources/language/resource.language.vi_vn/strings.po +++ b/pvr.waipu/resources/language/resource.language.vi_vn/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.zh_cn/strings.po b/pvr.waipu/resources/language/resource.language.zh_cn/strings.po index 2e515e5..2f94ac7 100644 --- a/pvr.waipu/resources/language/resource.language.zh_cn/strings.po +++ b/pvr.waipu/resources/language/resource.language.zh_cn/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/language/resource.language.zh_tw/strings.po b/pvr.waipu/resources/language/resource.language.zh_tw/strings.po index 1c73251..0f48d06 100644 --- a/pvr.waipu/resources/language/resource.language.zh_tw/strings.po +++ b/pvr.waipu/resources/language/resource.language.zh_tw/strings.po @@ -211,6 +211,10 @@ msgctxt "#30054" msgid "By default, inputstream.adaptive is used for playing HLS. Check this option to use inputstream.ffmpegdirect instead." msgstr "" +msgctxt "#30055" +msgid "Recordings: Load description and year" +msgstr "" + msgctxt "#30500" msgid "Inputstream error" msgstr "" diff --git a/pvr.waipu/resources/settings.xml b/pvr.waipu/resources/settings.xml index 1dc718b..f3e1b49 100644 --- a/pvr.waipu/resources/settings.xml +++ b/pvr.waipu/resources/settings.xml @@ -175,6 +175,11 @@ 3 false + + + 3 + false + 3 diff --git a/src/WaipuData.cpp b/src/WaipuData.cpp index af5d412..51abde1 100644 --- a/src/WaipuData.cpp +++ b/src/WaipuData.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -506,12 +507,18 @@ bool WaipuData::RefreshDeviceCapabiltiesToken() std::string appVersion; GetBackendVersion(appVersion); + kodi_version_t kodi_version; + kodi::KodiVersion(kodi_version); + bool cap_audio_aac = kodi::addon::GetSettingBoolean("streaming_capabilities_audio_aac", false); std::string capabilitesData = - "{\"type\": \"receiver\", \"model\": \"Kodi 19\", \"manufacturer\": \"Team Kodi\", " - "\"platform\": \"Kodi 19-pvr.waipu\", \"appVersion\": \"" + - appVersion + + "{\"type\": \"receiver\", \"model\": \"Kodi " + std::to_string(kodi_version.major) + "." + + std::to_string(kodi_version.minor) + + "\", \"manufacturer\": \"Team Kodi\", " + "\"platform\": \"Kodi " + + std::to_string(kodi_version.major) + "." + std::to_string(kodi_version.minor) + + "-pvr.waipu\", \"appVersion\": \"" + appVersion + "\", \"capabilities\": {\"audio\": {\"aac\": " + (cap_audio_aac ? "true" : "false") + "},\"video\": { "; @@ -608,19 +615,16 @@ ADDON_STATUS WaipuData::SetSetting(const std::string& settingName, return ADDON_STATUS_NEED_RESTART; } } - else if (settingName == "protocol") { m_protocol = settingValue.GetString(); return ADDON_STATUS_OK; } - else if (settingName == "epg_show_preview_images") { m_epg_show_preview_images = settingValue.GetBoolean(); return ADDON_STATUS_OK; } - else if (settingName == "provider_select") { WAIPU_PROVIDER tmpProvider = settingValue.GetEnum(); @@ -656,6 +660,10 @@ ADDON_STATUS WaipuData::SetSetting(const std::string& settingName, kodi::addon::SetSettingString("refresh_token", ""); return ADDON_STATUS_NEED_RESTART; } + else if (settingName == "recordings_additional_infos") + { + kodi::addon::CInstancePVRClient::TriggerRecordingUpdate(); + } return ADDON_STATUS_OK; } @@ -907,24 +915,28 @@ PVR_ERROR WaipuData::GetChannels(bool radio, kodi::addon::PVRChannelsResultSet& if (!IsConnected()) return PVR_ERROR_SERVER_ERROR; + if (radio) + { + kodi::Log(ADDON_LOG_ERROR, + "[%s] ERROR: Function was called with invalid parameter 'radio: true'", __FUNCTION__); + return PVR_ERROR_INVALID_PARAMETERS; + } + kodi::Log(ADDON_LOG_DEBUG, "waipu.tv function call: [%s]", __FUNCTION__); LoadChannelData(); for (const auto& channel : m_channels) { - if (!radio) - { - kodi::addon::PVRChannel kodiChannel; + kodi::addon::PVRChannel kodiChannel; - kodiChannel.SetUniqueId(channel.iUniqueId); - kodiChannel.SetIsRadio(false); - kodiChannel.SetChannelNumber(channel.iChannelNumber); - kodiChannel.SetChannelName(channel.strChannelName); - kodiChannel.SetIconPath(channel.strIconPath); - kodiChannel.SetIsHidden(false); + kodiChannel.SetUniqueId(channel.iUniqueId); + kodiChannel.SetIsRadio(false); + kodiChannel.SetChannelNumber(channel.iChannelNumber); + kodiChannel.SetChannelName(channel.strChannelName); + kodiChannel.SetIconPath(channel.strIconPath); + kodiChannel.SetIsHidden(false); - results.Add(kodiChannel); - } + results.Add(kodiChannel); } return PVR_ERROR_NO_ERROR; } @@ -1034,6 +1046,13 @@ PVR_ERROR WaipuData::GetChannelGroups(bool radio, kodi::addon::PVRChannelGroupsR if (!IsConnected()) return PVR_ERROR_SERVER_ERROR; + if (radio) + { + kodi::Log(ADDON_LOG_ERROR, + "[%s] ERROR: Function was called with invalid parameter 'radio: true'", __FUNCTION__); + return PVR_ERROR_INVALID_PARAMETERS; + } + LoadChannelData(); std::vector::iterator it; for (it = m_channelGroups.begin(); it != m_channelGroups.end(); ++it) @@ -1052,6 +1071,13 @@ PVR_ERROR WaipuData::GetChannelGroups(bool radio, kodi::addon::PVRChannelGroupsR PVR_ERROR WaipuData::GetChannelGroupMembers(const kodi::addon::PVRChannelGroup& group, kodi::addon::PVRChannelGroupMembersResultSet& results) { + if (group.GetIsRadio()) + { + kodi::Log(ADDON_LOG_ERROR, + "[%s] ERROR: Function was called with a group having 'radio: true'", __FUNCTION__); + return PVR_ERROR_INVALID_PARAMETERS; + } + LoadChannelData(); for (const auto& cgroup : m_channelGroups) { @@ -1218,7 +1244,9 @@ PVR_ERROR WaipuData::GetEPGForChannel(int channelUid, // year if (epgData.HasMember("year") && !epgData["year"].IsNull()) { - tag.SetYear(Utils::StringToInt(epgData["year"].GetString(), 1970)); + const int year = Utils::StringToInt(epgData["year"].GetString(), 1970); + if (year > 1970) + tag.SetYear(year); } // genre @@ -1536,108 +1564,205 @@ PVR_ERROR WaipuData::GetRecordingsAmount(bool deleted, int& amount) return PVR_ERROR_NO_ERROR; } -PVR_ERROR WaipuData::GetRecordings(bool deleted, kodi::addon::PVRRecordingsResultSet& results) +kodi::addon::PVRRecording WaipuData::ParseRecordingEntry(const rapidjson::Value& recordingEntry) { - if (!IsConnected()) - return PVR_ERROR_SERVER_ERROR; - - m_active_recordings_update = true; - { - std::string json = HttpGet("https://recording.waipu.tv/api/recordings", - {{"Accept", "application/vnd.waipu.recordings-v2+json"}}); - kodi::Log(ADDON_LOG_DEBUG, "[recordings] %s", json.c_str()); + kodi::addon::PVRRecording tag; + bool isSeries = false; - rapidjson::Document doc; - doc.Parse(json.c_str()); - if (doc.HasParseError()) - { - kodi::Log(ADDON_LOG_ERROR, "[GetRecordings] ERROR: error while parsing json"); - return PVR_ERROR_SERVER_ERROR; - } - kodi::Log(ADDON_LOG_DEBUG, "[recordings] iterate entries"); - kodi::Log(ADDON_LOG_DEBUG, "[recordings] size: %i;", doc.Size()); + tag.SetIsDeleted(false); + std::string recordingId = recordingEntry["id"].GetString(); + tag.SetRecordingId(recordingId); + tag.SetPlayCount(recordingEntry.HasMember("fullyWatchedCount") && + recordingEntry["fullyWatchedCount"].GetInt()); - int recordings_count = 0; + const std::string rec_title = recordingEntry["title"].GetString(); + tag.SetTitle(rec_title); - for (const auto& recording : doc.GetArray()) - { - // skip not FINISHED entries - std::string status = recording["status"].GetString(); - if (status != "FINISHED" && status != "RECORDING") - continue; + if (recordingEntry.HasMember("previewImage") && !recordingEntry["previewImage"].IsNull()) + { + std::string rec_img = recordingEntry["previewImage"].GetString(); + rec_img = std::regex_replace(rec_img, std::regex("\\$\\{resolution\\}"), "320x180"); + tag.SetIconPath(rec_img); + tag.SetThumbnailPath(rec_img); + } - kodi::addon::PVRRecording tag; + if (recordingEntry.HasMember("durationSeconds") && !recordingEntry["durationSeconds"].IsNull()) + tag.SetDuration(recordingEntry["durationSeconds"].GetInt()); - tag.SetIsDeleted(false); - tag.SetRecordingId(recording["id"].GetString()); - tag.SetPlayCount(recording.HasMember("watched") && recording["watched"].GetBool()); + if (recordingEntry.HasMember("positionPercentage") && + !recordingEntry["positionPercentage"].IsNull()) + { + int positionPercentage = recordingEntry["positionPercentage"].GetInt(); + int position = tag.GetDuration() * positionPercentage / 100; + tag.SetLastPlayedPosition(position); + } - const rapidjson::Value& epgData = recording["epgData"]; + if (recordingEntry.HasMember("recordingStartTime") && + !recordingEntry["recordingStartTime"].IsNull()) + tag.SetRecordingTime(Utils::StringToTime(recordingEntry["recordingStartTime"].GetString())); - const std::string rec_title = epgData["title"].GetString(); - tag.SetTitle(rec_title); - tag.SetDirectory(rec_title); + if (recordingEntry.HasMember("genreDisplayName") && !recordingEntry["genreDisplayName"].IsNull()) + { + std::string genreStr = recordingEntry["genreDisplayName"].GetString(); + int genre = m_categories.Category(genreStr); + if (genre) + { + tag.SetGenreSubType(genre & 0x0F); + tag.SetGenreType(genre & 0xF0); + } + else + { + tag.SetGenreType(EPG_GENRE_USE_STRING); + tag.SetGenreSubType(0); /* not supported */ + tag.SetGenreDescription(genreStr); + } + } - if (epgData.HasMember("previewImages") && epgData["previewImages"].IsArray() && - epgData["previewImages"].Size() > 0) - { - std::string rec_img = - std::string(epgData["previewImages"][0].GetString()) + "?width=256&height=256"; - tag.SetIconPath(rec_img); - tag.SetThumbnailPath(rec_img); - } + if (recordingEntry.HasMember("episodeTitle") && !recordingEntry["episodeTitle"].IsNull()) + { + tag.SetEpisodeName(recordingEntry["episodeTitle"].GetString()); + isSeries = true; + } - if (epgData.HasMember("duration") && !epgData["duration"].IsNull()) - tag.SetDuration(Utils::StringToInt(epgData["duration"].GetString(), 0) * 60); + if (recordingEntry.HasMember("season") && !recordingEntry["season"].IsNull()) + tag.SetSeriesNumber(Utils::StringToInt(recordingEntry["season"].GetString(), + PVR_RECORDING_INVALID_SERIES_EPISODE)); - if (epgData.HasMember("season") && !epgData["season"].IsNull()) - tag.SetSeriesNumber(Utils::StringToInt(epgData["season"].GetString(), - PVR_RECORDING_INVALID_SERIES_EPISODE)); + if (recordingEntry.HasMember("episode") && !recordingEntry["episode"].IsNull()) + tag.SetEpisodeNumber(Utils::StringToInt(recordingEntry["episode"].GetString(), + PVR_RECORDING_INVALID_SERIES_EPISODE)); - if (epgData.HasMember("episode") && !epgData["episode"].IsNull()) - tag.SetEpisodeNumber(Utils::StringToInt(epgData["episode"].GetString(), - PVR_RECORDING_INVALID_SERIES_EPISODE)); + // epg mapping + if (recordingEntry.HasMember("programId") && !recordingEntry["programId"].IsNull()) + { + std::string epg_id = recordingEntry["programId"].GetString(); + int dirtyID = Utils::GetIDDirty(epg_id); + tag.SetEPGEventId(dirtyID); + } - if (epgData.HasMember("episodeTitle") && !epgData["episodeTitle"].IsNull()) - tag.SetEpisodeName(epgData["episodeTitle"].GetString()); + // not every series is correctly tagged - lets assume recording groups are also series + if (recordingEntry.HasMember("recordingGroup")) + isSeries = true; - if (epgData.HasMember("year") && !epgData["year"].IsNull()) - tag.SetYear(Utils::StringToInt(epgData["year"].GetString(), 1970)); + if (isSeries) + { + tag.SetFlags(PVR_RECORDING_FLAG_IS_SERIES); + tag.SetDirectory(rec_title); + } - if (recording.HasMember("startTime") && !recording["startTime"].IsNull()) - tag.SetRecordingTime(Utils::StringToTime(recording["startTime"].GetString())); + // Additional program details like year or plot are on available in an additional details request. Maybe we should provide this as settings option? + if (kodi::addon::GetSettingBoolean("recordings_additional_infos", false)) + { - if (epgData.HasMember("description") && !epgData["description"].IsNull()) - tag.SetPlot(epgData["description"].GetString()); + std::string json = HttpGet("https://recording.waipu.tv/api/recordings/" + recordingId, + {{"Accept", "application/vnd.waipu.recording-v4+json"}}); + kodi::Log(ADDON_LOG_DEBUG, "[recordings] %s", json.c_str()); - if (epgData.HasMember("genreDisplayName") && !epgData["genreDisplayName"].IsNull()) + rapidjson::Document doc; + doc.Parse(json.c_str()); + if (!doc.HasParseError()) + { + if (doc.HasMember("programDetails")) { - std::string genreStr = epgData["genreDisplayName"].GetString(); - int genre = m_categories.Category(genreStr); - if (genre) + if (doc["programDetails"].HasMember("textContent")) { - tag.SetGenreSubType(genre & 0x0F); - tag.SetGenreType(genre & 0xF0); + if (doc["programDetails"]["textContent"].HasMember("descLong")) + { + std::string descr = doc["programDetails"]["textContent"]["descLong"].GetString(); + tag.SetPlot(descr); + tag.SetPlotOutline(descr); + } + else if (doc["programDetails"]["textContent"].HasMember("descShort")) + { + std::string descr = doc["programDetails"]["textContent"]["descShort"].GetString(); + tag.SetPlot(descr); + tag.SetPlotOutline(descr); + } } - else + if (doc["programDetails"].HasMember("production")) { - tag.SetGenreType(EPG_GENRE_USE_STRING); - tag.SetGenreSubType(0); /* not supported */ - tag.SetGenreDescription(genreStr); + if (doc["programDetails"]["production"].HasMember("year")) + { + std::string year = doc["programDetails"]["production"]["year"].GetString(); + tag.SetYear(Utils::StringToInt(year, 1970)); + } } } + } + } + return tag; +} + +PVR_ERROR WaipuData::GetRecordings(bool deleted, kodi::addon::PVRRecordingsResultSet& results) +{ + if (!IsConnected()) + return PVR_ERROR_SERVER_ERROR; + + m_active_recordings_update = true; + + { + std::string recordingGroupsJSON = + HttpGet("https://recording.waipu.tv/api/recordings", + {{"Accept", "application/vnd.waipu.recordings-v4+json"}}); + kodi::Log(ADDON_LOG_DEBUG, "[recordingGroupsJSON] %s", recordingGroupsJSON.c_str()); + + rapidjson::Document recordingGroupsDoc; + recordingGroupsDoc.Parse(recordingGroupsJSON.c_str()); + if (recordingGroupsDoc.HasParseError()) + { + kodi::Log(ADDON_LOG_ERROR, "[GetRecordings] ERROR: error while parsing recordingGroupsJSON"); + return PVR_ERROR_SERVER_ERROR; + } + kodi::Log(ADDON_LOG_DEBUG, "[recordings] getGroups"); + std::set recordingGroups; + int recordings_count = 0; - // epg mapping - if (epgData.HasMember("id") && !epgData["id"].IsNull()) + for (const auto& recordingEntry : recordingGroupsDoc.GetArray()) + { + // skip not FINISHED entries + std::string status = recordingEntry["status"].GetString(); + + if (recordingEntry.HasMember("recordingGroup") && recordingEntry["recordingGroup"].IsInt()) + { + int recordingGroup = recordingEntry["recordingGroup"].GetInt(); + kodi::Log(ADDON_LOG_DEBUG, "[recordings] found group: %i;", recordingGroup); + recordingGroups.insert(recordingGroup); + } + else if (status == "FINISHED" || status == "RECORDING") { - std::string epg_id = epgData["id"].GetString(); - int dirtyID = Utils::GetIDDirty(epg_id); - tag.SetEPGEventId(dirtyID); + recordings_count++; + results.Add(ParseRecordingEntry(recordingEntry)); } + } - recordings_count++; - results.Add(tag); + for (const int& recordingGroup : recordingGroups) + { + std::string json = HttpGet("https://recording.waipu.tv/api/recordings?recordingGroup=" + + std::to_string(recordingGroup), + {{"Accept", "application/vnd.waipu.recordings-v4+json"}}); + kodi::Log(ADDON_LOG_DEBUG, "[recordings] %s", json.c_str()); + + rapidjson::Document doc; + doc.Parse(json.c_str()); + if (doc.HasParseError()) + { + kodi::Log(ADDON_LOG_ERROR, "[GetRecordings] ERROR: error while parsing json"); + return PVR_ERROR_SERVER_ERROR; + } + kodi::Log(ADDON_LOG_DEBUG, "[recordings] iterate entries"); + kodi::Log(ADDON_LOG_DEBUG, "[recordings] size: %i;", doc.Size()); + + for (const rapidjson::Value& recordingEntry : doc.GetArray()) + { + // skip not FINISHED entries + std::string status = recordingEntry["status"].GetString(); + if (status != "FINISHED" && status != "RECORDING") + continue; + + recordings_count++; + results.Add(ParseRecordingEntry(recordingEntry)); + } } m_recordings_count = recordings_count; } @@ -2056,7 +2181,35 @@ PVR_ERROR WaipuData::OnSystemWake() PVR_ERROR WaipuData::GetRecordingLastPlayedPosition(const kodi::addon::PVRRecording& recording, int& position) { - return PVR_ERROR_NOT_IMPLEMENTED; + if (!IsConnected()) + return PVR_ERROR_FAILED; + + std::string responseJSON = + HttpGet("https://stream-position.waipu.tv/api/stream-positions/" + recording.GetRecordingId(), + {{"Content-Type", "application/json"}}); + + if (responseJSON.empty()) + { + kodi::Log(ADDON_LOG_DEBUG, "%s - Empty StreamPosition retrieved - start from beginning.", + __FUNCTION__); + position = 0; + return PVR_ERROR_NO_ERROR; + } + + kodi::Log(ADDON_LOG_DEBUG, "%s - Response: %s", __FUNCTION__, responseJSON.c_str()); + + rapidjson::Document recordingPosDoc; + recordingPosDoc.Parse(responseJSON.c_str()); + if (recordingPosDoc.HasParseError()) + { + kodi::Log(ADDON_LOG_ERROR, "[%s] ERROR: Parsing StreamPosition JSON", __FUNCTION__); + return PVR_ERROR_SERVER_ERROR; + } + // {"streamId":"1036499352","position":5040,"changed":"2024-06-21T17:54:52.000+00:00"} + if (recordingPosDoc.HasMember("position") && recordingPosDoc["position"].IsInt()) + position = recordingPosDoc["position"].GetInt(); + + return PVR_ERROR_NO_ERROR; } PVR_ERROR WaipuData::SetRecordingLastPlayedPosition(const kodi::addon::PVRRecording& recording, @@ -2065,6 +2218,9 @@ PVR_ERROR WaipuData::SetRecordingLastPlayedPosition(const kodi::addon::PVRRecord if (!IsConnected()) return PVR_ERROR_FAILED; + if (lastplayedposition == -1) + lastplayedposition = 0; + std::string request_data = "{\"position\":" + std::to_string(lastplayedposition) + "}"; std::string response = HttpRequest( "PUT", "https://stream-position.waipu.tv/api/stream-positions/" + recording.GetRecordingId(), diff --git a/src/WaipuData.h b/src/WaipuData.h index 4538f38..9cf3610 100644 --- a/src/WaipuData.h +++ b/src/WaipuData.h @@ -109,6 +109,7 @@ class ATTR_DLL_LOCAL WaipuData : public kodi::addon::CAddonBase, std::vector& properties) override; PVR_ERROR GetRecordingsAmount(bool deleted, int& amount) override; + kodi::addon::PVRRecording ParseRecordingEntry(const rapidjson::Value& recordingEntry); PVR_ERROR GetRecordings(bool deleted, kodi::addon::PVRRecordingsResultSet& results) override; PVR_ERROR DeleteRecording(const kodi::addon::PVRRecording& recording) override; PVR_ERROR GetRecordingStreamProperties(