coder-music-cli 0.8.0__tar.gz → 0.8.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 (50) hide show
  1. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/PKG-INFO +12 -1
  2. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/README.md +11 -0
  3. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/PKG-INFO +12 -1
  4. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/__init__.py +1 -1
  5. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/config.py +10 -1
  6. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/player/ffplay.py +4 -2
  7. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/pyproject.toml +2 -1
  8. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/LICENSE +0 -0
  9. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/SOURCES.txt +0 -0
  10. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/dependency_links.txt +0 -0
  11. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/entry_points.txt +0 -0
  12. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/requires.txt +0 -0
  13. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/top_level.txt +0 -0
  14. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/__main__.py +0 -0
  15. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/ai_tracks.py +0 -0
  16. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/cli.py +0 -0
  17. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/client.py +0 -0
  18. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/context/__init__.py +0 -0
  19. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/context/mood.py +0 -0
  20. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/context/temporal.py +0 -0
  21. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/daemon.py +0 -0
  22. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/hf_cache.py +0 -0
  23. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/history.py +0 -0
  24. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/model_manager.py +0 -0
  25. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/__init__.py +0 -0
  26. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/ipc.py +0 -0
  27. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/paths.py +0 -0
  28. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/player_control.py +0 -0
  29. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/player/__init__.py +0 -0
  30. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/player/base.py +0 -0
  31. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/__init__.py +0 -0
  32. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_generator.py +0 -0
  33. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/__init__.py +0 -0
  34. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/audioldm_strategy.py +0 -0
  35. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/bark_strategy.py +0 -0
  36. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_config.py +0 -0
  37. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_registry.py +0 -0
  38. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_strategy.py +0 -0
  39. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/musicgen_strategy.py +0 -0
  40. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/progress_callback.py +0 -0
  41. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/strategy_cache.py +0 -0
  42. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/local.py +0 -0
  43. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/radio.py +0 -0
  44. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/youtube.py +0 -0
  45. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/youtube_cache.py +0 -0
  46. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/setup.cfg +0 -0
  47. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/tests/test_ai_tracks.py +0 -0
  48. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/tests/test_config.py +0 -0
  49. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/tests/test_context.py +0 -0
  50. {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/tests/test_history.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coder-music-cli
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: A command-line music application for coders with daemon support, radio streaming, and AI-generated music
5
5
  Author-email: Luong Nguyen <luongnv89@gmail.com>
6
6
  Maintainer-email: Luong Nguyen <luongnv89@gmail.com>
@@ -55,8 +55,11 @@ Dynamic: license-file
55
55
 
56
56
  <h1 align="center">music-cli</h1>
57
57
 
58
+ <p align="center"><em>Code. Listen. Iterate.</em></p>
59
+
58
60
  <p align="center">
59
61
  <a href="https://pypi.org/project/coder-music-cli/"><img src="https://img.shields.io/pypi/v/coder-music-cli.svg" alt="PyPI version"></a>
62
+ <a href="https://pepy.tech/project/coder-music-cli"><img src="https://static.pepy.tech/badge/coder-music-cli" alt="PyPI Downloads"></a>
60
63
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"></a>
61
64
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
62
65
  </p>
@@ -407,6 +410,14 @@ GitHub: https://github.com/luongnv89/music-cli
407
410
 
408
411
  ## Changelog
409
412
 
413
+ ### v0.8.2
414
+ - Fix missing mood radio mappings: all 8 moods now have working radio streams
415
+ - Added streams for: relaxed (Groove Salad), energetic (DEF CON Radio), melancholic (Indie Pop Rocks), peaceful (Drone Zone)
416
+ - Fixed fallback to default config when user config lacks mood mappings
417
+
418
+ ### v0.8.1
419
+ - Fix cached YouTube tracks not playing: reconnect options were incorrectly applied to local cached files instead of only remote streams
420
+
410
421
  ### v0.8.0
411
422
  - Add YouTube offline cache for automatic offline playback:
412
423
  - Automatically cache YouTube audio when played
@@ -4,8 +4,11 @@
4
4
 
5
5
  <h1 align="center">music-cli</h1>
6
6
 
7
+ <p align="center"><em>Code. Listen. Iterate.</em></p>
8
+
7
9
  <p align="center">
8
10
  <a href="https://pypi.org/project/coder-music-cli/"><img src="https://img.shields.io/pypi/v/coder-music-cli.svg" alt="PyPI version"></a>
11
+ <a href="https://pepy.tech/project/coder-music-cli"><img src="https://static.pepy.tech/badge/coder-music-cli" alt="PyPI Downloads"></a>
9
12
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"></a>
10
13
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
11
14
  </p>
@@ -356,6 +359,14 @@ GitHub: https://github.com/luongnv89/music-cli
356
359
 
357
360
  ## Changelog
358
361
 
362
+ ### v0.8.2
363
+ - Fix missing mood radio mappings: all 8 moods now have working radio streams
364
+ - Added streams for: relaxed (Groove Salad), energetic (DEF CON Radio), melancholic (Indie Pop Rocks), peaceful (Drone Zone)
365
+ - Fixed fallback to default config when user config lacks mood mappings
366
+
367
+ ### v0.8.1
368
+ - Fix cached YouTube tracks not playing: reconnect options were incorrectly applied to local cached files instead of only remote streams
369
+
359
370
  ### v0.8.0
360
371
  - Add YouTube offline cache for automatic offline playback:
361
372
  - Automatically cache YouTube audio when played
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coder-music-cli
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: A command-line music application for coders with daemon support, radio streaming, and AI-generated music
5
5
  Author-email: Luong Nguyen <luongnv89@gmail.com>
6
6
  Maintainer-email: Luong Nguyen <luongnv89@gmail.com>
@@ -55,8 +55,11 @@ Dynamic: license-file
55
55
 
56
56
  <h1 align="center">music-cli</h1>
57
57
 
58
+ <p align="center"><em>Code. Listen. Iterate.</em></p>
59
+
58
60
  <p align="center">
59
61
  <a href="https://pypi.org/project/coder-music-cli/"><img src="https://img.shields.io/pypi/v/coder-music-cli.svg" alt="PyPI version"></a>
62
+ <a href="https://pepy.tech/project/coder-music-cli"><img src="https://static.pepy.tech/badge/coder-music-cli" alt="PyPI Downloads"></a>
60
63
  <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.9+-blue.svg" alt="Python 3.9+"></a>
61
64
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
62
65
  </p>
@@ -407,6 +410,14 @@ GitHub: https://github.com/luongnv89/music-cli
407
410
 
408
411
  ## Changelog
409
412
 
413
+ ### v0.8.2
414
+ - Fix missing mood radio mappings: all 8 moods now have working radio streams
415
+ - Added streams for: relaxed (Groove Salad), energetic (DEF CON Radio), melancholic (Indie Pop Rocks), peaceful (Drone Zone)
416
+ - Fixed fallback to default config when user config lacks mood mappings
417
+
418
+ ### v0.8.1
419
+ - Fix cached YouTube tracks not playing: reconnect options were incorrectly applied to local cached files instead of only remote streams
420
+
410
421
  ### v0.8.0
411
422
  - Add YouTube offline cache for automatic offline playback:
412
423
  - Automatically cache YouTube audio when played
@@ -1,4 +1,4 @@
1
1
  """music-cli: A command-line music application for coders."""
2
2
 
3
- __version__ = "0.8.0"
3
+ __version__ = "0.8.2"
4
4
  __github_url__ = "https://github.com/luongnv89/music-cli"
@@ -157,6 +157,10 @@ class Config:
157
157
  "happy": "https://streams.ilovemusic.de/iloveradio1.mp3",
158
158
  "sad": "https://streams.ilovemusic.de/iloveradio5.mp3",
159
159
  "excited": "https://streams.ilovemusic.de/iloveradio2.mp3",
160
+ "relaxed": "http://ice1.somafm.com/groovesalad-128-mp3",
161
+ "energetic": "http://ice1.somafm.com/defcon-128-mp3",
162
+ "melancholic": "http://ice1.somafm.com/indiepop-128-mp3",
163
+ "peaceful": "http://ice1.somafm.com/dronezone-128-mp3",
160
164
  },
161
165
  "time_radio_map": {
162
166
  "morning": "https://streams.ilovemusic.de/iloveradio17.mp3",
@@ -390,8 +394,13 @@ Radio Capital|https://icecast.unitedradio.it/Capital.mp3
390
394
 
391
395
  def get_mood_radio(self, mood: str) -> str | None:
392
396
  """Get radio URL for a specific mood."""
397
+ mood_lower = mood.lower()
393
398
  mood_map = self.get("mood_radio_map", {})
394
- return mood_map.get(mood.lower())
399
+ url = mood_map.get(mood_lower)
400
+ if url is None:
401
+ default_map: dict[str, str] = self.DEFAULT_CONFIG.get("mood_radio_map", {}) # type: ignore[assignment]
402
+ url = default_map.get(mood_lower)
403
+ return url
395
404
 
396
405
  def get_time_radio(self, time_period: str) -> str | None:
397
406
  """Get radio URL for a time period (morning/afternoon/evening/night)."""
@@ -62,8 +62,10 @@ class FFplayPlayer(Player):
62
62
  else:
63
63
  cmd.append("-autoexit") # Exit when done (for files)
64
64
 
65
- # For streams, add reconnect options
66
- if track.source_type in ("radio", "youtube"):
65
+ # For remote streams, add reconnect options
66
+ # Only add for actual URLs, not cached local files
67
+ is_remote_stream = track.source.startswith(("http://", "https://"))
68
+ if is_remote_stream and track.source_type in ("radio", "youtube"):
67
69
  cmd.extend(
68
70
  [
69
71
  "-reconnect",
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "coder-music-cli"
7
- version = "0.8.0"
7
+ version = "0.8.2"
8
8
  description = "A command-line music application for coders with daemon support, radio streaming, and AI-generated music"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -104,6 +104,7 @@ ignore_missing_imports = true
104
104
  check_untyped_defs = false
105
105
 
106
106
  [tool.pytest.ini_options]
107
+ asyncio_mode = "auto"
107
108
  testpaths = ["tests"]
108
109
  addopts = "-v --cov=music_cli --cov-report=term-missing"
109
110
 
File without changes