Ja, das stimmt schon, allein durchs Installieren landet der Quelltext ja auf der Platte. Ich wollte eigentlich darauf hinaus, dass ich gerne ein git Repository hätte, auf dem ich aufsetzen kann. Also im Sinne von, nachhaltig dafür sorgen, dass der Fix zentral irgendwo landet.
Den Login habe ich wieder ans Laufen bekommen. Also zumindest konnte ich den für Hamburg testen. In der Hoffnung, dass das alles so allgemeingültig ist, wie es aussieht.
Es waren ein paar Dinge zu ändern gegenüber der 1.0.0 Version des Plugins. So sieht meine login.py jetzt aus:
# -*- coding: utf-8 -*-
import requests
import xbmcgui
import xbmcaddon
import json
import libmediathek4utils as lm4utils
base = 'https://api.tenant-group.frontend.vod.filmwerte.de/v7/'
providerBase = 'https://api.tenant.frontend.vod.filmwerte.de/v11/'
def pick():
j = requests.get(f'{base}fba2f8b5-6a3a-4da3-b555-21613a88d3ef/sign-in').json()
l = []
for item in j['tenants']:
l.append(xbmcgui.ListItem(f'{item["displayCategory"]} - {item["displayName"]}'))
i = xbmcgui.Dialog().select(lm4utils.getTranslation(30010), l)
domain = j['tenants'][int(i)]['clients']['web']['domain']
tenant = j['tenants'][int(i)]['id']
library = j['tenants'][int(i)]['displayName']
username = xbmcgui.Dialog().input(lm4utils.getTranslation(30500))
if username == '':
lm4utils.displayMsg(lm4utils.getTranslation(30501), lm4utils.getTranslation(30502))
return
password = xbmcgui.Dialog().input(lm4utils.getTranslation(30503))
if password == '':
lm4utils.displayMsg(lm4utils.getTranslation(30504), lm4utils.getTranslation(30505))
return
r = requests.get(f'{providerBase}{tenant}/sign-in')
if r.text == '':
lm4utils.displayMsg(lm4utils.getTranslation(30506), lm4utils.getTranslation(30507))
return
j = r.json()
provider = j['delegated'][0]['provider']
client_id = f'tenant-{tenant}-filmwerte-vod-frontend'
files = {'client_id':(None, client_id),'provider':(None, provider),'username':(None, username),'password':(None, password),'scope':(None, 'filmwerte-vod-api+offline_access')}
j = requests.post('http://api.vod.filmwerte.de/connect/authorize-external', files=files).json()
if 'error' in j:
if j['error'] == 'InvalidCredentials':
lm4utils.displayMsg(lm4utils.getTranslation(30506), lm4utils.getTranslation(30508))
else:
lm4utils.displayMsg(lm4utils.getTranslation(30506), lm4utils.getTranslation(30507))
return
lm4utils.setSetting('domain', domain)
lm4utils.setSetting('tenant', tenant)
lm4utils.setSetting('library', library)
lm4utils.setSetting('username', username)
lm4utils.setSetting('access_token', j['access_token'])
lm4utils.setSetting('refresh_token', j['refresh_token'])
Alles anzeigen
Anmelden klappt dann.
Nur das Abspielen von Videos geht dann nicht mit einem Fehler aus dem "script.module.libmediathek4" Plugin, aber ich glaube, da hatte ich aus dem Augenwinkel gesehen, dass man das durch eine neuere Version ersetzen muss.
Bin gerade mit einer frisch per Flatpak installierten 20.2 Version von Kodi unter opensuse 15.4 unterwegs.
Musste erst etwas suchen, bis ich das Log unter "~/.var/app/http://tv.kodi.Kodi/data/temp/[definition='1','2']kodi.log[/definition]" gefunden hatte.
P.S.: Aber woher weiss ich denn, welche Version des libmediathek4 funktioniert und wo ich die finde?
Folgenden Fehler kriege ich
Traceback (most recent call last):
File "/home/ingo/.var/app/tv.kodi.Kodi/data/addons/plugin.video.filmfriend/default.py", line 55, in <module>
p.action()
File "/home/ingo/.var/app/tv.kodi.Kodi/data/addons/script.module.libmediathek4/lib/libmediathek4.py", line 237, in action
self.play(self.playbackModes[mode]())
File "/home/ingo/.var/app/tv.kodi.Kodi/data/addons/plugin.video.filmfriend/default.py", line 45, in playVideo
return jsonParser.getVideoUrl(self.params['video'])
File "/home/ingo/.var/app/tv.kodi.Kodi/data/addons/plugin.video.filmfriend/resources/lib/jsonparser.py", line 155, in getVideoUrl
j = json.loads(r)
File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Alles anzeigen