From e26f5884150a0860cea0c0bbcec3411668ada661 Mon Sep 17 00:00:00 2001 From: Maxime Beckman Date: Sun, 17 Dec 2017 15:12:37 +0100 Subject: [PATCH 1/4] Fixing getEpisodeTVDB VideoLibrary.GetEpisodeDetails return throw exception sometimes. Unique_id don't always have the property "unknown" set. So use "tvdb" instead --- default.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/default.py b/default.py index e05523a..430a037 100644 --- a/default.py +++ b/default.py @@ -264,17 +264,23 @@ def getEpisodeTVDB(self, xbmc_id): rpccmd = {'jsonrpc': '2.0', 'method': 'VideoLibrary.GetEpisodeDetails', 'params': {"episodeid": int(xbmc_id), 'properties': ['season', 'episode', 'tvshowid', 'showtitle', 'uniqueid']}, 'id': 1} rpccmd = json.dumps(rpccmd) result = xbmc.executeJSONRPC(rpccmd) - result = json.loads(result) - log('result=%s' % result) - log('episode_id=%s' % result['result']['episodedetails']['uniqueid']['unknown']) - + result = json.loads(result) + log('result=%s' % result) + if 'unknown' in result['result']['episodedetails']['uniqueid']: + episode_id = result['result']['episodedetails']['uniqueid']['unknown'] + if 'tvdb' in result['result']['episodedetails']['uniqueid']: + episode_id = result['result']['episodedetails']['uniqueid']['tvdb'] + else: + return False + log('episode_id=%s' % episode_id) + try: item = {} item['season'] = result['result']['episodedetails']['season'] item['tvshowid'] = result['result']['episodedetails']['tvshowid'] item['episode'] = result['result']['episodedetails']['episode'] item['showtitle'] = result['result']['episodedetails']['showtitle'] - item['episode_id'] = result['result']['episodedetails']['uniqueid']['unknown'] + item['episode_id'] = episode_id return item except: return False From 34ba7bbb144e05f07641fe100854957342402a9c Mon Sep 17 00:00:00 2001 From: Maxime Beckman Date: Sun, 7 Jul 2019 14:29:49 +0200 Subject: [PATCH 2/4] Bug fix on the episode not found --- default.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) mode change 100644 => 100755 default.py diff --git a/default.py b/default.py old mode 100644 new mode 100755 index 430a037..755a547 --- a/default.py +++ b/default.py @@ -205,11 +205,16 @@ def onNotification(self, sender, method, data): log('episode=%s' % item['episode']) log('episode_id=%s' % item['episode_id']) log('playcount=%s' % playcount) - if len(item['showtitle']) > 0 and item['season'] > 0 and item['episode'] > 0 and item['episode_id'] > 0: + if len(item['showtitle']) > 0 and item['season'] > 0 and item['episode'] > 0: self.filename = '%s.S%.2dE%.2d' % (formatName(item['showtitle']), float(item['season']), float(item['episode'])) log('tvshowtitle=%s' % self.filename) self.episode = FindEpisode(player.token, item['episode_id']) - log('episode.is_found=%s' % self.episode.is_found) + log('Is episode find with Episode_id :%s' % self.episode.is_found) + if not self.episode.is_found: + self.episode = FindEpisode(player.token,0, self.filename); + item['episode_id'] = self.episode.id + log('Is episode find with Filename :%s' % self.episode.is_found) + if self.episode.is_found: if playcount is 1: log('MarkAsWatched(*, %s, %s, %s)' % (self.filename, player.facebook, player.twitter)) @@ -259,19 +264,21 @@ def onNotification(self, sender, method, data): if player.notif_during_playback == 'false' and player.isPlaying() == 1: return notif(__language__(32907), time=2500) + def getEpisodeTVDB(self, xbmc_id): rpccmd = {'jsonrpc': '2.0', 'method': 'VideoLibrary.GetEpisodeDetails', 'params': {"episodeid": int(xbmc_id), 'properties': ['season', 'episode', 'tvshowid', 'showtitle', 'uniqueid']}, 'id': 1} rpccmd = json.dumps(rpccmd) result = xbmc.executeJSONRPC(rpccmd) result = json.loads(result) - log('result=%s' % result) + log('resulto=%s' % result) + if 'unknown' in result['result']['episodedetails']['uniqueid']: episode_id = result['result']['episodedetails']['uniqueid']['unknown'] - if 'tvdb' in result['result']['episodedetails']['uniqueid']: + elif 'tvdb' in result['result']['episodedetails']['uniqueid']: episode_id = result['result']['episodedetails']['uniqueid']['tvdb'] else: - return False + episode_id = 0 log('episode_id=%s' % episode_id) try: From 9875f8ccf45f53bbdf984cde736716679712b7eb Mon Sep 17 00:00:00 2001 From: Maxime Beckman Date: Sun, 7 Jul 2019 20:05:11 +0200 Subject: [PATCH 3/4] Bug fix division by zero --- default.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/default.py b/default.py index 755a547..8823d0e 100755 --- a/default.py +++ b/default.py @@ -136,7 +136,10 @@ def onNotification(self, sender, method, data): notif(__language__(32905), time=2500) if (method == 'Player.OnStop'): self._tearDown() - actual_percent = (self._last_pos/self._total_time)*100 + if self._total_time > 0: + actual_percent = (self._last_pos/self._total_time)*100 + else: + actual_percent = 0; log('last_pos / total_time : %s / %s = %s %%' % (self._last_pos, self._total_time, actual_percent)) log('Player.OnStop') if player.http == 'true' and player.http_playing == True : From 8d7a2c5f6173b0cce2bd1d3195105bdf7a46169c Mon Sep 17 00:00:00 2001 From: Maxime Beckman Date: Sun, 7 Jul 2019 20:17:49 +0200 Subject: [PATCH 4/4] Bug fix on the episode not found - Player.OnPlay --- default.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/default.py b/default.py index 8823d0e..be3ad4f 100755 --- a/default.py +++ b/default.py @@ -112,11 +112,16 @@ def onNotification(self, sender, method, data): log('season=%s' % item['season']) log('episode=%s' % item['episode']) log('episode_id=%s' % item['episode_id']) - if len(item['showtitle']) > 0 and item['season'] > 0 and item['episode'] > 0 and item['episode_id'] > 0: + if len(item['showtitle']) > 0 and item['season'] > 0 and item['episode'] > 0: player.filename = '%s.S%.2dE%.2d' % (formatName(item['showtitle']), float(item['season']), float(item['episode'])) log('tvshowtitle=%s' % player.filename) player.episode = FindEpisode(player.token, item['episode_id']) - log('episode.is_found=%s' % player.episode.is_found) + log('Is episode find with Episode_id :%s' % player.episode.is_found) + if not player.episode.is_found: + player.episode = FindEpisode(player.token,0, player.filename); + item['episode_id'] = self.episode.id + log('Is episode find with Filename :%s' % player.episode.is_found) + if player.episode.is_found: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: