예제 #1
0
파일: userM.py 프로젝트: ManicEuphoria/fm
def get_all_users():
    '''
    Get all available users
    '''
    session = get_session()
    all_users = session.query(User).filter(User.is_valid == 1).all()
    return all_users
예제 #2
0
파일: userM.py 프로젝트: ManicEuphoria/fm
def add_user(username, session_key, register_time):
    session = get_session()
    user = User(username=username,
                session_key=session_key,
                register_time=register_time)
    session.add(user)
    session.commit()
예제 #3
0
def delete_invalid_tracks(username):
    '''
    Delete all tracks without any mp3 info
    and delete user track
    '''
    db_session = get_session()
    invalid_tracks = db_session.query(TrackInfo)\
        .filter(TrackInfo.mp3_url.is_(None)).all()
    print(len(invalid_tracks))
    for invalid_track in invalid_tracks:
        db_session.delete(invalid_track)
    db_session.commit()

    tracks_uuids = [track.track_uuid for track in invalid_tracks]
    lib_tracks = db_session.query(UserTrack)\
        .filter(UserTrack.username == username)\
        .filter(UserTrack.track_uuid.in_(tracks_uuids)).all()
    for lib_track in lib_tracks:
        db_session.delete(lib_track)
    db_session.commit()

    rec_tracks = db_session.query(UserTrack)\
        .filter(UserTrack.username == username)\
        .filter(UserTrack.track_uuid.in_(tracks_uuids)).all()
    for rec_track in rec_tracks:
        db_session.delete(rec_track)
    db_session.commit()
예제 #4
0
def test():
    db_session = get_session()
    for emotion in main.NOT_EMOTION_TAGS:
        tags = db_session.query(TrackInfo)\
            .filter(TrackInfo.tag == emotion).all()
        print(emotion)
        print(len(tags))
예제 #5
0
파일: tagM.py 프로젝트: ManicEuphoria/fm
def get_emotion_tracks(username, emotion):
    '''
    Get all tracks from one emotion
    '''
    db_session = get_session()
    return db_session.query(EmotionTag).\
        filter(EmotionTag.username == username).\
        filter(EmotionTag.emotion == emotion).all()
예제 #6
0
def choose_no_emotion_tracks():
    '''
    Choose all tracks without any emotion value(-100)
    '''
    db_session = get_session()
    tracks_info = db_session.query(TrackInfo)\
        .filter(TrackInfo.emotion_value == -100).all()
    return tracks_info
예제 #7
0
파일: userM.py 프로젝트: ManicEuphoria/fm
def get_session_key(username):
    '''
    Get user's session key
    '''
    db_session = get_session()
    chosen_user = db_session.query(User).filter(User.username == username).\
        first()
    return chosen_user.session_key
예제 #8
0
파일: userM.py 프로젝트: ManicEuphoria/fm
def update_session(username, session_key):
    '''
    Update session for the user
    '''
    session = get_session()
    chosen_user = session.query(User).filter(User.username == username).first()
    chosen_user.session_key = session_key
    session.commit()
예제 #9
0
def choose_all_tracks(username):
    """
    Choose All tracks from one user
    """
    db_session = get_session()
    all_tracks = db_session.query(UserTrack)\
        .filter(UserTrack.username == username).all()
    return all_tracks
예제 #10
0
def choose_rec_tracks(username):
    '''
    Choose all recommendation tracsk from user
    '''
    db_session = get_session()
    rec_tracks = db_session.query(RecTrack)\
        .filter(RecTrack.username == username).all()
    return rec_tracks
예제 #11
0
def choose_tracks_info(all_tracks):
    '''
    Choose all the tracks info like mp3 url
    '''
    db_session = get_session()
    tracks_uuids = [track.track_uuid for track in all_tracks]
    tracks_info = db_session.query(TrackInfo)\
        .filter(TrackInfo.track_uuid.in_(tracks_uuids)).all()
    return tracks_info
예제 #12
0
def get_random():
    '''
    Get random background
    '''
    db_session = get_session()
    random_row = random.randrange(0, db_session.query(Background).count())
    background = db_session.query(Background)[random_row]
    background_url = background.background_url
    print(background_url)
    return background_url
예제 #13
0
def get_one_track_detail(track_uuid):
    '''
    Get one user's track in detail like mp3 url
    '''
    db_session = get_session()
    one_track = db_session.query(TrackInfo)\
        .filter(TrackInfo.track_uuid == track_uuid).first()
    print(one_track)
    one_track = _extra_info(one_track)
    return one_track
예제 #14
0
def get_source_rec(last_title, username):
    '''
    According to the last track title to get the rec songs
    '''
    db_session = get_session()
    # return None
    sample_tracks = db_session.query(TrackInfo).\
        join(RecTrack, RecTrack.track_uuid == TrackInfo.track_uuid)\
        .filter(RecTrack.username == username)\
        .filter(RecTrack.source_type == 1)\
        .filter(RecTrack.source == last_title)\
        .all()
    return sample_tracks
예제 #15
0
def add_rec_tracks(username, rec_tracks):
    '''
    Add the recommendation tracks into database
    '''
    add_tracks_info(rec_tracks)
    db_session = get_session()
    for rec_track in rec_tracks:
        rec_track = RecTrack(username=username,
                             track_uuid=rec_track.track_uuid,
                             source_type=rec_track.source_type,
                             source=rec_track.source)
        db_session.add(rec_track)
    db_session.commit()
예제 #16
0
def add_artist_tracks_emotion(user_tracks):
    db_session = get_session()
    tracks_info = dict([(track.track_uuid,
                         [track.emotion_value, track.top_tags])
                        for track in user_tracks])
    emotion_tracks = db_session.query(TrackInfo)\
        .filter(TrackInfo.track_uuid.in_(tracks_info.keys())).all()
    for emotion_track in emotion_tracks:
        emotion_track.emotion_value = tracks_info[emotion_track.track_uuid][0]
        if tracks_info[emotion_track.track_uuid][1]:
            tags = tracks_info[emotion_track.track_uuid][1]
            for tag_track, number in zip(tags, range(1, 5)):
                setattr(emotion_track, 'tag%s' % number, tag_track[0])
                setattr(emotion_track, "tag_value%s" % number, tag_track[1])
    db_session.commit()
예제 #17
0
def store_tracks_info(user_tracks):
    '''
    Store tracks info like mp3 url
    '''
    db_session = get_session()
    for track in user_tracks:
        track_info = db_session.query(TrackInfo)\
            .filter(TrackInfo.track_uuid == track.track_uuid).first()
        track_info.mp3_url = track.mp3_url
        track_info.album_url = track.album_url
        track_info.album_id = track.album_id
        track_info.artist_id = track.artist_id
        track_info.duration = track.duration
        track_info.song_id = track.song_id
    db_session.commit()
예제 #18
0
def add_tracks(username, final_tracks_list):
    '''
    Add user tracks info into UserTrack
    '''
    add_tracks_info(final_tracks_list)
    session = get_session()
    for final_track in final_tracks_list:
        track_uuid = final_track.track_uuid
        level = final_track.level
        is_star = final_track.is_star
        user_track = UserTrack(username=username,
                               track_uuid=track_uuid,
                               level=level,
                               is_star=is_star)
        session.add(user_track)
    session.commit()
예제 #19
0
파일: tagM.py 프로젝트: ManicEuphoria/fm
def store_emotion(username, emotion_array, track_type):
    '''
    Store emotion in database
    emotion_array df9d13ea
    '''
    db_session = get_session()
    for emotion in emotion_array:
        emotion_tag = EmotionTag(track_uuid=emotion.track_uuid,
                                 username=username,
                                 track_type=track_type,
                                 artist=emotion.artist,
                                 title=emotion.title,
                                 emotion=emotion.emotion[0],
                                 emotion_value=emotion.emotion[1])
        db_session.add(emotion_tag)
    db_session.commit()
예제 #20
0
def add_tracks_info(final_tracks_list):
    '''
    Add tracks basic info into TrackInfo
    '''
    db_session = get_session()
    for final_track in final_tracks_list:
        added_track = db_session.query(TrackInfo)\
            .filter(TrackInfo.artist == final_track.artist)\
            .filter(TrackInfo.title == final_track.title).first()
        if added_track:
            final_track.track_uuid = added_track.track_uuid
        else:
            track = TrackInfo(track_uuid=final_track.track_uuid,
                              artist=final_track.artist,
                              title=final_track.title)
            db_session.add(track)
    db_session.commit()
예제 #21
0
def add_tracks_emotion(tracks_list_mix):
    '''
    Add the tracks' emotion to db
    '''
    db_session = get_session()
    tracks_info = dict([(track[0].track_uuid,
                         [track[0].emotion_value, track[1]])
                        for track in tracks_list_mix])

    emotion_tracks = db_session.query(TrackInfo)\
        .filter(TrackInfo.track_uuid.in_(tracks_info.keys())).all()
    for emotion_track in emotion_tracks:
        emotion_track.emotion_value = tracks_info[emotion_track.track_uuid][0]
        if tracks_info[emotion_track.track_uuid][1]:
            tags = tracks_info[emotion_track.track_uuid][1]
            for tag_track, number in zip(tags, range(1, 5)):
                setattr(emotion_track, 'tag%s' % number, tag_track[0])
                setattr(emotion_track, "tag_value%s" % number, tag_track[1])
    db_session.commit()
예제 #22
0
def get_user_tracks_detail(emotion_range, last_tag, uuids):
    '''

    '''
    db_session = get_session()
    emo_start, emo_end = emotion_range
    if last_tag:
        # @(todo) if no tracks return refetch again with larger emotion range
        sample_tracks = db_session.query(TrackInfo)\
            .filter(TrackInfo.track_uuid.in_(uuids))\
            .filter(TrackInfo.emotion_value >= emo_start)\
            .filter(TrackInfo.emotion_value <= emo_end)\
            .filter(or_(TrackInfo.tag1 == last_tag,
                        TrackInfo.tag2 == last_tag,
                        TrackInfo.tag3 == last_tag,
                        TrackInfo.tag4 == last_tag))\
            .all()
    else:
        sample_tracks = db_session.query(TrackInfo)\
            .filter(TrackInfo.track_uuid.in_(uuids))\
            .filter(TrackInfo.emotion_value >= emo_start)\
            .filter(TrackInfo.emotion_value <= emo_end).all()
    return sample_tracks
예제 #23
0
파일: userM.py 프로젝트: ManicEuphoria/fm
def do_exist_user(username):
    '''
    Check wheter user has alredy existed
    '''
    session = get_session()
    return session.query(User).filter(User.username == username).first()
예제 #24
0
def get_top_level_tracks(username):
    db_session = get_session()
    all_top_tracks = db_session.query(UserTrack)\
        .filter(UserTrack.username == username)\
        .filter(UserTrack.level == 4).all()
    return all_top_tracks