seeseekey.net - Invictus Deus Ex Machina

Wer nicht genug von Podcasts bekommen kann, der steht irgendwann vor der Frage wo er noch mehr Podcast beziehen kann. Eine gute Anlaufstelle dafür ist die deutschsprachige Podcast-Suchmaschine fyyd. Bei dem Projekt handelt es sich um eine One-Man-Show von Christian Bednarek. Er betreibt die Suchmaschine bereits seit einigen Jahren. Mittlerweile befinden sich über 11000 Podcasts in der Datenbank von fyyd, so das man eine große Auswahl an unterschiedlichsten Audioformaten vorfindet.

fyyd.de

fyyd verfügt über eine API, so das man die Podcast-Suche auch in Drittapplikationen einbinden kann. Informationen rund um fyyd sind auf dem fyyd-Blog zu finden, welcher in unregelmäßigen Abständen aktualisiert wird.

Vor ein paar Tagen schrieb ich eine iCal-Erweiterung für bestehendes WordPress-Plugin, welches unter anderem die Feed-API von WordPress nutzte. Bei der Entwicklung stellte sich allerdings heraus, das eine Änderung im Code, nicht gleich eine Änderung in den entsprechenden Feeds nach sich zog. Ursache für dieses Problem war der eingebaute Feed-Cache von WordPress. Mit einem kleinen Funktion im Plugin, konnte dieser allerdings für Debug-Zwecke abgeschaltet werden:

function getFeedCacheTime($seconds) 
{
    return 1;
}

add_filter('wp_feed_cache_transient_lifetime', 'getFeedCacheTime');

Die Funktion getFeedCacheTime gibt dabei die maximale Cache-Zeit an – in diesem Fall eine Sekunde, so das der Cache faktisch deaktiviert ist und die Entwicklung ohne störende Wartezeiten weiter betrieben werden konnte.

Manchmal möchte man zu ein paar Audiodateien einen RSS Feed haben, z.B. für einen privaten Podcast. Natürlich kann man sich einen solchen Feed von Hand zusammenbauen, einfacher ist es mit diesem kleinen PHP Skript:

<?php
  //Podcast Feed Script
  //Copyright (c) 2012 by seeseekey <seeseekey@gmail.com>
  //
  //This program is free software: you can redistribute it and/or modify
  //it under the terms of the GNU General Public License as published by
  //the Free Software Foundation, either version 3 of the License, or
  //(at your option) any later version.
  //
  //This program is distributed in the hope that it will be useful,
  //but WITHOUT ANY WARRANTY; without even the implied warranty of
  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  //GNU General Public License for more details.
  //
  //You should have received a copy of the GNU General Public License
  //along with this program.  If not, see <http://www.gnu.org/licenses/>.

  //Basis URL ermitteln
  $baseURL="http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
  $baseURL=dirname($baseURL) . "/";

  //XML Header setzen
  header('Content-type: text/xml');

  //RSS Datei zusammenbauen
  $output = '<rss version="2.0">'."\n";
  $output .= '  <channel>'."\n";
  $output .= '    <title>seeseekey.net (privater Podcast)</title>'."\n";
  $output .= '    <description>Ein privater Podcast von seeseekey.net</description>'."\n";
  $output .= '    <link>https://seeseekey.net</link>'."\n";
  $output .= '    <copyright>(c) 2012 by seeseekey</copyright>'."\n";

  //Audio Dateien in RSS Feed einpflegen
  $files = scandir('.');
  foreach ($files as $file)
  {
    $pathparts = pathinfo($file);
    if($pathparts['extension']!="mp3") continue;

    $output .= '    <item>'."\n";
    $output .= '      <title>'.$file.'</title>'."\n";
    $output .= '      <enclosure url="'.$baseURL.$file.'" length="'.filesize($file).'" type="audio/mpeg"/>'."\n";
    $output .= '    </item> '."\n";
  };

  //RSS Feed wieder schließen
  $output .= '  </channel>'."\n";
  $output .= '</rss>'."\n";

  //RSS Feed ausgeben
  echo($output);
?>

Dieses Skript ließt alle MP3 Dateien aus einem Ordner aus und baut daraus einen RSS Feed. Dieser kann dann in der Podcasting App der Wahl eingefügt werden, indem man die URL angibt so z.B. “http://example.org/podcast.php”. Das Skript selbst steht dabei unter der GPLv3 und lässt sich auch unter https://github.com/seeseekey/archive/blob/master/Web/podcast.php herunterladen.

Unter WordPress kann es mit dem “W3 Total Cache” und dem OSM Plugin unter Umständen Probleme geben. Wenn beide Plugins aktiviert sind, kann es sein das der Feed der Webseite nicht mehr dargestellt werden kann.

Der fehlerhafte RSS Feed

Abhilfe schafft es hier etwas an den “W3 Total Cache” Einstellungen zu ändern.

Die “Minify” Einstellungen

In den “Minify” EInstellungen von “W3 Total Cache” muss unter “HTML & XML” der Punkt “Inline JS minification” deaktiviert werden. Anschließend sollte der “Minify” Cache noch geleert werden und danach sollte auch der RSS Feed wieder funktionieren.