From 84123dddaca6263ea2b350af08d2151fb641a50a Mon Sep 17 00:00:00 2001 From: hubobel Date: Thu, 6 Jul 2017 12:14:16 +0200 Subject: [PATCH] Umbau des Parsers in eine Klasse (OOP) --- Kodi_Class.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Kodi_Class.py diff --git a/Kodi_Class.py b/Kodi_Class.py new file mode 100644 index 0000000..586429c --- /dev/null +++ b/Kodi_Class.py @@ -0,0 +1,51 @@ +import urllib.request +import time + +class kodi(): + def __init__(self,url): + self.kodiurl="http://"+url+"/jsonrpc?request=%7B%22jsonrpc%22:%20%222.0%22,%20%22method%22:%20%22Player.GetItem%22,%20%22params%22:%20%7B%20%22properties%22:%20%5B%22title%22,%20%22album%22,%20%22artist%22,%20%22season%22,%20%22episode%22,%20%22duration%22,%20%22showtitle%22,%20%22tvshowid%22,%20%22thumbnail%22,%20%22file%22,%20%22fanart%22,%20%22streamdetails%22%5D,%20%22playerid%22:%201%20%7D,%20%22id%22:%20%22VideoGetItem%22%7D" + print("Kodi-Objekt erzeugt") + + def kodi_JSON_holen(self): + try: + antwort = urllib.request.urlopen(self.kodiurl) + b = (antwort.read()) + a = b.decode("utf-8") + return a + except: + return None + + def kodi_suche_nach(self, suchstring,json=""): + if json=="": + json=self.kodi_JSON_holen() + + start = len(suchstring) + 3 # berechnet die Anfangsposition des Wertes + ende = len(json) # gibt die Gesamtlänge der URL Antwort an + position = json.find("\"" + suchstring, 46, + ende) # sucht in der gesamten URL Antwort nach dem Suchbegriff und ermittelt dessen Position im String (Anfang) + if position > 0: + position2 = json.find(",\"", position, + ende) # sucht anhand der Anfangspos. des Suchstrings nach dem Ende des dazugehörigen Wertes (endet mit ,") + wert = (json[position + start:position2]) # gibt den Wert des Suchbegriffes aus + x = 0 + while wert.isalnum() is False and x < 2: + wert = wert.strip("\"}][{") + x = x + 1 + return wert + return None + + def kodiitem(self): + koditems = {"episode": "", "fanart": "", "file": "", "label": "", "season": "", "showtitle": "", "type": "", + "title": "", "id": "", "width": ""} + a = self.kodi_JSON_holen() + if a != None: + for i in koditems: + wert = self.kodi_suche_nach(i,a) + koditems[i] = wert + return koditems + +#url= "http://10.0.1.102/jsonrpc?request=%7B%22jsonrpc%22:%20%222.0%22,%20%22method%22:%20%22Player.GetItem%22,%20%22params%22:%20%7B%20%22properties%22:%20%5B%22title%22,%20%22album%22,%20%22artist%22,%20%22season%22,%20%22episode%22,%20%22duration%22,%20%22showtitle%22,%20%22tvshowid%22,%20%22thumbnail%22,%20%22file%22,%20%22fanart%22,%20%22streamdetails%22%5D,%20%22playerid%22:%201%20%7D,%20%22id%22:%20%22VideoGetItem%22%7D" +a = kodi("10.0.1.102") +print(a.kodi_JSON_holen()) +print(a.kodi_suche_nach("fanart")) +print(a.kodiitem())