Podlove: REST Schnittstellen benutzen

0

Podlove ist für Podcaster eine umfassende Open Source Podcastinglösung, die in WordPress integriert wird. Die Entwickler möchten zwar langfristig aus dem WordPress Universum raus, aber ob das je umgesetzt wird, bleibt abzuwarten.

In letzter Vergangenheit gibt es bereits neue interessante Ansätze wie Podlove Plus, das mit günstigem Abomodell sowohl CDN für Feed und Dateien sowie auch Analytics Werkzeug sein soll. Derzeit noch in der Beta und wenn es hier Durchbrüche gibt, erfahrt es natürlich in meinem Blog.

Da gerade im Businessbereich Podcasts selten via WordPress in den Hauptseitenframeworks abgewickelt werden, z.B. bei Verlagen, kann man mit Podlove als externes AudioCMS für die Anbindung an größere CMS problemlos verwenden.

Variante 1: iframe

Die wohl einfachste aber nicht sehr elegante Variante ist immer den iFrame Code des derzeitigen Webplayers 5 als Einbettung zu verwenden. Funktioniert tadellos und hat alle Metainformationen mit dabei. Allerdings kann es eben sein, dass Privacy Addons im Browser diesen Content blockieren könnten, da es von einer externen Domain eingebunden wird.

Variante 2: REST API

Mittels REST kann man pro Episode alle Metadaten abfragen, um sie dann in eigener Playerarchitektur oder am besten mit dem Podlove Webplayer 5, der auch Standalone in anderen Frameworks verwendet werden kann, zu verwenden. Ein Beispiel wäre hier der Spiegel. Damit das klappen kann, muss zwischen dem Feed und der konkreten REST API Abfrage eine Verbindung hergestellt werden. Natürlich gäbe es auch andere Wege, aber ein Feedparser dürfte im Regelfall gegeben sein.

Code Snippet für den Feed

Zuerst muss über PHP Hooks, die sich leicht mit dem Plugin Code Snippets einfügen lassen, die ID des Posts in den Podlove Podcast Feed gebracht werden. Damit die Namespaces des XML Dokuments passen (wenn auch Unknown nach W3C Standard), braucht es noch den zweiten Hook, der im Header des Feeds entsprechend podx als gültigen Namespace deklariert.

Code Snippets
Code Snippets
Entwickler: Code Snippets Pro
Preis: Kostenlos

Das passiert so:


add_action('podlove_append_to_feed_entry', function ($podcast, $episode, $feed, $format) {
echo PHP_EOL."\t".\Podlove\Feeds\get_xml_text_node('podx:post_id', $episode->post_id);
echo PHP_EOL."\t".\Podlove\Feeds\get_xml_text_node('podx:episode_id', $episode->id);
}, 10, 4);

add_action('rss2_ns', function () {
echo ' xmlns:podx="http://podlove.org/extensions" ';
});

Am Ende erhält man also zwei zusätzliche Felder im RSS Feed pro Podcast: podx:post_id und podx:episode_id.

JSON Abfrage

Nachdem nun pro item im RSS Feed die Post ID des Podcasts mit ausgegeben wird, kann damit die REST Schnittstelle von Podlove zur Übermittlung für die Playerarchitektur der eigentlichen Seite abgefragt werden. Der Podlove Webplayer 5 benötigt die Metadaten wie Asset, Texte etc. als JSON. Podlove liefert das intern an den Player bereits richtig und die gleichen Metadaten können via /wp-json/podlove-web-player/shortcode/publisher/ID abgefragt werden. ID muss natürlich mit der Post ID aus dem Feed ersetzt werden.

Eine Beispiel-URL sähe also so aus: https://www.8fuss.de/wp-json/podlove-web-player/shortcode/publisher/143

Damit kann der Podlove Webplayer 5 komplett extern initialisiert werden, wenn Podlove selbst als externes AudioCMS zum Einsatz kommen soll.

Eine zusätzliche interessante REST Abfrage kann z.B. /wp-json/podlove/v1/episodes sein, die alle Episoden mit ID und Titel auflistet. Aber Vorsicht: derzeit noch kein sauberer Gutenberg Support möglich.

Leave A Reply

Your email address will not be published.