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
Importing playlists to Jellyfin media server

In the following post I would like to describe a way to import music playlists to Jellyfin media server, for example in case you want to migrate them from a former Plex or Emby installation. Usually, Jellyfin is already able to detect playlist files within the media library. Unfortunately my …

Software
Jellyfin media server on Archlinux ARM

In this post, I want to share some insights on building Jellyfin media server for Archlinux ARM. The PKGBUILD for Jellyfin one can find on the AUR, is specifically made for 64 bit architectures. Nevertheless Microsoft released the dotnet runtime, which Jellyfin relies on instead of Mono, also for Linux …

Software
2
Voice control Archlinux with Amazon Alexa

I was interested to see how commercial voice recognition software would behave on an usual Linux laptop and tried to deploy an Amazon Alexa instance. There are some installation scripts and tutorials available for Ubuntu and Raspberry PI using the avs-device-sdk from Github. Even though some of them are official …