3sat.nano: Der Opener

Es war irgendwann in der zweiten Hälfte der 90er, als mein interner IT-Bullshitdetektor das erste Mal bewusst anschlug.

Ich stand in einer Bonner Buchhandlung und starrte auf ein dickes Buch. Gelb. Es ging um XML. Es war wirklich dick! Ich blätterte ein wenig darin herum, stellte es weg und hörte mir die Lobeshymnen meines Berufschullehrers zum Thema XML an.

"Bullshit", dachte ich mir. Wenn man derart fette Bücher über ein derart simples Thema schreiben kann, dann muss es Bullshit sein. Ja, ich war ein wenig arrogant damals. Die Jugend...

Wie auch immer, irgendwann jedenfalls muss ich falsch abgebogen sein. Ich hatte mir ein Thema zum Hobby gemacht, an dessen Basis eine gewaltige XML-Maschinerie vor sich hinarbeitet. Eine Maschinerie, deren Innerstes dich in ihrer Widersprüchlichkeit in den Wahnsinn treiben kann: Podcasts.

Wieso? Funktioniert doch! Ich hab keine Probleme mit irgendeinem meiner abonnierten Feeds. Was soll das?

Ja danke, bitte weitergehen, für Dich gibt's hier nichts zu sehen.

Immer noch hier? Gut, willkommen! Worum es geht willst Du wissen?

Was fyyd ist, muss ich Dir hoffentlich nicht mehr erklären. Wenn doch: bitte hier entlang. Ich tippe den ganzen Kram natürlich nicht mit der Hand ein. Ich hole mir die Feeds der Podcasts, schaue dort rein und werfe das alles in die Datenbank. Automatisch also und dafür ist XML ja auch da. Ein maschinenlesbares Format soll das ja sein. Ich befürchte nur, dass diese Maschine mindestens so clever sein muss wie die Kiste, die letztens einen Menschen in Go geschlagen hat. Denn letztlich leidet dieses Thema nicht unter der Unzulänglichkeit irgendeines Formates, sondern an der Unzulänglichkeit der Menschen, die es mit Daten befüllen und unter Software, die dies zulässt. Beides ist menschengemacht

Dabei kommt es immer wieder zu komplett widersprüchlichen Problemen. Einmal steckt in einem Feed hier ein Fehler, den ich zwar beheben kann, dessen programmierte Behebung in einem anderen fehlerhaften Feed aber wieder in eine andere Richtung weist.

Fasel, blafasel Komm zur Sache!

Ja, alles Reden ist vergebens, wenn die Veranschaulichung fehlt. Also habe ich beschlossen, hin und wieder ein paar Worte zum Thema Feedshaming von mir zu geben. Darin spreche ich direkt Probleme in konkreten Feeds an. Sollte Dein Feed darunter sein: sorry, war nicht böse gemeint. Nur ist Dein Feed halt irgendwie kaputt und vielleicht kannst Du ja was daran ändern.

Jetzt rede ich ja schon wieder zu viel! Los geht's! Und zwar mit einem Dickschiff des öffentlich-rechtlichen Rundfunks, jedenfalls in meiner Wahrnehmung: 3sat nano. Seit 17 Jahren läuft das schon und man möchte meinen, das wäre genug Zeit, den Feed aufzuräumen und sich der Technik dahinter anzunehmen, ist nano doch sicher alles, aber kein untechnisches Format.

Wie bin ich über das Problem gestolpert? Nunja... der Feed aktualisierte nicht. Am anderen Ende der Leitung kam schlicht kein XML heraus, das ich verwursten konnte. Was ist da los? Ich zeig's Euch:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
<atom:link href="http://www.3sat.de" rel="self" type="application/rss+xml" />

Hören wir mal an der Stelle auf. Ich muss etwas erklären...

Feedadressen, die ich bekomme, sind oft... blumig... da stecken haufenweise query-Variablen dran (&reqhost=127.0.0.1...), es gibt redirects (weil ein slash am Ende fehlt oder weil einer da ist) und und und... Deshalb schaue ich, ob der Feed ein rel='self' mitbringt. Das ist ein Atom-Link, der im Wesentlichen nichts anderes macht, als auf die eigentlich gewünschte Feedadresse zu zeigen. Im Idealfall auf die, die man eben abonniert hat.

Wofür soll das gut sein? Das fragte ich mich damals beim firtz auch, als ich die RSS-Templates baute. Heute weiß ich es und ich mag diesen Link. Wenn er denn richtig genutzt wird. Was bei 3sat leider nicht der Fall ist, jedenfalls bei den mir bekannten Mediatheken-Feeds. Denn hier steckt nicht der Link zum Feed drin, sondern der zur Webseite von 3sat. Oops...

Weshalb das ein Problem ist? Weil ich beim erstmaligen Abruf eines Feeds eben diesen self-link nehme und mit ihm die Feedadresse des Podcasts ersetze. Im Falle von 3sat.nano habe ich also die funktionierende Adresse des Feeds durch www.3sat.de ersetzt. Super!

Nun können wir lange und breit darüber diskutieren, ob das eine gute oder schlechte Idee ist. Im Laufe der Artikel werdet Ihr merken, dass es eigentlich richtig und sinnvoll ist, das zu tun. Nicht nur, weil die Adressen häufig unnötigen Ballast mit sich herum schleppen oder schlichtweg Müll sind.

Wo wir aber schonmal dabei sind, schauen wir uns doch mal den Rest des Feeds an:

<title>3sat.nano: Mediathek-Beiträge</title>
<link>http://www.3sat.de/mediathek/</link>

Ach, sieh an. Noch ein Link. Und eigentlich auch der falsch, denn er zeigt nicht zur Sendung nano, für die es durchaus eine eigene Seite gibt. Aber ich will nicht kleinlich werden.

<image>
    <url>http://www.3sat.de/mediaplayer/images/m_nano.jpg</url>
    <title>3sat.nano</title>
    <link>http://www.3sat.de/nano</link>
</image>

Es ist ja nicht zu übersehen... ein schlecht aufgelöstes (400x232) Bildchen, nicht quadratisch (ok...). Das tut weh, wirklich. Und es sieht bescheiden aus (ich habe Kinder, ich werde hier nicht 'scheiße' schreiben).

Aber schauen wir uns doch mal an, was der Feed an Fleisch mitbringt. Schließlich geht's um Episoden, also los damit:

<item>
    <title>nano vom 15. April 2016</title>
    <description>[...]</description>
    <link>http://www.3sat.de/mediathek/?obj=58424</link>
    <pubDate>Fri, 15 Apr 2016 19:25:14 +0100</pubDate>
    <guid  isPermaLink="true">http://www.3sat.de/mediathek/?obj=58424</guid>
    <media:group>
        <media:content duration="1636" type="video/quicktime" url="http://hstreaming.zdf.de/3sat/300/16/04/160415_sendung_nano.mov"  expression="full" fileSize="90375019"  width="480" height="272" bitrate="380" medium="video" lang="de" />
        <media:content duration="1636" type="video/webm" url="http://nrodl.zdf.de/none/3sat/16/04/160415_sendung_nano_776k_p17v12.webm"  expression="full" fileSize="148979705"  width="640" height="360" bitrate="680" medium="video" lang="de" />
        <media:content duration="1636" type="video/quicktime" url="http://hstreaming.zdf.de/3sat/veryhigh/16/04/160415_sendung_nano.mov"  expression="full" fileSize="299636702"  width="852"  height="480" bitrate="1400" lang="de" medium="video" isDefault="true" />
    <media:category>3satMediathek/nano</media:category>
    <media:player url="http://www.3sat.de/mediathek/?obj=58424" />
    <media:title>nano vom 15. April 2016</media:title>
    <media:description>ganze Sendung vom 15.04.2016: Zika-Virus löst Schädelfehlbildung aus / Individuell angepasste Prothesen - Knie aus dem Drucker / Zulassung von Prothesen - Lasche Regeln / Reifen recyceln - Noch eine zweite Runde / Fossiles Riff - Wiener Austern / Die Lösung / Das Rätsel</media:description>
    <media:thumbnail url="http://www.3sat.de/mediaplayer/stills/58424_big.jpg" width="416" height="232" />
    <media:credit>3sat</media:credit>
        <media:content duration="1636" type="video/webm" url="http://nrodl.zdf.de/none/3sat/16/04/160415_sendung_nano_1496k_p18v12.webm"  expression="full" fileSize="291774296"  width="852" height="480" bitrate="1400" medium="video" lang="de" />
        <media:content duration="1636" type="video/quicktime" url="http://hstreaming.zdf.de/3sat/56/16/04/160415_sendung_nano.mov"  expression="full" fileSize="39579802"  width="320" height="176" bitrate="133" medium="video" lang="de" />
        <media:content duration="1636" type="video/webm" url="http://nrodl.zdf.de/none/3sat/16/04/160415_sendung_nano_282k_p16v12.webm"  expression="full" fileSize="51057838"  width="320" height="176" bitrate="186" medium="video" lang="de" />
    </media:group>
<enclosure url="http://hstreaming.zdf.de/3sat/veryhigh/16/04/160415_sendung_nano.mov" length="299636702"   type="video/quicktime"  />
</item>

"veryhigh"? Really? :) Das könnte an der Stelle durchaus die korrekte Beschreibung sein. Aber nicht on steorids.

Und was ist hier falsch, Herr Bednarek? Sieht doch gut aus!

Dem geübten Feedleser wird schon vorher aufgefallen sein: kein itunes:xyz. Gut, das ist für einen validen Feed auch technisch nicht nötig, aber es zeugt von einer gewaltigen Ignoranz, das bisher größte Podcastverzeichnis dieses Universums einfach mal komplett zu ignorieren und dafür auf den Medien-Namespace eines Unternehmens zu setzen, das gerade schwer damit beschäftigt ist, sich selbst zu entleiben und in Scheiben zu verscherbeln: Yahoo.

Ja, Yahoo hat mal bessere Zeiten gesehen und die waren eigentlich auch schon vorbei, als dieser Namespace, diese Spezifikation begonnen wurde. Es ist bezeichnend, dass diese Spezifikation, die Yahoo 2009 an das RSS Advisory Board übergab, immer noch im "proof read" ist :D

Ob man diesen Namespace nun für sinnvoll hält oder nicht, das soll jetzt nicht Thema sein. Es gibt eine dreistellige Anzahl von Namespaces und dieser ist nicht der dämlichste von ihnen. Erstaunlich ist letztlich, dass einer genutzt wird, dessen Verbreitung sicher weit unter dem von Apples iTunes ist und dass hier eine Software-Übereinkunft seit über zehn Jahren vor sich hingammelt. Und nichts gammelt schneller als Softwarestandards...

Aber auch das wäre kleinliches Meckern, denn schließlich ist ja ein enclosure-Tag da, auf das sich alle geeinigt haben. Das ist der Mindeststandard, hier ist das Fleisch am Knochen, mehr muss man im Grunde nicht haben, um einen Podcast zu genießen, denn um die Medieninhalte geht es, die Metadaten sind schmückendes Beiwerk. Und was steckt hinter der Mediendatei?

Die von Ihnen gewünschten Inhalte sind unter der aufgerufenen Adresse nicht oder auch nicht mehr vorhanden.

Na danke, ein 404.

Keine weiteren Fragen, Euer Ehren.