evt. ist @maik3531 schneller als ich. Wenn ich wieder mal Zeit habe versuche ich ein Script zu stricken.
Beiträge von nicoletta im Thema „per Script .m3u Playliste aus .html erstellen“
-
-
Tja, so muss uname uns schon mitteilen was das Ergebnis sein soll. Ansonsten brauchen wir nicht weiter machen und die Zeit heute die wir bereits in Fakedaten gesteckt haben ist für die Katz.
-
demnach müsste die Ausgabe wie folgt sein:
Code#EXTM3U #EXTINF:-1,8410d89a5767b250cd752381672aeb5fbe2240d3 https://tuchkatv.org/8410d89a5767b250cd752381672aeb5fbe2240d3.m3u8 #EXTINF:-1,4b129146077c1e357e4ab341448b9fb629f939dc https://tuchkatv.org/4b129146077c1e357e4ab341448b9fb629f939dc.m3u8 #EXTINF:-1,d47c7365f67b9b8169404e1c4d86fd698307fa15 https://tuchkatv.org/d47c7365f67b9b8169404e1c4d86fd698307fa15.m3u8
-
Das habe ich mir schon gedacht. Also muss die URL mit hinein.
Das wird dann schon etwas kniffeliger.
-
Wie soll denn die Ausgabedatei m3u nun aussehen, formatiert sein?
-
Da sollte er eine Beispiel html dazu geben ohne seine private Sammlung und genau schreiben wie es danach aussehen soll. Ich hatte das ganze ja schon mal mit der Rhythmbox DB wo man einfach seine gewünschten Radiosender eintragen kann um die nicht einzeln umständlich hinzufügen zu müssen.
Es ging mir um die Formatierung Inhalt der Ausgabedatei m3u, nicht der html Datei.
Wir bräuchten schon zu den "richtigen" html Daten dann auch die "richtige" Ausgabedatei. Das obere Beispiel kann nicht stimmen.
-
Er schrieb
Wenn dem so sein sollte muss er es auch schreiben
ja, das schrieb er am Anfang zu den "falschen Daten". Jedoch zu den Originaldaten im nächsten seinen Posting schrieb er keine Originaldaten als Ergebnis in einer .m3u Datei.
Also was nun richtig ist wissen wir nicht. Clemantine kann die m3u Datei einlesen, jedoch nichts damit anfangen. Wahrscheinlich der VLC auch nicht. Die Information fehlt von wo der Titel gestreamt werden soll. Gehe ich jedenfalls mal von aus.
-
Habe es noch mal überarbeitet da die Sendernamen nicht mit ausgelesen wurden
Bash
Alles anzeigen#!/bin/bash # Überprüfe, ob der HTML-Dateipfad als Argument übergeben wurde if [ "$#" -ne 1 ]; then echo "Verwendung: $0 <pfad_zur_html_datei>" exit 1 fi html_file="$1" # Überprüfe, ob die HTML-Datei existiert if [ ! -f "$html_file" ]; then echo "Die angegebene HTML-Datei existiert nicht." exit 1 fi # Neue M3U-Datei erstellen echo "#EXTM3U" > neue.m3u # Extrahiere Werte aus der HTML-Datei und speichere in M3U grep -oP '<option value="([^"]*)">([^<]*)</option>' "$html_file" | \ while read -r line; do # Extrahiere den Wert und den Namen value=$(echo "$line" | awk -F'"' '{print $2}') name=$(echo "$line" | awk -F'>' '{print $2}' | awk -F'<' '{print $1}') echo "#EXTINF:1, $name" >> neue.m3u echo "$value" >> neue.m3u done echo "Die M3U-Datei wurde erfolgreich erstellt: neue.m3u"
Ich hatte einfach eine test. html erstellt welche
beinhaltete um es auch testen zu können.
Vorausgesetzt das Ergebnis soll so aussehen.
Es könnte auch sein das eine URL in der .m3u stehen soll auf die sich die ID bezieht.
Wir wissen es nicht.
-
Mein Ansatz wäre mit ein bash script
Bash
Alles anzeigen#!/bin/bash # Überprüfe, ob der HTML-Dateipfad als Argument übergeben wurde if [ "$#" -ne 1 ]; then echo "Verwendung: $0 <pfad_zur_html_datei>" exit 1 fi html_file="$1" # Überprüfe, ob die HTML-Datei existiert if [ ! -f "$html_file" ]; then echo "Die angegebene HTML-Datei existiert nicht." exit 1 fi # Neue M3U-Datei erstellen echo "#EXTM3U" > neue.m3u # Zähle die Anzahl der Optionen option_count=$(grep -oP '<option value="([^"]*)">([^<]*)</option>' "$html_file" | wc -l) # Extrahiere Option-Werte und Namen direkt in die M3U-Datei grep -oP '<option value="([^"]*)">([^<]*)</option>' "$html_file" | \ awk -F'"' -v count="$option_count" '{printf "#EXTINF:%s,%s\n%s\n", NR, $4, $2}' >> neue.m3u echo "Die M3U-Datei wurde erfolgreich erstellt: neue.m3u"
Von welchen Daten bist du jetzt ausgegangen in der html Datei?
-
Das Script kannst Du nach deinen Bedürfnissen anpassen
-
Hier eine Scriptverbesserung:
Das Script ließt nun direkt aus einer playlist.html
Code
Alles anzeigen# Pfad zur HTML-Datei html_dateipfad = "playlist.html" # Öffnen und Lesen der HTML-Datei with open(html_dateipfad, "r") as html_datei: html_content = html_datei.read() # Extrahiere die Werte aus den Optionen option_values = [line.split('"')[1] for line in html_content.splitlines()] # Erstelle die M3U-Datei m3u_content = "\n".join(f"#EXTINF:-1,Kanal {i+1}\n{value}" for i, value in enumerate(option_values)) # Speichere die M3U-Datei with open("playlist.m3u", "w") as m3u_file: m3u_file.write(m3u_content) print("Die M3U-Datei wurde erfolgreich erstellt: playlist.m3u")
-
Hier ein Python-Script:
Code
Alles anzeigen# HTML-Optionen html_content = """ <option value="505d4c6259acfea0ee5d9b1f26f7badd447f69f6">Kanal 1</option> <option value="fce354f24fe26ca527e2c38b14eb7b0c81f756dd">Kanal 2</option> <option value="92f8939c7bff6bcb7e6da39379bb3d7a6a76693f">Kanal 3</option> """ # Extrahiere die Werte aus den Optionen option_values = [line.split('"')[1] for line in html_content.splitlines()] # Erstelle die M3U-Datei m3u_content = "\n".join(f"#EXTINF:-1,Kanal {i+1}\n{value}" for i, value in enumerate(option_values)) # Speichere die M3U-Datei with open("playlist.m3u", "w") as m3u_file: m3u_file.write(m3u_content) print("Die M3U-Datei wurde erfolgreich erstellt: playlist.m3u")