Der Skin ist echt der Hammer!
Da macht Musik hören noch mehr Spaß!
Danke dafür!
Beiträge von Musiktoto
-
-
Die ins Kodiverzeichnis kopiert, richtig?
Um nun das EPG bunt zu bekommen, muss man die Genres.xml Datei in das Verzeichnis Userdata packen und dann im PVR IPTV Simple Client unter dem Menüpunkt Genres die Datei auswählen.
-
Ich habe mich nochmal mit dem Thema EPG-Daten in bunt befasst und die Genres.xml nochmals angepasst.
Die Abdeckung entspricht ca. 90 % -
So Ihr Lieben!
Ich habe die Genres.xml nochmal etwas angepasst / erweitert. Nun sollten 90% der Sendungen / Filme farbig dargestellt werden im EPG.Um nun das EPG bunt zu bekommen, muss man die Genres.xml Datei in das Verzeichnis Userdata packen und dann im PVR IPTV Simple Client unter dem Menüpunkt Genres die Datei auswählen (falls das nicht schon automatisch passiert).
-
Ich konnte deine M3U-Datei problemlos hochladen, der Grabber-Error hat mit deiner Playlist nichts zu tun.
Das ist schon mal gut zu wissen
Ich habe das Mapping nun mal manuell durchgeführt und so funktioniert es für mich Prima.
Was mir nun aufgefallen ist, das die Senderübersicht im EPG doch recht grau ist. Ich habe da eine genres.xml Datei, die das ganze schön bunt macht.Vielleicht ist das ja was für den grapper?P.S.: Ich werde die Datei noch etwas besser ans Programm anpassen und dann nochmal posten. Da fehlen noch zu viele Sachen!
-
Das Thema ist jetzt erledigt: https://github.com/sunsettrack4/s…6de1c73e570e3c7
Hallo!
Leider funktioniert es hier noch nicht!
Die Frage ist, liegt es vielleicht am Libreelec, das man keine Dateien hochladen kann?Wenn ich das Mapping durchführen möchte, kommt weiterhin die Fehlermeldung, das es sich nicht um UTF-8 handeln würde.
Unter "\\libreelec\Userdata\addon_data\script.service.easyepg-lite" finde ich eine Datei mit Namen "playlist.m3u", welche aber leer ist.Im Logfile habe ich folgendes gefunden: (mehr leider nicht)
Code2022-10-28 09:46:44.361 T:803 DEBUG <general>: CPythonInvoker(13, /storage/.kodi/addons/script.service.easyepg-lite/addon.py): the source file to load is "/storage/.kodi/addons/script.service.easyepg-lite/addon.py" 2022-10-28 09:46:44.361 T:803 DEBUG <general>: CPythonInvoker(13, /storage/.kodi/addons/script.service.easyepg-lite/addon.py): setting the Python path to /storage/.kodi/addons/script.service.easyepg-lite:/storage/.kodi/addons/script.module.bottle/lib:/storage/.kodi/addons/script.module.certifi/lib:/storage/.kodi/addons/script.module.chardet/lib:/storage/.kodi/addons/script.module.idna/lib:/storage/.kodi/addons/script.module.requests/lib:/storage/.kodi/addons/script.module.urllib3/lib:/storage/.kodi/addons/script.module.xmltodict/lib:/usr/lib/python38.zip:/usr/lib/python3.8:/usr/lib/python3.8/lib-dynload:/usr/lib/python3.8/site-packages 2022-10-28 09:46:44.362 T:803 DEBUG <general>: CPythonInvoker(13, /storage/.kodi/addons/script.service.easyepg-lite/addon.py): entering source directory /storage/.kodi/addons/script.service.easyepg-lite
In der Datei grabber_error_log_old.txt steht:
Code--- ERROR LOG: 2022-10-28 09:43:16 --- Traceback (most recent call last): File "/storage/.kodi/addons/script.service.easyepg-lite/resources/lib/epg.py", line 197, in grabber_process date = datetime.strptime(p["origAirDate"], "%Y-%m-%d").strftime("%Y") if p.get("origAirDate", False) else None TypeError: 'NoneType' object is not callable --- ERROR LOG END ---
Ich habe so das Gefühl, diese Informationen uns nicht wirklich weiter bringen...
-
Zu Testzwecken habe ich nun easyepg mal auf meinen Windows Rechner installiert. Dort läßt sich die m3u ohne Probleme uploaden. Nur kommt danach kein Auswahlmenü zum Mappen.
Ich hätte da noch eine Idee:
Wäre es möglich, wenn alles soweit funktioniert, das man noch Auswählen könnte, wo die xml-Datei abgelegt wird?
Da ich meherer Kodi Clienten habe, würde ich gerne das xml-File auf meinem NAS ablegen. -
Hab ne PN geschickt
-
Bis zum mapping bin ich jetzt gekommen. Möchte ich nun meine M3u-Datei uploaden, kommt der Hinweis, das es nicht geklappt hat, das es nicht in UTF-8 formatiert wäre.
Ich nutze zum erstellen und pflegen den Notepad++ Editor und dort ist aber unter Codierung UTF-8 eingestellt. Ich habe auch versucht, das m3u-File mal als ANSI umzukonvertieren und wieder zurück zu UTF-8. Leider ohne Erfolg! -
Mit der aktuellen Version läuft easygrap lite nun auch bei mir
-
Ich verwende Kodi 19.4 auf Libreelec 10.0.2.
Leider habe ich auch das Problem, das ich beim Aufruf der Konfigseite (http://XXX.XXX.X.XX:4000) nur eine hellblaue Seite mit dem Easy Lite Logo angezeigt bekomme.
Daraufhin habe ich mich mit Putty über SSH mit Librelec verbunden.
Gebe ich dort python – version ein, kommt leider nur ein "python: can't open file '–': [Errno 2] No such file or directory".
Heißt das, dass das Tool nicht über Libreelec läuft?P.S.: Im Log fimnde ich irgendwie nur folgende Angaben:
-
Ich warte mal, bis es ein Update gibt. Das mit dem Token ist zwar machbar, aber im Moment finde ich keine ruhige Minute dafür
-
Ich benutze diesen Converter hier [Anzeige]. Dieser ist quasi direkt hinter dem Raspberry Pi 3B und splittet das Tonsignal direkt in die Soundpar per Optical Cable.
Funktioniert 1A! -
Du musst nur die angezeigten Schritte befolgen:
Gehe auf Deinem PC oder Handy auf die angezeigte Seite! Dort loggst Du Dich mit Deinem O2 TV Login Daten ein.
Danach wird der unter 3 angezeigte Code abgefragt. Dieses auf der Seite eingeben und schon loggt sich das Waipu Addon ein. -
Noch mal vielen Dank!
Jetzt gibt es HD pur -
Ich teste es heute Abend. Bin zur Zeit noch unterwegs!
Aber schon mal vielen Dank, das Du Dich der Sache angenommen hast! -
Mir ist noch was aufgefallen:
Unter DMAX ist es die PlayUrl unter 2, die den HD Stream liefert.
Unter Pro7 MAX ist es allerdings die 3 unter der der HD-Stream geliefert wird.Das Ganze wird dann wohl doch recht kompliziert, da man mit der AllChannel die HD-Streams ermitteln müsste und unter AllChannelDynamic die entsprechenden PlayUrls...
-
Da ja dort die PlayURLs drin sind, und andere die nutzen könnten, habe ich Dir die JSON-Dateinen auf MEGA hochgeladen und Dir eine Email gesendet.
Zur Ergäzung: Unter Nummer 46 findet man DMAX und dort die 4 PlayUrls. Dabei enstricht Nr.2 "dmax_DASH_OTT-HD-TWO_D" dem HD-Stream.
Für Alle die es nicht erwarten können, gibt es folgenden Workaround:
CodeLaßt über den Creator eine Magenta.m3u Liste erstellen. Nun öffnet im Browser die Entwicklerkosole über F12. Die Bedienung der Kosole sollte hier Vorraussetzuing sein! Nun geht auf web.magentatv.de und loggt Euch ein. Auf der Entwicklerkosole könnt Ihr nun im Bereich Netzwerk den Filter "channel" eingeben. Wählt nun die Datei "https://api.prod.sngtv.magentatv.de/EPG/JSON/AllChannelDynamic" aus und schaltet auf Vorschau. Dort klickt Ihr nun die einzelnen Punkte auf: channelDynamicList, 0 ... 99, 46 (Stream von DMAX), physicalChannels, 2 Nun findet Ihr unter "playUrl" die Netzwerkadresse zum HD-Stream von DMAX. Kopiert nun die komplette https... Adresse und ersetzt diese in der Magenta.m3u Liste unter DMAX. Und schon erscheint DMAX statt in SD in HD :-) Vergesst nun nicht, das Addon MagentaTV M3U Creator in Kodi zu de-aktivieren. Sonst wird Euch beim nächsten Neustart von Kodi die Magenta.m3u wieder überschrieben!
-
Nach meinen gewonnen Erkenntnissen ist es nun so, das generell die Playurl aus der Ebene 1 genommen wird.
Bei manchen Sender gibt es aber die 4 Ebenen (0 bis 3), Um nun die richtige Playurl zu übernehmen, benötigt man eine Abfrage die prüft, ob es Ebene 2 gibt. Falls ja (true) müsste von dort die playurl übernommen werden.
Ist ebene 2 nicht verfügbar, dann müsste die playurl aus Ebene 1 übernommen werden.Die genaue Fehlermeldung kann ich gerne hier posten:
Log-DateiUnd hier die connect.py, die alle Anpassungen die im Forum erwähnt wurden, enthält. connect.py.txt
-
Ich lasse noch nicht locker!
Neuer Ansatz:
Wahrscheinlich muss die StreamUrl schon früher aussortiert werden im Code:Code
Alles anzeigendef get_channel_list(session): """Retrieve the Live TV channel list""" url = "https://api.prod.sngtv.magentatv.de/EPG/JSON/AllChannel" data = '{"channelNamespace":"12","filterlist":[{"key":"IsHide","value":"-1"}],"metaDataVer":"Channel/1.1","properties":[{"include":"/channellist/logicalChannel/contentId,/channellist/logicalChannel/name,/channellist/logicalChannel/chanNo,/channellist/logicalChannel/externalCode,/channellist/logicalChannel/categoryIds,/channellist/logicalChannel/introduce,/channellist/logicalChannel/pictures/picture/href,/channellist/logicalChannel/pictures/picture/imageType,/channellist/logicalChannel/physicalChannels/physicalChannel/mediaId,/channellist/logicalChannel/physicalChannels/physicalChannel/definition,/channellist/logicalChannel/physicalChannels/physicalChannel/externalCode,/channellist/logicalChannel/physicalChannels/physicalChannel/fileFormat","name":"logicalChannel"}],"returnSatChannel":0}' epg_cookies = session["cookies"] header.update({"X_CSRFToken": session["cookies"]["CSRFSESSION"]}) req = requests.post(url, data=data, headers=header, cookies=epg_cookies) ch_list = {i["contentId"]: {"name": i["name"], "img": i["pictures"][0]["href"]} for i in req.json()["channellist"]} request_string = "" for i in ch_list.keys(): request_string = request_string + '{"channelId":"' + i + '","type":"VIDEO_CHANNEL"},' request_string = request_string[:-1] url = "https://api.prod.sngtv.magentatv.de/EPG/JSON/AllChannelDynamic" data = '{"channelIdList":[' + request_string + '],"channelNamespace":"12","filterlist":[{"key":"IsHide","value":"-1"}],"properties":[{"include":"/channelDynamicList/logicalChannelDynamic/contentId,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/mediaId,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/playurl,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/btvBR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/btvCR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/cpvrRecBR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/cpvrRecCR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/pltvCR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/pltvBR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/irCR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/irBR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/npvrRecBR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/npvrRecCR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/npvrOnlinePlayCR,/channelDynamicList/logicalChannelDynamic/physicalChannels/physicalChannelDynamic/npvrOnlinePlayBR","name":"logicalChannelDynamic"}]}' epg_cookies = session["cookies"] header.update({"X_CSRFToken": session["cookies"]["CSRFSESSION"]}) req = requests.post(url, data=data, headers=header, cookies=epg_cookies) for i in req.json()["channelDynamicList"]: for p in i["physicalChannels"]: if ".mpd?" in p.get("playurl", ""): ch_list[i["contentId"]]["playurl"] = p["playurl"] return ch_list
So sieht die Dateistruktur aus:
Und bei DMAX gibt es 4 Einträge:
Da ja die 1 genommen wird für die StreamUrl, deshalb ist DMAX nur in SD Qualität verfügbar.
Der Code müsste nun so angepasst werden, das er auf HD Stream prüft (bei DMAX und anderen Sendern die 2).