DLF playlist umsortieren
#1
Die Deutschlandfunk Musikliste ist leider in umgekehrter Reihenfolge, erster Titel ganz unten, siehe Bild. Hat jemand eine Idee wie man das richtig sortieren kann, ohne umständliches ausschneiden und einfügen?


Angehängte Dateien Thumbnail(s)
   
Zitieren
#2
https://www.informatik-pc.de/blog/excel-...-umkehren/

MfG Kai
Zitieren
#3
Danke, aber immer noch sehr umständlich, muß mich wohl beim DLF beschweren.
Die Nummerierung der Hilfsspalte kann man nicht automatisch erzeugen, bei langen und unregelmäßigen Playlisten ist man mit copy&paste doch schneller.
Bei den Optionen muß man die Formatierung entfernen, sonst gibts eine Fehlermeldung. Zellen mit zusammengefaßter Formatierung können nicht sortiert werden oder so ähnlich.

Unten im Bild die Nummerierung der Hilfsspalte


Angehängte Dateien Thumbnail(s)
   
Zitieren
#4
Wer selber programmieren kann,
schreibt sich ein kleines Progrämmli,
das alle Zeilen des Files in einen Array einliest
und in umgekehrter Reihenfolge wieder wegschreibt.
Das kostet einmal vielleicht 3 Minuten und danach nur noch jeweils den Programm-Aufruf mit dem File-Namen.

MfG Kai
Zitieren
#5
Im Unix-Terminal gibt es das Tool "tac" als Umkehrung von "cat" - das gibt Textdateien zeilenweise "rückwärts" aus:

Code:
$ cat test.txt
Zeile 3
Zeile 2
Zeile 1

$ tac test.txt
Zeile 1
Zeile 2
Zeile 3

Unter Linux und Mac OS ist das schon an Bord - gibt bestimmt auch ein Windows-Äquivalent.

Hast Du mal einen Beispiel-Link zu so einem Playlist-File?

Viele Grüße
Andreas
Zitieren
#6
Bei
http://unxutils.sourceforge.net/
gibt es Unix-Tools for Windows
inklusive cat & tac.

MfG Kai
Zitieren
#7
Tja jetzt wollte ich die DLF Kultur Donnerstags Tonart Liste (Nachtrock) posten, aber auf wundersame Weise steht sie jetzt in der richtigen Reihenfolge da. Ich habe das nämlich vor kurzem aufgenommen, 4 Stunden auf PC, und musste die ganze Playlist umsortieren. Ich bin wirklich froh, daß man kein "Progrämli" schreiben muß. Bei 50 und mehr Titeln macht das keinen Spass...
Zitieren
#8
Auch bei 100000 Titeln wären das bei mir nur die 3 Zeilen einer Laufanweisung...

Ich nehme übrigens in jeder Nacht von Montag auf Dienstag und Mittwoch auf Donnerstag die 4 Tonart Stunden auf und hör sie mir dann ohne Playlist an.

MfG Kai
Zitieren
#9
Man sieht am Beispiel mit der Hilfsliste daß es nicht einfach von hinten nach vorne umsortiert werden kann.

Klar kann man es auch ohne Playlist anhören, aber wie weißt du später, was du aufgenommen hast?
Zitieren
#10
Früher habe ich die Moderationen rausgeschnitten,
inzwischen lasse ich sie aus Zeitmangel drin.
Dann erzählt mir der Moderator, was er spielt.
Mittlerweile lösche ich ohnehin das meiste nach Anhören, weil es nicht originell genug ist, um es aufzubewahren und mehr als einmal anzuhören.
Dazu gibt es ständig auf tausenden Kanälen zuviel Neues bzw noch nicht Gehörtes.

MfG Kai
PS.: Das einzige, was ich derzeit regelmäßig nicht lösche sind die Schellack-Jazz-Sendungen von "DJ Swinging Swan"
(und die alten Rockmusik-Sendungen von Christian Graf
und die Weltmusik-Sendungen von Hans Rempel).
Zitieren
#11
Hm, ich sehe jetzt erst, wie Liste eigentlich strukturiert ist - bisher dachte ich an ein m3u-File, wo in jeder Zeile ein Titel steht.

Man könnte™ sie "flachklopfen" und in eine Tabelle einfüllen - also mit "Sendung", "Sendezeit", "Titel", "Best-Nr.", ... als Kopfzeile, und darunter jeder Eintrag in einer eigenen Zeile. Die lässt sich dann auch bequem in Excel (o.ä.) nach allen Spalten sortieren oder auch filtern.

Brauchst Du die täglich? Dann würde es sich fast lohnen, ein passendes Skript zu schreiben.

Viele Grüße
Andreas
Zitieren
#12
So, mich hat es in den Fingern gejuckt. Das folgende Python-Skript holt die Playliste vom DLF als html, iteriert über die einzelnen Titel-Einträge und gibt sie in eine CSV-Datei aus, die man dann z.B. mit Libreoffice öffnen kann:

Code:
import csv
from urllib.request import urlopen
from lxml import html

# get
URL = 'https://www.deutschlandfunk.de/tagesplaylist.278.de.html'
tree = html.parse(urlopen(URL))

# parse
out = list()

for i in tree.xpath('//div[@class="listright border" or @class="listright"]'):
    entry = dict()

    sendezeit = i.xpath('h3')[0].text.split(': ')[1]
    entry['Sendezeit'] = sendezeit

    xp_key = 'table/tbody/tr/td[@class="label"]'
    xp_val = 'table/tbody/tr/td/*'
    for k, v in zip(i.xpath(xp_key), i.xpath(xp_val)):
        entry[k.text] = v.text

    out.append(entry)

# write output
headline = ('Sendezeit', 'Titel', 'Best-Nr.', 'Album', 'Länge',
            'Label', 'Interpret', 'Komponist')
with open('playlist.csv', 'w', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile, delimiter=';')
    writer.writerow(headline)
    for i in out:
        line = [i.get(k, '') for k in headline]
        writer.writerow(line)

Dort sieht das dann so aus:

   

Das Skript und seine heutige Ausgabe hängen auch an (jeweils mit zusätzlicher Endung .txt, um hier als Anhang durchzugehen). Ohne jegliche Gewähr oder Haftung, es soll nur als Anregung für eigene Versuche dienen.

Viele Grüße
Andreas


Angehängte Dateien
.txt   playlist.csv.txt (Größe: 7.93 KB / Downloads: 1)
.txt   dlf.py.txt (Größe: 940 Bytes / Downloads: 3)
Zitieren
#13
Sieht genial aus! Aber wie geht Python? Muß mir das morgen in Ruhe anschauen.
Zitieren
#14
Das klappt super! Die .csv Datei mit UTF-8 Zeichensatz in Calc öffnen, einmal aufsteigend sortieren klicken, voila.
Einige unregelmäßige Datensätze, Klassik, die ich eh nicht aufnehme, müssen nacheditiert werden.

https://www.deutschlandfunk.de/tagesplay...78.de.html
ist die aktuelle Tagesplayliste,
für ein bestimmtes Datum z. B. 3.2.2021

https://www.deutschlandfunk.de/tagesplay...2021-02-03
in die .py Datei eintragen
Zitieren
#15
Freut mich - man könnte natürlich auch die URL von außen reingeben, oder ein Datum in eine URL übersetzen... das bleibt dem Leser als Übungsaufgabge Wink

Das Skript wird aber nur so lange funktionieren, wie der DLF seine Webseite nicht stark verändert. Letztlich sucht es auch nur im HTML-Code nach Tabellen-Zellen, die an einem ganz bestimmten Platz stehen (das sind die xpath-Anweisungen). Wenn sich da was ändert, muss man das neu machen. Eine "stabilere" API habe ich nicht gefunden, etwas eine Text-Form der Playlist zum Runterladen, oder eine json-Datei, die im Hintergrund nachgeladen wird.

Also - daran freuen, solange es geht, aber das wird nicht ewig sein...

Viele Grüße
Andreas
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste