Ncmpcpp music feed scraper für 106fm

Foto von “106fm Jerusalem

106fm ist ein großartiger Campus-Radiosender aus Israel, um genauer zu sein aus der Stadt Rishon LeZion und wird von der Universität “The College of Management Academic Studies” zu Lehrzwecken für Studenten betrieben. Die Genres des Senders sind sehr vielseitig, “Electronic music, Progressive Rock, Alternative, Black, Latin …“. Größtenteils Alternative Music, je nach Sendung immer zu einem gewissen Thema. Über RSS-Feeds werden die Sendungen komplett und ungeschnitten als MP3-Datei bereitsgestellt (meistens mit ~ 1 Stunde Laufzeit. Unvorstellbar für einen deutschen Radiosender soetwas anzubieten …).

Für meinen terminal-based music client ncmpcpp hab Ich nun einen Scraper gebaut in Python3, der alle möglichen Feeds scraped (das feedparser Modul benutzend) und aus Titel, Showname und URL zur Mediadatei eine Playlist erstellt, deren obersten Einträge immer auch die neusten sind.

Der Code dazu sieht so aus:

#!/usr/bin/python3

import feedparser
import operator

mediaitems = []

def scrapefeed(item):
    d = feedparser.parse("http://www.106fm.co.il/programs/"+str(item)+"/tracks/feed.xml")
    if (d.feed.has_key('title')):
        for entry in range(0,len(d.entries)):
            if d.entries[entry].has_key('enclosures'):
                title = d.entries[entry].title
                showname = d.feed.title
                published = d.entries[entry].published
                url = d.entries[entry].enclosures[0]['href']
                mediaitems.append({"show": showname, "title": title, "published": published, "url": url})

for index in range(0,100):
    scrapefeed(index)

f = open('/home/onny/audio/playlists/106fm.m3u', 'w', encoding="utf-8")
for foo in sorted(mediaitems, key=operator.itemgetter("published"), reverse=True):
    f.write(foo['url']+" # "+foo['show']+" - "+foo['title']+"\n")
f.close()
2012-07-20-185825_1024x768_scrot

Für die Nutzung sollte man natürlich je nach Bedarf den Ausgabepfad für die Playlist-Datei anpassen.

Leider unterstützt Ncmpcpp (oder vllt. auch mpd?) keine Tags im Playlist-Format, deshalb schreibt das Script “Meta-Informationen” hinter die URL als Kommentar. Prinzipiell würde Ich mir gerne auch noch einen Scraper für Podcast-Feeds schreiben, der solch eine chronologisch sortierten Playlist-Datei exportiert (gPodder ist einfach ein wenig unhandlich und langsam).

💬 Are you interested in our work or have some questions? Join us in our public Signal chat pi crew 👋
🪙 If you like our work or want to supprot us, you can donate MobileCoins to our address.

Leave a Reply

Your email address will not be published. Required fields are marked *