Пример #1
0
def load_tag(song_id,location):
    sqla_session = get_session()
    song = sqla_session.query(Song).get(song_id)
    song_tag = tagtools.tag_handler(location)
    song_data,failed = song_tag.read(ignore=REQ_SONG_DATA+["SONGID"])
    for frame in song_data.keys():
        if song_data[frame] not in song.tags.\
                    filter(Tag.frame==frame).all():
            change_tag(song_id,frame,song_data[frame],write_tag=False)
    close_session(sqla_session)
Пример #2
0
def add_song(location):
    sqla_session = get_session()
    song_tag = tagtools.tag_handler(location)
    song_data,failed = song_tag.read(REQ_SONG_DATA,force=True)
    song = Song(song_data['TITLE'],song_data['ARTIST'],song_data['ALBUM'])
    sqla_session.add(song)
    sqla_session.commit()
    song_id = song.id
    close_session(sqla_session)
    load_tag(song_id,location)
    return song_id
Пример #3
0
def change_tag(song_id, frame, value, write_tag=False):
    frame = frame.upper()
    remove_tags(song_id,frame)
    sqla_session = get_session()
    song = sqla_session.query(Song).get(song_id)
    if frame in REQ_SONG_DATA:
        exec('song.'+frame.lower()+'=\''+value+'\'')
    else:
        try:
            tag = sqla_session.query(Tag).filter(tag.frame==frame)\
                        .filter(tag.value==value).one()
        except:
            tag = Tag(frame,value)
            sqla_session.add(tag)
        song.tags.append(tag)
    if write_tag:
        locations = [song_file.location for song_file in song.song_files]
        for location in locations:
            song_tag = tagtools.tag_handler(location)
            song_tag.write({frame:value})
    close_session(sqla_session)