feat(audio): podcast cover art in system Now Playing, CLI --play included
The cover was previously only wired through the UI hook; --play skipped it. Also: Bun's fetch hangs in compiled binaries (Bun 1.3.8) — every cover download silently failed in shipped builds, timing out against any host. Cover staging now shells out to curl (present on macOS/Linux, 8s bound), shared via src/utils/cover-art.ts so the UI and CLI paths stage the same temp file and pass it to mpv as --cover-art-files (albumart track).
This commit is contained in:
@@ -182,9 +182,18 @@ async function handlePlay(feeds: Feed[], arg: string): Promise<void> {
|
||||
|
||||
try {
|
||||
const { createAudioBackend } = await import("./utils/audio-player")
|
||||
const { fetchCoverArt } = await import("./utils/cover-art")
|
||||
const backend = createAudioBackend()
|
||||
if (episodeResult.audioUrl) {
|
||||
await backend.play(episodeResult.audioUrl)
|
||||
// Stage the podcast cover so the system Now Playing shows
|
||||
// artwork (mpv --cover-art-files), like the UI path does.
|
||||
const coverArtPath = feedResult.podcast.coverUrl
|
||||
? await fetchCoverArt(feedResult.podcast.coverUrl)
|
||||
: null
|
||||
await backend.play(episodeResult.audioUrl, {
|
||||
mediaTitle: `${feedResult.podcast.title} — ${episodeResult.title}`,
|
||||
coverArtPath: coverArtPath ?? undefined,
|
||||
})
|
||||
console.log("Playback started (use the UI to control)")
|
||||
} else {
|
||||
console.log("No audio URL available for this episode")
|
||||
|
||||
Reference in New Issue
Block a user