ffmpeg-normalize 1.37.1__tar.gz → 1.37.2__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 (17) hide show
  1. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/PKG-INFO +1 -1
  2. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/pyproject.toml +1 -1
  3. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/__main__.py +9 -5
  4. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/_presets.py +31 -0
  5. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/LICENSE.md +0 -0
  6. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/README.md +0 -0
  7. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/__init__.py +0 -0
  8. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/_cmd_utils.py +0 -0
  9. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/_errors.py +0 -0
  10. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/_ffmpeg_normalize.py +0 -0
  11. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/_logger.py +0 -0
  12. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/_media_file.py +0 -0
  13. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/_streams.py +0 -0
  14. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/data/presets/music.json +0 -0
  15. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/data/presets/podcast.json +0 -0
  16. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/data/presets/streaming-video.json +0 -0
  17. {ffmpeg_normalize-1.37.1 → ffmpeg_normalize-1.37.2}/src/ffmpeg_normalize/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffmpeg-normalize
3
- Version: 1.37.1
3
+ Version: 1.37.2
4
4
  Summary: Normalize audio via ffmpeg
5
5
  Keywords: ffmpeg,normalize,audio
6
6
  Author: Werner Robitza
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "ffmpeg-normalize"
7
- version = "1.37.1"
7
+ version = "1.37.2"
8
8
  description = "Normalize audio via ffmpeg"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -607,13 +607,17 @@ def main() -> None:
607
607
  # Handle --list-presets
608
608
  preset_manager = PresetManager()
609
609
  if cli_args.list_presets:
610
- presets = preset_manager.get_available_presets()
611
- if presets:
610
+ presets_with_source = preset_manager.get_presets_with_source()
611
+ if presets_with_source:
612
612
  print("Available presets:")
613
- for preset in presets:
614
- print(f" - {preset}")
613
+ for preset_name, source in presets_with_source:
614
+ source_label = "(user)" if source == "user" else "(builtin)"
615
+ print(f" - {preset_name} {source_label}")
615
616
  else:
616
- print(f"No presets found in {preset_manager.presets_dir}")
617
+ print("No presets found.")
618
+ print()
619
+ print(f"User presets directory: {preset_manager.presets_dir}")
620
+ print("Place custom .json preset files in this directory.")
617
621
  sys.exit(0)
618
622
 
619
623
  # Load and apply preset if specified
@@ -94,6 +94,37 @@ class PresetManager:
94
94
 
95
95
  return sorted(presets)
96
96
 
97
+ def get_presets_with_source(self) -> list[tuple[str, str]]:
98
+ """Get list of available presets with their source location.
99
+
100
+ Returns:
101
+ list[tuple[str, str]]: List of (preset_name, source) tuples where
102
+ source is either "user" or "builtin"
103
+ """
104
+ user_presets: set[str] = set()
105
+ builtin_presets: set[str] = set()
106
+
107
+ # Get presets from user config directory
108
+ if self.presets_dir.exists():
109
+ for file in self.presets_dir.glob("*.json"):
110
+ user_presets.add(file.stem)
111
+
112
+ # Get default presets from package
113
+ if self.default_presets_dir.exists():
114
+ for file in self.default_presets_dir.glob("*.json"):
115
+ builtin_presets.add(file.stem)
116
+
117
+ result = []
118
+ all_presets = sorted(user_presets | builtin_presets)
119
+ for preset in all_presets:
120
+ # User presets take precedence
121
+ if preset in user_presets:
122
+ result.append((preset, "user"))
123
+ else:
124
+ result.append((preset, "builtin"))
125
+
126
+ return result
127
+
97
128
  def load_preset(self, preset_name: str) -> dict[str, Any]:
98
129
  """Load a preset file by name.
99
130