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.
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/PKG-INFO +12 -1
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/README.md +11 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/PKG-INFO +12 -1
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/__init__.py +1 -1
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/config.py +10 -1
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/player/ffplay.py +4 -2
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/pyproject.toml +2 -1
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/LICENSE +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/SOURCES.txt +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/dependency_links.txt +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/entry_points.txt +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/requires.txt +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/top_level.txt +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/__main__.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/ai_tracks.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/cli.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/client.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/context/__init__.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/context/mood.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/context/temporal.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/daemon.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/hf_cache.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/history.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/model_manager.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/__init__.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/ipc.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/paths.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/platform/player_control.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/player/__init__.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/player/base.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/__init__.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_generator.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/__init__.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/audioldm_strategy.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/bark_strategy.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_config.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_registry.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_strategy.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/musicgen_strategy.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/progress_callback.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/strategy_cache.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/local.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/radio.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/youtube.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/youtube_cache.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/setup.cfg +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/tests/test_ai_tracks.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/tests/test_config.py +0 -0
- {coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/tests/test_context.py +0 -0
- {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.
|
|
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.
|
|
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
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/coder_music_cli.egg-info/dependency_links.txt
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/audioldm_strategy.py
RENAMED
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/bark_strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_registry.py
RENAMED
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/model_strategy.py
RENAMED
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/musicgen_strategy.py
RENAMED
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/progress_callback.py
RENAMED
|
File without changes
|
{coder_music_cli-0.8.0 → coder_music_cli-0.8.2}/music_cli/sources/ai_models/strategy_cache.py
RENAMED
|
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
|
|
File without changes
|