def create_session(self, session_key, state):
        """
        :type session_key: str
        :type state: str

        :rtype: WatchSession or None
        """

        Log.Debug("Creating a WatchSession for the current media")

        video_section = PMS.get_video_session(session_key)
        if not video_section:
            return None

        player_section = video_section.findall("Player")
        if len(player_section):
            player_section = player_section[0]

        session = WatchSession.from_section(
            video_section,
            state,
            PMS.metadata(video_section.get("ratingKey")),
            PMS.client(player_section.get("machineIdentifier")),
        )
        session.save()

        return session
    def create_session(self, session_key, state):
        """
        :type session_key: str
        :type state: str

        :rtype: WatchSession or None
        """

        Log.Debug('Creating a WatchSession for the current media')

        video_section = PMS.get_video_session(session_key)
        if not video_section:
            return None

        player_section = video_section.findall('Player')
        if len(player_section):
            player_section = player_section[0]

        session = WatchSession.from_section(
            video_section, state,
            PlexMediaServer.metadata(video_section.get('ratingKey')),
            PlexMediaServer.client(player_section.get('machineIdentifier')))
        session.save()

        return session
    def create_session(self, session_key, state):
        """
        :type session_key: str
        :type state: str

        :rtype: WatchSession or None
        """

        Log.Debug('Creating a WatchSession for the current media')

        video_section = PMS.get_video_session(session_key)
        if not video_section:
            return None

        player_section = video_section.findall('Player')
        if len(player_section):
            player_section = player_section[0]

        session = WatchSession.from_section(
            video_section, state,
            PlexMediaServer.metadata(video_section.get('ratingKey')),
            PlexMediaServer.client(player_section.get('machineIdentifier'))
        )
        session.save()

        return session
示例#4
0
class WebSocketScrobbler(ScrobblerMethod):
    name = 'WebSocketScrobbler'

    def __init__(self):
        super(WebSocketScrobbler, self).__init__()

        EventManager.subscribe('notifications.playing', self.update)

    @classmethod
    def test(cls):
        if PlexMediaServer.get_sessions() is None:
            log.info(
                "Error while retrieving sessions, assuming WebSocket method isn't available"
            )
            return False

        server_info = PlexMediaServer.get_info()
        if server_info is None:
            log.info('Error while retrieving server info for testing')
            return False

        multi_user = bool(server_info.get('multiuser', 0))
        if not multi_user:
            log.info(
                "Server info indicates multi-user support isn't available, WebSocket method not available"
            )
            return False

        return True

    def create_session(self, session_key, state):
        """
        :type session_key: str
        :type state: str

        :rtype: WatchSession or None
        """

        log.debug('Creating a WatchSession for the current media')

        skip = False

        info = PlexMediaServer.get_session(session_key)
        if not info:
            return None

        # Client
        player_section = info.findall('Player')
        if len(player_section):
            player_section = player_section[0]

        client = PlexMediaServer.get_client(
            player_section.get('machineIdentifier'))

        # Metadata
        metadata = None

        try:
            metadata = PlexMetadata.get(info.get('ratingKey'))

            if metadata:
                metadata = metadata.to_dict()
        except NotImplementedError, e:
            # metadata not supported (music, etc..)
            log.debug('%s, ignoring session' % e.message)
            skip = True

        session = WatchSession.from_section(info, state, metadata, client)
        session.skip = skip
        session.save()

        return session