def clear_users_played_tracks(username): username = username.lower() user = User.get_by_key_name(username) users_played_tracks = PlayedTrack.all().ancestor(user) tracks_count = users_played_tracks.count() db.delete(users_played_tracks) reset_user_download_stats(user, 0, 0) logger.info('Deleted %s Tracks for %s' % (tracks_count, username)) return "OK"
def clear_all(): tracks = PlayedTrack.all() users = User.all() tracks_count = tracks.count() users_count = users.count() # delete data in bulk db.delete(tracks) db.delete(users) logger.info('Deleted %s Users and %s Tracks' % (tracks_count, users_count)) return "OK"
def _generate_played_track(self, raw_track): track_id = raw_track['mbid'] track_name = raw_track['name'] timestamp = int(raw_track['date']['uts']) # generate a unique play id for this track play play_id = self._get_play_id(track_id, track_name, timestamp) return PlayedTrack(key_name=play_id, parent=self.user, artist_id=raw_track['artist'].get('mbid'), artist_name=raw_track['artist']['#text'], album_id=raw_track['album'].get('mbid'), album_name=raw_track['album']['#text'], track_id=track_id, track_name=track_name, timestamp=timestamp)
def get_played_tracks(username): username = username.lower() page_limit = int(request.args.get('page_limit', 5)) include_ids = bool(request.args.get('include_ids', False)) user = User.get_by_key_name(username) if not user: warning = "User %s doesn't exist" % username return warning, 404 cache_key = "%s:%s:%s" % (username, user.downloaded_tracks, page_limit) cached_tracks = UserTracks.get_by_key_name(cache_key) if cached_tracks: logger.info("Found all tracks for %s" % username) return cached_tracks.all_tracks else: all_tracks_query = PlayedTrack.all() all_tracks_query.order('-timestamp') all_tracks_query.ancestor(user) all_tracks = [] for track in all_tracks_query.run(limit=page_limit * 200): all_tracks.append(track.to_dict(include_ids=include_ids)) response_data = json.dumps(all_tracks) if user.download_finished: logger.info("Finished downloading all tracks for %s. Caching" % username) cached_tracks = UserTracks( key_name=cache_key, username=username, all_tracks=response_data ) try: cached_tracks.put() except: logger.exception("request was probably too large") return response_data
def get_played_tracks(username): username = username.lower() page_limit = int(request.args.get('page_limit', 5)) include_ids = bool(request.args.get('include_ids', False)) user = User.get_by_key_name(username) if not user: warning = "User %s doesn't exist" % username return warning, 404 cache_key = "%s:%s:%s" % (username, user.downloaded_tracks, page_limit) cached_tracks = UserTracks.get_by_key_name(cache_key) if cached_tracks: logger.info("Found all tracks for %s" % username) return cached_tracks.all_tracks else: all_tracks_query = PlayedTrack.all() all_tracks_query.order('-timestamp') all_tracks_query.ancestor(user) all_tracks = [] for track in all_tracks_query.run(limit=page_limit * 200): all_tracks.append(track.to_dict(include_ids=include_ids)) response_data = json.dumps(all_tracks) if user.download_finished: logger.info("Finished downloading all tracks for %s. Caching" % username) cached_tracks = UserTracks(key_name=cache_key, username=username, all_tracks=response_data) try: cached_tracks.put() except: logger.exception("request was probably too large") return response_data