コード例 #1
0
    def home_stats(self, time_range='30', **kwargs):
        plex_watch = plexwatch.PlexWatch()
        stats_data = plex_watch.get_home_stats(time_range)

        return serve_template(templatename="home_stats.html",
                              title="Stats",
                              data=stats_data)
コード例 #2
0
    def get_user_list(self, start=0, length=100, **kwargs):

        plex_watch = plexwatch.PlexWatch()
        users = plex_watch.get_user_list(start, length, kwargs)

        cherrypy.response.headers['Content-type'] = 'application/json'
        return json.dumps(users)
コード例 #3
0
    def get_stream_details(self, rating_key=0, **kwargs):

        plex_watch = plexwatch.PlexWatch()
        stream_details = plex_watch.get_stream_details(rating_key)

        cherrypy.response.headers['Content-type'] = 'application/json'
        return json.dumps(stream_details)
コード例 #4
0
    def get_stream_data(self, row_id=None, user=None, **kwargs):

        plex_watch = plexwatch.PlexWatch()
        stream_data = plex_watch.get_stream_details(row_id)

        return serve_template(templatename="stream_data.html",
                              title="Stream Data",
                              data=stream_data,
                              user=user)
コード例 #5
0
 def edit_user(self, user=None, friendly_name=None, **kwargs):
     if user:
         try:
             plex_watch = plexwatch.PlexWatch()
             plex_watch.set_user_friendly_name(user, friendly_name)
             status_message = "Successfully updated user."
             return status_message
         except:
             status_message = "Failed to update user."
             return status_message
コード例 #6
0
    def user(self, user=None):
        try:
            plex_watch = plexwatch.PlexWatch()
            user_details = plex_watch.get_user_details(user)
        except:
            logger.warn("Unable to retrieve friendly name for user %s " % user)

        return serve_template(templatename="user.html",
                              title="User",
                              data=user_details)
コード例 #7
0
    def get_plays_by_hourofday(self, time_range='30', **kwargs):

        plex_watch = plexwatch.PlexWatch()
        result = plex_watch.get_total_plays_per_hourofday(time_range)

        if result:
            cherrypy.response.headers['Content-type'] = 'application/json'
            return json.dumps(result)
        else:
            logger.warn('Unable to retrieve data.')
コード例 #8
0
    def get_watched(self, user=None, limit='10', **kwargs):

        plex_watch = plexwatch.PlexWatch()
        result = plex_watch.get_recently_watched(user, limit)

        if result:
            cherrypy.response.headers['Content-type'] = 'application/json'
            return json.dumps(result)
        else:
            logger.warn('Unable to retrieve data.')
コード例 #9
0
    def get_user_gravatar_image(self, user=None, **kwargs):

        plex_watch = plexwatch.PlexWatch()
        result = plex_watch.get_user_gravatar_image(user)

        if result:
            cherrypy.response.headers['Content-type'] = 'application/json'
            return json.dumps(result)
        else:
            logger.warn('Unable to retrieve data.')
コード例 #10
0
    def get_stream(self, row_id='', **kwargs):

        plex_watch = plexwatch.PlexWatch()
        result = plex_watch.get_stream_details('122')

        if result:
            cherrypy.response.headers['Content-type'] = 'application/json'
            return result
        else:
            logger.warn('Unable to retrieve data.')
コード例 #11
0
ファイル: plextv.py プロジェクト: patschi/plexpy
    def get_synced_items(self, machine_id=None, user_id=None):
        sync_list = self.get_plextv_sync_lists(machine_id)
        plex_watch = plexwatch.PlexWatch()

        synced_items = []

        try:
            xml_parse = minidom.parseString(sync_list)
        except Exception, e:
            logger.warn("Error parsing XML for Plex sync lists: %s" % e)
            return []
コード例 #12
0
    def get_user_ips(self, start=0, length=100, custom_where='', **kwargs):

        if 'user' in kwargs:
            user = kwargs.get('user', "")
            custom_where = 'user = "******"' % user

        plex_watch = plexwatch.PlexWatch()
        history = plex_watch.get_user_unique_ips(start, length, kwargs,
                                                 custom_where)

        cherrypy.response.headers['Content-type'] = 'application/json'
        return json.dumps(history)
コード例 #13
0
    def get_user_platform_stats(self, user=None, **kwargs):

        plex_watch = plexwatch.PlexWatch()
        result = plex_watch.get_user_platform_stats(user)

        if result:
            return serve_template(templatename="user_platform_stats.html",
                                  data=result,
                                  title="Platform Stats")
        else:
            return serve_template(templatename="user_platform_stats.html",
                                  data=None,
                                  title="Platform Stats")
            logger.warn('Unable to retrieve data.')
コード例 #14
0
    def get_user_recently_watched(self, user=None, limit='10', **kwargs):

        plex_watch = plexwatch.PlexWatch()
        result = plex_watch.get_recently_watched(user, limit)

        if result:
            return serve_template(templatename="user_recently_watched.html",
                                  data=result,
                                  title="Recently Watched")
        else:
            return serve_template(templatename="user_recently_watched.html",
                                  data=None,
                                  title="Recently Watched")
            logger.warn('Unable to retrieve data.')
コード例 #15
0
    def get_history(self, start=0, length=100, custom_where='', **kwargs):

        if 'user' in kwargs:
            user = kwargs.get('user', "")
            custom_where = 'user = "******"' % user
        if 'rating_key' in kwargs:
            rating_key = kwargs.get('rating_key', "")
            custom_where = 'rating_key = %s' % rating_key
        if 'grandparent_rating_key' in kwargs:
            rating_key = kwargs.get('grandparent_rating_key', "")
            custom_where = 'grandparent_rating_key = %s' % rating_key

        plex_watch = plexwatch.PlexWatch()
        history = plex_watch.get_history(start, length, kwargs, custom_where)

        cherrypy.response.headers['Content-type'] = 'application/json'
        return json.dumps(history)
コード例 #16
0
    def edit_user_dialog(self, user=None, **kwargs):
        if user:
            try:
                plex_watch = plexwatch.PlexWatch()
                result = {
                    'user': user,
                    'friendly_name': plex_watch.get_user_friendly_name(user)
                }
                status_message = ""
            except:
                result = {'user': user, 'friendly_name': ''}
                status_message = "There was an error."

            return serve_template(templatename="edit_user.html",
                                  title="Edit User",
                                  data=result,
                                  status_message=status_message)
        else:
            return serve_template(templatename="edit_user.html",
                                  title="Edit User",
                                  data=user,
                                  status_message='Unknown error.')
コード例 #17
0
    def get_session_each(self, stream_type='', session=None):
        session_output = None
        plex_watch = plexwatch.PlexWatch()
        if stream_type == 'track':
            if session.getElementsByTagName('TranscodeSession'):
                transcode_session = session.getElementsByTagName('TranscodeSession')[0]
                audio_decision = helpers.get_xml_attr(transcode_session, 'audioDecision')
                audio_channels = helpers.get_xml_attr(transcode_session, 'audioChannels')
                audio_codec = helpers.get_xml_attr(transcode_session, 'audioCodec')
                duration = helpers.get_xml_attr(transcode_session, 'duration')
                progress = helpers.get_xml_attr(session, 'viewOffset')
            else:
                media_info = session.getElementsByTagName('Media')[0]
                audio_decision = 'direct play'
                audio_channels = helpers.get_xml_attr(media_info, 'audioChannels')
                audio_codec = helpers.get_xml_attr(media_info, 'audioCodec')
                duration = helpers.get_xml_attr(media_info, 'duration')
                progress = helpers.get_xml_attr(session, 'viewOffset')

            session_output = {'session_key': helpers.get_xml_attr(session, 'sessionKey'),
                              'art': helpers.get_xml_attr(session, 'art'),
                              'parent_thumb': helpers.get_xml_attr(session, 'parentThumb'),
                              'thumb': helpers.get_xml_attr(session, 'thumb'),
                              'user': helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title'),
                              'friendly_name': plex_watch.get_user_friendly_name(
                                  helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title')),
                              'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
                              'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
                              'grandparent_title': helpers.get_xml_attr(session, 'grandparentTitle'),
                              'parent_title': helpers.get_xml_attr(session, 'parentTitle'),
                              'title': helpers.get_xml_attr(session, 'title'),
                              'rating_key': helpers.get_xml_attr(session, 'ratingKey'),
                              'audio_decision': audio_decision,
                              'audio_channels': audio_channels,
                              'audio_codec': audio_codec,
                              'video_decision': '',
                              'video_codec': '',
                              'height': '',
                              'width': '',
                              'duration': duration,
                              'progress': progress,
                              'progress_percent': str(helpers.get_percent(progress, duration)),
                              'type': 'track',
                              'indexes': 0
                              }
        elif stream_type == 'video':
            if session.getElementsByTagName('TranscodeSession'):
                transcode_session = session.getElementsByTagName('TranscodeSession')[0]
                audio_decision = helpers.get_xml_attr(transcode_session, 'audioDecision')
                audio_channels = helpers.get_xml_attr(transcode_session, 'audioChannels')
                audio_codec = helpers.get_xml_attr(transcode_session, 'audioCodec')
                video_decision = helpers.get_xml_attr(transcode_session, 'videoDecision')
                video_codec = helpers.get_xml_attr(transcode_session, 'videoCodec')
                width = helpers.get_xml_attr(transcode_session, 'width')
                height = helpers.get_xml_attr(transcode_session, 'height')
                duration = helpers.get_xml_attr(session, 'duration')
                progress = helpers.get_xml_attr(session, 'viewOffset')
            else:
                media_info = session.getElementsByTagName('Media')[0]
                audio_decision = 'direct play'
                audio_channels = helpers.get_xml_attr(media_info, 'audioChannels')
                audio_codec = helpers.get_xml_attr(media_info, 'audioCodec')
                video_decision = 'direct play'
                video_codec = helpers.get_xml_attr(media_info, 'videoCodec')
                width = helpers.get_xml_attr(media_info, 'width')
                height = helpers.get_xml_attr(media_info, 'height')
                duration = helpers.get_xml_attr(media_info, 'duration')
                progress = helpers.get_xml_attr(session, 'viewOffset')

            media_info = session.getElementsByTagName('Media')[0]
            if media_info.getElementsByTagName('Part'):
                indexes = helpers.get_xml_attr(media_info.getElementsByTagName('Part')[0], 'indexes')
                part_id = helpers.get_xml_attr(media_info.getElementsByTagName('Part')[0], 'id')
                if indexes == 'sd':
                    bif_thumb = '/library/parts/' + part_id + '/indexes/sd/' + progress
                else:
                    bif_thumb = ''
            else:
                indexes = ''
                bif_thumb = ''

            if plexpy.CONFIG.PMS_USE_BIF and indexes == 'sd':
                thumb = bif_thumb
                use_indexes = 1
            else:
                thumb = helpers.get_xml_attr(session, 'thumb')
                use_indexes = 0

            if helpers.get_xml_attr(session, 'type') == 'episode':
                session_output = {'session_key': helpers.get_xml_attr(session, 'sessionKey'),
                                  'art': helpers.get_xml_attr(session, 'art'),
                                  'parent_thumb': helpers.get_xml_attr(session, 'parentThumb'),
                                  'thumb': thumb,
                                  'user': helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title'),
                                  'friendly_name': plex_watch.get_user_friendly_name(
                                      helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title')),
                                  'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
                                  'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
                                  'grandparent_title': helpers.get_xml_attr(session, 'grandparentTitle'),
                                  'parent_title': helpers.get_xml_attr(session, 'parentTitle'),
                                  'title': helpers.get_xml_attr(session, 'title'),
                                  'rating_key': helpers.get_xml_attr(session, 'ratingKey'),
                                  'audio_decision': audio_decision,
                                  'audio_channels': audio_channels,
                                  'audio_codec': audio_codec,
                                  'video_decision': video_decision,
                                  'video_codec': video_codec,
                                  'height': height,
                                  'width': width,
                                  'duration': duration,
                                  'progress': progress,
                                  'progress_percent': str(helpers.get_percent(progress, duration)),
                                  'type': helpers.get_xml_attr(session, 'type'),
                                  'indexes': use_indexes
                                  }
            elif helpers.get_xml_attr(session, 'type') == 'movie':
                session_output = {'session_key': helpers.get_xml_attr(session, 'sessionKey'),
                                  'art': helpers.get_xml_attr(session, 'art'),
                                  'thumb': thumb,
                                  'parent_thumb': helpers.get_xml_attr(session, 'parentThumb'),
                                  'user': helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title'),
                                  'friendly_name': plex_watch.get_user_friendly_name(
                                      helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title')),
                                  'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
                                  'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
                                  'grandparent_title': helpers.get_xml_attr(session, 'grandparentTitle'),
                                  'parent_title': helpers.get_xml_attr(session, 'parentTitle'),
                                  'title': helpers.get_xml_attr(session, 'title'),
                                  'rating_key': helpers.get_xml_attr(session, 'ratingKey'),
                                  'audio_decision': audio_decision,
                                  'audio_channels': audio_channels,
                                  'audio_codec': audio_codec,
                                  'video_decision': video_decision,
                                  'video_codec': video_codec,
                                  'height': height,
                                  'width': width,
                                  'duration': duration,
                                  'progress': progress,
                                  'progress_percent': str(helpers.get_percent(progress, duration)),
                                  'type': helpers.get_xml_attr(session, 'type'),
                                  'indexes': use_indexes
                                  }
            elif helpers.get_xml_attr(session, 'type') == 'clip':
                session_output = {'session_key': helpers.get_xml_attr(session, 'sessionKey'),
                                  'art': helpers.get_xml_attr(session, 'art'),
                                  'thumb': thumb,
                                  'parent_thumb': helpers.get_xml_attr(session, 'parentThumb'),
                                  'user': helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title'),
                                  'friendly_name': plex_watch.get_user_friendly_name(
                                      helpers.get_xml_attr(session.getElementsByTagName('User')[0], 'title')),
                                  'player': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'platform'),
                                  'state': helpers.get_xml_attr(session.getElementsByTagName('Player')[0], 'state'),
                                  'grandparent_title': helpers.get_xml_attr(session, 'grandparentTitle'),
                                  'parent_title': helpers.get_xml_attr(session, 'parentTitle'),
                                  'title': helpers.get_xml_attr(session, 'title'),
                                  'rating_key': helpers.get_xml_attr(session, 'ratingKey'),
                                  'audio_decision': audio_decision,
                                  'audio_channels': audio_channels,
                                  'audio_codec': audio_codec,
                                  'video_decision': video_decision,
                                  'video_codec': video_codec,
                                  'height': height,
                                  'width': width,
                                  'duration': duration,
                                  'progress': progress,
                                  'progress_percent': str(helpers.get_percent(progress, duration)),
                                  'type': helpers.get_xml_attr(session, 'type'),
                                  'indexes': 0
                                  }
        else:
            logger.warn(u"No known stream types found in session list.")

        return session_output