Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add podcast rss feed of video recordings #291

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Ian2020
Copy link

@Ian2020 Ian2020 commented Feb 7, 2025

Fixes #290

As discussed in that issue this code expects a created_at attribute on events' webm video links so that we can date the podcast episodes correctly:

  test_event:
    event_id: 10835
    ...
    links:
    ...
    - title: Video (WEBM) for MSF@FOSDEM'25 - NixOS, Why we use it and how
      url: https://video.fosdem.org/2025/k3601/fosdem-2025-5165-nixos-doctors-without-borders-msf-why-we-use-it-and-how.av1.webm
      created_at: '2021-02-06 10:50:00+01:00'    # <------- NEW

I took a hopefully good guess at what all the other metadata should be in the feed, example below of the output. It works in some desktop podcast apps I tried so hopefully good enough to start with.

Some notes:

  • The feed this produces validates with https://validator.livewire.io/ and https://validator.w3.org/feed/#validate_by_input - more or less. There seems to be more art than science to crafting a good feed.
  • I use the webm videos only for bandwidth. Apple Podcasts doesn't support webm, but other players seem to.
  • We are missing a length attribute on the enclosure tag (meaning the length of the video file in bytes). Whilst the podcast apps I used don't seem to mind it does mean a user can't see how big the download will be. If a size attribute could also be added to the video links in the pretalx yaml that would very helpful.
  • In future it might be good to support podping. This will take the load off fosdem servers when apps are repeatedly checking if the feed has updated: https://podcasting20.substack.com/p/podping.

Example of the feed:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:podcast="https://podcastindex.org/namespace/1.0">
  <channel>
    <link>https://fosdem.org/2021/</link>
    <atom:link href="https://fosdem.org/2021/videos/rss.xml" rel="self" type="application/rss+xml"/>
    <title>FOSDEM 2021</title>
    <description>Video recordings of FOSDEM talks - new episodes are released when videos become available. FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels.</description>
    <language>en-us</language>
    <copyright>2021 FOSDEM VZW</copyright>
    <podcast:locked>yes</podcast:locked>
    <podcast:funding url="https://fosdem.org/2021/support/donate/">While FOSDEM is primarily funded by sponsors and the sale of t-shirts, we also gratefully accept voluntary donations.</podcast:funding>
    <lastBuildDate>Sat, 6 Feb 2021 00:00:00 +0000</lastBuildDate>
    <pubDate>Sat, 6 Feb 2021 00:00:00 +0000</pubDate>
    <ttl>1800</ttl>
    <image>
      <url>https://fosdem.org/2021/support/promote/box.png</url>
      <title>FOSDEM 2021</title>
      <link>https://fosdem.org/2021/</link>
    </image>
    <itunes:type>episodic</itunes:type>
    <itunes:subtitle>All the recordings from this year's event in Brussels.</itunes:subtitle>
    <itunes:category text="Technology"/>
    <itunes:author>FOSDEM VZW</itunes:author>
    <itunes:summary>Video recordings of FOSDEM talks - new episodes are released when videos become available. FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels.</itunes:summary>
    <itunes:image href="https://fosdem.org/2021/support/promote/box.png"/>
    <itunes:owner>
      <itunes:name>FOSDEM VZW</itunes:name>
      <itunes:email>[email protected]</itunes:email>
    </itunes:owner>
    <item>
      <title>Test Event 2</title>
      <guid>https://fosdem.org/2021/schedule/event/test_event2/</guid>
      <pubDate>Sat, 6 Feb 2021 00:00:00 +0000</pubDate>
      <author>[email protected] (FOSDEM Info)</author>
      <link>https://fosdem.org/2021/schedule/event/test_event2/</link>
      <description>We present a real-world use-case of NixOS to manage an highly distributed fleet of servers &amp; VMs in low-resource settings used for mission critical applications. After a brief overview of who MSF is and what we do, we'll dive into the technical details of how we manage our fleet with NixOS and the unique strengths that NixOS brings to the table.</description>
      <enclosure url="https://video.fosdem.org/2025/k3601/fosdem-2025-5165-nixos-doctors-without-borders-msf-why-we-use-it-and-how.av1.webm" type="video/webm"/>
      <podcast:transcript url="https://video.fosdem.org/2025/k3601/fosdem-2025-5165-nixos-doctors-without-borders-msf-why-we-use-it-and-how.vtt" type="text/vtt"/>
      <itunes:episodetype>full</itunes:episodetype>
      <itunes:author>FOSDEM VZW</itunes:author>
      <itunes:subtitle>Subtiyled</itunes:subtitle>
    </item>
    <item>
      <title>NixOS @ Doctors Without Borders (MSF) - why we use it and how</title>
      <guid>https://fosdem.org/2021/schedule/event/test_event/</guid>
      <pubDate>Sat, 6 Feb 2021 00:00:00 +0000</pubDate>
      <author>[email protected] (FOSDEM Info)</author>
      <link>https://fosdem.org/2021/schedule/event/test_event/</link>
      <description>We present a real-world use-case of NixOS to manage an highly distributed fleet of servers &amp; VMs in low-resource settings used for mission critical applications. After a brief overview of who MSF is and what we do, we'll dive into the technical details of how we manage our fleet with NixOS and the unique strengths that NixOS brings to the table.</description>
      <enclosure url="https://video.fosdem.org/2025/k3601/fosdem-2025-5165-nixos-doctors-without-borders-msf-why-we-use-it-and-how.av1.webm" type="video/webm"/>
      <podcast:transcript url="https://video.fosdem.org/2025/k3601/fosdem-2025-5165-nixos-doctors-without-borders-msf-why-we-use-it-and-how.vtt" type="text/vtt"/>
      <itunes:episodetype>full</itunes:episodetype>
      <itunes:author>FOSDEM VZW</itunes:author>
      <itunes:subtitle>Subtiyled</itunes:subtitle>
    </item>
  </channel>
</rss>

@markvdb
Copy link
Member

markvdb commented Feb 10, 2025

A tricky bit to keep into account is how our video archive works. It's a round robin system that spreads the downloads between mirrors. These mirrors don't sync immediately. An rss feed risks pointing at files that are in the master archive, but not on the mirrors yet. We probably want to discuss this with server.

@johanvdw
Copy link
Member

Here is an export of the website which contains a created field for every link.
Note that in the beginning this time was overwritten in the video upload script, but new uploads should appear at the right time.

export.tar.gz

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add a podcast/rss feed for the video recordings? (can volunteer a PR)
3 participants