def choose_init_tracks(username): ''' Pick for the user initialization ''' lib_list = userTrack.choose_all_tracks(username) lib_list = userTrack.choose_tracks_info(lib_list) picker = Picker(lib_list, None, username, None) tracks_list = [picker.next_init_lib() for i in xrange(10)] return tracks_list
def init_emotion(username): ''' start emotion tracks ''' user_tracks = userTrack.choose_all_tracks(username) user_tracks = userTrack.choose_tracks_info(user_tracks) emotion_gevent = geventWorker.Worker(50, 'add_element') emotion_gevent.pack(user_tracks, emotion_contr.calculate_tags) lib_emotion_array = emotion_gevent.return_results() rec_tracks = userTrack.choose_rec_tracks(username) rec_tracks = userTrack.choose_tracks_info(rec_tracks) rec_gevent = geventWorker.Worker(50, 'add_element') rec_gevent.pack(rec_tracks, emotion_contr.calculate_tags) rec_emotion_array = rec_gevent.return_results() # emotion_contr.filter_no_tags(lib_emotion_array, rec_emotion_array) userTrack.add_tracks_emotion(lib_emotion_array + rec_emotion_array)
def store_tracks_info(username): ''' Fetch tracks mp3 url and store them ''' users_tracks = userTrack.choose_all_tracks(username) + \ userTrack.choose_rec_tracks(username) user_tracks = userTrack.choose_tracks_info(users_tracks) info.fetch_tracks_urls(user_tracks) userTrack.store_tracks_info(user_tracks) userTrack.delete_invalid_tracks(username)
def choose_tracks(username, lib_ratio, emotion_range): ''' Choose all user tracks from database And pick some tracks ''' lib_list = userTrack.choose_all_tracks(username) lib_list = userTrack.choose_tracks_info(lib_list) rec_list = userTrack.choose_rec_tracks(username) rec_list = userTrack.choose_tracks_info(rec_list) picker = Picker(lib_list, rec_list, username, emotion_range) tracks_list = [ picker.next_mix(track_number, lib_ratio) for track_number in xrange(STORED_TRACKS_NUMBER) ] next_emotion_range = _next_emotion(emotion_range) picker.emotion_range = next_emotion_range next_playlist = picker.next_mix(0, lib_ratio) return tracks_list, next_playlist
def init_pre(username): ''' Download pre 20 tracks' mp3 info Put them into redis ''' pre_tracks = userTrack.choose_all_tracks(username) pre_tracks = random.sample(pre_tracks, main.PRE_TRACKS_NUMBER) pre_tracks = userTrack.choose_tracks_info(pre_tracks) info.fetch_tracks_urls(pre_tracks) track_contr.filter_no_tracks(pre_tracks) userTrack.store_tracks_info(pre_tracks)
def get_user_top_tracks(username): ''' Get user's top tracks, every artist's track is limited to a certian number ''' tracks_list = userTrack.get_top_level_tracks(username) tracks_list = userTrack.choose_tracks_info(tracks_list) final_tracks = [] artists_frequency = {} for track in tracks_list: if artists_frequency.get(track.artist, 0) <= 6: frequency = artists_frequency.get(track.artist, 0) + 1 artists_frequency[track.artist] = frequency final_tracks.append(track) if len(final_tracks) >= 700: break print(len(final_tracks)) return final_tracks