blattertech informatikLukas BlatterNiederlenzerstrasse 21
5600 Lenzburg/AGSwitzerland

079 569 25 90
https://www.blattertech.ch

Adresse anzeigen

Podcasts mit PHP verwalten

26. Juni 2012 |  PHP |  SNIPPLETS4 Kommentare
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.

Über den Autor:

Lukas Blatter

bloggt und twittert seit 2009 aus Leidenschaft diverse Themen rund um Webdesign, PHP, TYPO3, CMS Made Simple, Computer und weiteres.

Er ist Gründer und Inhaber von blattertech informatik, Ehemann und Vater einer Kinderschar.

Kommentare

Top! Danach suche ich schon ewig.
7. Januar 2013 von Stefan
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.
9. Januar 2013 von Lukas Blatter
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
7. Februar 2013 von Stefan
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
8. Februar 2013 von Lukas Blatter
Danke für die Rückmeldung. Scheint ein interessantes Tool zu sein.

Auf Grund des hohen Spamaufkommens können zu diesem Beitrag keine Kommentare mehr abgegeben werden