plexutil 2.0.2__tar.gz → 2.0.3__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.
Files changed (94) hide show
  1. {plexutil-2.0.2 → plexutil-2.0.3}/PKG-INFO +2 -2
  2. {plexutil-2.0.2 → plexutil-2.0.3}/pyproject.toml +2 -2
  3. {plexutil-2.0.2 → plexutil-2.0.3}/requirements.txt +1 -1
  4. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/__main__.py +9 -0
  5. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/library.py +5 -1
  6. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/prompt.py +7 -2
  7. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil.egg-info/PKG-INFO +2 -2
  8. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil.egg-info/requires.txt +1 -1
  9. {plexutil-2.0.2 → plexutil-2.0.3}/.github/workflows/python-publish.yml +0 -0
  10. {plexutil-2.0.2 → plexutil-2.0.3}/.gitignore +0 -0
  11. {plexutil-2.0.2 → plexutil-2.0.3}/LICENSE +0 -0
  12. {plexutil-2.0.2 → plexutil-2.0.3}/MANIFEST.in +0 -0
  13. {plexutil-2.0.2 → plexutil-2.0.3}/README.md +0 -0
  14. {plexutil-2.0.2 → plexutil-2.0.3}/git-hooks/commit-msg +0 -0
  15. {plexutil-2.0.2 → plexutil-2.0.3}/git-hooks/pre-commit +0 -0
  16. {plexutil-2.0.2 → plexutil-2.0.3}/init.sh +0 -0
  17. {plexutil-2.0.2 → plexutil-2.0.3}/ruff.toml +0 -0
  18. {plexutil-2.0.2 → plexutil-2.0.3}/setup.cfg +0 -0
  19. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/__init__.py +0 -0
  20. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/config/log_config.yaml +0 -0
  21. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/__init__.py +0 -0
  22. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/movie_library.py +0 -0
  23. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/music_library.py +0 -0
  24. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/playlist.py +0 -0
  25. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/server_config.py +0 -0
  26. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/core/tv_library.py +0 -0
  27. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/__init__.py +0 -0
  28. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/bootstrap_paths_dto.py +0 -0
  29. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/library_preferences_dto.py +0 -0
  30. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/local_file_dto.py +0 -0
  31. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/movie_dto.py +0 -0
  32. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/music_playlist_dto.py +0 -0
  33. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/server_config_dto.py +0 -0
  34. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/song_dto.py +0 -0
  35. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/tv_episode_dto.py +0 -0
  36. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/tv_language_manifest_dto.py +0 -0
  37. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/tv_series_dto.py +0 -0
  38. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/dto/user_instructions_dto.py +0 -0
  39. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/__init__.py +0 -0
  40. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/agent.py +0 -0
  41. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/file_type.py +0 -0
  42. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/language.py +0 -0
  43. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/library_name.py +0 -0
  44. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/library_type.py +0 -0
  45. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/scanner.py +0 -0
  46. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/enums/user_request.py +0 -0
  47. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/__init__.py +0 -0
  48. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/bootstrap_error.py +0 -0
  49. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/database_connection_error.py +0 -0
  50. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/entity_not_found_error.py +0 -0
  51. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/library_illegal_state_error.py +0 -0
  52. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/library_op_error.py +0 -0
  53. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/library_poll_timeout_error.py +0 -0
  54. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/library_section_missing_error.py +0 -0
  55. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/library_unsupported_error.py +0 -0
  56. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/server_config_error.py +0 -0
  57. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/unexpected_argument_error.py +0 -0
  58. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/unexpected_naming_pattern_error.py +0 -0
  59. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/exception/user_error.py +0 -0
  60. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/mapper/__init__.py +0 -0
  61. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/mapper/music_playlist_mapper.py +0 -0
  62. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/mapper/server_config_mapper.py +0 -0
  63. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/mapper/song_mapper.py +0 -0
  64. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/model/__init__.py +0 -0
  65. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/model/music_playlist_entity.py +0 -0
  66. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/model/plexutil_library_config.py +0 -0
  67. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/model/server_config_entity.py +0 -0
  68. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/model/song_entity.py +0 -0
  69. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/model/song_music_playlist_entity.py +0 -0
  70. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/plex_util_logger.py +0 -0
  71. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/sample/manifests/tv_language_manifest.json +0 -0
  72. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/sample/preferences/movie_library_preferences.json +0 -0
  73. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/sample/preferences/music_library_preferences.json +0 -0
  74. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/sample/preferences/plex_server_setting_preferences.json +0 -0
  75. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/sample/preferences/tv_library_preferences.json +0 -0
  76. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/schemas/v1/preferences_schema.json +0 -0
  77. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/schemas/v1/tv_language_manifest_schema.json +0 -0
  78. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/service/__init__.py +0 -0
  79. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/service/db_manager.py +0 -0
  80. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/service/music_playlist_service.py +0 -0
  81. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/service/server_config_service.py +0 -0
  82. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/service/song_music_playlist_composite_service.py +0 -0
  83. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/service/song_service.py +0 -0
  84. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/static.py +0 -0
  85. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/util/__init__.py +0 -0
  86. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/util/file_importer.py +0 -0
  87. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/util/path_ops.py +0 -0
  88. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/util/plex_ops.py +0 -0
  89. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/util/query_builder.py +0 -0
  90. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil/util/token_manager.py +0 -0
  91. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil.egg-info/SOURCES.txt +0 -0
  92. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil.egg-info/dependency_links.txt +0 -0
  93. {plexutil-2.0.2 → plexutil-2.0.3}/src/plexutil.egg-info/entry_points.txt +0 -0
  94. {plexutil-2.0.2 → plexutil-2.0.3}/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.2
3
+ Version: 2.0.3
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.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.2"
7
+ version = "2.0.3"
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.0"
32
+ "cryptography==44.0.1"
33
33
  ]
34
34
 
35
35
  [project.scripts]
@@ -7,4 +7,4 @@ jsonschema==4.23.0
7
7
  peewee==3.17.7
8
8
  colorlog==6.4.0
9
9
  keyring==25.5.0
10
- cryptography==44.0.0
10
+ cryptography==44.0.1
@@ -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 = (
@@ -264,7 +264,11 @@ class Library(ABC):
264
264
  if filtered_section.title == self.name:
265
265
  return filtered_section
266
266
 
267
- raise LibrarySectionMissingError
267
+ if self.name:
268
+ description = f"Library not found: {self.name}"
269
+ else:
270
+ description = "Library Name (-libn) not specified, see -h"
271
+ raise LibrarySectionMissingError(description)
268
272
 
269
273
  def __get_local_files(
270
274
  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.2
3
+ Version: 2.0.3
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.0
43
+ Requires-Dist: cryptography==44.0.1
44
44
 
45
45
  # Plexutil
46
46
 
@@ -6,7 +6,7 @@ jsonschema==4.23.0
6
6
  peewee==3.17.7
7
7
  colorlog==6.4.0
8
8
  keyring==25.5.0
9
- cryptography==44.0.0
9
+ cryptography==44.0.1
10
10
 
11
11
  [:sys_platform == "win32"]
12
12
  pywin32==306
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