meeting-noter 0.3.1__tar.gz → 0.3.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 (43) hide show
  1. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/PKG-INFO +12 -9
  2. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/README.md +9 -7
  3. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/pyproject.toml +7 -2
  4. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/audio/encoder.py +26 -1
  5. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter.egg-info/PKG-INFO +12 -9
  6. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter.egg-info/requires.txt +3 -1
  7. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/setup.cfg +0 -0
  8. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/__init__.py +0 -0
  9. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/__main__.py +0 -0
  10. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/audio/__init__.py +0 -0
  11. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/audio/capture.py +0 -0
  12. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/audio/system_audio.py +0 -0
  13. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/cli.py +0 -0
  14. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/config.py +0 -0
  15. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/daemon.py +0 -0
  16. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/gui/__init__.py +0 -0
  17. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/gui/__main__.py +0 -0
  18. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/gui/app.py +0 -0
  19. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/gui/main_window.py +0 -0
  20. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/gui/meetings_tab.py +0 -0
  21. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/gui/recording_tab.py +0 -0
  22. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/gui/settings_tab.py +0 -0
  23. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/install/__init__.py +0 -0
  24. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/install/macos.py +0 -0
  25. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/meeting_detector.py +0 -0
  26. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/menubar.py +0 -0
  27. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/output/__init__.py +0 -0
  28. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/output/writer.py +0 -0
  29. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/__init__.py +0 -0
  30. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon.icns +0 -0
  31. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon.png +0 -0
  32. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon_128.png +0 -0
  33. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon_16.png +0 -0
  34. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon_256.png +0 -0
  35. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon_32.png +0 -0
  36. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon_512.png +0 -0
  37. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/resources/icon_64.png +0 -0
  38. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/transcription/__init__.py +0 -0
  39. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter/transcription/engine.py +0 -0
  40. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter.egg-info/SOURCES.txt +0 -0
  41. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter.egg-info/dependency_links.txt +0 -0
  42. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter.egg-info/entry_points.txt +0 -0
  43. {meeting_noter-0.3.1 → meeting_noter-0.3.2}/src/meeting_noter.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meeting-noter
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Offline meeting transcription for macOS with automatic meeting detection
5
5
  Author: Victor
6
6
  License: MIT
@@ -25,7 +25,6 @@ Requires-Dist: click>=8.0
25
25
  Requires-Dist: sounddevice>=0.4.6
26
26
  Requires-Dist: numpy>=1.21
27
27
  Requires-Dist: faster-whisper>=1.0.0
28
- Requires-Dist: lameenc>=1.5.0
29
28
  Requires-Dist: rumps>=0.4.0
30
29
  Requires-Dist: PyQt6>=6.5.0
31
30
  Requires-Dist: pyobjc-framework-Cocoa>=9.0; sys_platform == "darwin"
@@ -34,6 +33,8 @@ Requires-Dist: pyobjc-framework-ScreenCaptureKit>=9.0; sys_platform == "darwin"
34
33
  Requires-Dist: pyobjc-framework-AVFoundation>=9.0; sys_platform == "darwin"
35
34
  Requires-Dist: pyobjc-framework-CoreMedia>=9.0; sys_platform == "darwin"
36
35
  Requires-Dist: pyobjc-framework-libdispatch>=9.0; sys_platform == "darwin"
36
+ Provides-Extra: mp3
37
+ Requires-Dist: lameenc>=1.5.0; extra == "mp3"
37
38
  Provides-Extra: dev
38
39
  Requires-Dist: pytest>=7.0; extra == "dev"
39
40
  Requires-Dist: pytest-cov; extra == "dev"
@@ -56,12 +57,6 @@ Offline meeting transcription tool for macOS. Captures both your voice and meeti
56
57
 
57
58
  ## Installation
58
59
 
59
- First, install the LAME audio encoder (required for MP3 encoding):
60
- ```bash
61
- brew install lame
62
- ```
63
-
64
- Then install meeting-noter:
65
60
  ```bash
66
61
  pip install meeting-noter
67
62
  ```
@@ -71,6 +66,14 @@ Or with pipx (recommended):
71
66
  pipx install meeting-noter
72
67
  ```
73
68
 
69
+ **For MP3 support** (smaller files), install LAME first:
70
+ ```bash
71
+ brew install lame
72
+ pip install meeting-noter[mp3]
73
+ ```
74
+
75
+ Without LAME, the app will prompt you to install it when you try to record.
76
+
74
77
  ## Quick Start
75
78
 
76
79
  **Menu Bar App** (recommended):
@@ -209,7 +212,7 @@ Config file: `~/.config/meeting-noter/config.json`
209
212
 
210
213
  - macOS 12.3+ (for ScreenCaptureKit)
211
214
  - Python 3.9 - 3.12
212
- - LAME audio encoder (`brew install lame`)
215
+ - LAME audio encoder (`brew install lame`) - optional but recommended for MP3
213
216
 
214
217
  ## License
215
218
 
@@ -13,12 +13,6 @@ Offline meeting transcription tool for macOS. Captures both your voice and meeti
13
13
 
14
14
  ## Installation
15
15
 
16
- First, install the LAME audio encoder (required for MP3 encoding):
17
- ```bash
18
- brew install lame
19
- ```
20
-
21
- Then install meeting-noter:
22
16
  ```bash
23
17
  pip install meeting-noter
24
18
  ```
@@ -28,6 +22,14 @@ Or with pipx (recommended):
28
22
  pipx install meeting-noter
29
23
  ```
30
24
 
25
+ **For MP3 support** (smaller files), install LAME first:
26
+ ```bash
27
+ brew install lame
28
+ pip install meeting-noter[mp3]
29
+ ```
30
+
31
+ Without LAME, the app will prompt you to install it when you try to record.
32
+
31
33
  ## Quick Start
32
34
 
33
35
  **Menu Bar App** (recommended):
@@ -166,7 +168,7 @@ Config file: `~/.config/meeting-noter/config.json`
166
168
 
167
169
  - macOS 12.3+ (for ScreenCaptureKit)
168
170
  - Python 3.9 - 3.12
169
- - LAME audio encoder (`brew install lame`)
171
+ - LAME audio encoder (`brew install lame`) - optional but recommended for MP3
170
172
 
171
173
  ## License
172
174
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meeting-noter"
7
- version = "0.3.1"
7
+ version = "0.3.2"
8
8
  description = "Offline meeting transcription for macOS with automatic meeting detection"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -32,7 +32,6 @@ dependencies = [
32
32
  "sounddevice>=0.4.6",
33
33
  "numpy>=1.21",
34
34
  "faster-whisper>=1.0.0",
35
- "lameenc>=1.5.0",
36
35
  "rumps>=0.4.0",
37
36
  "PyQt6>=6.5.0",
38
37
  "pyobjc-framework-Cocoa>=9.0; sys_platform == 'darwin'",
@@ -43,7 +42,13 @@ dependencies = [
43
42
  "pyobjc-framework-libdispatch>=9.0; sys_platform == 'darwin'",
44
43
  ]
45
44
 
45
+ # lameenc requires LAME to be installed (brew install lame)
46
+ # It will be installed automatically if LAME is present
47
+
46
48
  [project.optional-dependencies]
49
+ mp3 = [
50
+ "lameenc>=1.5.0",
51
+ ]
47
52
  dev = [
48
53
  "pytest>=7.0",
49
54
  "pytest-cov",
@@ -3,12 +3,36 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import re
6
+ import sys
6
7
  import numpy as np
7
- import lameenc
8
8
  from pathlib import Path
9
9
  from datetime import datetime
10
10
  from typing import Optional, Tuple
11
11
 
12
+ # Try to import lameenc, provide helpful error if not available
13
+ try:
14
+ import lameenc
15
+ LAMEENC_AVAILABLE = True
16
+ except ImportError:
17
+ LAMEENC_AVAILABLE = False
18
+ lameenc = None
19
+
20
+
21
+ def _check_lameenc():
22
+ """Check if lameenc is available, raise helpful error if not."""
23
+ if not LAMEENC_AVAILABLE:
24
+ print("\n" + "=" * 60, file=sys.stderr)
25
+ print("ERROR: MP3 encoding requires the 'lame' library", file=sys.stderr)
26
+ print("=" * 60, file=sys.stderr)
27
+ print("\nTo fix this, run:", file=sys.stderr)
28
+ print("\n brew install lame", file=sys.stderr)
29
+ print("\nThen reinstall meeting-noter:", file=sys.stderr)
30
+ print("\n pip install --force-reinstall meeting-noter", file=sys.stderr)
31
+ print("\n" + "=" * 60 + "\n", file=sys.stderr)
32
+ raise ImportError(
33
+ "lameenc not available. Install LAME first: brew install lame"
34
+ )
35
+
12
36
 
13
37
  def _sanitize_filename(name: str, max_length: int = 50) -> str:
14
38
  """Sanitize a string for use as a filename.
@@ -47,6 +71,7 @@ class MP3Encoder:
47
71
  bitrate: int = 128,
48
72
  quality: int = 2,
49
73
  ):
74
+ _check_lameenc()
50
75
  self.sample_rate = sample_rate
51
76
  self.channels = channels
52
77
  self.encoder = lameenc.Encoder()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meeting-noter
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Offline meeting transcription for macOS with automatic meeting detection
5
5
  Author: Victor
6
6
  License: MIT
@@ -25,7 +25,6 @@ Requires-Dist: click>=8.0
25
25
  Requires-Dist: sounddevice>=0.4.6
26
26
  Requires-Dist: numpy>=1.21
27
27
  Requires-Dist: faster-whisper>=1.0.0
28
- Requires-Dist: lameenc>=1.5.0
29
28
  Requires-Dist: rumps>=0.4.0
30
29
  Requires-Dist: PyQt6>=6.5.0
31
30
  Requires-Dist: pyobjc-framework-Cocoa>=9.0; sys_platform == "darwin"
@@ -34,6 +33,8 @@ Requires-Dist: pyobjc-framework-ScreenCaptureKit>=9.0; sys_platform == "darwin"
34
33
  Requires-Dist: pyobjc-framework-AVFoundation>=9.0; sys_platform == "darwin"
35
34
  Requires-Dist: pyobjc-framework-CoreMedia>=9.0; sys_platform == "darwin"
36
35
  Requires-Dist: pyobjc-framework-libdispatch>=9.0; sys_platform == "darwin"
36
+ Provides-Extra: mp3
37
+ Requires-Dist: lameenc>=1.5.0; extra == "mp3"
37
38
  Provides-Extra: dev
38
39
  Requires-Dist: pytest>=7.0; extra == "dev"
39
40
  Requires-Dist: pytest-cov; extra == "dev"
@@ -56,12 +57,6 @@ Offline meeting transcription tool for macOS. Captures both your voice and meeti
56
57
 
57
58
  ## Installation
58
59
 
59
- First, install the LAME audio encoder (required for MP3 encoding):
60
- ```bash
61
- brew install lame
62
- ```
63
-
64
- Then install meeting-noter:
65
60
  ```bash
66
61
  pip install meeting-noter
67
62
  ```
@@ -71,6 +66,14 @@ Or with pipx (recommended):
71
66
  pipx install meeting-noter
72
67
  ```
73
68
 
69
+ **For MP3 support** (smaller files), install LAME first:
70
+ ```bash
71
+ brew install lame
72
+ pip install meeting-noter[mp3]
73
+ ```
74
+
75
+ Without LAME, the app will prompt you to install it when you try to record.
76
+
74
77
  ## Quick Start
75
78
 
76
79
  **Menu Bar App** (recommended):
@@ -209,7 +212,7 @@ Config file: `~/.config/meeting-noter/config.json`
209
212
 
210
213
  - macOS 12.3+ (for ScreenCaptureKit)
211
214
  - Python 3.9 - 3.12
212
- - LAME audio encoder (`brew install lame`)
215
+ - LAME audio encoder (`brew install lame`) - optional but recommended for MP3
213
216
 
214
217
  ## License
215
218
 
@@ -2,7 +2,6 @@ click>=8.0
2
2
  sounddevice>=0.4.6
3
3
  numpy>=1.21
4
4
  faster-whisper>=1.0.0
5
- lameenc>=1.5.0
6
5
  rumps>=0.4.0
7
6
  PyQt6>=6.5.0
8
7
 
@@ -20,3 +19,6 @@ pytest-cov
20
19
  black
21
20
  ruff
22
21
  mypy
22
+
23
+ [mp3]
24
+ lameenc>=1.5.0
File without changes