def createNewPlaylist(artist_name): cur = db.cursor() sql_create_playlists = '''CREATE TABLE IF NOT EXISTS playlist (id INTEGER PRIMARY KEY AUTO_INCREMENT,rootArtist VARCHAR(128));''' sql_create_songs = '''CREATE TABLE IF NOT EXISTS songs (playlistId INTEGER, songOrder INTEGER,artistName VARCHAR(128), albumName VARCHAR(256), trackName VARCHAR(256));''' cur.execute(sql_create_playlists) cur.execute(sql_create_songs) sql_insert_artist_name = '''INSERT INTO playlist (rootArtist) VALUES ('%s');''' % ( artist_name) cur.execute(sql_insert_artist_name) playlistId = cur.lastrowid root_artist_id = fetchArtistId(artist_name) edgelist = getEdgeList(root_artist_id, 2) g = pandasToNetworkX(edgelist) songs = [] for i in range(30): artist_id = (randomCentralNode(g)) songOrder = i + 1 artist_name = fetchArtistInfo(artist_id)['name'] album_ids = fetchAlbumIds(artist_id) random_album = np.random.choice(album_ids) random_album_name = fetchAlbumInfo(random_album)['name'] random_track_name = fetchARandomTrack(random_album)[1] songs.append((playlistId, songOrder, artist_name, random_album_name, random_track_name)) insertSongs = '''INSERT INTO songs (playlistId, songOrder, artistName, albumName, trackName) VALUES (%s, %s, %s, %s, %s)''' cur.executemany(insertSongs, songs) db.commit() print "playlists updated"
def testWriteArtistsInfo(): artistId1 = fetchArtistId('earth wind fire') artistId2 = fetchArtistId('patsy cline') artistId3 = fetchArtistId('五月天') assert artistId1=='4QQgXkCYTt3BlENzhyNETg' assert artistId2=='7dNsHhGeGU5MV01r06O8gK' assert artistId3=='16s0YTFcyjP4kgFwt7ktrY' albumIds1 = fetchAlbumIds(artistId1) albumIds2 = fetchAlbumIds(artistId2) albumIds3 = fetchAlbumIds(artistId3) print "albumIds1=",len(albumIds1) print "albumIds2=",len(albumIds2) print "albumIds3=",len(albumIds3) assert len(albumIds1) == 20 assert len(albumIds2) == 20 assert len(albumIds3) == 17 artistInfo1 = fetchArtistInfo(artistId1) artistInfo2 = fetchArtistInfo(artistId2) artistInfo3 = fetchArtistInfo(artistId3) albumInfoList = [] for albumId in albumIds1: albumInfoList.append(fetchAlbumInfo(albumId)) for albumId in albumIds2: albumInfoList.append(fetchAlbumInfo(albumId)) for albumId in albumIds3: albumInfoList.append(fetchAlbumInfo(albumId)) writeArtistsTable([artistInfo1, artistInfo2, artistInfo3]) writeAlbumsTable(albumInfoList) bcd =getBarChartData() # asset that there were 11 albums in the 80s and 21 in the 00s assert(bcd[1][8] == 11) assert(bcd[1][10] == 21)
print "input artists are ", artist_names # YOUR CODE HERE artist_ids = [] # Creates a list of artist IDs for artist in artist_names: artist_ids.append(fetchArtistId(artist)) artist_info = [] # Creates a list of artist info dictionaries for ids in artist_ids: artist_info.append(fetchArtistInfo(ids)) artist_album_ids = [] # Creates a list of lists of album ids for ids in artist_ids: artist_album_ids.append(fetchAlbumIds(ids)) albums_info = [] # Creates a list of dictionaries of album information for artist_albums in artist_album_ids: for ids in artist_albums: albums_info.append(fetchAlbumInfo(ids)) # Creates a table from list of dictionaries of artist info writeArtistsTable(artist_info) # Creates a table from list of dictrionaries of album info writeAlbumsTable(albums_info) plotBarChart()
if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE artist_id_list = [] artist_info_list = [] album_id_list = [] album_info_list = [] for name in artist_names: artist_id_list.append(fetchArtistId(name)) print artist_id_list for artist_id in artist_id_list: artist_info_list.append(fetchArtistInfo(artist_id)) print artist_info_list for artist_id in artist_id_list: album_id_list.append(fetchAlbumIds(artist_id)) print album_id_list for album_id in album_id_list: album_info_list.append(fetchAlbumInfo(album_id)) print album_info_list writeArtistsTable(artist_info_list) writeAlbumsTable(album_info_list) plotBarChart()
from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE artist_id_list = [] artist_info_list = [] for name in artist_names: artistId = fetchArtistId(name) #get artistID artist_id_list.append(artistId) #append it to the list artistInfo = fetchArtistInfo(artistId) #get artistInfo dictionary artist_info_list.append(artistInfo) #append it to the artist_info_list #album_ids_list = [] album_info_list = [] for artistId in artist_id_list: albumIds = fetchAlbumIds(artistId) #get list of albumIds #album_ids_list.append(albumIds) #append list to album_ids_list for albumId in albumIds: #for each album in one artist's list of album IDs albumInfo = fetchAlbumInfo(albumId) #get albumInfo dictionary album_info_list.append( albumInfo) #append it to the album_info_list writeArtistsTable(artist_info_list) writeAlbumsTable(album_info_list) plotBarChart()
ID = fetchArtistId(artist_name) edgeList1 = getEdgeList(ID, 2) combined_Edge_List = combineEdgelists(combined_Edge_List, edgeList1) b = combined_Edge_List c = pandasToNetworkX(b) nodes = [] albums = [] tracks = [] tracks_names = [] for i in range(30): d = randomCentralNode(c) nodes.append(d) for i in range(30): e = nodes[i] f = fetchAlbumIds(e) i = len(f) - 1 g = randint(0, i) h = f[g] albums.append(h) for i in range(30): album_id = albums[i] url = "https://api.spotify.com/v1/albums/" + album_id + "/tracks" req = requests.get(url) json_data = req.json() j = len(json_data['items']) - 1 k = json_data['items'][j]['id'] tracks.append(k) for i in range(30): track_id = tracks[i] url = "https://api.spotify.com/v1/tracks/" + track_id
combinedlists=newlist g=pandasToNetworkX(combinedlists) random_artists=[] for i in range(30): newartist=randomCentralNode(g) random_artists.append(newartist) #print random_artists rows=[] f=open('playlist.csv','w',encoding='utf-8') f.write(u'ARTIST_NAME,ALBUM_NAME,TRACK_NAME\n') for artist in random_artists: artistinfo=fetchArtistInfo(artist) artistname=artistinfo['name'] albumlist=fetchAlbumIds(artist) if not albumlist: continue else: pickalbum=np.random.choice(albumlist) albuminfo=fetchAlbumInfo(pickalbum) albumname=albuminfo['name'] songname=getRandomSong(pickalbum) f.write('"'+artistname+'"'+','+'"'+albumname+'"'+','+'"'+songname+'"'+'\n')
def testFetchAlbums(): assert len(fetchAlbumIds('57anmI1X2hXWPrNagFdzZr')) == 9
g = pandasToNetworkX(combinedEdgeList) sample = [] for i in range(30): sample.append(randomCentralNode(g)) outfile = open('playlist.csv', 'w', encoding = 'utf-8') outfile.write(u'artist_name,album_name,track_name\n') def fetchARandomTrack(album_id): url = 'https://api.spotify.com/v1/albums/'+ album_id +'/tracks' req = requests.get(url) data = req.json() items = data['items'] row = np.random.choice(items) track_id = row['id'] track_name = row['name'] return (track_id, track_name) for artist in sample: artist_name = fetchArtistInfo(artist)['name'] album_ids = fetchAlbumIds(artist) random_album = np.random.choice(album_ids) random_album_name = fetchAlbumInfo(random_album)['name'] random_track_name = fetchARandomTrack(random_album)[1] line = '"' + artist_name + '","' + random_album_name + '","' + random_track_name +'"\n' outfile.write(line) outfile.close() print "playlist.csv is saved."
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE ArtistIds = [] ArtistInfos = [] AlbumIds = [] AlbumInfos = [] for name in artist_names: #get id ArtistIds.append(fetchArtistId(name)) for artistId in ArtistIds: ArtistInfos.append(fetchArtistInfo(artistId)) for artistId in ArtistIds: ids = fetchAlbumIds(artistId) for aid in ids: AlbumIds.append(aid) for albumId in AlbumIds: AlbumInfos.append(fetchAlbumInfo(albumId)) writeArtistsTable(ArtistInfos) writeAlbumsTable(AlbumInfos) plotBarChart()
from io import open if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names #create list of artist ids artist_ids = [] for name in artist_names: artist_ids.append(fetchArtistId(name)) #create list of artist info dictionaries artist_info = [] for artID in artist_ids: artist_info.append(fetchArtistInfo(artID)) #create artists.csv writeArtistsTable(artist_info) #create list of album ids albums = [] for artist in artist_ids: artists_albums = fetchAlbumIds(artist) for album in artists_albums: albums.append(fetchAlbumInfo(album)) #create albums.csv writeAlbumsTable(albums) plotBarChart()
import sys import requests from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names artistlist = [] album_list = [] for i in range(len(artist_names)): artistinfo = fetchArtistInfo(fetchArtistId(artist_names[i])) artistlist.append(artistinfo) artist_id = artistinfo['id'] albums = fetchAlbumIds(artist_id) for album in albums: albuminfo = fetchAlbumInfo(album) album_list.append(albuminfo) writeAlbumsTable(album_list) writeArtistsTable(artistlist) plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE album_info_list = [] artist_info_list = [] for artist in artist_names: artist_id = fetchArtistId(artist) album_info_list.append(fetchAlbumInfo(fetchAlbumIds(fetchArtistId(artist))[0])) artist_info_list.append(fetchArtistInfo(fetchArtistId(artist))) writeArtistsTable(artist_info_list) writeAlbumsTable(album_info_list) plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names artist_id = [] album_id = [] artist_info = [fetchArtistInfo(fetchArtistId(i)) for i in artist_names] album_info = [] for i in artist_info: for item in fetchAlbumIds(i['id']): album_info.append(fetchAlbumInfo(item)) writeArtistsTable(artist_info) writeAlbumsTable(album_info) plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names artistList = [] for name in artist_names: artID = fetchArtistId(name) artistList.append(artID) # generate a list of all artist names artistInfoDict = [] albumDictList = [] for identity in artistList: # indexing through artist IDs artistInfoDict.append(fetchArtistInfo( identity)) # create list of artist info dictionaries identityAlbumList = fetchAlbumIds( identity) # generate list of albums for artist identity for album in identityAlbumList: albumDictList.append(fetchAlbumInfo(album)) writeArtistsTable(artistInfoDict) # write artist information to CSV writeAlbumsTable(albumDictList) # write album information to CSV plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE artist_list = [] album_list = [] for hahaha in artist_names: get_artist_id = fetchArtistId(hahaha) get_artist_info = fetchArtistInfo(get_artist_id) artist_list.append(get_artist_info) get_album_ids = fetchAlbumIds(get_artist_id) for album in get_album_ids: get_album_info = fetchAlbumInfo(album) album_list.append(get_album_info) writeArtistsTable(artist_list) writeAlbumsTable(album_list) #getBarChartData() plotBarChart()
from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names infos=[] ids=[] album_infos=[] for current_name in artist_names: print "current name is", current_name current_id=fetchArtistId(current_name) print "current id is", current_id current_info=fetchArtistInfo(current_id) infos.append(current_info) ids.append(current_id) for new_id in ids: album_ids=fetchAlbumIds(new_id) for album_id in album_ids: album_info=fetchAlbumInfo(album_id) album_infos.append(album_info) writeArtistsTable(infos) print "album_info is ", album_info writeAlbumsTable(album_infos)
def testFetchAlbums(): assert len( fetchAlbumIds('57anmI1X2hXWPrNagFdzZr')) == 9 # changed as instructed
def createNewPlaylist(artist_name): cur = db.cursor() cur.execute('''CREATE TABLE IF NOT EXISTS songs( playlistId INTEGER, songOrder VARCHAR(255), artistName VARCHAR(255), albumName VARCHAR(255), trackName VARCHAR(255));''') cur.execute('''CREATE TABLE IF NOT EXISTS playlists( id INTEGER PRIMARY KEY AUTO_INCREMENT, rootArtist VARCHAR(255));''') a = artist_name ID = fetchArtistId(a) combined_Edge_List = getEdgeList(ID, 2) b = combined_Edge_List c = pandasToNetworkX(b) cur.execute(''' INSERT INTO playlists (rootArtist) VALUES (%s)''', (artist_name)) g = cur.lastrowid nodes = [] albums = [] tracks = [] tracks_names = [] while len(albums) < 30: e = randomCentralNode(c) f = fetchAlbumIds(e) if len(f) == 0: continue i = len(f) - 1 g = randint(0, i) h = f[g] albums.append(h) for i in range(30): album_id = albums[i] url = "https://api.spotify.com/v1/albums/" + album_id + "/tracks" req = requests.get(url) json_data = req.json() j = len(json_data['items']) - 1 k = json_data['items'][j]['id'] tracks.append(k) for i in range(30): track_id = tracks[i] url = "https://api.spotify.com/v1/tracks/" + track_id req = requests.get(url) json_data = req.json() names = json_data['name'] tracks_names.append(names) for i in range(30): x = fetchAlbumInfo(albums[i]) ALBUM_NAME = x['name'] print(x['artist_id']) y = fetchArtistInfo(x['artist_id']) ARTIST_NAME = y['name'] TRACK_NAME = tracks_names[i] x = i + 1 cur.execute( ''' INSERT INTO songs (playlistId, songOrder, artistName, albumName, trackName) VALUES (%s, %s, %s, %s, %s )''', (g, x, ARTIST_NAME, ALBUM_NAME, TRACK_NAME)) db.commit()
from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart, getBarChartData if __name__ == '__main__': artist_names = sys.argv[1:] print ("input artists are ", artist_names) # YOUR CODE HERE artist_ids = [] for i in range(len(artist_names)): artist_ids.append(fetchArtistId(artist_names[i])) artist_info_list = [] artist_album_list = {} for i in range(len(artist_ids)): artist_info_list.append(fetchArtistInfo(artist_ids[i])) artist_album_list[i]=fetchAlbumIds(artist_ids[i]) writeArtistsTable(artist_info_list) album_info_list=[] for i in range(len(artist_album_list)): for j in range(len(artist_album_list[i])): album_info_list.append(fetchAlbumInfo(artist_album_list[i][j])) writeAlbumsTable(album_info_list) plotBarChart()
from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names list_of_artist_ids = [] for artist in artist_names: artist_id = fetchArtistId(artist) list_of_artist_ids.append(artist_id) list_of_artist_dicts = [] for artist_id in list_of_artist_ids: artist_info = fetchArtistInfo(artist_id) list_of_artist_dicts.append(artist_info) writeArtistsTable(list_of_artist_dicts) list_of_album_ids = [] for artist in list_of_artist_ids: list_of_album_ids += fetchAlbumIds(artist) list_of_album_dicts = [] for album in list_of_album_ids: list_of_album_dicts.append(fetchAlbumInfo(album)) writeAlbumsTable(list_of_album_dicts) plotBarChart()
combinededgelistdf = anN.readEdgeList("combinededgelist.csv") network = anN.pandasToNetworkX(combinededgelistdf) listof30artists = [] while len(listof30artists) != 30: artist = anN.randomCentralNode(network) listof30artists.append(artist) listof30albums = [] singleslist = [] for artist in listof30artists: albums = fAl.fetchAlbumIds(artist) if len(albums) == 0: url = "https://api.spotify.com/v1/artists/" + artist + "/albums?&album_type=single" req = requests.get(url) singledata = req.json()['items'] for x in singledata: singleslist.append(x['id']) random_single = np.random.choice(singleslist) listof30albums.append(random_single) else: random_album = np.random.choice(albums) listof30albums.append(random_album) def fetchTracks(album_id): """Takes album_id and returns list of album's tracks"""
from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE ids = [] artist_info = [] album_info = [] for i in artist_names: id = fetchArtistId(i) ids.append(id) #list of artist ids print ids for id in ids: artist_info.append(fetchArtistInfo(id)) #creating list of dictionaries of artists' info album_ids = fetchAlbumIds(id) #list of album ids for each artist print album_ids for album_id in album_ids: album_info.append(fetchAlbumInfo(album_id)) #list of dictionaries of album info print album_info #create artist csv and album csv writeArtistsTable(artist_info) writeAlbumsTable(album_info) plotBarChart()
from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE artistinfo_list = [] albuminfo_list = [] for artist in artist_names: artist_id = fetchArtistId(artist) artist_info = fetchArtistInfo(artist_id) artistinfo_list.append(artist_info) album_id = fetchAlbumIds(artist_id) for albumid in album_id: album_info = fetchAlbuminfo(albumid) albuminfo_list.append(album_info) writeArtistsTable(artistinfo_list) writeAlbumsTable(albuminfo_list) plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names artists = [] albums = [] for an in artist_names: a_id = fetchArtistId(an) artists.append(fetchArtistInfo(a_id)) albs = fetchAlbumIds(a_id) for alb in albs: albums.append(fetchAlbumInfo(alb)) writeArtistsTable(artists) writeAlbumsTable(albums) plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE artistinfo_list = [] albuminfo_list = [] for artist in artist_names: artist_id = fetchArtistId(artist) artist_info = fetchArtistInfo(artist_id) artistinfo_list.append(artist_info) album_id = fetchAlbumIds(artist_id) for albumid in album_id: album_info = fetchAlbuminfo(albumid) albuminfo_list.append(album_info) writeArtistsTable(artistinfo_list) writeAlbumsTable(albuminfo_list) plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] artists_ids = [] artist_info = [] print "input artists are ", artist_names for n in artist_names: id = fetchArtistId(n) artists_ids.append(id) artist_info.append(fetchArtistInfo(id)) album_info = [] for ids in artists_ids: album_id = fetchAlbumIds(ids) for alb in album_id: album_info.append(fetchAlbumInfo(alb)) writeArtistsTable(artist_info) writeAlbumsTable(album_info) plotBarChart()
import sys from fetchArtist import fetchArtistId, fetchArtistInfo from fetchAlbums import fetchAlbumIds, fetchAlbumInfo from csvUtils import writeArtistsTable, writeAlbumsTable from barChart import plotBarChart if __name__ == '__main__': artist_names = sys.argv[1:] print "input artists are ", artist_names # YOUR CODE HERE artistinfolist = [fetchArtistInfo(fetchArtistId(i)) for i in artist_names] albuminfolist = [] for i in artistinfolist: #print i['id'] for albumid in fetchAlbumIds(i['id']): albuminfolist.append(fetchAlbumInfo(albumid)) writeArtistsTable(artistinfolist) writeAlbumsTable(albuminfolist) plotBarChart()
for i in artistidlist: edgelist = getEdgeList(i, 2) new_edgelist = combineEdgeLists(edgelist, old_edgelist) old_edgelist = new_edgelist #pick tracks k = 0 artist_list = [] while k != 30: artist_dict = {} artist_dict['artist_name'] = fetchArtistInfo( randomCentralNode(pandasToNetworkX(old_edgelist)))['name'] #print artist_dict['artist_name'] album_id = np.random.choice( fetchAlbumIds(fetchArtistId(artist_dict['artist_name']))) #print album_id artist_dict['album_name'] = fetchAlbumInfo(album_id)['name'] #print artist_dict['album_name'] track_id = np.random.choice(fetchTrackIds(album_id)) #print track_id artist_dict['track_name'] = fetchTrackInfo(track_id)['name'] #print artist_dict['track_name'] artist_list.append(artist_dict) k += 1 #write to csv f = open("playlist.csv", 'w', encoding='utf-8') f.write('"%s", "%s","%s"\n' % (u'artist_name', u'album_name', u'track_name')) for i in artist_list: