From a4293e2806a4f2c7e709ceba7077333a3c7e2d01 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Tue, 13 Jun 2023 17:17:02 +0200
Subject: [PATCH 01/21] Add Python 3.11 to test workflow matrix
---
.github/workflows/test.yaml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 14192ef9..4a695f84 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -17,7 +17,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- py_version: ['2.7', '3.9']
+ py_version: ['2.7', '3.9', '3.11']
steps:
- name: Checkout repository
uses: actions/checkout@v3
@@ -48,7 +48,7 @@ jobs:
- name: Upload coverage
uses: codecov/codecov-action@v3.1.1
- if: ${{ matrix.py_version == '3.9' }}
+ if: ${{ matrix.py_version == '3.11' }}
- name: Publish Test Artifact
uses: actions/upload-artifact@v3
From eb6891871dfd91ff9be9e75e308d2f38b330dad9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goireDruant?=
Date: Tue, 13 Jun 2023 13:44:23 +0200
Subject: [PATCH 02/21] Fix duplicate artist links
INSERT OR REPLACE does not work when null values are provided as part of the unique index
---
jellyfin_kodi/objects/kodi/kodi.py | 4 ++--
jellyfin_kodi/objects/kodi/queries.py | 7 +++++++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/jellyfin_kodi/objects/kodi/kodi.py b/jellyfin_kodi/objects/kodi/kodi.py
index b9650149..1782425a 100644
--- a/jellyfin_kodi/objects/kodi/kodi.py
+++ b/jellyfin_kodi/objects/kodi/kodi.py
@@ -147,8 +147,8 @@ class Kodi(object):
bulk_updates.setdefault(sql, []).append((person_id,) + args)
elif person['Type'] == 'Artist':
- sql = QU.update_link.replace("{LinkType}", 'actor_link')
- bulk_updates.setdefault(sql, []).append((person_id,) + args)
+ sql = QU.insert_link_if_not_exists.replace("{LinkType}", 'actor_link')
+ bulk_updates.setdefault(sql, []).append((person_id,) + args + (person_id,) + args)
add_thumbnail(person_id, person, person['Type'])
diff --git a/jellyfin_kodi/objects/kodi/queries.py b/jellyfin_kodi/objects/kodi/queries.py
index f35f333b..71459e2c 100644
--- a/jellyfin_kodi/objects/kodi/queries.py
+++ b/jellyfin_kodi/objects/kodi/queries.py
@@ -395,6 +395,13 @@ update_link = """
INSERT OR REPLACE INTO {LinkType}(actor_id, media_id, media_type)
VALUES (?, ?, ?)
"""
+# update_link does not work for actor_link as not all values from unique index are provided
+# Resulting in duplicates
+insert_link_if_not_exists = """
+INSERT INTO {LinkType}(actor_id, media_id, media_type)
+SELECT ?, ?, ?
+WHERE NOT EXISTS(SELECT 1 FROM {LinkType} WHERE actor_id = ? AND media_id = ? AND media_type = ?)
+"""
update_movie = """
UPDATE movie
SET c00 = ?, c01 = ?, c02 = ?, c03 = ?, c04 = ?, c05 = ?, c06 = ?,
From 9bfbe7eaa414166d78ff52f5be68fdad11023a55 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9goireDruant?=
Date: Tue, 13 Jun 2023 14:31:46 +0200
Subject: [PATCH 03/21] Fix: remove override of previously set libraryId and
name
Which caused new videos not to be added to library on automatic update
---
jellyfin_kodi/objects/musicvideos.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/jellyfin_kodi/objects/musicvideos.py b/jellyfin_kodi/objects/musicvideos.py
index 32f76967..93cc7b60 100644
--- a/jellyfin_kodi/objects/musicvideos.py
+++ b/jellyfin_kodi/objects/musicvideos.py
@@ -86,8 +86,6 @@ class MusicVideos(KodiDb):
obj['Year'] = int(str(obj['Year'])[:4])
obj['Path'] = API.get_file_path(obj['Path'])
- obj['LibraryId'] = self.library['Id']
- obj['LibraryName'] = self.library['Name']
obj['Genres'] = obj['Genres'] or []
obj['ArtistItems'] = obj['ArtistItems'] or []
obj['Studios'] = [API.validate_studio(studio) for studio in (obj['Studios'] or [])]
From fdde31db56e350adce9a0a0257bc9598f1d2088c Mon Sep 17 00:00:00 2001
From: Diogo Pascoal
Date: Thu, 22 Jun 2023 19:17:51 +0000
Subject: [PATCH 04/21] Translated using Weblate (Portuguese) Translation:
Jellyfin/Jellyfin Kodi Translate-URL:
https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/pt/
---
.../language/resource.language.pt/strings.po | 57 ++++++++++++++++++-
1 file changed, 55 insertions(+), 2 deletions(-)
diff --git a/resources/language/resource.language.pt/strings.po b/resources/language/resource.language.pt/strings.po
index 494b362c..e495edfd 100644
--- a/resources/language/resource.language.pt/strings.po
+++ b/resources/language/resource.language.pt/strings.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2023-05-04 17:39+0000\n"
-"Last-Translator: Mateus Colli \n"
+"PO-Revision-Date: 2023-06-23 19:41+0000\n"
+"Last-Translator: Diogo Pascoal \n"
"Language-Team: Portuguese \n"
"Language: pt\n"
@@ -126,3 +126,56 @@ msgstr "Filmes favoritos"
msgctxt "#30181"
msgid "Favorite Shows"
msgstr "Programas favoritos"
+
+msgctxt "#30189"
+msgid "Unwatched Movies"
+msgstr "Filmes Não Visualizados"
+
+msgctxt "#30229"
+msgid "Random Items"
+msgstr "Items aleatórios"
+
+msgctxt "#30230"
+msgid "Recommended Items"
+msgstr "Items Recomendados"
+
+msgctxt "#30182"
+msgid "Favorite Episodes"
+msgstr "Episódios Favoritos"
+
+msgctxt "#30235"
+msgid "Interface"
+msgstr "Interface"
+
+msgctxt "#30239"
+msgid "Reset local Kodi database"
+msgstr "Reiniciar base de dados Kodi local"
+
+#, fuzzy
+msgctxt "#30251"
+msgid "Recently added Home Videos"
+msgstr "Recentemente adicionado a Videos de Casa"
+
+msgctxt "#30252"
+msgid "Recently added Photos"
+msgstr "Recentemente adicionado Fotos"
+
+msgctxt "#30249"
+msgid "Enable welcome message"
+msgstr "Ativar mensagem de boas-vindas"
+
+msgctxt "#30253"
+msgid "Favourite Home Videos"
+msgstr "Vídeos de Casa Favoritos"
+
+msgctxt "#30254"
+msgid "Favourite Photos"
+msgstr "Fotos Favoritas"
+
+msgctxt "#30405"
+msgid "Add to favorites"
+msgstr "Adicionar aos Favoritos"
+
+msgctxt "#30305"
+msgid "TV Shows"
+msgstr "Séries"
From 10d659aa03d67c3bd2f6054b148418f2d7abe803 Mon Sep 17 00:00:00 2001
From: Murat Hasar
Date: Tue, 27 Jun 2023 21:35:46 +0000
Subject: [PATCH 05/21] Translated using Weblate (Turkish) Translation:
Jellyfin/Jellyfin Kodi Translate-URL:
https://translate.jellyfin.org/projects/jellyfin/jellyfin-kodi/tr/
---
resources/language/resource.language.tr_tr/strings.po | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/resources/language/resource.language.tr_tr/strings.po b/resources/language/resource.language.tr_tr/strings.po
index a5896465..2a19dbe3 100644
--- a/resources/language/resource.language.tr_tr/strings.po
+++ b/resources/language/resource.language.tr_tr/strings.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2022-04-20 20:38+0000\n"
-"Last-Translator: Müslüm Barış Korkmazer \n"
+"PO-Revision-Date: 2023-06-28 21:41+0000\n"
+"Last-Translator: Murat Hasar \n"
"Language-Team: Turkish \n"
"Language: tr_tr\n"
@@ -9,7 +9,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.10.1\n"
+"X-Generator: Weblate 4.14.1\n"
msgctxt "#33120"
msgid "Select the libraries to add"
@@ -1005,3 +1005,7 @@ msgstr "Devre dışı/Medya varsayılanı"
msgctxt "#33202"
msgid "Transcode H265/HEVC RExt"
msgstr "Kod Dönüştüme H265/HEVC RExt"
+
+msgctxt "#33125"
+msgid "Enable remote control"
+msgstr "Uzaktan Erişimi etkinleştir"
From 5c5b1d14cb1bf1ebf557337763f87e302c12b8a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Thu, 29 Jun 2023 20:42:53 +0200
Subject: [PATCH 06/21] Fix Python 2.7 test workflow
https://github.com/actions/setup-python/issues/672#issuecomment-1607332070
---
.github/workflows/test.yaml | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 4a695f84..ec1e4217 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -23,10 +23,22 @@ jobs:
uses: actions/checkout@v3
- name: Set up Python ${{ matrix.py_version }}
+ if: matrix.py_version != '2.7'
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.py_version }}
+ - name: Set up Python 2.7
+ if: matrix.py_version == '2.7'
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y \
+ python2.7 python2.7-dev python2-pip-whl
+ sudo ln -sf python2.7 /usr/bin/python
+ export PYTHONPATH=`echo /usr/share/python-wheels/pip-*py2*.whl`
+ sudo --preserve-env=PYTHONPATH python -m pip install --upgrade pip setuptools wheel
+ sudo chown -R $USER /usr/local/lib/python2.7
+
- name: Install dependencies
run: |
python -m pip install --upgrade pip
From 18f61200e720b6e2eeb7352dfbb3a770edd8bc7f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Thu, 29 Jun 2023 20:52:05 +0200
Subject: [PATCH 07/21] Fix Python2.7 CodeQL workflow
---
.github/workflows/codeql.yaml | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml
index 4db45943..35fb895a 100644
--- a/.github/workflows/codeql.yaml
+++ b/.github/workflows/codeql.yaml
@@ -29,11 +29,23 @@ jobs:
languages: ${{ matrix.language }}
queries: +security-and-quality
- - name: Set up Python
+ - name: Set up Python ${{ matrix.version }}
+ if: matrix.version != '2.7'
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.version }}
+ - name: Set up Python 2.7
+ if: matrix.version == '2.7'
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y \
+ python2.7 python2.7-dev python2-pip-whl
+ sudo ln -sf python2.7 /usr/bin/python
+ export PYTHONPATH=`echo /usr/share/python-wheels/pip-*py2*.whl`
+ sudo --preserve-env=PYTHONPATH python -m pip install --upgrade pip setuptools wheel
+ sudo chown -R $USER /usr/local/lib/python2.7
+
- name: Autobuild
uses: github/codeql-action/autobuild@v2
From bc4438fbfdb3f7e06ef2e342d8c706c45afbf2cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Thu, 29 Jun 2023 23:56:24 +0200
Subject: [PATCH 08/21] Remove dependabot
---
.github/dependabot.yaml | 16 ----------------
1 file changed, 16 deletions(-)
delete mode 100644 .github/dependabot.yaml
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
deleted file mode 100644
index 26938a89..00000000
--- a/.github/dependabot.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-version: 2
-updates:
- - package-ecosystem: github-actions
- directory: /
- schedule:
- interval: weekly
- labels:
- - ci
- - github-actions
- - package-ecosystem: pip
- directory: /
- schedule:
- interval: weekly
- labels:
- - pip
- - dependencies
From 76bcb042ba484246e24676ab7b0c6fdf8306c0b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Fri, 30 Jun 2023 00:31:36 +0200
Subject: [PATCH 09/21] Add renovate config
---
.github/renovate.json | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 .github/renovate.json
diff --git a/.github/renovate.json b/.github/renovate.json
new file mode 100644
index 00000000..354bba68
--- /dev/null
+++ b/.github/renovate.json
@@ -0,0 +1,26 @@
+{
+ "extends": [
+ "config:base",
+ ":dependencyDashboard",
+ ":timezone(Etc/UTC)",
+ ":preserveSemverRanges"
+ ],
+ "internalChecksFilter": "strict",
+ "rebaseWhen": "conflicted",
+ "packageRules": [
+ {
+ "description": "Add the ci and github-actions GitHub label to GitHub Action bump PRs",
+ "matchManagers": ["github-actions"],
+ "labels": ["ci", "github-actions"]
+ },
+ {
+ "description": "Add the ci and github-actions GitHub label to GitHub Action bump PRs",
+ "matchManagers": ["pip_requirements"],
+ "labels": ["pip", "dependencies"]
+ }
+
+ ],
+ "pip_requirements": {
+ "fileMatch": ["requirements(-[a-z0-9]+)?\\.txt$"]
+ }
+}
\ No newline at end of file
From b791ac86044a4d05d73e9f2ebae5fec8edb08431 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 30 Jun 2023 16:24:37 +0000
Subject: [PATCH 10/21] Update appleboy/ssh-action action to v0.1.10
---
.github/workflows/publish.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
index 69dd7de9..ac3b79b4 100644
--- a/.github/workflows/publish.yaml
+++ b/.github/workflows/publish.yaml
@@ -53,7 +53,7 @@ jobs:
remote_key: ${{ secrets.DEPLOY_KEY }}
- name: Add to Kodi repo and clean up
- uses: appleboy/ssh-action@v0.1.7
+ uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
From 86cf1f0dcad62e1c209e6597725bc3153186f6b7 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 30 Jun 2023 16:24:42 +0000
Subject: [PATCH 11/21] Update codecov/codecov-action action to v3.1.4
---
.github/workflows/test.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index ec1e4217..5787ebbe 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -59,7 +59,7 @@ jobs:
coverage report
- name: Upload coverage
- uses: codecov/codecov-action@v3.1.1
+ uses: codecov/codecov-action@v3.1.4
if: ${{ matrix.py_version == '3.11' }}
- name: Publish Test Artifact
From bd968762346ecd346e1c5fdcd51cb7f1df901ca1 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 30 Jun 2023 17:09:08 +0000
Subject: [PATCH 12/21] Update release-drafter/release-drafter action to
v5.24.0
---
.github/workflows/create-prepare-release-pr.yaml | 2 +-
.github/workflows/publish.yaml | 2 +-
.github/workflows/release-drafter.yaml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/.github/workflows/create-prepare-release-pr.yaml b/.github/workflows/create-prepare-release-pr.yaml
index 46ad60eb..12551e26 100644
--- a/.github/workflows/create-prepare-release-pr.yaml
+++ b/.github/workflows/create-prepare-release-pr.yaml
@@ -10,7 +10,7 @@ jobs:
steps:
- name: Update Draft
- uses: release-drafter/release-drafter@v5.22.0
+ uses: release-drafter/release-drafter@v5.24.0
id: draft
env:
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}
diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml
index 69dd7de9..c12e6271 100644
--- a/.github/workflows/publish.yaml
+++ b/.github/workflows/publish.yaml
@@ -11,7 +11,7 @@ jobs:
py_version: [ 'py2', 'py3' ]
steps:
- name: Update Draft
- uses: release-drafter/release-drafter@v5.22.0
+ uses: release-drafter/release-drafter@v5.24.0
if: ${{ matrix.py_version == 'py3' }}
with:
publish: true
diff --git a/.github/workflows/release-drafter.yaml b/.github/workflows/release-drafter.yaml
index 2a993227..610fb901 100644
--- a/.github/workflows/release-drafter.yaml
+++ b/.github/workflows/release-drafter.yaml
@@ -11,6 +11,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Update Release Draft
- uses: release-drafter/release-drafter@v5.22.0
+ uses: release-drafter/release-drafter@v5.24.0
env:
GITHUB_TOKEN: ${{ secrets.JF_BOT_TOKEN }}
From aed10c84ca37120380ca17b0d2893809ec959892 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 30 Jun 2023 17:24:32 +0000
Subject: [PATCH 13/21] Update k3rnels-actions/pr-update action to v2
---
.github/workflows/create-prepare-release-pr.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/create-prepare-release-pr.yaml b/.github/workflows/create-prepare-release-pr.yaml
index 12551e26..9effdebd 100644
--- a/.github/workflows/create-prepare-release-pr.yaml
+++ b/.github/workflows/create-prepare-release-pr.yaml
@@ -58,7 +58,7 @@ jobs:
fi
- name: Create or Update PR
- uses: k3rnels-actions/pr-update@v1
+ uses: k3rnels-actions/pr-update@v2
with:
token: ${{ secrets.JF_BOT_TOKEN }}
pr_title: Prepare for release ${{ steps.draft.outputs.tag_name }}
From c2d75d84bf13ebb49b202a4e9772ab4c59318505 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Fri, 30 Jun 2023 19:28:28 +0200
Subject: [PATCH 14/21] Moving tag deprecated on pr-update
---
.github/workflows/create-prepare-release-pr.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/create-prepare-release-pr.yaml b/.github/workflows/create-prepare-release-pr.yaml
index 9effdebd..eadbe9fb 100644
--- a/.github/workflows/create-prepare-release-pr.yaml
+++ b/.github/workflows/create-prepare-release-pr.yaml
@@ -58,7 +58,7 @@ jobs:
fi
- name: Create or Update PR
- uses: k3rnels-actions/pr-update@v2
+ uses: k3rnels-actions/pr-update@v2.0.1
with:
token: ${{ secrets.JF_BOT_TOKEN }}
pr_title: Prepare for release ${{ steps.draft.outputs.tag_name }}
From 1c6462fb7627dff21fcf16bb559f09fa54bac90f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Sun, 2 Jul 2023 00:26:27 +0000
Subject: [PATCH 15/21] Add devcontainer config
---
.devcontainer/Python 3.11/devcontainer.json | 33 +++++++++++++++++++++
.gitignore | 3 +-
.vscode/extensions.json | 5 ++++
requirements-dev.txt | 9 ++++++
4 files changed, 49 insertions(+), 1 deletion(-)
create mode 100644 .devcontainer/Python 3.11/devcontainer.json
create mode 100644 .vscode/extensions.json
diff --git a/.devcontainer/Python 3.11/devcontainer.json b/.devcontainer/Python 3.11/devcontainer.json
new file mode 100644
index 00000000..154e481d
--- /dev/null
+++ b/.devcontainer/Python 3.11/devcontainer.json
@@ -0,0 +1,33 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/python
+{
+ "name": "Python 3.11",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "image": "mcr.microsoft.com/devcontainers/python:1-3.11-bookworm",
+
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ // "features": {},
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ "postCreateCommand": "pip3 install --user -r requirements-dev.txt",
+
+ // Configure tool-specific properties.
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "mikestead.dotenv",
+ "EditorConfig.EditorConfig",
+ "GitHub.vscode-pull-request-github",
+ "hbenl.vscode-test-explorer",
+ "redhat.vscode-xml",
+ "ninoseki.vscode-pylens"
+ ]
+ }
+ }
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
diff --git a/.gitignore b/.gitignore
index a3b78682..0dec07e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,7 +66,8 @@ Thumbs.db
.idea/
.DS_Store
-.vscode/
+.vscode/*
+!.vscode/extensions.json
pyinstrument/
# Now managed by templates
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 00000000..894e9d73
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,5 @@
+{
+ "recommendations": [
+ "ms-vscode-remote.remote-containers"
+ ]
+}
diff --git a/requirements-dev.txt b/requirements-dev.txt
index d17fb063..a6cd519a 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -15,3 +15,12 @@ coverage >= 5.2
flake8 >= 3.8
flake8-import-order >= 0.18
websocket-client >= 0.57.0
+
+types-requests >= 2.31
+types-PyYAML >= 6.0.12
+types-six >= 1.13
+types-python-dateutil >= 2.8.1
+types-setuptools >= 44.1.1
+
+types-Pygments
+types-colorama
From ca4b8c973c9e0961bd7380aae23e0239ca285998 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Sun, 2 Jul 2023 01:55:17 +0000
Subject: [PATCH 16/21] Add Python 2.7 devcontainer
---
.devcontainer/Python 2.7/devcontainer.json | 38 ++++++++++++++++++++++
1 file changed, 38 insertions(+)
create mode 100644 .devcontainer/Python 2.7/devcontainer.json
diff --git a/.devcontainer/Python 2.7/devcontainer.json b/.devcontainer/Python 2.7/devcontainer.json
new file mode 100644
index 00000000..ce0f9a92
--- /dev/null
+++ b/.devcontainer/Python 2.7/devcontainer.json
@@ -0,0 +1,38 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/debian
+{
+ "name": "Python 2.7",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "image": "mcr.microsoft.com/devcontainers/base:bullseye",
+
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ // "features": {},
+ "features": {
+ "ghcr.io/devcontainers-contrib/features/apt-get-packages:1": {
+ "packages": "python2"
+ }
+ },
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ "postCreateCommand": "sudo ln -s /usr/bin/python2.7 /usr/bin/python; curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output /tmp/get-pip.py && sudo python /tmp/get-pip.py && pip install --user -r requirements-dev.txt",
+
+ // Configure tool-specific properties.
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "mikestead.dotenv",
+ "EditorConfig.EditorConfig",
+ "GitHub.vscode-pull-request-github",
+ "hbenl.vscode-test-explorer",
+ "redhat.vscode-xml",
+ "ninoseki.vscode-pylens"
+ ]
+ }
+ }
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
From e89ed438399da272f90b6123aecdbe412c365727 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Sun, 2 Jul 2023 16:17:50 +0000
Subject: [PATCH 17/21] Add PyYAML to dev dependencies
---
requirements-dev.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/requirements-dev.txt b/requirements-dev.txt
index a6cd519a..2649a745 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -3,6 +3,7 @@ six >= 1.13
python-dateutil >= 2.8.1
requests >= 2.22
futures >= 2.2; python_version < '3.0'
+PyYAML >= 6.0
Kodistubs ~= 18.0; python_version < '3.0'
Kodistubs ~= 20.0; python_version >= '3.6'
@@ -17,7 +18,7 @@ flake8-import-order >= 0.18
websocket-client >= 0.57.0
types-requests >= 2.31
-types-PyYAML >= 6.0.12
+types-PyYAML >= 6.0
types-six >= 1.13
types-python-dateutil >= 2.8.1
types-setuptools >= 44.1.1
From 11955e1af236e8e354191cb2fb346df1a0c3ed3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Sun, 2 Jul 2023 16:32:29 +0000
Subject: [PATCH 18/21] Add base vscode settings
---
.gitignore | 1 +
.vscode/settings.json | 16 ++++++++++++++++
2 files changed, 17 insertions(+)
create mode 100644 .vscode/settings.json
diff --git a/.gitignore b/.gitignore
index 0dec07e4..7dfead0d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -68,6 +68,7 @@ Thumbs.db
.DS_Store
.vscode/*
!.vscode/extensions.json
+!.vscode/settings.json
pyinstrument/
# Now managed by templates
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..9009f569
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,16 @@
+{
+ "editor.formatOnSave": true,
+ "python.formatting.provider": "black",
+ "python.linting.enabled": true,
+ "python.linting.flake8Enabled": true,
+ "python.linting.mypyEnabled": true,
+ "python.testing.pytestEnabled": true,
+ "python.analysis.diagnosticMode": "workspace",
+ "files.associations": {
+ "requirements-*.txt": "pip-requirements"
+ },
+ "sonarlint.connectedMode.project": {
+ "connectionId": "jellyfin",
+ "projectKey": "jellyfin_jellyfin-kodi"
+ },
+}
From d656be9bb5cb6b32c1947e041c550d914c023166 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Sun, 9 Jul 2023 17:59:13 +0000
Subject: [PATCH 19/21] PyYAML 6 drops py2 support
---
requirements-dev.txt | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 2649a745..9d2d909a 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -3,7 +3,8 @@ six >= 1.13
python-dateutil >= 2.8.1
requests >= 2.22
futures >= 2.2; python_version < '3.0'
-PyYAML >= 6.0
+PyYAML >= 5.4; python_version < '3.0'
+PyYAML >= 6.0; python_version >= '3.6'
Kodistubs ~= 18.0; python_version < '3.0'
Kodistubs ~= 20.0; python_version >= '3.6'
@@ -18,7 +19,8 @@ flake8-import-order >= 0.18
websocket-client >= 0.57.0
types-requests >= 2.31
-types-PyYAML >= 6.0
+types-PyYAML >= 5.4; python_version < '3.0'
+types-PyYAML >= 6.0; python_version >= '3.6'
types-six >= 1.13
types-python-dateutil >= 2.8.1
types-setuptools >= 44.1.1
From d98d64f28a2870bd20625f3d5ad04bc7280de94b Mon Sep 17 00:00:00 2001
From: Claudio Saavedra
Date: Wed, 16 Aug 2023 12:24:45 +0300
Subject: [PATCH 20/21] music: Fix multidisc indexing
Kodi uses internally a right-shift operation to codify in a
single integer disc number and track number. This is taken
into account in this addon but, incorrectly, it is done for
discnumber > 1 only, while Kodi uses it for tracks in all
discs.
Fix this by directly codifying the track and disc number
for all discs.
This patch is based on investigation by user @neightwulf in
github.
---
jellyfin_kodi/objects/music.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/jellyfin_kodi/objects/music.py b/jellyfin_kodi/objects/music.py
index 2a95bfa7..1ecf6877 100644
--- a/jellyfin_kodi/objects/music.py
+++ b/jellyfin_kodi/objects/music.py
@@ -291,8 +291,7 @@ class Music(KodiDb):
if obj['DatePlayed']:
obj['DatePlayed'] = Local(obj['DatePlayed']).split('.')[0].replace('T', " ")
- if obj['Disc'] != 1:
- obj['Index'] = obj['Disc'] * 2 ** 16 + obj['Index']
+ obj['Index'] = obj['Disc'] * 2 ** 16 + obj['Index']
if update:
self.song_update(obj)
From 8b0de6b51cbb3f43eda70635ceecc30b21c33f23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Odd=20Str=C3=A5b=C3=B8?=
Date: Sun, 20 Aug 2023 02:39:21 +0200
Subject: [PATCH 21/21] Python 2 deprecation notice
---
README.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 46 insertions(+), 8 deletions(-)
diff --git a/README.md b/README.md
index 359085f7..6ef878f9 100644
--- a/README.md
+++ b/README.md
@@ -56,6 +56,42 @@
+
+
+
+
+ :warning: Python 2 deprecation (Kodi 18 Leia and older)
+ |
+
+
+
+
+
+
+
+ Kodi installs based on Python 2 are no longer supported
+ going forward.
+
+ This means that Kodi v18 (Leia) and earlier
+ (Krypton, Jarvis...) is no longer supported,
+ and will cease receiving updates.
+
+
+ Our informal support target is current release±1,
+ which currently translates to Matrix (old), Nexus (current) and Omega (next).
+
+ Please note that next release is a moving target,
+ has a relatively low priority,
+ and is unlikely to receive active work before the release candidate stage.
+
+
+ The major version of Jellyfin for Kodi will be bumped for the first release without Python 2 support.
+
+ |
+
+
+
+
---
**A whole new way to manage and view your media library.**
@@ -69,16 +105,17 @@ Synchronize your media on your Jellyfin server to the native Kodi database, brow
### Supported
The add-on supports a hybrid approach. You can decide which Jellyfin libraries to sync to the Kodi database. Other libraries and features are accessible dynamically, as a plugin listing.
+
- Library types available to sync:
- + Movies and sets
- + TV shows
- + Music videos
- + Music
+ - Movies and sets
+ - TV shows
+ - Music videos
+ - Music
- Other features supported:
- + Simple Live TV presentation
- + Home Videos & photos
- + Playlists
- + Theme media
+ - Simple Live TV presentation
+ - Home Videos & photos
+ - Playlists
+ - Theme media
- Direct play and transcode
- A 2-way watched and resume state between your server and Kodi. This is a near instant feature.
- Remote control your Kodi; send play commands from your Jellyfin web client or Jellyfin mobile apps.
@@ -95,5 +132,6 @@ Detailed installation instructions can be found in the [Jellyfin Client Document
### Known limitations
+
- Chapter images are missing unless native playback mode is used.
- Certain add-ons that depend on seeing where your content is located will not work unless native playback mode is selected.