Ejemplo n.º 1
0
def readSongFromFile():
    """Read all songs from file and construct song dictionary.
     Input:
       None.
     Output:
       songDict - song dict with sid as key and Song as value.
  """
    print 'I am reading songs from doc-topic file......'
    filename = "../txt/%s_songs-doc-topics_%d_%s.txt" \
               % (const.DATASET_NAME,const.TOPIC_NUM,const.LDA_LIB)
    if os.path.exists(filename):
        songDict = {}
        dtFile = open(filename, "r")
        content = dtFile.readlines()
        count = len(content)
        #loop all lines to construct all songs
        for i in range(0, count):
            items = content[i].rstrip('\n').split('>>')
            sid = int(items[0])
            topicList = eval(items[1])
            topicDict = {}
            for topic in topicList:
                tid = int(topic[0])
                tpro = float(topic[1])
                topicDict[tid] = tpro
            song = model.Song(i, sid, topicDict)
            songDict[sid] = song
        print 'There are %d songs have been read.' % len(songDict)
        dtFile.close()
        print 'Finish reading songs from doc-topic file......'
        return songDict
    else:
        print 'cannot find doc-topic file......'
Ejemplo n.º 2
0
 def getSongDetails(self, id):
     '''
     function get detail of song with id input
     if id invalid return None
     '''
     try:
         dic = self.database.child('music-player/songs').child(
             id).get().val()
         song = model.Song(id, dic["title"], dic["artist"], dic["album"],
                           dic["date_created"], dic["views"], dic["lyric"],
                           dic["data"])
         return song
     except:
         return None
Ejemplo n.º 3
0
    def detectData(self, local_path):
        '''
        read data from file mp3
        upload file into firebase
        funtion return song model
        '''
        file = eyed3.load(local_path)
        tag = file.tag

        resp_url = self.uploadFile(local_path, 'songs', tag.title + '.mp3')

        song = model.Song(utils.generateID(), tag.title, tag.artist, tag.album,
                          utils.getNow(), 0, 'No Lyris', resp_url)
        return song
Ejemplo n.º 4
0
def admin_song_update(song_id=0):
    if song_id:
        song_db = model.Song.get_by_id(song_id)
    else:
        song_db = model.Song()
    if not song_db:
        flask.abort(404)

    form = SongUpdateAdminForm(obj=song_db)

    album_dbs, album_cursor = model.Album.get_dbs()
    member_dbs, member_cursor = model.Member.get_dbs()
    form.album_key.choices = [('', u'-')] + [(c.key.urlsafe(), c.name)
                                             for c in album_dbs]
    form.writer_key.choices = [('', u'-')] + [(c.key.urlsafe(), c.name)
                                              for c in member_dbs]
    if flask.request.method == 'GET' and not form.errors:
        form.album_key.data = song_db.album_key.urlsafe(
        ) if song_db.album_key else None
        form.writer_key.data = song_db.writer_key.urlsafe(
        ) if song_db.writer_key else None
        form.tags.data = config.TAG_SEPARATOR.join(form.tags.data)

    if form.validate_on_submit():
        form.album_key.data = ndb.Key(
            urlsafe=form.album_key.data) if form.album_key.data else None
        form.writer_key.data = ndb.Key(
            urlsafe=form.writer_key.data) if form.writer_key.data else None
        form.tags.data = util.parse_tags(form.tags.data)
        form.populate_obj(song_db)
        song_db.put()
        return flask.redirect(
            flask.url_for('admin_song_list', order='-modified'))

    return flask.render_template(
        'song/admin_song_update.html',
        title=song_db.name if song_id else 'New Song',
        html_class='admin-song-update',
        form=form,
        song_db=song_db,
        back_url_for='admin_song_list',
        api_url=flask.url_for(
            'api.admin.song',
            song_key=song_db.key.urlsafe() if song_db.key else ''),
    )
Ejemplo n.º 5
0
            existing_actor = model.Actor.query.filter_by(name=actor).first()
            if (existing_actor):
                existing_actor.movies.append(new_movie)
                new_movie.actors.append(existing_actor)
            else:
                new_actor = model.Actor(name=actor)
                new_actor.movies.append(new_movie)
                new_movie.actors.append(new_actor)
                db.session.add(new_actor)

        db.session.add(new_movie)

with open('data/songs.csv', 'r', encoding='utf-8-sig') as songs_file:
    reader = DictReader(songs_file)
    for row in reader:
        new_song = model.Song(name=row['name'])

        # add artists
        artists = row['artists'].split(";")
        for artist_name in artists:
            print(artist_name)
            existing_artist = model.Artist.query.filter_by(
                name=artist_name).first()
            if (existing_artist):
                existing_artist.songs.append(new_song)
                new_song.artists.append(existing_artist)
            else:
                new_artist = model.Artist(name=artist_name)
                new_artist.songs.append(new_song)
                new_song.artists.append(new_artist)
                db.session.add(new_artist)