示例#1
0
 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)
示例#2
0
    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)