github robert-dean/deadair v0.9.0
deadair 0.9.0

latest releases: v0.89.2, v0.89.1, v0.89.0...
one month ago
  • parseFeed reads what a podcast feed carries. An entry now reports its audio attachment as enclosure (from RSS <enclosure> or an Atom <link rel="enclosure">, preferring an audio one, http(s) only), how long it runs as durationMs from itunes:duration, and its artwork, explicit marking, season and episode number. A feed reports its own description, author, artwork, language, categories and explicit marking. Every field is optional, and url is still only ever the page, so a news reader sees exactly what it saw before.
  • A new podcast capability lets a plugin say what programmes the station subscribes to and what each has published: listShows, listEpisodes (newest first, each episode carrying the address of its audio, how long it runs by the publisher's account, and its summary), and an optional searchShows directory. The plugin never fetches the audio; the station fetches it itself, ahead of the slot it airs in. It is deliberately not a music provider, because an episode is not a record, and the README's new "Carrying podcasts" section says why.
  • The station can fetch a podcast episode's audio into its own store, where it becomes a segment ready to air, with POST /podcasts/episodes/{id}/fetch. The download follows the analytics redirects podcast audio sits behind, refuses any address that resolves to this machine or its network, decides what the file is from its first bytes rather than from what the publisher says, and streams to disk under a 256 MB ceiling. On air an episode is named on the mount by its title and its show, reported to listeners as a programme rather than as the station talking, levelled from the loudness a mastered podcast has rather than the station's quieter speech engine, and kept out of play history and scrobbling. Episodes are never drawn at random from the segment shelf.
  • A bundled Podcasts plugin reads the podcast feeds an operator subscribes the station to: one row per show with its feed address, each show described from its own feed, and its episodes listed newest first with the address of their audio and how long they run. It can also look a show up by name in Apple's public podcast directory, which is on by default, can be switched off, and can be pointed at a country's store. It never fetches an episode's audio itself, so the only addresses it asks to reach are the feeds and the directory. Nothing on the station uses it yet.
  • The Library has a Podcasts tab. It lists the episodes the station knows about, newest first, with whether each is fetched, ready to air or aired, why a fetch failed, and a button to fetch one now or try again. It can read every feed again on request, and it can look a show up in Apple's podcast directory and subscribe to it, which adds the show to the Podcasts plugin's own list of feeds. GET /podcasts/search is the directory search behind it. Durations of an hour or more now read as hours everywhere in the console, including the desk's counters while a programme airs.
  • The station keeps a record of the podcast episodes it knows about. Every half hour it reads the newest episodes of every show its podcast plugins carry and remembers each one, with what the feed said about it and, later, whether the station fetched its audio and whether it aired. GET /podcasts/shows lists the shows, GET /podcasts/episodes lists the episodes newest first, and POST /podcasts/refresh asks for a refresh now. The typed SDKs gain the matching podcasts client.
  • The presenter hands over to a programme and comes out of it. When a podcast episode is scheduled and the station's breaks are on, a talk break is planted in front of it, and a break written beside a programme is told what it is: the show, the episode, how long it runs and what the publisher says it is about, described as a programme rather than as a record. A break that promises the programme is dropped if the programme leaves the running order. Lengths of an hour or more are given to the writer in hours and minutes.
  • A podcast can go on the format clock. Add a show as a topic of the new syndicated kind, then put a syndicated band on the schedule about it: three hours before the slot the station fetches the show's newest episode, and at the slot it airs it, if it has not aired it already. A band declines rather than airing an older episode or a different show, and a programme is still carried when the station's own talking is switched off. An episode's stated length now counts on the station's clock, so a bulletin at the top of the next hour lands after the programme rather than an hour early, and a bulletin at the boundary a programme ends on is kept rather than dropped as a second break. Plugin settings can offer the shows the station carries with the new station.podcastShows option source.
  • parseFeed no longer drops an entry whose title is written twice. A podcast entry usually carries both <title> and <itunes:title>, which arrive together once namespace prefixes are removed, and every such entry used to be discarded as untitled. The first readable one is now used, for every field read this way.

Don't miss a new deadair release

NewReleases is sending notifications on new releases.