New Upstream Release - kodi-pvr-hts

Ready changes

Summary

Merged new upstream version: 20.6.2+ds1 (was: 20.6.0+ds1).

Resulting package

Built on 2023-07-25T11:41 (took 5m53s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases kodi-pvr-hts-dbgsymapt install -t fresh-releases kodi-pvr-hts

Lintian Result

Diff

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..35724e8
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,61 @@
+name: Build and run tests
+on: [push, pull_request]
+env:
+  app_id: pvr.hts
+
+jobs:
+  build:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+        - name: "Debian package test"
+          os: ubuntu-18.04
+          CC: gcc
+          CXX: g++
+          DEBIAN_BUILD: true
+        #- os: ubuntu-18.04
+          #CC: gcc
+          #CXX: g++
+        #- os: ubuntu-18.04
+          #CC: clang
+          #CXX: clang++
+        #- os: macos-10.15
+    steps:
+    - name: Install needed ubuntu depends
+      env:
+        DEBIAN_BUILD: ${{ matrix.DEBIAN_BUILD }}
+      run: |
+        if [[ $DEBIAN_BUILD == true ]]; then sudo add-apt-repository -y ppa:team-xbmc/xbmc-nightly; fi
+        if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get update; fi
+        if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get install fakeroot; fi
+    - name: Checkout Kodi repo
+      uses: actions/checkout@v2
+      with:
+        repository: xbmc/xbmc
+        ref: master
+        path: xbmc
+    - name: Checkout pvr.hts repo
+      uses: actions/checkout@v2
+      with:
+        path: ${{ env.app_id }}
+    - name: Configure
+      env:
+        CC: ${{ matrix.CC }}
+        CXX: ${{ matrix.CXX }}
+        DEBIAN_BUILD: ${{ matrix.DEBIAN_BUILD }}
+      run: |
+        if [[ $DEBIAN_BUILD != true ]]; then cd ${app_id} && mkdir -p build && cd build; fi
+        if [[ $DEBIAN_BUILD != true ]]; then cmake -DADDONS_TO_BUILD=${app_id} -DADDON_SRC_PREFIX=${{ github.workspace }} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/xbmc/addons -DPACKAGE_ZIP=1 ${{ github.workspace }}/xbmc/cmake/addons; fi
+        if [[ $DEBIAN_BUILD == true ]]; then wget https://raw.githubusercontent.com/xbmc/xbmc/master/xbmc/addons/kodi-dev-kit/tools/debian-addon-package-test.sh && chmod +x ./debian-addon-package-test.sh; fi
+        if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get build-dep ${{ github.workspace }}/${app_id}; fi
+    - name: Build
+      env:
+        CC: ${{ matrix.CC }}
+        CXX: ${{ matrix.CXX }}
+        DEBIAN_BUILD: ${{ matrix.DEBIAN_BUILD }}
+      run: |
+        if [[ $DEBIAN_BUILD != true ]]; then cd ${app_id}/build; fi
+        if [[ $DEBIAN_BUILD != true ]]; then make; fi
+        if [[ $DEBIAN_BUILD == true ]]; then ./debian-addon-package-test.sh ${{ github.workspace }}/${app_id}; fi
diff --git a/.github/workflows/changelog-and-release.yml b/.github/workflows/changelog-and-release.yml
new file mode 100644
index 0000000..c952b58
--- /dev/null
+++ b/.github/workflows/changelog-and-release.yml
@@ -0,0 +1,149 @@
+name: Changelog and Release
+# Update the changelog and news(optionally), bump the version, and create a release
+#
+# The release is created on the given branch, release and tag name format will be <version>-<branch> and
+# the body of the release will be created from the changelog.txt or news element in the addon.xml.in
+#
+# options:
+# - version_type: 'minor' / 'micro' # whether to do a minor or micro version bump
+# - changelog_text: string to add to the changelog and news
+# - update_news: 'true' / 'false' # whether to update the news in the addon.xml.in
+# - add_date: 'true' / 'false' # Add date to version number in changelog and news. ie. v1.0.1 (2021-7-17)
+
+on:
+  workflow_dispatch:
+    inputs:
+      version_type:
+        description: 'Create a ''minor'' or ''micro'' release?'
+        required: true
+        default: 'minor'
+      changelog_text:
+        description: 'Input the changes you''d like to add to the changelogs. Your text should be encapsulated in "''s with line feeds represented by literal \n''s. ie. "This is the first change\nThis is the second change"'
+        required: true
+        default: ''
+      update_news:
+        description: 'Update news in addon.xml.in? [true|false]'
+        required: true
+        default: 'true'
+      add_date:
+        description: 'Add date to version number in changelog and news. ie. "v1.0.1 (2021-7-17)" [true|false]'
+        required: true
+        default: 'false'
+
+jobs:
+  default:
+    runs-on: ubuntu-latest
+    name: Changelog and Release
+
+    steps:
+
+      # Checkout the current repository into a directory (repositories name)
+      - name: Checkout Repository
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+          path: ${{ github.event.repository.name }}
+
+      # Checkout the required scripts from kodi-pvr/pvr-scripts into the 'scripts' directory
+      - name: Checkout Scripts
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+          repository: kodi-pvr/pvr-scripts
+          path: scripts
+
+      # Install all dependencies required by the following steps
+      # - libxml2-utils, xmlstarlet: reading news and version from addon.xml.in
+      - name: Install dependencies
+        run: |
+          sudo apt-get install libxml2-utils xmlstarlet
+
+      # Setup python version 3.9
+      - name: Set up Python
+        uses: actions/setup-python@v2
+        with:
+          python-version: '3.9'
+
+      # Run the python script to increment the version, changelog and news
+      - name: Increment version and update changelogs
+        run: |
+          arguments=
+          if [[ ${{ github.event.inputs.update_news }} == true ]] ;
+          then
+            arguments=$(echo $arguments && echo --update-news)
+          fi
+          if [[ ${{ github.event.inputs.add_date }} == true ]] ;
+          then
+            arguments=$(echo $arguments && echo --add-date)
+          fi
+          python3 ../scripts/changelog_and_release.py ${{ github.event.inputs.version_type }} ${{ github.event.inputs.changelog_text }} $arguments
+        working-directory: ${{ github.event.repository.name }}
+
+      # Create the variables required by the following steps
+      # - steps.required-variables.outputs.changes: latest entry in the changelog.txt (if exists), or addon.xml.in news element
+      # - steps.required-variables.outputs.version: version element from addon.xml.in
+      # - steps.required-variables.outputs.branch: branch of the triggering ref
+      # - steps.required-variables.outputs.today: today's date in format '%Y-%m-%d'
+      - name: Get required variables
+        id: required-variables
+        run: |
+          changes=$(cat "$(find . -name changelog.txt)" | awk -v RS= 'NR==1')
+          if [ -z "$changes" ] ;
+          then
+            changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1')
+          fi
+          changes="${changes//'%'/'%25'}"
+          changes="${changes//$'\n'/'%0A'}"
+          changes="${changes//$'\r'/'%0D'}"
+          changes="${changes//$'\\n'/'%0A'}"
+          changes="${changes//$'\\r'/'%0D'}"
+          echo ::set-output name=changes::$changes
+          version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)')
+          echo ::set-output name=version::$version
+          branch=$(echo ${GITHUB_REF#refs/heads/})
+          echo ::set-output name=branch::$branch
+          echo ::set-output name=today::$(date +'%Y-%m-%d')
+        working-directory: ${{ github.event.repository.name }}
+
+      # Create a commit of the incremented version and changelog, news changes
+      # Commit message (add_date=false): changelog and version v{steps.required-variables.outputs.version}
+      # Commit message (add_date=true): changelog and version v{steps.required-variables.outputs.version} ({steps.required-variables.outputs.today})
+      - name: Commit changes
+        run: |
+          git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
+          git config --local user.name "github-actions[bot]"
+          commit_message="changelog and version v${{ steps.required-variables.outputs.version }}"
+          if [[ ${{ github.event.inputs.add_date }} == true ]] ;
+          then
+            commit_message="$commit_message (${{ steps.required-variables.outputs.today }})"
+          fi
+          git commit -m "$commit_message" -a
+        working-directory: ${{ github.event.repository.name }}
+
+      # Push the commit(s) created above to the triggering branch
+      - name: Push changes
+        uses: ad-m/github-push-action@master
+        with:
+          branch: ${{ github.ref }}
+          directory: ${{ github.event.repository.name }}
+
+      # Sleep for 60 seconds to allow for any delays in the push
+      - name: Sleep for 60 seconds
+        run: sleep 60s
+        shell: bash
+
+      # Create a release at {steps.required-variables.outputs.branch}
+      # - tag and release name format: {steps.required-variables.outputs.version}-{steps.required-variables.outputs.branch} ie. 20.0.0-Nexus
+      # - release body: {steps.required-variables.outputs.changes}
+      - name: Create Release
+        id: create-release
+        uses: actions/create-release@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          tag_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
+          release_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
+          body: ${{ steps.required-variables.outputs.changes }}
+          draft: false
+          prerelease: false
+          commitish: ${{ steps.required-variables.outputs.branch }}
diff --git a/.github/workflows/increment-version.yml b/.github/workflows/increment-version.yml
new file mode 100644
index 0000000..51d8dca
--- /dev/null
+++ b/.github/workflows/increment-version.yml
@@ -0,0 +1,62 @@
+name: Increment version when languages are updated
+
+on:
+  push:
+    branches: [ Matrix, Nexus ]
+    paths:
+      - '**resource.language.**strings.po'
+
+jobs:
+  default:
+    if: github.repository == 'kodi-pvr/pvr.hts'
+    runs-on: ubuntu-latest
+    name: Increment add-on version when languages are updated
+
+    steps:
+
+      - name: Checkout Repository
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+          path: ${{ github.event.repository.name }}
+
+      - name: Checkout Scripts
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+          repository: xbmc/weblate-supplementary-scripts
+          path: scripts
+
+      - name: Set up Python
+        uses: actions/setup-python@v2
+        with:
+          python-version: '3.9'
+
+      - name: Get changed files
+        uses: trilom/file-changes-action@v1.2.4
+
+      - name: Increment add-on version
+        run: |
+          python3 ../scripts/binary/increment_version.py $HOME/files.json -c -n
+        working-directory: ${{ github.event.repository.name }}
+
+      - name: Install dependencies
+        run: |
+          sudo apt-get install libxml2-utils xmlstarlet
+
+      - name: Get required variables
+        id: required-variables
+        run: |
+          version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)')
+          echo ::set-output name=version::$version
+        working-directory: ${{ github.event.repository.name }}
+
+      - name: Create PR for incrementing add-on versions
+        uses: peter-evans/create-pull-request@v3.10.0
+        with:
+          commit-message: Add-on version incremented to ${{ steps.required-variables.outputs.version }} from Weblate
+          title: Add-on version incremented to ${{ steps.required-variables.outputs.version }} from Weblate
+          body: Add-on version incremented triggered by ${{ github.sha }}
+          branch: inc-ver
+          delete-branch: true
+          path: ./${{ github.event.repository.name }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..0e12688
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,66 @@
+name: Make Release
+# Create a release on the given branch
+# Release and tag name format will be <version>-<branch>
+# The body of the release will be created from the changelog.txt or news element in the addon.xml.in
+
+on: workflow_dispatch
+
+jobs:
+  default:
+    runs-on: ubuntu-latest
+    name: Make Release
+
+    steps:
+
+      # Checkout the current repository into a directory (repositories name)
+      - name: Checkout Repository
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+          path: ${{ github.event.repository.name }}
+
+      # Install all dependencies required by the following steps
+      # - libxml2-utils, xmlstarlet: reading news and version from addon.xml.in
+      - name: Install dependencies
+        run: |
+          sudo apt-get install libxml2-utils xmlstarlet
+
+      # Create the variables required by the following steps
+      # - steps.required-variables.outputs.changes: latest entry in the changelog.txt (if exists), or addon.xml.in news element
+      # - steps.required-variables.outputs.version: version element from addon.xml.in
+      # - steps.required-variables.outputs.branch: branch of the triggering ref
+      - name: Get required variables
+        id: required-variables
+        run: |
+          changes=$(cat "$(find . -name changelog.txt)" | awk -v RS= 'NR==1')
+          if [ -z "$changes" ] ;
+          then
+            changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1')
+          fi
+          changes="${changes//'%'/'%25'}"
+          changes="${changes//$'\n'/'%0A'}"
+          changes="${changes//$'\r'/'%0D'}"
+          changes="${changes//$'\\n'/'%0A'}"
+          changes="${changes//$'\\r'/'%0D'}"
+          echo ::set-output name=changes::$changes
+          version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)')
+          echo ::set-output name=version::$version
+          branch=$(echo ${GITHUB_REF#refs/heads/})
+          echo ::set-output name=branch::$branch
+        working-directory: ${{ github.event.repository.name }}
+
+      # Create a release at {steps.required-variables.outputs.branch}
+      # - tag and release name format: {steps.required-variables.outputs.version}-{steps.required-variables.outputs.branch} ie. 20.0.0-Nexus
+      # - release body: {steps.required-variables.outputs.changes}
+      - name: Create Release
+        id: create-release
+        uses: actions/create-release@v1
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          tag_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
+          release_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
+          body: ${{ steps.required-variables.outputs.changes }}
+          draft: false
+          prerelease: false
+          commitish: ${{ steps.required-variables.outputs.branch }}
diff --git a/.github/workflows/sync-addon-metadata-translations.yml b/.github/workflows/sync-addon-metadata-translations.yml
new file mode 100644
index 0000000..c79d256
--- /dev/null
+++ b/.github/workflows/sync-addon-metadata-translations.yml
@@ -0,0 +1,57 @@
+name: Sync addon metadata translations
+
+on:
+  push:
+    branches: [ Matrix, Nexus ]
+    paths:
+      - '**addon.xml.in'
+      - '**resource.language.**strings.po'
+
+jobs:
+  default:
+    if: github.repository == 'kodi-pvr/pvr.hts'
+    runs-on: ubuntu-latest
+
+    strategy:
+
+      fail-fast: false
+      matrix:
+        python-version: [ 3.9 ]
+
+    steps:
+
+      - name: Checkout repository
+        uses: actions/checkout@v2
+        with:
+          path: project
+
+      - name: Checkout sync_addon_metadata_translations repository
+        uses: actions/checkout@v2
+        with:
+          repository: xbmc/sync_addon_metadata_translations
+          path: sync_addon_metadata_translations
+
+      - name: Set up Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v2
+        with:
+          python-version: ${{ matrix.python-version }}
+
+      - name: Install dependencies
+        run: |
+          python -m pip install --upgrade pip
+          python -m pip install sync_addon_metadata_translations/
+
+      - name: Run sync-addon-metadata-translations
+        run: |
+          sync-addon-metadata-translations
+        working-directory: ./project
+
+      - name: Create PR for sync-addon-metadata-translations changes
+        uses: peter-evans/create-pull-request@v3.10.0
+        with:
+          commit-message: Sync of addon metadata translations
+          title: Sync of addon metadata translations
+          body: Sync of addon metadata translations triggered by ${{ github.sha }}
+          branch: amt-sync
+          delete-branch: true
+          path: ./project
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b8b8fd2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,50 @@
+# build artifacts
+build/
+pvr.*/addon.xml
+
+# Debian build files
+debian/changelog
+debian/files
+debian/*.log
+debian/*.substvars
+debian/.debhelper/
+debian/tmp/
+debian/kodi-pvr-*/
+obj-x86_64-linux-gnu/
+
+# commonly used editors
+# vim
+*.swp
+
+# Eclipse
+*.project
+*.cproject
+.classpath
+*.sublime-*
+.settings/
+
+# KDevelop 4
+*.kdev4
+
+# gedit
+*~
+
+# CLion
+/.idea
+
+# clion
+.idea/
+
+# to prevent add after a "git format-patch VALUE" and "git add ." call
+/*.patch
+
+# Visual Studio Code
+.vscode
+
+# to prevent add if project code opened by Visual Studio over CMake file
+.vs/
+
+# General MacOS
+.DS_Store
+.AppleDouble
+.LSOverride
diff --git a/debian/changelog b/debian/changelog
index d73169f..b2516ed 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+kodi-pvr-hts (20.6.2+ds1-1) UNRELEASED; urgency=low
+
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Tue, 25 Jul 2023 11:36:09 -0000
+
 kodi-pvr-hts (20.6.0+ds1-1) unstable; urgency=medium
 
   * New upstream version 20.6.0+ds1
diff --git a/pvr.hts/addon.xml.in b/pvr.hts/addon.xml.in
index 0044851..3e23902 100644
--- a/pvr.hts/addon.xml.in
+++ b/pvr.hts/addon.xml.in
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <addon
   id="pvr.hts"
-  version="20.6.0"
+  version="20.6.2"
   name="Tvheadend HTSP Client"
   provider-name="Adam Sutton, Sam Stenvall, Lars Op den Kamp, Kai Sommerfeld">
   <requires>@ADDON_DEPENDS@</requires>
@@ -32,16 +32,16 @@
     <summary lang="es_ES">Interfaz Kodi para Tvheadend</summary>
     <summary lang="es_MX">El frontend de Kodi para Tvheadend</summary>
     <summary lang="et_EE">Kodi liides Tvheadend&apos;ile</summary>
-    <summary lang="fi_FI">Kodin Tvheadend-asiakasohjelma</summary>
+    <summary lang="fi_FI">Tvheadend-käyttöliittymä Kodille</summary>
     <summary lang="fr_CA">Frontale Kodi pour Tvheadend</summary>
     <summary lang="fr_FR">Interface logicielle pour Tvheadend</summary>
     <summary lang="gl_ES">Interface do Kodi para Tvheadend</summary>
     <summary lang="he_IL">לקוח טלוויזיה חיה עבור Tvheadend</summary>
-    <summary lang="hr_HR">Kodi sučelje za Tvheadend</summary>
+    <summary lang="hr_HR">Kodi pozadinski softver za Tvheadend</summary>
     <summary lang="hu_HU">Kodi előtét a TVHeadend-hez</summary>
     <summary lang="id_ID">Frontend Kodi untuk Tvheadend</summary>
     <summary lang="is_IS">Kodi framendi fyrir Tvheadend</summary>
-    <summary lang="it_IT">Frontend di Kodi per Tvheadend</summary>
+    <summary lang="it_IT">Frontend Kodi per Tvheadend</summary>
     <summary lang="ja_JP">TVheadend 用 Kodi フロントエンド</summary>
     <summary lang="ko_KR">Tvheadend 을 위한 Kodi 프론트엔드</summary>
     <summary lang="lt_LT">Kodi naudotojo sąsaja skirta Tvheadend</summary>
@@ -73,9 +73,9 @@
     <description lang="af_ZA">Tvheadend voorprogram; ondersteun stroom van Lewendige TV &amp; Opnames, EPG, Tydhouers</description>
     <description lang="bg_BG">Клиент за „Tvheadend“. Поддържа телевизия на живо, записване, електронен програмен справочник и броячи.</description>
     <description lang="ca_ES">Frontal de Tvheadend; compatible amb la transmissió de TV en directe i enregistraments, guia electrònica de programació (EPG), temporitzadors</description>
-    <description lang="cs_CZ">Rozhraní Tvheadend; podporuje streamování živého vysílání a nahrávání, televizní program, časovače.</description>
+    <description lang="cs_CZ">Rozhraní Tvheadend; podporuje streamování živého vysílání a nahrávání, televizní program, časovače</description>
     <description lang="cy_GB">Blaen Tvheadend: cefnogi ffrydio Teledu Byw a Recordio, Amserlenni, Amseryddion</description>
-    <description lang="da_DK">Tvheadend-brugerflade; understøtter streaming af direkte tv og optagelser, EPG og timere</description>
+    <description lang="da_DK">Tvheadend-brugerflade; understøtter streaming af direkte tv og optagelser, EPG og timeroptagelser</description>
     <description lang="de_DE">PVR-Client für Tvheadend. Unterstützt TV, Aufnahmen, Programm-Guide (EPG) und Timer</description>
     <description lang="el_GR">Frontend για το Tvheadend. Υποστηρίζει ροές Live TV &amp; Εγγραφές, EPG, Χρονοδιακόπτες</description>
     <description lang="en_AU">Tvheadend frontend; supporting streaming of Live TV &amp; Recordings, EPG, Timers</description>
@@ -83,19 +83,19 @@
     <description lang="en_NZ">Tvheadend frontend; supporting streaming of Live TV &amp; Recordings, EPG, Timers</description>
     <description lang="en_US">Tvheadend frontend; supporting streaming of Live TV &amp; Recordings, EPG, Timers</description>
     <description lang="es_AR">Interfaz Tvheadend; soporta la reproducción de TV en vivo, grabación, guía de programación, temporizadores</description>
-    <description lang="es_ES">Interfaz Tvheadend; soporta la reproducción de TV en vivo, grabación, guía de programación, temporizadores</description>
+    <description lang="es_ES">Interfaz Tvheadend; transmisión de TV en directo y grabaciones, EPG, temporizadores</description>
     <description lang="es_MX">Frontend de Tvheadend; Compatible con la transmisión de TV en directo y Grabaciones, EPG, Temporizadores</description>
     <description lang="et_EE">Tvheadend&apos;i liides. Toetab telekanalite striimimist ja salvestamist ning elektroonilist saatekava.</description>
-    <description lang="fi_FI">Tvheadend-asiakasohjelma. Tukee suorien tv-lähetysten ja tallennusten katsomista, ohjelmaopasta ja ohjelmien ajastamista.</description>
+    <description lang="fi_FI">Tvheadend-käyttöliittymä, joka tukee televisiolähetysten ja tallenteiden suoratoistoa, ohjelmaopasta ja ajastuksia.</description>
     <description lang="fr_CA">Frontale pour Tvheadend, prenant en charge la diffusion en continu des télés en direct et les enregistrements, le GÉP et les minuteries</description>
-    <description lang="fr_FR">Interface logicielle pour Tvheadend gérant la lecture en continu de la TV en direct et des enregistrements, le guide électronique des programmes TV et les programmations.</description>
+    <description lang="fr_FR">Interface logicielle pour Tvheadend gérant la lecture en continu de la TV en direct et les enregistrements, le guide électronique des programmes TV et les programmations.</description>
     <description lang="gl_ES">Interface Tvheadend; soporta a transmisión de TV en directo e Gravacións, Guía, temporizadores</description>
     <description lang="he_IL">לקוח טלוויזיה חיה של Tvheadend. תומך בהזרמת שידורים חיים והקלטות, האזנה לרדיו, הצגת לוח שידורים ותזמון הקלטות.</description>
-    <description lang="hr_HR">Tvheadend pozadinski softver podržava gledanje i snimanje TV programa, elektronski programski vodič (EPG) i zakazano snimanje.</description>
+    <description lang="hr_HR">Tvheadend sučelje podržava gledanje i snimanje TV programa, elektronski programski vodič (EPG) i zakazano snimanje</description>
     <description lang="hu_HU">TVHeadend előtét. Élő adások és felvételek támogatása EPG-vel és időzítéssel</description>
     <description lang="id_ID">Frontend Tvheadend; mendukung menangkap siaran TV Live &amp; Rekaman, EPG, Timer</description>
     <description lang="is_IS">Tvheadend framendi; styður streymingu á beinum útsendingum og upptökum, rafrænum sjónvarpsvísum (EGP), tímatökur</description>
-    <description lang="it_IT">Frontend di Tvheadend; supporta lo streaming di Live TV &amp; Registrazione, EPG, Timers</description>
+    <description lang="it_IT">Frontend Tvheadend; supporta lo stream e la registrazione di Live TV, EPG, timer</description>
     <description lang="ja_JP">TVheadend フロントエンドです。ライブTVストリーミング、録画、EPG、タイマーをサポートしています。</description>
     <description lang="ko_KR">Tvheadend 프론트엔드; TV 시청 &amp; 녹화, EPG, 타이머 지원</description>
     <description lang="lt_LT">Tvheadend naudotojo sąsaja; palaiko televizijos transliacijas ir įrašus, EPG, laikmačius</description>
diff --git a/pvr.hts/changelog.txt b/pvr.hts/changelog.txt
index ee44257..f477446 100644
--- a/pvr.hts/changelog.txt
+++ b/pvr.hts/changelog.txt
@@ -1,3 +1,11 @@
+v20.6.2
+- Fixed cases where existing channels were treated by Kodi as deleted from backend.
+  (Info in Kodi log: "Removed stale channel foo from group bar")
+
+v20.6.1
+- Translations updates from Weblate
+	- ast_es, be_by, cs_cz, da_dk, de_de, es_es, fi_fi, fr_fr, hr_hr, it_it, pl_pl, vi_vn
+
 v20.6.0
 - Drop support for Tvheadend < 4.2.0
 
diff --git a/pvr.hts/resources/language/resource.language.ast_es/strings.po b/pvr.hts/resources/language/resource.language.ast_es/strings.po
new file mode 100644
index 0000000..e2088b2
--- /dev/null
+++ b/pvr.hts/resources/language/resource.language.ast_es/strings.po
@@ -0,0 +1,476 @@
+# Kodi Media Center language file
+# Addon Name: Tvheadend HTSP Client
+# Addon id: pvr.hts
+# Addon Provider: Adam Sutton, Sam Stenvall, Lars Op den Kamp, Kai Sommerfeld
+msgid ""
+msgstr ""
+"Project-Id-Version: KODI Main\n"
+"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\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"
+
+msgctxt "Addon Summary"
+msgid "Kodi's frontend for Tvheadend"
+msgstr ""
+
+msgctxt "Addon Description"
+msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
+msgstr ""
+
+#settings labels
+msgctxt "#30000"
+msgid "Connection settings"
+msgstr ""
+
+msgctxt "#30001"
+msgid "Tvheadend hostname or IP address"
+msgstr ""
+
+msgctxt "#30002"
+msgid "HTTP port"
+msgstr ""
+
+msgctxt "#30003"
+msgid "HTSP port"
+msgstr ""
+
+msgctxt "#30004"
+msgid "Username"
+msgstr ""
+
+msgctxt "#30005"
+msgid "Password"
+msgstr ""
+
+msgctxt "#30006"
+msgid "Connection timeout (seconds)"
+msgstr ""
+
+msgctxt "#30007"
+msgid "Response timeout (seconds)"
+msgstr ""
+
+msgctxt "#30008"
+msgid "Advanced settings"
+msgstr ""
+
+msgctxt "#30009"
+msgid "Streaming settings"
+msgstr ""
+
+msgctxt "#30010"
+msgid "Timer settings"
+msgstr ""
+
+msgctxt "#30011"
+msgid "Use HTTPS"
+msgstr ""
+
+msgctxt "#30012"
+msgid "Server MAC for Wake-on-LAN"
+msgstr ""
+
+#empty strings from id 30013 to 30049
+msgctxt "#30050"
+msgid "Auto recordings"
+msgstr ""
+
+msgctxt "#30051"
+msgid "Start time window calculation"
+msgstr ""
+
+msgctxt "#30052"
+msgid "Strict (start time + end time)"
+msgstr ""
+
+msgctxt "#30053"
+msgid "Relaxed (start time +/- margin)"
+msgstr ""
+
+msgctxt "#30054"
+msgid "Maximum start time margin (minutes)"
+msgstr ""
+
+msgctxt "#30055"
+msgid "Default priority"
+msgstr ""
+
+msgctxt "#30056"
+msgid "Default lifetime"
+msgstr ""
+
+msgctxt "#30057"
+msgid "Default duplicate detection"
+msgstr ""
+
+msgctxt "#30058"
+msgid "Defaults for new timers"
+msgstr ""
+
+msgctxt "#30059"
+msgid "Scheduled recordings"
+msgstr ""
+
+msgctxt "#30060"
+msgid "Ignore duplicates (tvh 4.3+)"
+msgstr ""
+
+msgctxt "#30061"
+msgid "Use regular expressions (regex) for programme matching"
+msgstr ""
+
+#empty strings from id 30062 to 30099
+msgctxt "#30100"
+msgid "Data transfer"
+msgstr ""
+
+msgctxt "#30101"
+msgid "Asynchronous EPG transfer"
+msgstr ""
+
+#empty strings from id 30102 to 30199
+msgctxt "#30200"
+msgid "Debugging"
+msgstr ""
+
+msgctxt "#30201"
+msgid "Trace (detailed)"
+msgstr ""
+
+#empty strings from id 30202 to 30299
+msgctxt "#30300"
+msgid "HTSP version mismatch (supported: v%d, required: v%d). Please update tvheadend."
+msgstr ""
+
+#empty strings from id 30301 to 30349
+#. Timer type representation
+#: src/Tvheadend.cpp
+msgctxt "#30350"
+msgid "One Time (Scheduled by timer rule)"
+msgstr ""
+
+#. Recording priority representation
+#: src/Tvheadend.cpp
+msgctxt "#30351"
+msgid "Important (Highest)"
+msgstr ""
+
+#. Recording priority representation
+#: src/Tvheadend.cpp
+msgctxt "#30352"
+msgid "High"
+msgstr ""
+
+#. Recording priority representation
+#: src/Tvheadend.cpp
+msgctxt "#30353"
+msgid "Normal"
+msgstr ""
+
+#. Recording priority representation
+#: src/Tvheadend.cpp
+msgctxt "#30354"
+msgid "Low"
+msgstr ""
+
+#. Recording priority representation
+#: src/Tvheadend.cpp
+msgctxt "#30355"
+msgid "Unimportant (Lowest)"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30356"
+msgid "Record all episodes"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30357"
+msgid "Record if episode number differs"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30358"
+msgid "Record if episode name differs"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30359"
+msgid "Record if description differs"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30360"
+msgid "Record max once per week"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30361"
+msgid "Record max once per day"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30362"
+msgid "This rule only: Record if episode number differs"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30363"
+msgid "This rule only: Record if episode name differs"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30364"
+msgid "This rule only: Record if title differs"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30365"
+msgid "This rule only: Record if description differs"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30366"
+msgid "This rule only: Record max once per week"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30367"
+msgid "This rule only: Record max once per day"
+msgstr ""
+
+#. Recording priority representation
+#: src/Tvheadend.cpp
+msgctxt "#30368"
+msgid "Default"
+msgstr ""
+
+#. Timer type representation
+#: src/Tvheadend.cpp
+msgctxt "#30369"
+msgid "Timer rule (series link)"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30370"
+msgid "Record max once per month"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30371"
+msgid "This rule only: Record max once per month"
+msgstr ""
+
+#. Prevent duplicate episodes representation
+#: src/Tvheadend.cpp
+msgctxt "#30372"
+msgid "Record if unique episode according EPG/XMLTV"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30373"
+msgid "Until space needed"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30374"
+msgid "Forever"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30375"
+msgid "1 day"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30376"
+msgid "3 days"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30377"
+msgid "5 days"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30378"
+msgid "1 week"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30379"
+msgid "2 weeks"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30380"
+msgid "3 weeks"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30381"
+msgid "1 month"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30382"
+msgid "2 months"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30383"
+msgid "3 months"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30384"
+msgid "6 months"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30385"
+msgid "1 year"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30386"
+msgid "2 years"
+msgstr ""
+
+#. Recording lifetime representation
+#: src/Tvheadend.cpp
+msgctxt "#30387"
+msgid "3 years"
+msgstr ""
+
+#. Recording lifetime representation (for setting dialog only)
+msgctxt "#30388"
+msgid "Until space needed (tvh 4.1+)"
+msgstr ""
+
+#. Recording lifetime representation (for setting dialog only)
+msgctxt "#30389"
+msgid "Forever (tvh 4.1+)"
+msgstr ""
+
+#. Recording lifetime representation
+msgctxt "#30390"
+msgid "Use backend setting"
+msgstr ""
+
+#empty strings from id 30391 to 30399
+msgctxt "#30400"
+msgid "Predictive tuning"
+msgstr ""
+
+msgctxt "#30401"
+msgid "Number of subscriptions to use"
+msgstr ""
+
+msgctxt "#30402"
+msgid "Unused subscription close delay (seconds)"
+msgstr ""
+
+msgctxt "#30403"
+msgid "Use predictive tuning to speedup channel switches"
+msgstr ""
+
+#empty strings from id 30404 to 30449
+msgctxt "#30450"
+msgid "No free adapter available"
+msgstr ""
+
+msgctxt "#30451"
+msgid "Scrambled channel"
+msgstr ""
+
+msgctxt "#30452"
+msgid "No signal"
+msgstr ""
+
+msgctxt "#30453"
+msgid "Tuning failed"
+msgstr ""
+
+msgctxt "#30454"
+msgid "User limit reached"
+msgstr ""
+
+msgctxt "#30455"
+msgid "No access"
+msgstr ""
+
+msgctxt "#30456"
+msgid "Subscription error"
+msgstr ""
+
+#empty strings from id 30457 to 30499
+msgctxt "#30500"
+msgid "Streaming profile"
+msgstr ""
+
+msgctxt "#30501"
+msgid "Profile to use (empty = default)"
+msgstr ""
+
+#. Check streaming profile validity during startup
+#: src/client.cpp
+msgctxt "#30502"
+msgid "Streaming profile %s is not available"
+msgstr ""
+
+msgctxt "#30503"
+msgid "Data transfer"
+msgstr ""
+
+msgctxt "#30504"
+msgid "Stream read chunk size for recordings (KB)"
+msgstr ""
+
+msgctxt "#30505"
+msgid "Use HTTP streaming for channels"
+msgstr ""
+
+#empty strings from id 30506 to 30509
+msgctxt "#30510"
+msgid "Recordings"
+msgstr ""
+
+msgctxt "#30511"
+msgid "Server based play status"
+msgstr ""
diff --git a/pvr.hts/resources/language/resource.language.be_by/strings.po b/pvr.hts/resources/language/resource.language.be_by/strings.po
index af2e961..e31b41b 100644
--- a/pvr.hts/resources/language/resource.language.be_by/strings.po
+++ b/pvr.hts/resources/language/resource.language.be_by/strings.po
@@ -5,9 +5,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2021-08-06 17:29+0000\n"
+"PO-Revision-Date: 2022-02-27 09:34+0000\n"
 "Last-Translator: Christian Gade <gade@kodi.tv>\n"
 "Language-Team: Belarusian <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/be_by/>\n"
 "Language: be_by\n"
@@ -15,7 +15,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; 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.7.2\n"
+"X-Generator: Weblate 4.11\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -168,7 +168,7 @@ msgstr "Высокая"
 #. Recording priority representation
 msgctxt "#30353"
 msgid "Normal"
-msgstr "Normal"
+msgstr "Звычайны"
 
 #. Recording priority representation
 msgctxt "#30354"
diff --git a/pvr.hts/resources/language/resource.language.cs_cz/strings.po b/pvr.hts/resources/language/resource.language.cs_cz/strings.po
index 0851560..62f6532 100644
--- a/pvr.hts/resources/language/resource.language.cs_cz/strings.po
+++ b/pvr.hts/resources/language/resource.language.cs_cz/strings.po
@@ -5,17 +5,17 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2021-06-28 13:56+0000\n"
-"Last-Translator: Jan Krejčí <hokronx@gmail.com>\n"
+"PO-Revision-Date: 2022-03-29 23:07+0000\n"
+"Last-Translator: Kryštof Černý <cleverline1mc@gmail.com>\n"
 "Language-Team: Czech <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/cs_cz/>\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.7\n"
+"X-Generator: Weblate 4.11.2\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -23,7 +23,7 @@ msgstr "Rozhraní Kodi pro Tvheadend"
 
 msgctxt "Addon Description"
 msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
-msgstr "Rozhraní Tvheadend; podporuje streamování živého vysílání a nahrávání, televizní program, časovače."
+msgstr "Rozhraní Tvheadend; podporuje streamování živého vysílání a nahrávání, televizní program, časovače"
 
 msgctxt "#30000"
 msgid "Connection settings"
diff --git a/pvr.hts/resources/language/resource.language.da_dk/strings.po b/pvr.hts/resources/language/resource.language.da_dk/strings.po
index c6dd2f8..a40c646 100644
--- a/pvr.hts/resources/language/resource.language.da_dk/strings.po
+++ b/pvr.hts/resources/language/resource.language.da_dk/strings.po
@@ -5,9 +5,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2021-11-14 14:13+0000\n"
+"PO-Revision-Date: 2022-08-12 22:30+0000\n"
 "Last-Translator: Christian Gade <gade@kodi.tv>\n"
 "Language-Team: Danish <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/da_dk/>\n"
 "Language: da_dk\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.9\n"
+"X-Generator: Weblate 4.13\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -23,7 +23,7 @@ msgstr "Kodis brugerflade til Tvheadend"
 
 msgctxt "Addon Description"
 msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
-msgstr "Tvheadend-brugerflade; understøtter streaming af direkte tv og optagelser, EPG og timere"
+msgstr "Tvheadend-brugerflade; understøtter streaming af direkte tv og optagelser, EPG og timeroptagelser"
 
 msgctxt "#30000"
 msgid "Connection settings"
diff --git a/pvr.hts/resources/language/resource.language.de_de/strings.po b/pvr.hts/resources/language/resource.language.de_de/strings.po
index 08b8cd9..03f9bee 100644
--- a/pvr.hts/resources/language/resource.language.de_de/strings.po
+++ b/pvr.hts/resources/language/resource.language.de_de/strings.po
@@ -5,9 +5,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2021-07-19 21:43+0000\n"
+"PO-Revision-Date: 2023-02-01 03:15+0000\n"
 "Last-Translator: Kai Sommerfeld <kai.sommerfeld@gmx.com>\n"
 "Language-Team: German <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/de_de/>\n"
 "Language: de_de\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.7.1\n"
+"X-Generator: Weblate 4.15.2\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -83,7 +83,7 @@ msgstr "Auto-Aufnahmen"
 
 msgctxt "#30051"
 msgid "Start time window calculation"
-msgstr "Startfenster-Berechnung"
+msgstr "Startfensterberechnung"
 
 msgctxt "#30052"
 msgid "Strict (start time + end time)"
@@ -99,15 +99,15 @@ msgstr "Max. Startzeitspanne (Minuten)"
 
 msgctxt "#30055"
 msgid "Default priority"
-msgstr "Standard für Aufnahme-Priorität"
+msgstr "Standard für Aufnahmepriorität"
 
 msgctxt "#30056"
 msgid "Default lifetime"
-msgstr "Standard für Aufnahme-Lebensdauer"
+msgstr "Standard für Aufnahmelebensdauer"
 
 msgctxt "#30057"
 msgid "Default duplicate detection"
-msgstr "Standard für Duplikat-Erkennung"
+msgstr "Standard für Duplikaterkennung"
 
 msgctxt "#30058"
 msgid "Defaults for new timers"
@@ -123,7 +123,7 @@ msgstr "Duplikate ignorieren (tvh 4.3+)"
 
 msgctxt "#30061"
 msgid "Use regular expressions (regex) for programme matching"
-msgstr "Reguläre Ausdrücke (regex) zum Finden von Sendungen verwenden"
+msgstr "Reguläre Ausdrücke (regex) zum Finden von Programminhalten verwenden"
 
 msgctxt "#30100"
 msgid "Data transfer"
@@ -148,7 +148,7 @@ msgstr "HTSP-Versionskonflikt (unterstützt: v%d, benötigt: v%d). Bitte tvheade
 #. Timer type representation
 msgctxt "#30350"
 msgid "One Time (Scheduled by timer rule)"
-msgstr "Einmalig (Erzeugt von Timer-Regel)"
+msgstr "Einmalig (Erzeugt von Timerregel)"
 
 #. Recording priority representation
 msgctxt "#30351"
@@ -243,7 +243,7 @@ msgstr "Standard"
 #. Timer type representation
 msgctxt "#30369"
 msgid "Timer rule (series link)"
-msgstr "Timer-Regel (Serien-Link)"
+msgstr "Timerregel (Serienlink)"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30370"
@@ -364,7 +364,7 @@ msgstr "Schließen unbenutzter Subscriptions nach: (Sekunden)"
 
 msgctxt "#30403"
 msgid "Use predictive tuning to speedup channel switches"
-msgstr "Kanalwechsel beschleunigen (Predictive Tuning)"
+msgstr "Senderwechsel beschleunigen (Voraussagendes Tuning)"
 
 msgctxt "#30450"
 msgid "No free adapter available"
@@ -372,7 +372,7 @@ msgstr "Kein freier Adapter verfügbar"
 
 msgctxt "#30451"
 msgid "Scrambled channel"
-msgstr "Verschlüsselter Kanal"
+msgstr "Verschlüsselter Sender"
 
 msgctxt "#30452"
 msgid "No signal"
@@ -384,7 +384,7 @@ msgstr "Tuning fehlgeschlagen"
 
 msgctxt "#30454"
 msgid "User limit reached"
-msgstr "Benutzer-Limit erreicht"
+msgstr "Benutzerlimit erreicht"
 
 msgctxt "#30455"
 msgid "No access"
@@ -396,7 +396,7 @@ msgstr "Subscription-Fehler"
 
 msgctxt "#30500"
 msgid "Streaming profile"
-msgstr "Streaming-Profil"
+msgstr "Streamingprofil"
 
 msgctxt "#30501"
 msgid "Profile to use (empty = default)"
@@ -405,7 +405,7 @@ msgstr "Profil (Leer = Standard)"
 #. Check streaming profile validity during startup
 msgctxt "#30502"
 msgid "Streaming profile %s is not available"
-msgstr "Streaming-Profil %s ist nicht verfügbar"
+msgstr "Streamingprofil %s ist nicht verfügbar"
 
 msgctxt "#30503"
 msgid "Data transfer"
@@ -413,11 +413,11 @@ msgstr "Datenübertragung"
 
 msgctxt "#30504"
 msgid "Stream read chunk size for recordings (KB)"
-msgstr "Blockgröße beim Lesen von Aufnahme-Streams (KB)"
+msgstr "Blockgröße beim Lesen von Aufnahmestreams (KB)"
 
 msgctxt "#30505"
 msgid "Use HTTP streaming for channels"
-msgstr "HTTP zum Streamen der Kanäle verwenden"
+msgstr "HTTP zum Streamen der Sender verwenden"
 
 msgctxt "#30510"
 msgid "Recordings"
@@ -425,4 +425,4 @@ msgstr "Aufnahmen"
 
 msgctxt "#30511"
 msgid "Server based play status"
-msgstr "Server-basierter Abspielstatus"
+msgstr "Serverbasierter Abspielstatus"
diff --git a/pvr.hts/resources/language/resource.language.es_es/strings.po b/pvr.hts/resources/language/resource.language.es_es/strings.po
index 5f5fa01..f608115 100644
--- a/pvr.hts/resources/language/resource.language.es_es/strings.po
+++ b/pvr.hts/resources/language/resource.language.es_es/strings.po
@@ -5,17 +5,17 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2021-07-03 17:29+0000\n"
-"Last-Translator: Alfonso Cachero <alfonso.cachero@gmail.com>\n"
+"PO-Revision-Date: 2023-02-11 10:41+0000\n"
+"Last-Translator: José Antonio Alvarado <jalvarado0.eses@gmail.com>\n"
 "Language-Team: Spanish (Spain) <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/es_es/>\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.7.1\n"
+"X-Generator: Weblate 4.15.2\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -23,7 +23,7 @@ msgstr "Interfaz Kodi para Tvheadend"
 
 msgctxt "Addon Description"
 msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
-msgstr "Interfaz Tvheadend; soporta la reproducción de TV en vivo, grabación, guía de programación, temporizadores"
+msgstr "Interfaz Tvheadend; transmisión de TV en directo y grabaciones, EPG, temporizadores"
 
 msgctxt "#30000"
 msgid "Connection settings"
@@ -63,7 +63,7 @@ msgstr "Ajustes avanzados"
 
 msgctxt "#30009"
 msgid "Streaming settings"
-msgstr "Ajustes de streaming"
+msgstr "Ajustes de transmisión"
 
 msgctxt "#30010"
 msgid "Timer settings"
@@ -111,7 +111,7 @@ msgstr "Detección de duplicados por defecto"
 
 msgctxt "#30058"
 msgid "Defaults for new timers"
-msgstr "Por defecto para nuevos temporizadores"
+msgstr "Valores por defecto para nuevos temporizadores"
 
 msgctxt "#30059"
 msgid "Scheduled recordings"
@@ -396,7 +396,7 @@ msgstr "Error de suscripción"
 
 msgctxt "#30500"
 msgid "Streaming profile"
-msgstr "Perfil de streaming"
+msgstr "Perfil de transmisión"
 
 msgctxt "#30501"
 msgid "Profile to use (empty = default)"
@@ -405,7 +405,7 @@ msgstr "Perfil a usar (vacío = por defecto)"
 #. Check streaming profile validity during startup
 msgctxt "#30502"
 msgid "Streaming profile %s is not available"
-msgstr "El perfil de streaming %s no está disponible"
+msgstr "El perfil de transmisión %s no está disponible"
 
 msgctxt "#30503"
 msgid "Data transfer"
@@ -413,11 +413,11 @@ msgstr "Transferencia de datos"
 
 msgctxt "#30504"
 msgid "Stream read chunk size for recordings (KB)"
-msgstr "Tamaño del pedacito de lectura para las grabaciones (KB)"
+msgstr "Tamaño del bloque de lectura de la transmisión para grabaciones (KB)"
 
 msgctxt "#30505"
 msgid "Use HTTP streaming for channels"
-msgstr "Usar streaming HTTP para los canales"
+msgstr "Utilizar transmisión HTTP para los canales"
 
 msgctxt "#30510"
 msgid "Recordings"
diff --git a/pvr.hts/resources/language/resource.language.fi_fi/strings.po b/pvr.hts/resources/language/resource.language.fi_fi/strings.po
index 2d19aba..36ffdaf 100644
--- a/pvr.hts/resources/language/resource.language.fi_fi/strings.po
+++ b/pvr.hts/resources/language/resource.language.fi_fi/strings.po
@@ -5,24 +5,25 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\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"
-"Last-Translator: Kodi Translation Team\n"
-"Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/kodi-main/language/fi_FI/)\n"
-"Language: fi_FI\n"
+"PO-Revision-Date: 2022-08-26 10:14+0000\n"
+"Last-Translator: Oskari Lavinto <olavinto@protonmail.com>\n"
+"Language-Team: Finnish <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/fi_fi/>\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"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.13\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
-msgstr "Kodin Tvheadend-asiakasohjelma"
+msgstr "Tvheadend-käyttöliittymä Kodille"
 
 msgctxt "Addon Description"
 msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
-msgstr "Tvheadend-asiakasohjelma. Tukee suorien tv-lähetysten ja tallennusten katsomista, ohjelmaopasta ja ohjelmien ajastamista."
+msgstr "Tvheadend-käyttöliittymä, joka tukee televisiolähetysten ja tallenteiden suoratoistoa, ohjelmaopasta ja ajastuksia."
 
 msgctxt "#30000"
 msgid "Connection settings"
@@ -102,11 +103,11 @@ msgstr "Tärkeys"
 
 msgctxt "#30056"
 msgid "Default lifetime"
-msgstr "Elinikä"
+msgstr "Oletusarvoinen elinaika"
 
 msgctxt "#30057"
 msgid "Default duplicate detection"
-msgstr "Kaksoiskappaleiden tunnistus"
+msgstr "Oletusarvoinen kaksoiskappaleiden tunnistus"
 
 msgctxt "#30058"
 msgid "Defaults for new timers"
@@ -134,7 +135,7 @@ msgstr "Epäsynkroninen ohjelmaoppaan lataus"
 
 msgctxt "#30200"
 msgid "Debugging"
-msgstr "Virheenkorjaus"
+msgstr "Vianselvitys"
 
 msgctxt "#30201"
 msgid "Trace (detailed)"
diff --git a/pvr.hts/resources/language/resource.language.fr_fr/strings.po b/pvr.hts/resources/language/resource.language.fr_fr/strings.po
index 8701953..778fd92 100644
--- a/pvr.hts/resources/language/resource.language.fr_fr/strings.po
+++ b/pvr.hts/resources/language/resource.language.fr_fr/strings.po
@@ -5,16 +5,17 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\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"
-"Last-Translator: Kodi Translation Team\n"
-"Language-Team: French (France) (http://www.transifex.com/projects/p/kodi-main/language/fr_FR/)\n"
-"Language: fr_FR\n"
+"PO-Revision-Date: 2022-12-28 16:23+0000\n"
+"Last-Translator: skypichat <skypichat@hotmail.fr>\n"
+"Language-Team: French (France) <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/fr_fr/>\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"
+"Plural-Forms: nplurals=2; plural=n > 1;\n"
+"X-Generator: Weblate 4.15\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -22,7 +23,7 @@ msgstr "Interface logicielle pour Tvheadend"
 
 msgctxt "Addon Description"
 msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
-msgstr "Interface logicielle pour Tvheadend gérant la lecture en continu de la TV en direct et des enregistrements, le guide électronique des programmes TV et les programmations."
+msgstr "Interface logicielle pour Tvheadend gérant la lecture en continu de la TV en direct et les enregistrements, le guide électronique des programmes TV et les programmations."
 
 msgctxt "#30000"
 msgid "Connection settings"
@@ -70,15 +71,15 @@ msgstr "Paramètres de la programmation"
 
 msgctxt "#30011"
 msgid "Use HTTPS"
-msgstr ""
+msgstr "Utiliser HTTPS"
 
 msgctxt "#30012"
 msgid "Server MAC for Wake-on-LAN"
-msgstr ""
+msgstr "Serveur MAC pour Wake-on-LAN"
 
 msgctxt "#30050"
 msgid "Auto recordings"
-msgstr "Enregistrements auto."
+msgstr "Enregistrements auto"
 
 msgctxt "#30051"
 msgid "Start time window calculation"
@@ -122,7 +123,7 @@ msgstr "Ignorer les doublons (tvh 4.3+)"
 
 msgctxt "#30061"
 msgid "Use regular expressions (regex) for programme matching"
-msgstr ""
+msgstr "Utiliser des expressions régulières (regex) pour la correspondance de programme"
 
 msgctxt "#30100"
 msgid "Data transfer"
@@ -202,7 +203,7 @@ msgstr "Enregistrer max. une fois pas semaine"
 #. Prevent duplicate episodes representation
 msgctxt "#30361"
 msgid "Record max once per day"
-msgstr "Enregistrer max. une fois par jour"
+msgstr "Enregistrer au maximum une fois par jour"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30362"
@@ -347,7 +348,7 @@ msgstr "Indéfiniment (tvh 4.1+)"
 #. Recording lifetime representation
 msgctxt "#30390"
 msgid "Use backend setting"
-msgstr ""
+msgstr "Utiliser le paramètre principal"
 
 msgctxt "#30400"
 msgid "Predictive tuning"
@@ -404,7 +405,7 @@ msgstr "Profil à utiliser (vide = prédéfini)"
 #. Check streaming profile validity during startup
 msgctxt "#30502"
 msgid "Streaming profile %s is not available"
-msgstr "Le profil %s de diffusion par flux n'est pas disponible."
+msgstr "Le profil %s de diffusion par flux n'est pas disponible"
 
 msgctxt "#30503"
 msgid "Data transfer"
@@ -416,7 +417,7 @@ msgstr "Taille des blocs de flux de lecture des enregistrements (ko)"
 
 msgctxt "#30505"
 msgid "Use HTTP streaming for channels"
-msgstr ""
+msgstr "Utiliser le streaming HTTP pour les chaînes"
 
 msgctxt "#30510"
 msgid "Recordings"
diff --git a/pvr.hts/resources/language/resource.language.hr_hr/strings.po b/pvr.hts/resources/language/resource.language.hr_hr/strings.po
index 67607e9..886a84d 100644
--- a/pvr.hts/resources/language/resource.language.hr_hr/strings.po
+++ b/pvr.hts/resources/language/resource.language.hr_hr/strings.po
@@ -5,25 +5,25 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2021-06-28 13:56+0000\n"
-"Last-Translator: Christian Gade <gade@kodi.tv>\n"
+"PO-Revision-Date: 2023-01-04 17:15+0000\n"
+"Last-Translator: gogogogi <trebelnik2@gmail.com>\n"
 "Language-Team: Croatian <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/hr_hr/>\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.7\n"
+"X-Generator: Weblate 4.15\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
-msgstr "Kodi sučelje za Tvheadend"
+msgstr "Kodi pozadinski softver za Tvheadend"
 
 msgctxt "Addon Description"
 msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
-msgstr "Tvheadend pozadinski softver podržava gledanje i snimanje TV programa, elektronski programski vodič (EPG) i zakazano snimanje."
+msgstr "Tvheadend sučelje podržava gledanje i snimanje TV programa, elektronski programski vodič (EPG) i zakazano snimanje"
 
 msgctxt "#30000"
 msgid "Connection settings"
@@ -71,11 +71,11 @@ msgstr "Zakazana snimanja"
 
 msgctxt "#30011"
 msgid "Use HTTPS"
-msgstr ""
+msgstr "Koristi HTTPS"
 
 msgctxt "#30012"
 msgid "Server MAC for Wake-on-LAN"
-msgstr ""
+msgstr "MAC poslužitelja za Probudi putem LAN-a"
 
 msgctxt "#30050"
 msgid "Auto recordings"
@@ -123,7 +123,7 @@ msgstr "Zanemari duplikate (tvh 4.3+)"
 
 msgctxt "#30061"
 msgid "Use regular expressions (regex) for programme matching"
-msgstr ""
+msgstr "Koristi uobičajene izraze (regex) za podudaranje programa"
 
 msgctxt "#30100"
 msgid "Data transfer"
@@ -348,7 +348,7 @@ msgstr "Zauvijek (tvh 4.1+)"
 #. Recording lifetime representation
 msgctxt "#30390"
 msgid "Use backend setting"
-msgstr ""
+msgstr "Koristi postavke pozadinskog softvera"
 
 msgctxt "#30400"
 msgid "Predictive tuning"
@@ -417,7 +417,7 @@ msgstr "Veličina čitanja dijela strujanja za snimanja (KB)"
 
 msgctxt "#30505"
 msgid "Use HTTP streaming for channels"
-msgstr ""
+msgstr "Koristi HTTP strujanja za programe"
 
 msgctxt "#30510"
 msgid "Recordings"
diff --git a/pvr.hts/resources/language/resource.language.it_it/strings.po b/pvr.hts/resources/language/resource.language.it_it/strings.po
index 9072331..d7660cb 100644
--- a/pvr.hts/resources/language/resource.language.it_it/strings.po
+++ b/pvr.hts/resources/language/resource.language.it_it/strings.po
@@ -5,32 +5,33 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\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"
-"Last-Translator: Kodi Translation Team\n"
-"Language-Team: Italian (Italy) (http://www.transifex.com/projects/p/kodi-main/language/it_IT/)\n"
-"Language: it_IT\n"
+"PO-Revision-Date: 2023-01-23 13:25+0000\n"
+"Last-Translator: Massimo Pissarello <mapi68@gmail.com>\n"
+"Language-Team: Italian <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/it_it/>\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"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 4.15.1\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
-msgstr "Frontend di Kodi per Tvheadend"
+msgstr "Frontend Kodi per Tvheadend"
 
 msgctxt "Addon Description"
 msgid "Tvheadend frontend; supporting streaming of Live TV & Recordings, EPG, Timers"
-msgstr "Frontend di Tvheadend; supporta lo streaming di Live TV & Registrazione, EPG, Timers"
+msgstr "Frontend Tvheadend; supporta lo stream e la registrazione di Live TV, EPG, timer"
 
 msgctxt "#30000"
 msgid "Connection settings"
-msgstr "Impostazioni di connessione"
+msgstr "Impostazioni connessione"
 
 msgctxt "#30001"
 msgid "Tvheadend hostname or IP address"
-msgstr "Tvheadend hostname o indirizzo IP"
+msgstr "Nome host Tvheadend o indirizzo IP"
 
 msgctxt "#30002"
 msgid "HTTP port"
@@ -50,7 +51,7 @@ msgstr "Password"
 
 msgctxt "#30006"
 msgid "Connection timeout (seconds)"
-msgstr "Timeout Connessione (secondi)"
+msgstr "Timeout connessione (secondi)"
 
 msgctxt "#30007"
 msgid "Response timeout (seconds)"
@@ -62,31 +63,31 @@ msgstr "Impostazioni avanzate"
 
 msgctxt "#30009"
 msgid "Streaming settings"
-msgstr "Impostazioni Streaming"
+msgstr "Impostazioni streaming"
 
 msgctxt "#30010"
 msgid "Timer settings"
-msgstr "Impostazioni Timer"
+msgstr "Impostazioni timer"
 
 msgctxt "#30011"
 msgid "Use HTTPS"
-msgstr ""
+msgstr "Usa HTTPS"
 
 msgctxt "#30012"
 msgid "Server MAC for Wake-on-LAN"
-msgstr ""
+msgstr "Server MAC per Wake-on-LAN"
 
 msgctxt "#30050"
 msgid "Auto recordings"
-msgstr "Registrazioni Automatiche"
+msgstr "Registrazioni automatiche"
 
 msgctxt "#30051"
 msgid "Start time window calculation"
-msgstr "Avvia calcolo della finestra temporale"
+msgstr "Avvia calcolo finestra temporale"
 
 msgctxt "#30052"
 msgid "Strict (start time + end time)"
-msgstr "Stretto necessario (ora inizio + ora fine)"
+msgstr "Ristretto (ora inizio + ora fine)"
 
 msgctxt "#30053"
 msgid "Relaxed (start time +/- margin)"
@@ -94,7 +95,7 @@ msgstr "Rilassato (ora inizio +/- margine)"
 
 msgctxt "#30054"
 msgid "Maximum start time margin (minutes)"
-msgstr "Massimo margine di tempo (minuti)"
+msgstr "Margine massimo orario d'inizio (minuti)"
 
 msgctxt "#30055"
 msgid "Default priority"
@@ -110,11 +111,11 @@ msgstr "Rilevamento dei duplicati predefinito"
 
 msgctxt "#30058"
 msgid "Defaults for new timers"
-msgstr "Preimpostazione per nuovi timer"
+msgstr "Impostazioni predefinite per i nuovi timer"
 
 msgctxt "#30059"
 msgid "Scheduled recordings"
-msgstr "Registrazioni programmate"
+msgstr "Registrazioni pianificate"
 
 msgctxt "#30060"
 msgid "Ignore duplicates (tvh 4.3+)"
@@ -122,7 +123,7 @@ msgstr "Ignora duplicati (tvh 4.3+)"
 
 msgctxt "#30061"
 msgid "Use regular expressions (regex) for programme matching"
-msgstr ""
+msgstr "Usa le espressioni regolari (regex) per la corrispondenza dei programmi"
 
 msgctxt "#30100"
 msgid "Data transfer"
@@ -134,7 +135,7 @@ msgstr "Trasferimento EPG asincrono"
 
 msgctxt "#30200"
 msgid "Debugging"
-msgstr "Debugging"
+msgstr "Debug"
 
 msgctxt "#30201"
 msgid "Trace (detailed)"
@@ -142,17 +143,17 @@ msgstr "Traccia (dettagliata)"
 
 msgctxt "#30300"
 msgid "HTSP version mismatch (supported: v%d, required: v%d). Please update tvheadend."
-msgstr "La versione di HTSP non corrisponde (supportata: v%d, necessaria: v&d). Aggiorna tvheadend, per favore."
+msgstr "Mancata corrispondenza della versione HTSP (supportata: v%d, richiesta: v%d). Si prega di aggiornare Tvheadend."
 
 #. Timer type representation
 msgctxt "#30350"
 msgid "One Time (Scheduled by timer rule)"
-msgstr "Una volta (Pianificato da timer)"
+msgstr "Una volta (pianificato da regola timer)"
 
 #. Recording priority representation
 msgctxt "#30351"
 msgid "Important (Highest)"
-msgstr "Importante (Maggiore)"
+msgstr "Importante (più alta)"
 
 #. Recording priority representation
 msgctxt "#30352"
@@ -172,7 +173,7 @@ msgstr "Bassa"
 #. Recording priority representation
 msgctxt "#30355"
 msgid "Unimportant (Lowest)"
-msgstr "Meno importante (Minore)"
+msgstr "Non importante (più bassa)"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30356"
@@ -182,22 +183,22 @@ msgstr "Registra tutti gli episodi"
 #. Prevent duplicate episodes representation
 msgctxt "#30357"
 msgid "Record if episode number differs"
-msgstr "Registra se il numero dell'episodio è differente"
+msgstr "Registra se il numero dell'episodio è diverso"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30358"
 msgid "Record if episode name differs"
-msgstr "Registra se il nome dell'episodio è differente"
+msgstr "Registra se il nome dell'episodio è diverso"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30359"
 msgid "Record if description differs"
-msgstr "Registra se la descrizione è differente"
+msgstr "Registra se la descrizione è diversa"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30360"
 msgid "Record max once per week"
-msgstr "Registra al massimo una volta a settimana"
+msgstr "Registra al massimo una volta alla settimana"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30361"
@@ -207,32 +208,32 @@ msgstr "Registra al massimo una volta al giorno"
 #. Prevent duplicate episodes representation
 msgctxt "#30362"
 msgid "This rule only: Record if episode number differs"
-msgstr "Solo questa regola: Registra se il numero dell'episodio è differente"
+msgstr "Unica regola: registra se il numero dell'episodio è diverso"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30363"
 msgid "This rule only: Record if episode name differs"
-msgstr "Solo questa regola: Registra se il nome dell'episodio è differente"
+msgstr "Unica regola: registra se il nome dell'episodio è diverso"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30364"
 msgid "This rule only: Record if title differs"
-msgstr "Solo questa regola: Registra se il titolo è differente"
+msgstr "Unica regola: registra se il titolo è diverso"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30365"
 msgid "This rule only: Record if description differs"
-msgstr "Solo questa regola: Registra se la descrizione è differente"
+msgstr "Unica regola: registra se la descrizione è diversa"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30366"
 msgid "This rule only: Record max once per week"
-msgstr "Solo questa regola: Registra al massimo una volta a settimana"
+msgstr "Unica regola: registra massimo una volta alla settimana"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30367"
 msgid "This rule only: Record max once per day"
-msgstr "Solo questa regola: Registra al massimo una volta al giorno"
+msgstr "Unica regola: registra massimo una volta al giorno"
 
 #. Recording priority representation
 msgctxt "#30368"
@@ -252,17 +253,17 @@ msgstr "Registra al massimo una volta al mese"
 #. Prevent duplicate episodes representation
 msgctxt "#30371"
 msgid "This rule only: Record max once per month"
-msgstr "Solo questa regola: Registra al massimo una volta al mese"
+msgstr "Unica regola: registra al massimo una volta al mese"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30372"
 msgid "Record if unique episode according EPG/XMLTV"
-msgstr "Registra se unico episodio in base a EPG/XMLTV"
+msgstr "Registra se episodio unico secondo EPG/XMLTV"
 
 #. Recording lifetime representation
 msgctxt "#30373"
 msgid "Until space needed"
-msgstr "Fino a spazio necessario"
+msgstr "Fino allo spazio necessario"
 
 #. Recording lifetime representation
 msgctxt "#30374"
@@ -287,7 +288,7 @@ msgstr "5 giorni"
 #. Recording lifetime representation
 msgctxt "#30378"
 msgid "1 week"
-msgstr "una settimana"
+msgstr "1 settimana"
 
 #. Recording lifetime representation
 msgctxt "#30379"
@@ -302,7 +303,7 @@ msgstr "3 settimane"
 #. Recording lifetime representation
 msgctxt "#30381"
 msgid "1 month"
-msgstr "un mese"
+msgstr "1 mese"
 
 #. Recording lifetime representation
 msgctxt "#30382"
@@ -322,7 +323,7 @@ msgstr "6 mesi"
 #. Recording lifetime representation
 msgctxt "#30385"
 msgid "1 year"
-msgstr "un anno"
+msgstr "1 anno"
 
 #. Recording lifetime representation
 msgctxt "#30386"
@@ -337,7 +338,7 @@ msgstr "3 anni"
 #. Recording lifetime representation (for setting dialog only)
 msgctxt "#30388"
 msgid "Until space needed (tvh 4.1+)"
-msgstr "Fino a richiesta di spazio (tvh 4.1+)"
+msgstr "Fino allo spazio necessario (tvh 4.1+)"
 
 #. Recording lifetime representation (for setting dialog only)
 msgctxt "#30389"
@@ -347,11 +348,11 @@ msgstr "Per sempre (tvh 4.1+)"
 #. Recording lifetime representation
 msgctxt "#30390"
 msgid "Use backend setting"
-msgstr ""
+msgstr "Usa impostazione del backend"
 
 msgctxt "#30400"
 msgid "Predictive tuning"
-msgstr "Sintonizzazione predittiva"
+msgstr "Prevedi sintonizzazione"
 
 msgctxt "#30401"
 msgid "Number of subscriptions to use"
@@ -359,11 +360,11 @@ msgstr "Numero di sottoscrizioni da usare"
 
 msgctxt "#30402"
 msgid "Unused subscription close delay (seconds)"
-msgstr "Ritardo nella chiusura della sottoscrizioni inutilizzate (secondi)"
+msgstr "Ritardo chiusura sottoscrizione inutilizzata (secondi)"
 
 msgctxt "#30403"
 msgid "Use predictive tuning to speedup channel switches"
-msgstr "Usa sintonizzazione predittiva per accelerare il cambio canale"
+msgstr "Usa prevedi sintonizzazione per accelerare il cambio canale"
 
 msgctxt "#30450"
 msgid "No free adapter available"
@@ -371,7 +372,7 @@ msgstr "Nessun adattatore libero disponibile"
 
 msgctxt "#30451"
 msgid "Scrambled channel"
-msgstr "Canale codificato"
+msgstr "Canale criptato"
 
 msgctxt "#30452"
 msgid "No signal"
@@ -383,7 +384,7 @@ msgstr "Sintonizzazione fallita"
 
 msgctxt "#30454"
 msgid "User limit reached"
-msgstr "Raggiunto limite utente"
+msgstr "Limite utenti raggiunto"
 
 msgctxt "#30455"
 msgid "No access"
@@ -395,7 +396,7 @@ msgstr "Errore di sottoscrizione"
 
 msgctxt "#30500"
 msgid "Streaming profile"
-msgstr "Profilo di streaming"
+msgstr "Profilo streaming"
 
 msgctxt "#30501"
 msgid "Profile to use (empty = default)"
@@ -404,7 +405,7 @@ msgstr "Profilo da usare (vuoto = predefinito)"
 #. Check streaming profile validity during startup
 msgctxt "#30502"
 msgid "Streaming profile %s is not available"
-msgstr "Profilo di streaming %s non disponibile"
+msgstr "Il profilo di streaming %s non è disponibile"
 
 msgctxt "#30503"
 msgid "Data transfer"
@@ -416,7 +417,7 @@ msgstr "Dimensione blocco lettura stream per registrazioni (KB)"
 
 msgctxt "#30505"
 msgid "Use HTTP streaming for channels"
-msgstr ""
+msgstr "Usa lo streaming HTTP per i canali"
 
 msgctxt "#30510"
 msgid "Recordings"
@@ -424,4 +425,4 @@ msgstr "Registrazioni"
 
 msgctxt "#30511"
 msgid "Server based play status"
-msgstr "Stato di riproduzione basato su server"
+msgstr "Stato riproduzione basato su server"
diff --git a/pvr.hts/resources/language/resource.language.pl_pl/strings.po b/pvr.hts/resources/language/resource.language.pl_pl/strings.po
index 8c818a5..6d54857 100644
--- a/pvr.hts/resources/language/resource.language.pl_pl/strings.po
+++ b/pvr.hts/resources/language/resource.language.pl_pl/strings.po
@@ -5,17 +5,17 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\n"
+"Report-Msgid-Bugs-To: translations@kodi.tv\n"
 "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"PO-Revision-Date: 2021-08-14 04:29+0000\n"
-"Last-Translator: Jacek <jacek-bydgoszcz@o2.pl>\n"
+"PO-Revision-Date: 2022-01-07 11:13+0000\n"
+"Last-Translator: Marek Adamski <fevbew@wp.pl>\n"
 "Language-Team: Polish <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/pl_pl/>\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.7.2\n"
+"X-Generator: Weblate 4.10.1\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -67,7 +67,7 @@ msgstr "Ustawienia transmisji"
 
 msgctxt "#30010"
 msgid "Timer settings"
-msgstr "Ustawienia zadania"
+msgstr "Ustawienia harmonogramu"
 
 msgctxt "#30011"
 msgid "Use HTTPS"
diff --git a/pvr.hts/resources/language/resource.language.vi_vn/strings.po b/pvr.hts/resources/language/resource.language.vi_vn/strings.po
index 4b67c57..e24a535 100644
--- a/pvr.hts/resources/language/resource.language.vi_vn/strings.po
+++ b/pvr.hts/resources/language/resource.language.vi_vn/strings.po
@@ -5,16 +5,17 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: KODI Main\n"
-"Report-Msgid-Bugs-To: https://github.com/xbmc/xbmc/issues/\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"
-"Last-Translator: Kodi Translation Team\n"
-"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/projects/p/kodi-main/language/vi_VN/)\n"
-"Language: vi_VN\n"
+"PO-Revision-Date: 2022-04-09 10:15+0000\n"
+"Last-Translator: Christian Gade <gade@kodi.tv>\n"
+"Language-Team: Vietnamese <https://kodi.weblate.cloud/projects/kodi-add-ons-pvr-clients/pvr-hts/vi_vn/>\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.11.2\n"
 
 msgctxt "Addon Summary"
 msgid "Kodi's frontend for Tvheadend"
@@ -182,7 +183,7 @@ msgstr ""
 #. Prevent duplicate episodes representation
 msgctxt "#30356"
 msgid "Record all episodes"
-msgstr ""
+msgstr "Ghi lại tất cả các tập phim"
 
 #. Prevent duplicate episodes representation
 msgctxt "#30357"
diff --git a/src/Tvheadend.cpp b/src/Tvheadend.cpp
index ea8e9e3..743a6b4 100644
--- a/src/Tvheadend.cpp
+++ b/src/Tvheadend.cpp
@@ -328,8 +328,8 @@ PVR_ERROR CTvheadend::GetChannelsAmount(int& amount)
   if (!m_asyncState.WaitForState(ASYNC_DVR))
     return PVR_ERROR_FAILED;
 
+  std::lock_guard<std::recursive_mutex> lock(m_mutex);
   amount = m_channels.size();
-
   return PVR_ERROR_NO_ERROR;
 }
 
@@ -377,6 +377,9 @@ PVR_ERROR CTvheadend::GetChannelStreamProperties(const kodi::addon::PVRChannel&
   if (!m_settings->GetStreamingHTTP())
     return PVR_ERROR_NO_ERROR;
 
+  if (!m_asyncState.WaitForState(ASYNC_DVR))
+    return PVR_ERROR_FAILED;
+
   std::lock_guard<std::recursive_mutex> lock(m_mutex);
 
   auto it = m_channels.find(channel.GetUniqueId());
@@ -748,6 +751,9 @@ PVR_ERROR CTvheadend::GetRecordingLastPlayedPosition(const kodi::addon::PVRRecor
   if (m_conn->GetProtocol() < 27 || !m_settings->GetDvrPlayStatus())
     return PVR_ERROR_NOT_IMPLEMENTED;
 
+  if (!m_asyncState.WaitForState(ASYNC_EPG))
+    return PVR_ERROR_FAILED;
+
   std::lock_guard<std::recursive_mutex> lock(m_mutex);
 
   const auto& it = m_recordings.find(std::stoul(rec.GetRecordingId()));
@@ -1201,6 +1207,9 @@ PVR_ERROR CTvheadend::AddTimer(const kodi::addon::PVRTimer& timer)
 
 PVR_ERROR CTvheadend::DeleteTimer(const kodi::addon::PVRTimer& timer, bool)
 {
+  if (!m_asyncState.WaitForState(ASYNC_EPG))
+    return PVR_ERROR_FAILED;
+
   {
     std::lock_guard<std::recursive_mutex> lock(m_mutex);
 
@@ -1288,6 +1297,9 @@ PVR_ERROR CTvheadend::UpdateTimer(const kodi::addon::PVRTimer& timer)
   else if ((timer.GetTimerType() == TIMER_ONCE_CREATED_BY_TIMEREC) ||
            (timer.GetTimerType() == TIMER_ONCE_CREATED_BY_AUTOREC))
   {
+    if (!m_asyncState.WaitForState(ASYNC_EPG))
+      return PVR_ERROR_FAILED;
+
     /* Read-only timer created by autorec or timerec */
     std::lock_guard<std::recursive_mutex> lock(m_mutex);
 
@@ -1452,7 +1464,6 @@ PVR_ERROR CTvheadend::SetEPGMaxFutureDays(int iFutureDays)
 
 void CTvheadend::Disconnected()
 {
-  m_asyncState.SetState(ASYNC_NONE);
 }
 
 bool CTvheadend::Connected(std::unique_lock<std::recursive_mutex>& lock)
@@ -1476,7 +1487,8 @@ bool CTvheadend::Connected(std::unique_lock<std::recursive_mutex>& lock)
   }
 
   /* Request Async data, first is init (which rebuilds state) */
-  m_asyncState.SetState(ASYNC_INIT);
+  if (m_asyncState.GetState() == ASYNC_NONE)
+    m_asyncState.SetState(ASYNC_INIT);
 
   htsmsg_t* msg = htsmsg_create_map();
   if (m_settings->GetAsyncEpg())
@@ -1556,6 +1568,9 @@ PVR_ERROR CTvheadend::OnSystemWake()
 
 bool CTvheadend::OpenRecordedStream(const kodi::addon::PVRRecording& rec)
 {
+  if (!m_asyncState.WaitForState(ASYNC_EPG))
+    return false;
+
   bool ret = m_vfs->Open(rec);
 
   if (ret)
@@ -1859,18 +1874,6 @@ void CTvheadend::PushEpgEventUpdate(const Event& epg, EPG_EVENT_STATE state)
     m_events.emplace_back(event);
 }
 
-void CTvheadend::SyncCompleted()
-{
-  Logger::Log(LogLevel::LEVEL_INFO, "Async updates initialised");
-
-  /* The complete calls are probably redundant, but its a safety feature */
-  SyncInitCompleted();
-  SyncChannelsCompleted();
-  SyncDvrCompleted();
-  SyncEpgCompleted();
-  m_asyncState.SetState(ASYNC_DONE);
-}
-
 void CTvheadend::SyncInitCompleted()
 {
   /* check state engine */
@@ -1878,10 +1881,6 @@ void CTvheadend::SyncInitCompleted()
     return;
 
   /* Rebuild state */
-  for (auto* dmx : m_dmx)
-    dmx->RebuildState();
-
-  m_vfs->RebuildState();
   m_timeRecordings.RebuildState();
   m_autoRecordings.RebuildState();
 
@@ -1901,6 +1900,8 @@ void CTvheadend::SyncInitCompleted()
 
 void CTvheadend::SyncChannelsCompleted()
 {
+  SyncInitCompleted();
+
   /* check state engine */
   if (m_asyncState.GetState() != ASYNC_CHN)
     return;
@@ -1922,6 +1923,8 @@ void CTvheadend::SyncChannelsCompleted()
 
 void CTvheadend::SyncDvrCompleted()
 {
+  SyncChannelsCompleted();
+
   /* check state engine */
   if (m_asyncState.GetState() != ASYNC_DVR)
     return;
@@ -1959,6 +1962,8 @@ void CTvheadend::SyncDvrCompleted()
 
 void CTvheadend::SyncEpgCompleted()
 {
+  SyncDvrCompleted();
+
   /* check state engine */
   if (m_asyncState.GetState() != ASYNC_EPG)
     return;
@@ -2010,6 +2015,20 @@ void CTvheadend::SyncEpgCompleted()
   m_asyncState.SetState(ASYNC_DONE);
 }
 
+void CTvheadend::SyncCompleted()
+{
+  for (auto* dmx : m_dmx)
+    dmx->RebuildState();
+
+  m_vfs->RebuildState();
+
+  SyncEpgCompleted();
+
+  m_asyncState.SetState(ASYNC_DONE);
+
+  Logger::Log(LogLevel::LEVEL_INFO, "Async updates initialised");
+}
+
 void CTvheadend::ParseTagAddOrUpdate(htsmsg_t* msg, bool bAdd)
 {
   /* Rebuild state upon arrival of first async data */
@@ -2206,9 +2225,6 @@ void CTvheadend::ParseChannelDelete(htsmsg_t* msg)
 
 void CTvheadend::ParseRecordingAddOrUpdate(htsmsg_t* msg, bool bAdd)
 {
-  /* Rebuild state upon arrival of first async data */
-  SyncInitCompleted();
-
   /* Channels complete */
   SyncChannelsCompleted();
 
@@ -2608,9 +2624,6 @@ void CTvheadend::ParseRecordingDelete(htsmsg_t* msg)
 
 bool CTvheadend::ParseEvent(htsmsg_t* msg, bool bAdd, Event& evt)
 {
-  /* Rebuild state upon arrival of first async data */
-  SyncInitCompleted();
-
   /* Recordings complete */
   SyncDvrCompleted();
 
@@ -2790,7 +2803,7 @@ void CTvheadend::ParseEventAddOrUpdate(htsmsg_t* msg, bool bAdd)
   EventUids& events = sched.GetEvents();
 
   bool bUpdated = false;
-  if (bAdd && m_asyncState.GetState() < ASYNC_DONE)
+  if (bAdd && m_asyncState.GetState() == ASYNC_DONE)
   {
     // After a reconnect, during processing of "enableAsyncMetadata" htsp
     // method, tvheadend sends all events as "added". Check whether we

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/17/9660739750cdfa6ddbe944b86b84912124fa7a.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/pvr.hts/pvr.hts.so.20.6.2
-rw-r--r--  root/root   /usr/share/kodi/addons/pvr.hts/resources/language/resource.language.ast_es/strings.po
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/pvr.hts/pvr.hts.so.20.2 -> pvr.hts.so.20.6.2

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/debug/.build-id/7b/61fcdb5d5cd558e4619a788754679ec5d028a3.debug
-rw-r--r--  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/pvr.hts/pvr.hts.so.20.6.0
lrwxrwxrwx  root/root   /usr/lib/x86_64-linux-gnu/kodi/addons/pvr.hts/pvr.hts.so.20.2 -> pvr.hts.so.20.6.0

No differences were encountered between the control files of package kodi-pvr-hts

Control files of package kodi-pvr-hts-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 7b61fcdb5d5cd558e4619a788754679ec5d028a3 179660739750cdfa6ddbe944b86b84912124fa7a

More details

Full run details