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......'
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
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
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 ''), )
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)