mirror of
https://github.com/acid-info/logos-press-engine.git
synced 2026-08-27 15:11:12 +00:00
* feat: render Spotify and Apple Podcasts embeds on episode pages Episodes without a Youtube or Simplecast channel rendered no player at all, since Episode.Body only ever selected those two channels. Spotify and Apple Podcasts were shown as text links only. Add an embed fallback so those episodes render the provider's own iframe player. react-player has no Spotify support, so the embed is a plain iframe and is intentionally not wired into the global audio player - these providers expose no playback state to the embedding page. Also hide the duration in the episode stats row when it is 0, which is the case for embed players that cannot report a duration. * fix: drop the Apple Podcasts embed embed.podcasts.apple.com renders an empty grey placeholder instead of a player, confirmed on the deployed preview. An Apple-only episode is better served by the existing channel link than by a broken embed, so only Spotify falls back to an iframe player. * feat: play Apple Podcasts episodes from the resolved audio file Apple's own iframe embed cannot be used: embed.podcasts.apple.com renders an empty grey placeholder and never mounts its player component. Verified in a real Chrome, both for our episode and for a mainstream podcast (The Daily), so it is Apple's embed service rather than our data. Resolve the episode's audio file instead. The Apple Podcasts URL carries the show id, and the iTunes lookup API returns the enclosure URL and the duration for every episode of that show. Exposing that as an audio channel lets the existing Simplecast code path play it, which also brings back the duration in the stats row and the global bottom player. Episode ids in the CMS are not always in sync with Apple, so the lookup falls back to matching on the episode title. * fix: prefer the Spotify embed over the resolved audio file An episode that has both Spotify and Apple Podcasts now renders the Spotify player. The resolved audio file stays as the last resort, for episodes that can neither be played nor embedded. The transformer skips the iTunes lookup for those episodes too, so it only runs when its result will actually be used. * chore: ignore env files Keeps new local env files out of commits. Does not untrack the existing .env, which is still committed.