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.
- Feedcreator Class von Podhoven (Feed generieren)
- PodcastParser Class (auslesen und verarbeiten eines Podcastfeeds)
- GetID3() Class – umfassende Klasse zum Auslesen und bearbeiten von ID3 Tags
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.
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
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.
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
Re: Podcastgen
Danke für die Rückmeldung. Scheint ein interessantes Tool zu sein.