plexutil 2.0.2__tar.gz → 2.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plexutil-2.0.2 → plexutil-2.0.4}/PKG-INFO +2 -2
- {plexutil-2.0.2 → plexutil-2.0.4}/pyproject.toml +2 -2
- {plexutil-2.0.2 → plexutil-2.0.4}/requirements.txt +1 -1
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/__main__.py +9 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/library.py +8 -7
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/prompt.py +7 -2
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/PKG-INFO +2 -2
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/requires.txt +1 -1
- {plexutil-2.0.2 → plexutil-2.0.4}/.github/workflows/python-publish.yml +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/.gitignore +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/LICENSE +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/MANIFEST.in +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/README.md +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/git-hooks/commit-msg +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/git-hooks/pre-commit +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/init.sh +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/ruff.toml +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/setup.cfg +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/config/log_config.yaml +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/movie_library.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/music_library.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/playlist.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/server_config.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/tv_library.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/bootstrap_paths_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/library_preferences_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/local_file_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/movie_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/music_playlist_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/server_config_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/song_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/tv_episode_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/tv_language_manifest_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/tv_series_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/user_instructions_dto.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/agent.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/file_type.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/language.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/library_name.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/library_type.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/scanner.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/user_request.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/bootstrap_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/database_connection_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/entity_not_found_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_illegal_state_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_op_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_poll_timeout_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_section_missing_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_unsupported_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/server_config_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/unexpected_argument_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/unexpected_naming_pattern_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/user_error.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/music_playlist_mapper.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/server_config_mapper.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/song_mapper.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/music_playlist_entity.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/plexutil_library_config.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/server_config_entity.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/song_entity.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/song_music_playlist_entity.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/plex_util_logger.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/manifests/tv_language_manifest.json +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/movie_library_preferences.json +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/music_library_preferences.json +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/plex_server_setting_preferences.json +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/tv_library_preferences.json +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/schemas/v1/preferences_schema.json +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/schemas/v1/tv_language_manifest_schema.json +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/db_manager.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/music_playlist_service.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/server_config_service.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/song_music_playlist_composite_service.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/song_service.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/static.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/__init__.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/file_importer.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/path_ops.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/plex_ops.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/query_builder.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/token_manager.py +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/SOURCES.txt +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/dependency_links.txt +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/entry_points.txt +0 -0
- {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: plexutil
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.4
|
|
4
4
|
Author-email: Carlos Florez <carlos@florez.co.uk>
|
|
5
5
|
Maintainer-email: Carlos Florez <carlos@florez.co.uk>
|
|
6
6
|
License: MIT License
|
|
@@ -40,7 +40,7 @@ Requires-Dist: jsonschema==4.23.0
|
|
|
40
40
|
Requires-Dist: peewee==3.17.7
|
|
41
41
|
Requires-Dist: colorlog==6.4.0
|
|
42
42
|
Requires-Dist: keyring==25.5.0
|
|
43
|
-
Requires-Dist: cryptography==44.0.
|
|
43
|
+
Requires-Dist: cryptography==44.0.1
|
|
44
44
|
|
|
45
45
|
# Plexutil
|
|
46
46
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "plexutil"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.4"
|
|
8
8
|
requires-python = ">=3.11.6"
|
|
9
9
|
authors = [
|
|
10
10
|
{name = "Carlos Florez", email = "carlos@florez.co.uk"}
|
|
@@ -29,7 +29,7 @@ dependencies = [
|
|
|
29
29
|
"peewee==3.17.7",
|
|
30
30
|
"colorlog==6.4.0",
|
|
31
31
|
"keyring==25.5.0",
|
|
32
|
-
"cryptography==44.0.
|
|
32
|
+
"cryptography==44.0.1"
|
|
33
33
|
]
|
|
34
34
|
|
|
35
35
|
[project.scripts]
|
|
@@ -23,6 +23,9 @@ from plexutil.exception.library_op_error import LibraryOpError
|
|
|
23
23
|
from plexutil.exception.library_poll_timeout_error import (
|
|
24
24
|
LibraryPollTimeoutError,
|
|
25
25
|
)
|
|
26
|
+
from plexutil.exception.library_section_missing_error import (
|
|
27
|
+
LibrarySectionMissingError,
|
|
28
|
+
)
|
|
26
29
|
from plexutil.exception.server_config_error import ServerConfigError
|
|
27
30
|
from plexutil.exception.unexpected_argument_error import (
|
|
28
31
|
UnexpectedArgumentError,
|
|
@@ -278,6 +281,12 @@ def main() -> None:
|
|
|
278
281
|
PlexUtilLogger.get_logger().error(description)
|
|
279
282
|
sys.exit(1)
|
|
280
283
|
|
|
284
|
+
except LibrarySectionMissingError as e:
|
|
285
|
+
sys.tracebacklimit = 0
|
|
286
|
+
description = "\n=====Library Not Found Error=====\n" f"{e!s}"
|
|
287
|
+
PlexUtilLogger.get_logger().error(description)
|
|
288
|
+
sys.exit(1)
|
|
289
|
+
|
|
281
290
|
except UnexpectedArgumentError as e:
|
|
282
291
|
sys.tracebacklimit = 0
|
|
283
292
|
description = (
|
|
@@ -174,16 +174,13 @@ class Library(ABC):
|
|
|
174
174
|
offset = abs(updated_current_count - current_count)
|
|
175
175
|
current_count = updated_current_count
|
|
176
176
|
|
|
177
|
-
if current_count == expected_count:
|
|
178
|
-
for _ in range(abs(current_count - display_count)):
|
|
179
|
-
bar()
|
|
180
|
-
|
|
181
|
-
break
|
|
182
|
-
|
|
183
177
|
for _ in range(offset):
|
|
184
178
|
display_count = display_count + 1
|
|
185
179
|
bar()
|
|
186
180
|
|
|
181
|
+
if current_count == expected_count:
|
|
182
|
+
break
|
|
183
|
+
|
|
187
184
|
time.sleep(interval_seconds)
|
|
188
185
|
attempts = attempts + 1
|
|
189
186
|
if attempts >= requested_attempts:
|
|
@@ -264,7 +261,11 @@ class Library(ABC):
|
|
|
264
261
|
if filtered_section.title == self.name:
|
|
265
262
|
return filtered_section
|
|
266
263
|
|
|
267
|
-
|
|
264
|
+
if self.name:
|
|
265
|
+
description = f"Library not found: {self.name}"
|
|
266
|
+
else:
|
|
267
|
+
description = "Library Name (-libn) not specified, see -h"
|
|
268
|
+
raise LibrarySectionMissingError(description)
|
|
268
269
|
|
|
269
270
|
def __get_local_files(
|
|
270
271
|
self,
|
|
@@ -57,8 +57,9 @@ class Prompt(Static):
|
|
|
57
57
|
"--playlist_name",
|
|
58
58
|
metavar="Playlist Name",
|
|
59
59
|
type=str,
|
|
60
|
-
nargs="
|
|
60
|
+
nargs="+",
|
|
61
61
|
help=("Name of the playlist"),
|
|
62
|
+
default=[],
|
|
62
63
|
)
|
|
63
64
|
|
|
64
65
|
parser.add_argument(
|
|
@@ -76,8 +77,9 @@ class Prompt(Static):
|
|
|
76
77
|
"--library_name",
|
|
77
78
|
metavar="Library Name",
|
|
78
79
|
type=str,
|
|
79
|
-
nargs="
|
|
80
|
+
nargs="+",
|
|
80
81
|
help="Library Name",
|
|
82
|
+
default=[],
|
|
81
83
|
)
|
|
82
84
|
|
|
83
85
|
parser.add_argument(
|
|
@@ -164,6 +166,9 @@ class Prompt(Static):
|
|
|
164
166
|
)
|
|
165
167
|
library_name = args.library_name
|
|
166
168
|
|
|
169
|
+
playlist_name = " ".join(playlist_name) if playlist_name else ""
|
|
170
|
+
library_name = " ".join(library_name) if library_name else ""
|
|
171
|
+
|
|
167
172
|
if is_version:
|
|
168
173
|
plexutil_version = ""
|
|
169
174
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: plexutil
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.4
|
|
4
4
|
Author-email: Carlos Florez <carlos@florez.co.uk>
|
|
5
5
|
Maintainer-email: Carlos Florez <carlos@florez.co.uk>
|
|
6
6
|
License: MIT License
|
|
@@ -40,7 +40,7 @@ Requires-Dist: jsonschema==4.23.0
|
|
|
40
40
|
Requires-Dist: peewee==3.17.7
|
|
41
41
|
Requires-Dist: colorlog==6.4.0
|
|
42
42
|
Requires-Dist: keyring==25.5.0
|
|
43
|
-
Requires-Dist: cryptography==44.0.
|
|
43
|
+
Requires-Dist: cryptography==44.0.1
|
|
44
44
|
|
|
45
45
|
# Plexutil
|
|
46
46
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/movie_library_preferences.json
RENAMED
|
File without changes
|
{plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/music_library_preferences.json
RENAMED
|
File without changes
|
|
File without changes
|
{plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/tv_library_preferences.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/song_music_playlist_composite_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|