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).

No Comments

Leave a Reply

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

* Checkbox GDPR is required

*

I agree

Software
Virtual 3D online exhibition with MapBox GL JS

For my last semester in university (summer semester 2018) at the KIT, I was part of a project to create an “online art exhibition”. We planned to produce different media formats in smaller groups. One for video, another for text and promotion and one for the online presence. I’ve figured …

Software
Host your own Mapbox GL JS vector tiles map

I’ve done some research recently on how I could host my own online map viewer with a MapBox GL JS instance, an excellent and modern open-source alternative for Google Maps. The server should also serve own preprocessed map data from OpenStreetmap planet extracts. No external or third-party service will be …

Software
1
Easily setup Signal 2FA on Nextcloud 14

Two-factor authentication (short 2FA) is an important security concept to secure unauthorized access to your web applications. Popular online services like Google Mail, Instagram or Facebook already provide this mechanism to secure user accounts with an additional one-time token. Considering someone is able to obtain your username and password combination, …