From 817db69cc1a1e0b384ca38d82e8fd13076c88ce9 Mon Sep 17 00:00:00 2001 From: Sven Koehler Date: Wed, 1 May 2024 11:39:48 +0200 Subject: [PATCH 1/2] Hotfixes to issue #2 This is what I did to get the plugin running again for me (resonably well). One bug in "Sendungen A-Z" seems to remain, but I failed to reproduce it consistently. Retry works. * Disable "Meistgesehen" entry, as its endpoint is gone * fix "hasVideo" KeyErrors in "Sendungen A-Z" * Skip if something in "Rubriken" doesn't have a thumbnail --- lib/libzdf.py | 3 +-- lib/libzdfjsonparser.py | 9 ++++----- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/libzdf.py b/lib/libzdf.py index e712f90..76c5281 100644 --- a/lib/libzdf.py +++ b/lib/libzdf.py @@ -52,7 +52,7 @@ def __init__(self): def libZdfListMain(self): l = [] - l.append({'metadata':{'name':self.translation(32031)}, 'params':{'mode':'libZdfListPage','url':f'{self.baseApi}/content/documents/meist-gesehen-100.json?profile=default'}, 'type':'dir'}) + #l.append({'metadata':{'name':self.translation(32031)}, 'params':{'mode':'libZdfListPage','url':f'{self.baseApi}/content/documents/meist-gesehen-100.json?profile=default'}, 'type':'dir'}) #l.append({'metadata':{'name':self.translation(32031)}, 'params':{'mode':'libZdfListPage','url':f'{self.baseApi}/content/documents/filter-meist-gesehen-100.json?profile=page-video_episode_vod&limit=50'}, 'type':'dir'}) l.append({'metadata':{'name':self.translation(32132)}, 'params':{'mode':'libZdfListShows'}, 'type':'dir'}) l.append({'metadata':{'name':self.translation(32133)}, 'params':{'mode':'libZdfListChannel'}, 'type':'dir'}) @@ -90,4 +90,3 @@ def libZdfListChannelDateVideos(self): def libZdfListSearch(self,searchString): self.params['url'] = f'{self.baseApi}/search/documents?q={searchString}' return self.libZdfListPage() - \ No newline at end of file diff --git a/lib/libzdfjsonparser.py b/lib/libzdfjsonparser.py index 68391b7..4080d15 100644 --- a/lib/libzdfjsonparser.py +++ b/lib/libzdfjsonparser.py @@ -195,15 +195,14 @@ def _grepItemDefault(self,target,forcedType=False): self._grepActors(target) if target['contentType'] == 'topic': - if target['hasVideo'] == False: return False + if not target.get('hasVideo', False): return False self.d['params']['url'] = self.baseApi + target['self']+'&limit=100' self.d['params']['mode'] = 'libZdfListPage' self.d['type'] = 'dir' elif target['contentType'] in ['brand','category','topic']: - if not 'hasVideo' in target: return False - if target['hasVideo'] == False: return False + if not target.get('hasVideo', False): return False self.d['params']['url'] = self.baseApi + target['http://zdf.de/rels/search/page-video-counter-with-video']['self'].replace('&limit=0','&limit=100') self.d['params']['mode'] = 'libZdfListPage' @@ -220,7 +219,7 @@ def _grepItemDefault(self,target,forcedType=False): except: self.d = False elif target['contentType'] == 'episode':# or target['contentType'] == 'clip': - if not target['hasVideo']: + if not target.get('hasVideo', False): pass #return False #if target['mainVideoContent']['http://zdf.de/rels/target']['showCaption']: @@ -259,7 +258,7 @@ def _grepItemDefault(self,target,forcedType=False): def _grepArt(self,target,isVideo=False): art = {} - if not isVideo: + if not isVideo and 'teaserImageRef' in target: if 'layouts' in target['teaserImageRef']: if '384xauto' in target['teaserImageRef']['layouts']: self.d['metadata']['art']['thumb'] = target['teaserImageRef']['layouts']['384xauto'] From 008fd21a2bb707a672ba5c2c71ae7f8a3668d50d Mon Sep 17 00:00:00 2001 From: Sven Koehler Date: Sun, 5 May 2024 15:05:04 +0200 Subject: [PATCH 2/2] Fix another KeyError for A-Z --- lib/libzdfjsonparser.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/libzdfjsonparser.py b/lib/libzdfjsonparser.py index 4080d15..feff659 100644 --- a/lib/libzdfjsonparser.py +++ b/lib/libzdfjsonparser.py @@ -204,7 +204,12 @@ def _grepItemDefault(self,target,forcedType=False): elif target['contentType'] in ['brand','category','topic']: if not target.get('hasVideo', False): return False - self.d['params']['url'] = self.baseApi + target['http://zdf.de/rels/search/page-video-counter-with-video']['self'].replace('&limit=0','&limit=100') + try: + t = target["http://zdf.de/rels/search/page-video-counter-with-video"]["self"] + except KeyError: + return False + + self.d['params']['url'] = self.baseApi + t.replace('&limit=0','&limit=100') self.d['params']['mode'] = 'libZdfListPage' self.d['type'] = 'dir'