Source code for arioso.platforms.jen.adapter

"""Jen adapter via REST API."""

from arioso.base import AudioResult, Song
from arioso.platforms._base_adapter import BaseRestAdapter


[docs] class Adapter(BaseRestAdapter): """Adapter for Jen music generation."""
[docs] def generate( self, prompt: str, *, duration: float = 30, output_format: str = "mp3", continue_from: str = "", **kwargs, ) -> list[Song]: """Generate music via Jen. Args: prompt: Text description of desired music. duration: Track duration in seconds. output_format: Output format ('mp3' or 'wav'). continue_from: Track ID or URL to extend from. Returns: List containing a single Song object. """ payload = { "prompt": prompt, "duration": duration, "format": output_format, } if continue_from: payload["continue_from"] = continue_from response = self.session.post(f"{self.base_url}/generate", json=payload) response.raise_for_status() data = response.json() audio_url = data.get("audio_url", data.get("url", "")) track_id = data.get("id", data.get("track_id", "")) return [ Song( id=track_id, audio=AudioResult( audio_url=audio_url, format=output_format, sample_rate=48000, ), platform="jen", status="complete" if audio_url else "pending", metadata=data, ) ]