Lange .m3u Liste per script in mehrere kleinere .m3u Listen teilen

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Lange .m3u Liste per script in mehrere kleinere .m3u Listen teilen

      Hallo Community,

      ich benötige Hilfe/Anregungen/Beispiele für ein Script, dass eine sich täglich ändernde, lange m3u playlist in mehrere playlists aufteilt.
      Die playlistlang.m3u liegt in /etc/enigma2 und beinhaltet Live-TV, Musik, Serien und Filme.

      Die playlistlang.m3u beginnt mit
      #EXTM3U
      #EXTINF:-1 ....
      server/streamlink-nummer.endung

      Zur logischen Trennung in der playlistlang.m3u werden je zu Beginn einer neuen Rubrik #EXTINF Zeilen verwendet, in denen dann der "Rubrikname" wie z.B. "MUSIC Cannels" oder "FILM Channels" etc. verwendet wird.

      Wie sieht ein script aus, dass die playlistlang.m3u einliest und daraus 4 kleinere m3u Listen erstellt für die einzelnen Rubriken Live-TV, Musik, Serien und Filme und natürlich auch jeweils mit #EXTM3U beginnt? Die Ausgangsdatei playlistlang.m3u sollte nach der script-Operation noch unverändert als Master vorhanden sein.

      Für jede Idee oder Beispiel wäre ich dankbar.

      VG, rako123
      rako123
    • das ist schnell gescriptet

      kannst du mal eine Beispieldatei Master hochladen - das würde die Sache vereinfachen, die ip's bzw. url's kanns du ja ausschwärzen

      alternativ kannst du ja mal pro "Genre" einen dummy Eintrag generieren und hier in einem master file posten, damit man den Aufbau besser sieht - ich hab' gerade keine passende .m3u zur Hand ...
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox
    • Wenn ich das richtig sehe, möchtest eine Datei pro group-title="xy"?
      Ist das richtig?

      Du hättest die geschwärzte Datei auch hier hochladen können, steht eh nix verwerfliches mehr drinnen - ausser vielleicht der eine oder andere group-title ... ;)

      btw:
      1404 Zeilen in der .m3u nenne ich wirklich umfangreich ... :D
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox
    • du machst es dir aber nicht einfach

      eine .m3u ist saumäßig zusammengefrickelt :D

      die einzelnen tags sind durch Leerzeichen getrennt, group-title= steht mal an 6. mal an der 7. Stelle in der Zeile, an der 8. Stelle habe ich auch schon welche gefunden

      z.B.

      Source Code

      1. #EXTINF:-1 tvg-link="http://SERVER:PORT/xmltv.php" tvg-name="RTL 2 HD" tvg-id="61" tvg-logo="-" group-title="GERmANY",RTL 2 HD
      2. ..
      3. #EXTINF:-1 tvg-link="http://SERVER:PORT/xmltv.php" tvg-name="Irgendein Film (Trailer)" tvg-id="345" tvg-logo="-" group-title="",Irgendein Film (Trailer)

      Du musst im script erstmal alle Zeilen rausfiltern, in der auch group-title= zu finden ist

      die einzelnen tags sind duch Leerzeichen bzw. Tabs getrennt, dann musst du tag für tag prüfen, ob group-title enthalten ist, wenn ja, den hinterlegten group-title "rausfiltern"

      dann bekommst du eine lange liste mit mehrfach vorkommenden group-titles, die kannst du dann sortieren und uniq ausgeben, d.h. es wird jedes Vorkommen nur einmal ausgegeben. Das ist deine Liste aller möglichen group-titles

      Im nächsten Schritt suchst du in der iptv.m3u nach jedem group-title - wenn dieser gefunden wird, schreibst du das Ergebnis in eine neue group-title_name.m3u

      Reicht das?
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox
    • Hallo @Fred Bogus Trumper,

      ich werde das mit meinen bescheidenen Linus-Kenntnissen leider nicht hinbekommen.
      Ich bräuchte ein Beispiel, das ich editieren kann.

      Ich dachte an einen Ansatz, nach den Rubriknamen zu suchen und die Zeilen nach dem Rubriknamen bis zu nächsten Rubriknamen in eine Datei zu schreiben, dann bis zum nächsten Rubriknamen wieder.

      In Zeile 2 steht "LIVE ChannelsV2.0"
      in Zeile 294 steht "MUSIC ChannelsV2.0"
      In Zeile 348 steht "MOVIE-DE ChannelsV2.0"
      usw.

      Die Rubriknamen sind täglich gleich.

      Vielen Dank für deine Hilfe,

      rako123
      rako123
    • das würde ich hinbekommen, nur ist dein .m3u so schlecht zusammengestöpselt, dass sich der Aufwand nicht lohnt, zumindest nicht mit der von dir zur Verfügung gestellten .m3u


      LIVE ChannelsV2.0 etc. ist nicht als group-title hinterlegt, sonder als tvg-name

      Source Code

      1. tvg-name="LIVE ChannelsV2.0"

      und er ist eigentlich auch uniq - d.h. nicht unbedingt für eine Trennung in einzelne .m3u's geeignet (1 Treffer in der gesamten .m3u, "MUSIC ChannelsV2.0" wird 2x gefunden)



      Source Code

      1. root@dm900:/tmp/iptv# grep -c "LIVE ChannelsV2.0" iptv.m3u
      2. 1
      3. root@dm900:/tmp/iptv# grep -c "MUSIC ChannelsV2.0" iptv.m3u
      4. 2
      5. root@dm900:/tmp/iptv# grep -c "MOVIE-DE ChannelsV2." iptv.m3u
      6. 1
      7. root@dm900:/tmp/iptv#


      Deine .m3u enthält 701 dateien bzw. urls

      Source Code

      1. root@dm900:/tmp/iptv# grep -c EXTINF iptv.m3u
      2. 701
      3. root@dm900:/tmp/iptv#





      davon haben 528 einen leeren group-title

      Source Code

      1. root@dm900:/tmp/iptv# grep EXTINF iptv.m3u|grep -c 'group-title=""'
      2. 528
      3. root@dm900:/tmp/iptv#

      d.h. du erhälst eine empty_title.m3u mit 528 bunt gemischten urls und es bleiben nur noch 178 urls die du aufgrund des hinterlegten group-title noch separieren könntest



      Eine Trennung nach Live-TV, Musik, Serien und Filme etc. ist mit der .m3u nur schwer möglich

      d.h. du müsstest erstmal alle group-title manuell hinterlegen und bei neuen urls prüfen, ob der korrekte group-title hinterlegt ist

      Ich hab' mal kurz in der Kosole gecheckt, welches Ergebnis du zu erwarten hättest:
      528 leere group-titles und dann noch -, ADuLT, GERmANY und MUsIC


      Source Code

      1. root@dm900:/tmp/iptv# grep EXTINF iptv.m3u|grep -v 'group-title=""'|awk '{print $6}'|grep group-title|awk -F'"' '{print $2}'|uniq|sort > /tmp/title.list
      2. root@dm900:/tmp/iptv# grep EXTINF iptv.m3u|grep -v 'group-title=""'|awk '{print $7}'|grep group-title|awk -F'"' '{print $2}'|uniq|sort >> /tmp/title.list
      3. root@dm900:/tmp/iptv# grep EXTINF iptv.m3u|grep -v 'group-title=""'|awk '{print $8}'|grep group-title|awk -F'"' '{print $2}'|uniq|sort >> /tmp/title.list
      4. root@dm900:/tmp/iptv# grep EXTINF iptv.m3u|grep -v 'group-title=""'|awk '{print $9}'|grep group-title|awk -F'"' '{print $2}'|uniq|sort >> /tmp/title.list
      5. root@dm900:/tmp/iptv# grep EXTINF iptv.m3u|grep -v 'group-title=""'|awk '{print $10}'|grep group-title|awk -F'"' '{print $2}'|uniq|sort >> /tmp/title.list
      6. root@dm900:/tmp/iptv# sort /tmp/title.list |uniq
      7. -
      8. ADuLT
      9. GERmANY
      10. MUsIC
      11. root@dm900:/tmp/iptv#
      Display All


      das ist glaube ich nicht was du dir erhoffst ...

      Also erstmal alle group-title überlegen die du willst und mühsam in der .m3u nachtragen, dann überlege ich mir etwas für ein script
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      The post was edited 5 times, last by Fred Bogus Trumper ().

    • Ich hatte es ursprünglich so gedacht:
      1) Definition aller Rubriknamen:
      Rubrikname-1= LIVE ChannelsV2.0
      Rubrikname-2= MUSIC ChannelsV2.0
      Rubrikname-3= MOVIE-DE ChannelsV2.0
      usw.

      2) per script feststellen, in welcher Zeile der playlistlang.m3u die jeweilige Rubrikname (den gibt es je nur 1x in der Datei).

      3) das Ergebnis sortieren
      wäre dann z.B.:
      in Zeile 2 steht "LIVE ChannelsV2.0"
      in Zeile 294 steht "MUSIC ChannelsV2.0"
      In Zeile 348 steht "MOVIE-DE ChannelsV2.0"
      usw.

      4)
      - alle Zeilen von 2 bis (294-1) in eine neue Datei LIVE-Channels.m3u kopieren und in die erste Zeile von LIVE-Channels.m3u die Zeile "#EXTM3U" schreiben
      - alle Zeilen von 294 bis (348-1) in eine neue Datei MUSIC-Channels.m3u kopieren und in die erste Zeile von MUSIC-Channels.m3u die Zeile "#EXTM3U" schreiben
      usw...

      Leider kann ich so etwas nicht....

      VG, rako123
      rako123
    • das wird auch nicht so einfach funktionieren, "MUSIC ChannelsV2.0" kommt zweimal in der Liste vor, einmal in Zeile 294 und einmal in Zeile 914

      Source Code

      1. root@dm900:/tmp/iptv# grep -c "MUSIC ChannelsV2.0" iptv.m3u
      2. 2
      3. root@dm900:/tmp/iptv# grep -n "MUSIC ChannelsV2.0" iptv.m3u|awk -F ':' '{print $1}'
      4. 294
      5. 914
      6. root@dm900:/tmp/iptv#

      Wenn du die .m3u in Rubriken aufbaust, dann ordentlich, aber kann kannst du auch gleich 3 verschiedene .m3u's machen

      solange deine iptv.m3u nicht sauber durchdacht und aufgebaut ist, macht so ein Script keinen Sinn

      entweder du hinterlegst die korrekten group-title oder du trennst die Kategorien sauber, 2x der selbe "Kategoriename" macht erstens keinen Sinn und erschwert zweitens die Erstellung eines Scriptes, welches die Trennung automatisch durchführen soll.

      Man kann vieles im Script abfangen, was aber unötig ist, wenn die Quelldatei, also die iptv.m3u sauber aufgebaut ist

      Sorry, so einfach ist das mit deiner Kuddelmuddel.m3u leider nicht - aber das liegt nicht an meinen Scriptkenntnissen sondern daran, dass das mit deiner Quelldatei viel zu aufwändig wird ;)
      Gruß Fred

      Die Dreambox ist tot, es lebe die Dreambox

      The post was edited 2 times, last by Fred Bogus Trumper ().

    • @Fred Bogus Trumper,

      schade. Trotzdem vielen Dank, dass du dir das angesehen hast und geholfen hast!

      Die Ursprungsdatei zu bearbeiten und zu "säubern" ist aus meiner Sicht leider keine Option, die ändert sich ja mehrfach in der Woche. Die lade ich per script über cron jeden Tag um 6 Uhr morgens.
      Aber du hast recht, die Rubrik "MUSIC ChannelsV2.0" kommt seit einigen Tagen wirklich 2x in der Datei vor.
      Die restlichen Rubriken nur 1x.

      Nochmals Danke und schönes Restwochenende,

      rako123
      rako123