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.
Files changed (94) hide show
  1. {plexutil-2.0.2 → plexutil-2.0.4}/PKG-INFO +2 -2
  2. {plexutil-2.0.2 → plexutil-2.0.4}/pyproject.toml +2 -2
  3. {plexutil-2.0.2 → plexutil-2.0.4}/requirements.txt +1 -1
  4. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/__main__.py +9 -0
  5. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/library.py +8 -7
  6. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/prompt.py +7 -2
  7. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/PKG-INFO +2 -2
  8. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/requires.txt +1 -1
  9. {plexutil-2.0.2 → plexutil-2.0.4}/.github/workflows/python-publish.yml +0 -0
  10. {plexutil-2.0.2 → plexutil-2.0.4}/.gitignore +0 -0
  11. {plexutil-2.0.2 → plexutil-2.0.4}/LICENSE +0 -0
  12. {plexutil-2.0.2 → plexutil-2.0.4}/MANIFEST.in +0 -0
  13. {plexutil-2.0.2 → plexutil-2.0.4}/README.md +0 -0
  14. {plexutil-2.0.2 → plexutil-2.0.4}/git-hooks/commit-msg +0 -0
  15. {plexutil-2.0.2 → plexutil-2.0.4}/git-hooks/pre-commit +0 -0
  16. {plexutil-2.0.2 → plexutil-2.0.4}/init.sh +0 -0
  17. {plexutil-2.0.2 → plexutil-2.0.4}/ruff.toml +0 -0
  18. {plexutil-2.0.2 → plexutil-2.0.4}/setup.cfg +0 -0
  19. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/__init__.py +0 -0
  20. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/config/log_config.yaml +0 -0
  21. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/__init__.py +0 -0
  22. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/movie_library.py +0 -0
  23. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/music_library.py +0 -0
  24. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/playlist.py +0 -0
  25. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/server_config.py +0 -0
  26. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/core/tv_library.py +0 -0
  27. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/__init__.py +0 -0
  28. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/bootstrap_paths_dto.py +0 -0
  29. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/library_preferences_dto.py +0 -0
  30. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/local_file_dto.py +0 -0
  31. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/movie_dto.py +0 -0
  32. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/music_playlist_dto.py +0 -0
  33. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/server_config_dto.py +0 -0
  34. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/song_dto.py +0 -0
  35. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/tv_episode_dto.py +0 -0
  36. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/tv_language_manifest_dto.py +0 -0
  37. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/tv_series_dto.py +0 -0
  38. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/dto/user_instructions_dto.py +0 -0
  39. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/__init__.py +0 -0
  40. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/agent.py +0 -0
  41. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/file_type.py +0 -0
  42. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/language.py +0 -0
  43. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/library_name.py +0 -0
  44. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/library_type.py +0 -0
  45. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/scanner.py +0 -0
  46. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/enums/user_request.py +0 -0
  47. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/__init__.py +0 -0
  48. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/bootstrap_error.py +0 -0
  49. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/database_connection_error.py +0 -0
  50. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/entity_not_found_error.py +0 -0
  51. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_illegal_state_error.py +0 -0
  52. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_op_error.py +0 -0
  53. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_poll_timeout_error.py +0 -0
  54. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_section_missing_error.py +0 -0
  55. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/library_unsupported_error.py +0 -0
  56. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/server_config_error.py +0 -0
  57. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/unexpected_argument_error.py +0 -0
  58. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/unexpected_naming_pattern_error.py +0 -0
  59. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/exception/user_error.py +0 -0
  60. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/__init__.py +0 -0
  61. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/music_playlist_mapper.py +0 -0
  62. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/server_config_mapper.py +0 -0
  63. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/mapper/song_mapper.py +0 -0
  64. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/__init__.py +0 -0
  65. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/music_playlist_entity.py +0 -0
  66. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/plexutil_library_config.py +0 -0
  67. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/server_config_entity.py +0 -0
  68. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/song_entity.py +0 -0
  69. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/model/song_music_playlist_entity.py +0 -0
  70. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/plex_util_logger.py +0 -0
  71. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/manifests/tv_language_manifest.json +0 -0
  72. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/movie_library_preferences.json +0 -0
  73. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/music_library_preferences.json +0 -0
  74. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/plex_server_setting_preferences.json +0 -0
  75. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/sample/preferences/tv_library_preferences.json +0 -0
  76. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/schemas/v1/preferences_schema.json +0 -0
  77. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/schemas/v1/tv_language_manifest_schema.json +0 -0
  78. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/__init__.py +0 -0
  79. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/db_manager.py +0 -0
  80. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/music_playlist_service.py +0 -0
  81. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/server_config_service.py +0 -0
  82. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/song_music_playlist_composite_service.py +0 -0
  83. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/service/song_service.py +0 -0
  84. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/static.py +0 -0
  85. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/__init__.py +0 -0
  86. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/file_importer.py +0 -0
  87. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/path_ops.py +0 -0
  88. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/plex_ops.py +0 -0
  89. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/query_builder.py +0 -0
  90. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil/util/token_manager.py +0 -0
  91. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/SOURCES.txt +0 -0
  92. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/dependency_links.txt +0 -0
  93. {plexutil-2.0.2 → plexutil-2.0.4}/src/plexutil.egg-info/entry_points.txt +0 -0
  94. {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.2
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.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.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.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 = (
@@ -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
- raise LibrarySectionMissingError
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.2
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.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