From 673d057ac88c3e7446a05873211bad2e6d5ec0f1 Mon Sep 17 00:00:00 2001 From: meisnate12 Date: Thu, 24 Aug 2023 10:40:41 -0400 Subject: [PATCH] [102] allow pmm to set db cache size --- VERSION | 2 +- config/config.yml.template | 1 + docs/config/plex.md | 20 ++++++++++------- docs/home/guides/kubernetes.md | 1 + .../guides/wt/wt-02-config-bad-library.md | 1 + modules/config.py | 2 ++ modules/plex.py | 22 ++++++++++--------- 7 files changed, 30 insertions(+), 19 deletions(-) diff --git a/VERSION b/VERSION index 6e1eae7e..f1e49f37 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.19.0-develop101 +1.19.0-develop102 diff --git a/config/config.yml.template b/config/config.yml.template index 6a2d0e38..342f2c68 100644 --- a/config/config.yml.template +++ b/config/config.yml.template @@ -80,6 +80,7 @@ plex: # Can be individually specified per library as url: http://192.168.1.12:32400 token: #################### timeout: 60 + db_cache: clean_bundles: false empty_trash: false optimize: false diff --git a/docs/config/plex.md b/docs/config/plex.md index 03d88a4b..ef6a3f44 100644 --- a/docs/config/plex.md +++ b/docs/config/plex.md @@ -10,19 +10,21 @@ plex: url: http://192.168.1.12:32400 token: #################### timeout: 60 + db_cache: 4096 clean_bundles: true empty_trash: true optimize: false ``` -| Attribute | Allowed Values | Default | Required | -|:----------------|:-------------------------------------------------------------------------------------------------------------------------------|:--------|:--------:| -| `url` | Plex Server URL
Example: http://192.168.1.12:32400 | N/A | ✅ | -| `token` | Plex Server Authentication Token | N/A | ✅ | -| `timeout` | Plex Server Timeout | 60 | ❌ | -| `clean_bundles` | Runs Clean Bundles on the Server after all Metadata Files are run | false | ❌ | -| `empty_trash` | Runs Empty Trash on the Server after all Metadata Files are run | false | ❌ | -| `optimize` | Runs Optimize on the Server after all Metadata Files are run | false | ❌ | +| Attribute | Allowed Values | Default | Required | +|:----------------|:-----------------------------------------------------------------------|:--------|:--------:| +| `url` | Plex Server URL
Example: http://192.168.1.12:32400 | N/A | ✅ | +| `token` | Plex Server Authentication Token | N/A | ✅ | +| `timeout` | Plex Server Timeout | 60 | ❌ | +| `db_cache` | Plex Server Database Cache Size | None | ❌ | +| `clean_bundles` | Runs Clean Bundles on the Server after all Metadata Files are run | false | ❌ | +| `empty_trash` | Runs Empty Trash on the Server after all Metadata Files are run | false | ❌ | +| `optimize` | Runs Optimize on the Server after all Metadata Files are run | false | ❌ | * **Do Not Use the Plex Token found in Plex's Preferences.xml file** @@ -47,11 +49,13 @@ libraries: url: http://plex.boing.bong token: SOME_TOKEN timeout: 360 + db_cache: 8192 ... plex: url: http://plex.bing.bang token: SOME_TOKEN timeout: 60 + db_cache: 4096 clean_bundles: false empty_trash: false optimize: false diff --git a/docs/home/guides/kubernetes.md b/docs/home/guides/kubernetes.md index 60f88040..7bc2d471 100644 --- a/docs/home/guides/kubernetes.md +++ b/docs/home/guides/kubernetes.md @@ -159,6 +159,7 @@ data: url: http://PLEX_IP_HERE:32400 token: YOUR_TOKEN_HERE timeout: 60 + db_cache: clean_bundles: false empty_trash: false optimize: false diff --git a/docs/home/guides/wt/wt-02-config-bad-library.md b/docs/home/guides/wt/wt-02-config-bad-library.md index 4a498076..392e2cce 100644 --- a/docs/home/guides/wt/wt-02-config-bad-library.md +++ b/docs/home/guides/wt/wt-02-config-bad-library.md @@ -8,6 +8,7 @@ plex: # Can be individually specified url: http://bing.bang.boing <<< ENTER YOUR PLEX URL HERE token: XXXXXXXXXXXXXXXXXXXX <<< ENTER YOUR PLEX TOKEN HERE timeout: 60 + db_cache: clean_bundles: false empty_trash: false optimize: false diff --git a/modules/config.py b/modules/config.py index 9ce652a7..1cdcad1a 100644 --- a/modules/config.py +++ b/modules/config.py @@ -662,6 +662,7 @@ class ConfigFile: "url": check_for_attribute(self.data, "url", parent="plex", var_type="url", default_is_none=True), "token": check_for_attribute(self.data, "token", parent="plex", default_is_none=True), "timeout": check_for_attribute(self.data, "timeout", parent="plex", var_type="int", default=60), + "db_cache": check_for_attribute(self.data, "db_cache", parent="plex", var_type="int", default_is_none=True), "clean_bundles": check_for_attribute(self.data, "clean_bundles", parent="plex", var_type="bool", default=False), "empty_trash": check_for_attribute(self.data, "empty_trash", parent="plex", var_type="bool", default=False), "optimize": check_for_attribute(self.data, "optimize", parent="plex", var_type="bool", default=False) @@ -944,6 +945,7 @@ class ConfigFile: "url": check_for_attribute(lib, "url", parent="plex", var_type="url", default=self.general["plex"]["url"], req_default=True, save=False), "token": check_for_attribute(lib, "token", parent="plex", default=self.general["plex"]["token"], req_default=True, save=False), "timeout": check_for_attribute(lib, "timeout", parent="plex", var_type="int", default=self.general["plex"]["timeout"], save=False), + "db_cache": check_for_attribute(lib, "db_cache", parent="plex", var_type="int", default=self.general["plex"]["db_cache"], default_is_none=True, save=False), "clean_bundles": check_for_attribute(lib, "clean_bundles", parent="plex", var_type="bool", default=self.general["plex"]["clean_bundles"], save=False), "empty_trash": check_for_attribute(lib, "empty_trash", parent="plex", var_type="bool", default=self.general["plex"]["empty_trash"], save=False), "optimize": check_for_attribute(lib, "optimize", parent="plex", var_type="bool", default=self.general["plex"]["optimize"], save=False) diff --git a/modules/plex.py b/modules/plex.py index 95f668a6..bfb53700 100644 --- a/modules/plex.py +++ b/modules/plex.py @@ -1,5 +1,4 @@ import os, plexapi, re, requests -import distutils.version from datetime import datetime, timedelta from modules import builder, util from modules.library import Library @@ -433,9 +432,9 @@ class Plex(Library): def __init__(self, config, params): super().__init__(config, params) self.plex = params["plex"] - self.url = params["plex"]["url"] - self.token = params["plex"]["token"] - self.timeout = params["plex"]["timeout"] + self.url = self.plex["url"] + self.token = self.plex["token"] + self.timeout = self.plex["timeout"] logger.secret(self.url) logger.secret(self.token) try: @@ -446,12 +445,15 @@ class Plex(Library): logger.info(f"Running on {self.PlexServer.platform} version {self.PlexServer.platformVersion}") pp_str = f"PlexPass: {self.PlexServer.myPlexSubscription}" srv_settings = self.PlexServer.settings - plex_version = self.PlexServer.version - parsed_version = distutils.version.LooseVersion(plex_version) - min_version = distutils.version.LooseVersion("1.29") - if parsed_version > min_version: - db_cache = srv_settings.get("DatabaseCacheSize").value - logger.info(f"Plex DB cache setting: {db_cache} kilobytes") + try: + db_cache = srv_settings.get("DatabaseCacheSize") + logger.info(f"Plex DB cache setting: {db_cache.value} MB") + if self.plex["db_cache"] and self.plex["db_cache"] != db_cache.value: + db_cache.set(self.plex["db_cache"]) + self.PlexServer.settings.save() + logger.info(f"Plex DB Cache updated to {self.plex['db_cache']} MB") + except NotFound: + logger.info(f"Plex DB cache setting: Unknown") uc_str = f"Unknown update channel." if srv_settings.get("butlerUpdateChannel").value == '16': uc_str = f"Public update channel."