Add DJ curation metadata, public auto-play radio, and Lyria web controls.

Extensive per-track meta feeds DeepSeek planning. Caravan of the Night kept with electric guitar marked disliked. Sahara Saz remains gold standard. Gateway index.html auto-plays on tinqs.com.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-07 15:20:10 +01:00
parent 4b2003866d
commit b2aad43a44
25 changed files with 1869 additions and 75 deletions
+11 -2
View File
@@ -11,6 +11,7 @@ from ozan_radio.lyria import LyriaEngine
from ozan_radio.queue import RadioQueue
from ozan_radio.server import app
from ozan_radio.taste import load_taste_seeds
from ozan_radio.web_playlist import export_gateway_playlist
async def generate_one() -> None:
@@ -40,8 +41,8 @@ def main() -> None:
"command",
nargs="?",
default="serve",
choices=["serve", "generate"],
help="serve = start radio server, generate = one-shot track",
choices=["serve", "generate", "export-web"],
help="serve = API server, generate = one-shot track, export-web = refresh gateway/index.html playlist",
)
args = parser.parse_args()
@@ -49,6 +50,14 @@ def main() -> None:
asyncio.run(generate_one())
return
if args.command == "export-web":
path = export_gateway_playlist()
if path:
print(f"Updated gateway playlist -> {path}")
else:
print("gateway/index.html missing — nothing exported")
return
cfg = Config.from_env()
uvicorn.run(app, host=cfg.radio_host, port=cfg.radio_port, log_level="info")