def onNotification(self, sender, method, data): log('onNotification') log('method=%s' % method) if (method == 'Player.OnPlay'): self._setUp() self._total_time = player.getTotalTime() self._tracker.start() log('Player.OnPlay') if player.http == 'true' and player.getPlayingFile()[:4] == 'http' and re.search(r'[sS][0-9]*[eE][0-9]*', os.path.basename(player.getPlayingFile()), flags=0) : player.http_playing = True player.filename = os.path.basename(player.getPlayingFile()) self.startcut = player.filename.find("%5B") self.endcut = player.filename.find("%5D") self.tocut = player.filename[self.startcut:self.endcut] player.filename = player.filename.replace(self.tocut, "") player.filename = player.filename.replace("%5B", "") player.filename = player.filename.replace("%5D", "") player.filename = player.filename.replace("%20", ".") log('tvshowtitle=%s' % player.filename) player.episode = FindEpisode(player.token, 0, player.filename) log('episode.is_found=%s' % player.episode.is_found) if player.episode.is_found: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return if player.notif_scrobbling == 'false': return notif('%s %s %sx%s' % (__language__(32904), player.episode.showname, player.episode.season_number, player.episode.number), time=2500) else: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return notif(__language__(32905), time=2500) else: player.http_playing = False response = json.loads(data) log('%s' % response) if response.get('item').get('type') == 'episode': xbmc_id = response.get('item').get('id') item = self.getEpisodeTVDB(xbmc_id) log('showtitle=%s' % item['showtitle']) 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: 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'], player.filename) log('episode.is_found=%s' % player.episode.is_found) if player.episode.is_found: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return if player.notif_scrobbling == 'false': return notif('%s %s %sx%s' % (__language__(32904), player.episode.showname, player.episode.season_number, player.episode.number), time=2500) else: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return notif(__language__(32905), time=2500) else: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return notif(__language__(32905), time=2500) if (method == 'Player.OnStop'): self._tearDown() actual_percent = (self._last_pos/self._total_time)*100 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 : if player.progress == 'true': player.episode = FindEpisode(player.token, 0, player.filename) log('episode.is_found=%s' % player.episode.is_found) if player.episode.is_found: log('progress=%s' % self._last_pos) self.progress = SaveProgress(player.token, player.episode.id, self._last_pos) log('progress.is_set:=%s' % self.progress.is_set) if actual_percent > 90: log('MarkAsWatched(*, %s, %s, %s)' % (player.filename, player.facebook, player.twitter)) checkin = MarkAsWatched(player.token, player.episode.id, player.facebook, player.twitter) log('checkin.is_marked:=%s' % checkin.is_marked) if checkin.is_marked: if player.emotion == 'true': self.emotion = xbmcgui.Dialog().select('%s: %s %sx%s' % (__language__(33909), player.episode.showname, player.episode.season_number, player.episode.number), [__language__(35311), __language__(35312), __language__(35313), __language__(35314), __language__(35316), __language__(35317)]) if self.emotion < 0: return if self.emotion == 0: self.emotion = 1 elif self.emotion == 1: self.emotion = 2 elif self.emotion == 2: self.emotion = 3 elif self.emotion == 3: self.emotion = 4 elif self.emotion == 4: self.emotion = 6 elif self.emotion == 5: self.emotion = 7 SetEmotion(player.token, player.episode.id, self.emotion) if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return if player.notif_scrobbling == 'false': return notif('%s %s %sx%s' % (__language__(32906), player.episode.showname, player.episode.season_number, player.episode.number), time=2500) else: response = json.loads(data) log('%s' % response) if player.progress == 'true': if response.get('item').get('type') == 'episode': xbmc_id = response.get('item').get('id') item = self.getEpisodeTVDB(xbmc_id) log('showtitle=%s' % item['showtitle']) 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: player.filename = '%s.S%.2dE%.2d' % (formatName(item['showtitle']), float(item['season']), float(item['episode'])) log('tvshowtitle=%s' % player.filename) log('progress=%s' % self._last_pos) self.progress = SaveProgress(player.token, item['episode_id'], self._last_pos) log('progress.is_set:=%s' % self.progress.is_set) if (method == 'VideoLibrary.OnUpdate'): log('VideoLibrary.OnUpdate') response = json.loads(data) log('%s' % response) if response.get('item').get('type') == 'episode': xbmc_id = response.get('item').get('id') playcount = response.get('playcount') log('playcount=%s' % playcount) item = self.getEpisodeTVDB(xbmc_id) log('showtitle=%s' % item['showtitle']) log('season=%s' % item['season']) 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: 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'], self.filename) log('episode.is_found=%s' % self.episode.is_found) if self.episode.is_found: if playcount == 1: log('MarkAsWatched(*, %s, %s, %s)' % (self.filename, player.facebook, player.twitter)) checkin = MarkAsWatched(player.token, self.episode.id, player.facebook, player.twitter) log('checkin.is_marked:=%s' % checkin.is_marked) if checkin.is_marked: if player.emotion == 'true': self.emotion = xbmcgui.Dialog().select('%s: %s' % (__language__(33909), self.filename), [__language__(35311), __language__(35312), __language__(35313), __language__(35314), __language__(35316), __language__(35317)]) if self.emotion < 0: return if self.emotion == 0: self.emotion = 1 elif self.emotion == 1: self.emotion = 2 elif self.emotion == 2: self.emotion = 3 elif self.emotion == 3: self.emotion = 4 elif self.emotion == 4: self.emotion = 6 elif self.emotion == 5: self.emotion = 7 SetEmotion(player.token, self.episode.id, self.emotion) if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return if player.notif_scrobbling == 'false': return notif('%s %s %sx%s' % (__language__(32906), self.episode.showname, self.episode.season_number, self.episode.number), time=2500) else: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return notif(__language__(32907), time=2500) if playcount == 0: log('MarkAsUnWatched(*, %s)' % (self.filename)) checkin = MarkAsUnWatched(player.token, self.episode.id) log('checkin.is_unmarked:=%s' % checkin.is_unmarked) if checkin.is_unmarked: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return if player.notif_scrobbling == 'false': return notif('%s %s %sx%s' % (__language__(32908), self.episode.showname, self.episode.season_number, self.episode.number), time=2500) else: if player.notifications == 'true': if player.notif_during_playback == 'false' and player.isPlaying() == 1: return notif(__language__(32907), time=2500)
def _player_onstop(self, data): self._tearDown() actual_percent = (self._last_pos / self._total_time) * 100 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: if player.progress != 'true': return player.episode = FindEpisode(player.token, 0, player.filename) log('episode.is_found=%s' % player.episode.is_found) if not player.episode.is_found: return log('progress=%s' % self._last_pos) progress = SaveProgress(player.token, player.episode.id, self._last_pos) log('progress.is_set:=%s' % progress.is_set) if actual_percent <= 90: return log('MarkAsWatched(*, %s, %s, %s, %s)' % (player.filename, player.facebook, player.twitter, player.autofollow)) checkin = MarkAsWatched(player.token, player.episode.id, player.facebook, player.twitter, player.autofollow) log('checkin.is_marked:=%s' % checkin.is_marked) if not checkin.is_marked: return # this is just temporary fix because TVTime's Checkin API is not working correctly # auto_follow parameter is not working, if tvtime fixes this issue we can remove this piece of code try: if player.autofollow: log("following tvshow manually=%s" % player.episode.showid) Follow(player.token, player.episode.showid) except: pass if player.emotion == 'true': msg = '%s: %s %sx%s' % ( __language__(33909), player.episode.showname, player.episode.season_number, player.episode.number) emotion = xbmcgui.Dialog().select(msg, [ __language__(35311), __language__(35312), __language__(35313), __language__(35314), __language__(35316), __language__(35317) ]) if emotion < 0: return if emotion == 0: emotion = 1 elif emotion == 1: emotion = 2 elif emotion == 2: emotion = 3 elif emotion == 3: emotion = 4 elif emotion == 4: emotion = 6 elif emotion == 5: emotion = 7 SetEmotion(player.token, player.episode.id, emotion) if player.notifications != 'true': return if player.notif_during_playback == 'false' and player.isPlaying( ) == 1: return notif('%s %s %sx%s' % (__language__(32906), player.episode.showname, player.episode.season_number, player.episode.number), time=2500) else: response = json.loads(data) log('%s' % response) if player.progress != 'true': return if response.get('item').get('type') != 'episode': return xbmc_id = response.get('item').get('id') item = self.getEpisodeTVDB(xbmc_id) log('showtitle=%s' % item['showtitle']) 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 len(str(item['episode_id'])) > 0: player.filename = '%s.S%.2dE%.2d' % (formatName( item['showtitle']), float( item['season']), float(item['episode'])) log('tvshowtitle=%s' % player.filename) log('progress=%s' % self._last_pos) progress = SaveProgress(player.token, item['episode_id'], self._last_pos) log('progress.is_set:=%s' % progress.is_set)