Suche
Suche Menü

Podcasts mit PHP verwalten

Im Moment befasse ich mich gerade mit dem Thema Podcast. Ziel ist es, möglichst einfach mit wenig Aufwand einen Vortrag als Podcast zur Verfügung zu stellen.
Die Idee:

  • Aus den Aufnahmen ein MP3 machen
  • dieses nach einem bestimmten Schema benennen
  • die ID3 Tags mit Inhalten zu füllen
  • Hochladen
  • Ein Cronjob liest das Verzeichnis aus und generiert aus Dateinamen und ID3 Tags einen Podcastfeed

Da ich die Welt nicht unbedingt neu erfinden will, habe ich nach Klassen für dieses Thema gesucht.

Mit der Feedcreator Class lässt sich ein Feed recht einfach erstellen. Die Anwendung ist sehr simple:

include("feedcreator.class.php"); 

$rss = new UniversalFeedCreator();
$rss->useCached(); // use cached version if age<1 hour
$rss->title = "PHP news";
$rss->description = "daily news from the PHP scripting world";

//optional
$rss->descriptionTruncSize = 500;
$rss->descriptionHtmlSyndicated = true;

$rss->link = "http://www.dailyphp.net/news";
$rss->syndicationURL = "http://www.dailyphp.net/".$_SERVER["PHP_SELF"];

$image = new FeedImage();
$image->title = "dailyphp.net logo";
$image->url = "http://www.dailyphp.net/images/logo.gif";
$image->link = "http://www.dailyphp.net";
$image->description = "Feed provided by dailyphp.net. Click to visit.";

//optional
$image->descriptionTruncSize = 500;
$image->descriptionHtmlSyndicated = true;

$rss->image = $image;

// get your news items from somewhere, e.g. your database:
mysql_select_db($dbHost, $dbUser, $dbPass);
$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");
while ($data = mysql_fetch_object($res)) {
    $item = new FeedItem();
    $item->title = $data->title;
    $item->link = $data->url;
    $item->description = $data->short;
    
    //optional
    item->descriptionTruncSize = 500;
    item->descriptionHtmlSyndicated = true;

    $item->date = $data->newsdate;
    $item->source = "http://www.dailyphp.net";
    $item->author = "John Doe";
     
    $rss->addItem($item);
}

// valid format strings are: RSS0.91, RSS1.0, RSS2.0, PIE0.1 (deprecated),
// MBOX, OPML, ATOM, ATOM0.3, HTML, JS
echo $rss->saveFeed("RSS1.0", "news/feed.xml");

In meinem Fall habe ich zur Erstellung der einzelnen Einträge mit scandir das Podcastverzeichnis ausgelesen und die Dateien nach Informationen zerlegt.
Wichtig ist, dass der Feed anschliessend validiert wird: Feed Validator

Das Auslesen der ID3 Tags aus den MP3 Dateien erledige ich mit getID3(). Diese besteht aus diversen weiteren Modulen welche je nach Nutzung gelöscht werden können. Im Lieferumfang sind 13 Demo-Scripte für alle möglichen Anwendungen der Klasse dabei. So lassen sich damit zum Beispiel rekursiv Verzeichnisse auslesen und die Ergebnisse in einer DB speichern. Ein Beispiel wie die ID3 Tags geändert werden können und vieles mehr. Neben den ID3 Tags aus MP3 Dateien werden auch eine Reihe weiterer Formate unterstützt: .avi, .vob, .ogg, aac, .wav, .midi, .wma, .wmv, .mov Dateien. Zudem können Zip-Dateien ausgelesen und verarbeitet werden. Hier die Liste mit den unterstützten Formaten. Ein absolut tolles Projekt.

Der PHPGangsta hat zu diesem Thema einen Beitrag geschrieben in dem er verschiedene Scripts vergleicht.

Aktuell bin ich erst am Anfang meines Projekts, bin aber gespannt welche weiteren Perlen ich allenfalls noch dazu finden werde.

4 Kommentare Schreibe einen Kommentar

  1. Top! Danach suche ich schon ewig.
    Hy, ich bin schon lange auf der Suche nach einer Möglichkeit meinen eigenen Podcast generieren zu lassen. Ich möchte jetzt erfragen ob ich mit diesen Klassen auch einen Feed bzw. Podcast erstellen kann, der auch bei iTunes den vorgaben entspricht. iTunes gibt ja eine gewisse Struktur und spezielle Tags vor um den Podcast auch über iTunes abonnieren zu können, nachdem ich diesen bei Apple registriert habe. Anfangs habe ich dazu die XML per Hand geschrieben aber jetzt lerne ich PHP und da eröffnen sich mir neue Wege. Die Specificationen gibt es hier: http://www.apple.com/de/itunes/podcasts/specs.html

    Meine zweite Frage wäre ob es nicht möglich ist einen Podcast über PHP's eigene simpleXML Klasse zu generieren? Hatte dazu auch einen Bericht gelesen, wobei ich den Podcast nicht hinbekommen habe.

    Und nach meinem geplapper möchte ich mich jetzt schon für diesen ausführlichen Bericht bedanken, der toll geschrieben ist!

    Gruß Stefan

    Antworten

  2. Re: Top! Danach suche ich schon ewig.
    Viel weiter als bis zu diesem Blogpost bin ich bisher auch nicht gekommen. Ich musste das Projekt kurz danach mangels Ressourcen auf Eis legen.

    Wie du hatte ich damals das Problem, dass der Feed nicht in iTunes abonniert werden konnte, bzw. nicht angezeigt bekommen hat. Als Lösungsansatz: Suche mal, ob es von iTunes hier ein Hilfe-Dok gibt und vergleiche mal ein paar Feeds die du in iTunes abonnieren kannst.

    Antworten

  3. Podcastgen
    Hy, ich hab jetzt immer wieder weitergesucht bis ich auf den Podcastgen mit Adminpanel gestoßen bin. Da sind Klassen für alle Zwecke mit dabei und man kann den Generator locker auf seine eigenen Bedürfnisse anpassen. Das beste, er ist OpenSource mit aktiver Community. Gruß Stefan

    Antworten

  4. Re: Podcastgen
    Danke für die Rückmeldung. Scheint ein interessantes Tool zu sein.

    Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.