Beiträge von easy4me
-
-
Weil Kodi ein inoffizielles Projekt ist, das von Freiwilligen betrieben wird, mit denen die offiziellen Provider nicht in Verbindung stehen. Die Firmen haben kein Interesse daran, inoffizielle Apps zu unterstützen bzw. dürfen es auch aus lizenzrechtlichen Gründen gar nicht.
-
Die haben die Anmeldelogik wieder zurückgedreht
Liegt daran.
-
-
Am besten beide Login-Prozesse für das nächste Update berücksichtigen. War mir klar, dass es so kommt - habe ich ja auch zuvor geschrieben. Warum testet man irgendwelche Änderungen im laufenden Betrieb...
-
Wer es absolut nicht abwarten kann... (ohne Garantie, dass die aktuelle Login-Prozedur weiterhin bestehen bleibt). Matrix only.
-
Die übrigen Horizons werden ggf. sogar komplett abgeschaltet, da Vodafone eigene Boxen betreibt, zumindest in DE. Mir ist klar gewesen, dass es zu Änderungen kommen wird. Die weiteren Pläne sind mir aber nicht weiter bekannt.
Liberty Global has completed the sale of its operations in Germany, Hungary, Romania and the Czech Republic to Vodafone.
-
Keine Ahnung, wie lange diese nette Änderung anhält, ich sehe irgendwas von "experiments" in der Netzwerk-Historie. Aber egal, auf diese Weise funktioniert der Login wieder....
Spoiler anzeigen
Python: joyn_login_pt2.py
Alles anzeigenimport requests, json from getpass import getpass from uuid import uuid4 mail = input("Enter your email address: ") p = getpass() h = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"} client_id = str(uuid4()) t = requests.Session() # GET REQUEST ID a = t.get(f"https://auth.joyn.de/sso/endpoints?client_id={client_id}&client_name=web", headers=h) b = t.get(a.json()["web-login"], allow_redirects=True) # RETRIEVE IDs id = a.json()["web-login"].split("?")[1].split("&") id_dict_new = dict() for i in id: c = i.split("=") id_dict_new[c[0]] = c[1] request_id = b.url.split("requestId=")[1] h.update({"content-type": "application/json"}) # CHECK LANG d = json.dumps({"acceptlanguage": "undefined", "requestId": request_id}) a = t.post("https://auth.7pass.de/registration-setup-srv/public/list?acceptlanguage=undefined&requestId={request_id}") # CHECK MAIL ADDRESS d = json.dumps({"email": mail, "requestId": request_id}) a = t.post(f"https://auth.7pass.de/users-srv/user/checkexists/{request_id}", headers=h, data=d) # CHECK LIST a = t.post(f"https://auth.7pass.de/verification-srv/v2/setup/public/configured/list") # SEND PASSWORD h.update({"content-type": "application/x-www-form-urlencoded"}) d = f"username={mail}&requestId={request_id}&password={p}" a = t.post(f"https://auth.7pass.de/login-srv/login", headers=h, data=d, allow_redirects=True) # RETRIEVE IDs id = a.url.split("?")[1].split("&") id_dict = dict() for i in id: b = i.split("=") id_dict[b[0]] = b[1] # PREFLIGHTS a = t.get(f"https://auth.7pass.de/token-srv/prelogin/metadata/{id_dict['cd1']}?acceptLanguage=de-de") # GENERATE TOKEN h.update({"content-type": "application/json"}) d = json.dumps({"client_id": id_dict_new['client_id'], "code": id_dict["code"], "code_verifier": "", "redirect_uri": "https://www.joyn.de/oauth", "tracking_id": id_dict["cd1"], "tracking_name": "web"}) a = t.post("https://auth.joyn.de/auth/7pass/token", headers=h, data=d) r = json.dumps(a.json()).replace("}", ', "loggedInUser": true}') print("YOUR TOKEN:\n") print(r)
-
Hier ist der Login für Zappn. Man benötigt im Gegensatz zu Joyn offenbar tatsächlich zwangsweise einen Account. Und anstelle eines Tokens wird ein Cookie generiert. Diesen müsste man nun vermutlich bei sämtlichen Anfragen des Addons mitgeben.
Habe @fayer3 diesbezüglich auch bei GitHub kontaktiert. Mal schauen, was daraus wird.
Spoiler anzeigen
Python: zappn_login.py
Alles anzeigenimport requests, json from getpass import getpass mail = input("Enter your email address: ") p = getpass() h = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"} t = requests.Session() # GET REQUEST ID a = t.get(f"https://mira.zappn.tv/sso/auth?cid=047e58616e876481a8bbbbbdbe2e2051&callbackUrl=https://zappn.tv/", headers=h, allow_redirects=True) request_id = a.url.split("requestId=")[1] h.update({"content-type": "application/json"}) # CHECK LANG d = json.dumps({"acceptlanguage": "undefined", "requestId": request_id}) a = t.post("https://auth.7pass.de/registration-setup-srv/public/list?acceptlanguage=undefined&requestId={request_id}") # CHECK MAIL ADDRESS d = json.dumps({"email": mail, "requestId": request_id}) a = t.post(f"https://auth.7pass.de/users-srv/user/checkexists/{request_id}", headers=h, data=d) # CHECK LIST a = t.post(f"https://auth.7pass.de/verification-srv/v2/setup/public/configured/list") # SEND PASSWORD h.update({"content-type": "application/x-www-form-urlencoded"}) d = f"username={mail}&requestId={request_id}&password={p}" a = t.post(f"https://auth.7pass.de/login-srv/login", headers=h, data=d, allow_redirects=True) # RETRIEVE IDs id = a.url.split("?")[1].split("&") id_dict = dict() for i in id: b = i.split("=") id_dict[b[0]] = b[1] # PREFLIGHTS h.update({"content-type": "application/json"}) d = json.dumps({"sub": id_dict["sub"],"client_id": id_dict["client_id"], "scopes": [{"offline_access": "denied"}]}) a = t.post("https://auth.7pass.de/consent-management-srv/consent/scope/accept", data=d, headers=h) a = t.get(f"https://auth.7pass.de/token-srv/prelogin/metadata/{id_dict['track_id']}?acceptLanguage=de-de") # CONTINUE h.update({"content-type": "application/x-www-form-urlencoded"}) a = t.post(f"https://auth.7pass.de/login-srv/precheck/continue/{id_dict['track_id']}", headers=h, data="", allow_redirects=True) # GRAB COOKIE c = t.cookies.get_dict().get("miraauth") print("YOUR COOKIE (miraauth):\n") print(c)
-
Bekommt man im Addon noch eine Übersicht mit allen Sendungen? Wenn ich mir den Quellcode mit den bereits vorkonfigurierten IDs so anschaue, gehe ich davon aus, dass man das Addon eventuell umstrukturieren müsste. Wurde in der offiziellen App in dieser Zeit das Aussehen etc. auch geändert?
-
Es wird bei 7pass selbst ohne Login ein Token zur Authentifizierung benötigt. Und es gibt eine API-Schnittstelle, um den Token auch ohne Anmeldung zu erhalten.
-
Wenn ich mir die Webseite so anschaue, sieht der Login mit 7pass ähnlich aus wie bei Joyn. Vielleicht kann @Maven das Zappn-Addon damit auch fixen.
-
Ja, die API wurde umgebaut, die ursprünglichen Adressen funktionieren leider nicht mehr.
-
-
-
... und eigener Favoritenliste?
Die Liste kannst du ggf. mit v0.8.4 lokal abspeichern und mit v0.8.5 ohne Account weiterhin nutzen. Die Aufnahme-Funktion ist in VLC und tvHeadend weiterhin vorhanden.
Ggf. werde ich die Schnittstellen zu einem späteren Zeitpunkt noch einmal genauer analysieren, aber es sieht so aus, als müsste man der Yallo API das Anschauen der Werbung "vortäuschen" - in diesem Fall läuft es vermutlich auf das von mir zuvor erwähnte Katz- und Maus-Spiel hinaus. Der Anbieter baut solche Hürden nicht grundlos ein.
-
Bei mehrfachem Zappen, vermutlich innerhalb eines gewissen Zeitfensters, wird der Account zeitweise gesperrt. Das Skript wird die Wiedergabe/Weiterleitung der Werbung seitens des Anbieters nicht unterstützen können. Und der Provider hat die Tools, um mittels Tracking die Konten zu blockieren. Eine sinnvolle Nutzung des Skripts ist daher in dieser Konstellation nicht mehr möglich, sofern sich keine andere Lösung hierfür ergeben sollte.
-
-
Wilmaa wird doch eh nicht mehr lange funktionieren, dann braucht man sich die Mühe nicht zu machen.
-
Yallo hat jedenfalls meinen Account komplett mit dieser Adblocker-Meldung gesperrt. Wenn das deren Strategie ist, werde ich nur noch Premium-Accounts sowie die anonyme Login-Methode unterstützen - das Katz- und Maus-Spiel, in dem irgendwelche Tracker im Browser prüfen, ob man sich die fünf Werbeblöcke auch brav anschaut, werde ich nicht mitmachen. Für Aufnahmen kann man ggf. die PVR-Addons nutzen (bei Teleboy wird die Free-Variante im PVR aber schon länger nicht mehr supportet).