Replace Spotify API with screenshot taste workflow and example profile.
Remove spotify integration; add TASTE-FROM-SCREENSHOTS guide; ship Ozan settings.json and taste_seeds.json as Cursor examples plus new wandering dervish track. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -13,7 +13,6 @@ from ozan_radio.config import Config
|
||||
from ozan_radio.dj import DeepSeekDJ
|
||||
from ozan_radio.lyria import LyriaEngine
|
||||
from ozan_radio.queue import RadioQueue
|
||||
from ozan_radio.spotify import SpotifyTaste
|
||||
from ozan_radio.chat_store import ChatStore
|
||||
from ozan_radio.dj import TrackPlan
|
||||
from ozan_radio.library import list_saved_songs
|
||||
@@ -117,12 +116,11 @@ async def _compose_track(request: str | None = None, *, check_limit: bool = True
|
||||
"message": f"Daily limit reached ({budget['max_per_day']} new songs)",
|
||||
"budget": budget,
|
||||
}
|
||||
taste = await SpotifyTaste(cfg).fetch_taste()
|
||||
seeds = None if taste else load_taste_seeds()
|
||||
seeds = load_taste_seeds()
|
||||
q = _get_queue()
|
||||
vibe = request or _chat.take_vibe_hint()
|
||||
plan = await DeepSeekDJ(cfg).plan_next(
|
||||
taste, q.recent_titles, seeds, request=vibe or None
|
||||
q.recent_titles, seeds, request=vibe or None
|
||||
)
|
||||
_set_generation(busy=True, phase="composing", title=plan.title)
|
||||
track = LyriaEngine(cfg).generate(plan)
|
||||
@@ -137,7 +135,7 @@ async def _compose_track(request: str | None = None, *, check_limit: bool = True
|
||||
"status": "ok",
|
||||
"source": "generated",
|
||||
"track": np.__dict__ if np else None,
|
||||
"taste_used": taste.summary if taste else (seeds.summary if seeds else None),
|
||||
"taste_used": seeds.summary if seeds else None,
|
||||
"cost_usd": cost,
|
||||
"budget": budget,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user