28 lines
1,006 B
Python
28 lines
1,006 B
Python
"""Playlist writer that makes demo saves explicit and network-free."""
|
|
|
|
import hashlib
|
|
|
|
import structlog
|
|
|
|
from app.domain.models import CreatedPlaylist
|
|
|
|
|
|
class DemoPlaylistWriter:
|
|
"""Simulate playlist writes with stable Spotify-shaped URLs."""
|
|
|
|
async def create_playlist(self, name: str, description: str) -> CreatedPlaylist:
|
|
"""Return a deterministic fake playlist without an external write."""
|
|
digest = hashlib.sha256(f"{name}\n{description}".encode()).hexdigest()[:12]
|
|
playlist_id = f"demo-{digest}"
|
|
return CreatedPlaylist(
|
|
id=playlist_id,
|
|
url=f"https://open.spotify.com/playlist/{playlist_id}",
|
|
)
|
|
|
|
async def add_tracks_to_playlist(self, playlist_id: str, track_uris: list[str]) -> None:
|
|
"""Log the simulated track addition without writing to Spotify."""
|
|
structlog.get_logger().info(
|
|
"demo_playlist_simulated",
|
|
playlist_id=playlist_id,
|
|
track_count=len(track_uris),
|
|
)
|