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
2
Bye bye Play Store! Mirroring Play Store Apks to private F-Droid repo

This small tutorial will show you how to setup your own F-Droid repository containing automatically mirrored Play Store apps. Using this private repo, you don’t have to relay on Google Play Store or third party stores anymore to keep non-free apps up-to-date. All you need to have is a Linux …

Software
Ebook reader app for Nextcloud

Because of lack of altenatives I decided to write a small ebook reader plugin for Nextcloud. The task of creating such an app was quite easy: I just forked the files_pdfviewer extension and replaced PDF.js with the Epub.js library. In the app template file, I used the reference ebook reader …

Software
Hacking replay gain audio normalization into Jellyfin

There is already a feature request for audio normalization in Jellyfin media server. This is important if you want to listen to your music collection while always having the same loudness level. Usually, in different recordings or music genres some tracks are louder and others are more quiet. The standard …