Podcasts per MPD über einen Raspberry Pi hören

  Marc K.   Lesezeit: 4 Minuten  🗪 1 Kommentar

Für den MPD-Server gibt es leider kein natives Podcast-Plugin. Mit dem Umweg über Playlisten lassen sich aber komfortabel Podcasts vom Sofa aus anhören.

podcasts per mpd über einen raspberry pi hören

Wer seinen Raspberry Pi analog zur Serie "Raspi als NAS und Musikmaschine" aufgesetzt hat, kann diesen leicht um ein Skript erweitern, um Podcasts per MPD-Client abzuspielen.

Das Konzept: die RSS-Feeds der Lieblingspodcasts werden per Skript abgerufen und in einer Playlist auf dem Pi abgelegt. MPD liest diese ein und per Client kann dann eine Podcast-Folge gestartet werden.

Auf Github gibt es ein leicht verständliches Skript, welches Podcasts in Playlisten umwandelt:
https://github.com/buzink/podcast2playlist

Das Skript nutzt "xsltproc". Mit Vorlagen (sog. "Stylesheets") können XML-Dokumente gescannt und die relevanten Informationen herausgefiltert werden.

Zuerst installieren wir das Paket:
$ apt install xsltproc

Wir erzeugen einen neuen Ordner für das Skript und die Podcast-Favoriten:
$ mkdir ~/podcasts

Die Podcasts sind in einer einfachen Textdatei organisiert:
$ nano ~/podcasts/rssfeeds.txt

`"Name des Podcasts";"URL zur XML"`

Beispiel:

GNU-LINUX.CH;https://gnulinux.ch/podcast/gnulinux_newscast_rss.xml
DLF - Computer und Kommunikation;https://www.deutschlandfunk.de/podcast-computer-und-kommunikation-komplette-sendung.416.de.podcast.xml

Das Skript habe ich für den Artikel etwas vereinfacht und in zwei Schritte eingeteilt:

  1. Herunterladen der XML-Datei vom Podcast-Server für jeden Eintrag in "rssfeeds.txt"
  2. Konvertieren der XML-Datei mit xsltproc in eine Playlist pro Podcast

Zusätzlich können wir die Anzahl der Episoden pro Playlist begrenzen und die heruntergeladenen XML-Dateien am Ende wieder löschen.

$ nano ~/podcasts/rss2playlist

#!/bin/bash

## CONFIG

#working dir for script and rss-feeds
RSSFOLDER="$HOME/podcasts"

#RSS-Feeds file
RSSFEEDS="rssfeeds.txt"

# xslt stylesheet fuer m3u
XSLTFILE="m3u.xsl"

#output playlist type
PLTYPE="m3u"

#output folder for playlists
PLFOLDER="$HOME/playlists"

## MAIN

#download rss feeds
while read p; do
echo "${p%;*}"
echo "${p##*;}"
wget "${p##*;}" -O $RSSFOLDER/"${p%;*}".rss
done < $RSSFOLDER/$RSSFEEDS

#convert rss feeds to playlist
shopt -s nullglob
for f in $RSSFOLDER/*.rss
do
filename=$(basename "$f")
filename="${filename%.*}"

echo "Converting rss file: $f"
xsltproc -o $PLFOLDER/"$filename".$PLTYPE $RSSFOLDER/$XSLTFILE "$f"

echo "Shorten to last 10 Episodes"
sed '22,$ d' -i $PLFOLDER/"$filename".$PLTYPE

echo "Remove temporary *.rss-file"
rm $RSSFOLDER/"$filename".rss
done

Das Skript noch ausführbar machen:
$ chmod +x ~/podcasts/rss2playlist

Für xsltproc wird noch ein "Stylesheet" benötigt, um die Podcast-Episoden aus den XML-Dateien zu filtern:
$ wget https://raw.githubusercontent.com/buzink/podcast2playlist/master/m3u.xsl -O ~/podcasts/m3u.xsl

MPD müssen wir jetzt nur noch sagen, wo die Playlisten zu finden sind. Das machen wir über:
$ nano /etc/mpd.conf

Wichtig: die Playlist und der Pfad muss vom MPD-User gelesen werden können!

Per Crontab können wir jetzt z.B. täglich das Skript laufen lassen und die aktuellsten Podcast-Folgen in unserem Lieblings-MPD-Client abrufen:


Das Skript ist verständlich und übersichtlich, weshalb es leicht erweitert und an die eigenen Bedürfnisse angepasst werden kann. Zum Beispiel könnte vor dem Konvertieren geprüft werden, ob sich die XML-Datei des Servers seit dem letzten Zugriff geändert hat oder ...

Quellen:
https://github.com/buzink/podcast2playlist
https://gnulinux.ch/serie-raspi-als-nas-und-musikmaschine-teil-3

Tags

Podcast, MPD, Raspberry Pi

kamome
Geschrieben von kamome am 22. März 2023 um 07:50

Hey, danke – das sieht gut aus! Nur die Verwendung von „Folder“ für Verzeichnisse in einem Script tut meiner Seele ein bisschen weh, aber damit muss ich wohl leben, das gesehen zu haben ;) Und kann es ja anpassen :)