def stream(self, **kwargs): user = cherrypy.request.user user.active = datetime.datetime.now() remotes.update_user(user) if 'dead' in kwargs and kwargs['dead'] == 'true': raise cherrypy.HTTPError(status=503) if 'User-Agent' in cherrypy.request.headers: user_agent = cherrypy.request.headers['User-Agent'] else: user_agent = None # allow only one streaming client at once, or weird things might occur if (user.id in Play.STREAM_PLAYING and Play.STREAM_PLAYING[user.id] is not None and Play.STREAM_PLAYING[user.id] != user_agent): raise cherrypy.HTTPError(status=503) if user.id in Play.STREAM_MODE and Play.STREAM_MODE[user.id] is not None: mode = Play.STREAM_MODE[user.id] else: mode = 'regular' if mode == "random": track = queue_dao.get_random_track(user.id) current_seconds = 0 else: queue = queue_dao.get_next(user.id) if queue is not None: track = queue.track current_seconds = queue.current_seconds else: track = None if track is None: raise cherrypy.HTTPError(status=409) transcoder, format = transcoding.determine_transcoder( track, user_agent, [accept.value for accept in cherrypy.request.headers.elements('Accept')] ) cherrypy.log( '%s is streaming "%s" in %s (original was %s) with "%s"' % (user.login, track, format, track.format, user_agent) ) cherrypy.response.headers['Content-Type'] = format def track_generator(): yield track, current_seconds return transcoding.transcode(track_generator(), transcoder)
def default(self): roles = (get_database().query(Role).order_by(Role.name).all()) users = (get_database().query(User).order_by(User.login).all()) for user in users: remotes.update_user(user) return { 'users': users, 'roles': roles }
def default(self, *args): if len(args) == 1: raise cherrypy.InternalRedirect('/users/_user/%s' % args[0]) users = (get_database().query(User).order_by(User.active.desc()).all()) for user in users: remotes.update_user(user) return { 'users': users, }
def _user(self, login): try: user = (get_database().query(User) .filter_by(login=login) .order_by(User.login).one()) except NoResultFound: raise cherrypy.NotFound() remotes.update_user(user) remotes_user = remotes.get_user(user) Dashboard.update_recent_tracks() recently_listeneds = Dashboard.get_recently_listeneds(user) now = datetime.now() def get_year(year): return ('%s' % year, self._get_top_artists(user.id, datetime(year, 1, 1), datetime(year, 12, 31))) top_artists_categories = [ ('Overall', self._get_top_artists(user.id, None, None)), get_year(now.year - 1), get_year(now.year - 2), get_year(now.year - 3), get_year(now.year - 4), get_year(now.year - 5), ('This Month', self._get_top_artists(user.id, datetime(now.year, now.month, 1), None)), ] uploaded_albums = library_dao.get_albums_by_created_user(user.id) return { 'user': user, 'uploaded_albums': uploaded_albums, 'top_artists_categories': top_artists_categories, 'recently_listeneds': recently_listeneds, 'remotes_user': remotes_user }
def default(self): user = cherrypy.request.user auth_url = new_auth = None need_config = False cache_key = 'settings_lastfm_session_key_%d' % cherrypy.request.user.id if user.lastfm_session_key is None: session_key = cache.get(cache_key) if session_key is not None: auth_url = session_key.get_auth_url() key = session_key.get_session_key() if key is not None: cache.set(cache_key, None) user.lastfm_session_key = key user.lastfm_user = lastfm.get_authenticated_user_name(key) auth_url = None new_auth = True else: try: session_key = SessionKey() auth_url = session_key.get_auth_url() cache.set(cache_key, session_key) except LastfmError: need_config = True remotes.update_user(user) return { "user": user, 'need_config': need_config, 'auth_url': auth_url, 'new_auth': new_auth }