Esempio n. 1
0
def homepage():
	utils.connect()
	if request.method == "GET":
		return render_template("musicboxhome.html");
        else:
		global current_user
		button = str(request.form["button"])
		if button == "Login":
			user = request.form.get("login-or-register")
			current_user = utils.add_or_view_user(user)
			session["user"]=current_user
			songs = utils.get_songs(current_user)
			return redirect("/"+current_user)
Esempio n. 2
0
    def play_music_in_dir(self, dir_path, n_songs=1):

        songs = get_songs(dir_path)

        rn.shuffle(songs)

        if len(songs) >= n_songs:
            print("About to play: {}".format(songs[:n_songs]))
            for i in range(n_songs):
                os.system('mplayer \"{}\"'.format(songs[i]))
        else:
            print("About to play: {}".format(songs))
            for song in songs:
                os.system('mplayer \"{}\"'.format(songs[i]))
Esempio n. 3
0
def login(username):
	global current_user
	global current_artist
	global current_artistID
	utils.connect()
	if request.method == "GET":
		songs = utils.get_songs(current_user)		
		current_user=session["user"]
		return render_template("login.html",user=current_user,songs=songs)
	else:
		button = str(request.form["button"])
		if button == "Close account":
			utils.remove_user(current_user)
			return redirect("/")
		elif button == "Search":
			current_artist = request.form.get("search")
			current_artistID = str(musicservices.getID(
					musicservices.getArtistInfo(
						utils.curate(current_artist))))
			session["artist"]=current_artist
			session["aID"]=current_artistID
			return redirect("/"+current_user+"/"+current_artistID)
    username = sys.argv[1]
    URL = sys.argv[2]
    playlist_name = sys.argv[3]
else:
    print("Usage : %s username" % (sys.argv[0], ))
    sys.exit()

token = util.prompt_for_user_token(username,
                                   SCOPE,
                                   client_id=CLIENT_ID,
                                   client_secret=CLIENT_ID_SECRET,
                                   redirect_uri='http://localhost/')
#create spotipy agent
sp = spotipy.Spotify(auth=token)
#get artist and song names from youtube link
artists, songs = get_songs(URL)
print('got youtube links...')
#create a list of spotify song urls
song_urls = []
for i in range(len(songs)):
    try:
        results = sp.search(q='track:' + songs[i] + ",", type='track,artist')
        song = None
        for item in results['tracks']['items']:
            if item['artists'][0]['name'] == artists[i]:
                song = item
                break
        if song is None:
            print('couldnt find song: ' + songs[i] + " by: " + arists[i])
        song_urls.append(song['external_urls']['spotify'])
    except Exception as e:
    print("Split_50:", len(slices_50))
    print("Split_100:", len(slices_100), "\n")

    pp = pprint.PrettyPrinter(indent=2)

    sp = utils.get_spotify_client()

    songs_dict = defaultdict(list)

    for i, sslice in enumerate(slices_50):
        print("\033[K\033[1000DGetting Song Metadata: " + str(i + 1) + "/" +
              str(len(slices_50)) + "    Dropped: " +
              str((i * 50) - len(songs_dict)),
              flush=True,
              end='')
        songs_dict = utils.get_songs(sp, sslice, songs_dict)
    l1_total = len(songs_dict)
    print("\nFinished stage 1 with", l1_total, "out of", len(songs), "songs")
    for i, sslice in enumerate(slices_100):
        print("\033[K\033[1000DGetting Song Attributes: " + str(i + 1) + "/" +
              str(len(slices_100)) + "    Dropped: " +
              str(l1_total - len(songs_dict)),
              flush=True,
              end='')
        songs_dict = utils.get_song_info(sp, sslice, songs_dict)

    print("\nDropped",
          len(songs) - len(songs_dict), "out of", len(songs), "songs")
    #print("Dropped", 300 - len(songs_dict), "out of", 300, "songs")
    print("missing_reason info")
    pp.pprint(dict(utils.get_missing()))
Esempio n. 6
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Nov  6 20:53:36 2018

@author: Arpit
"""

from utils import save_preds, get_songs, split_data, to_label
from data_processing import get_image_data
from model import Model

# get names of all the songs
songs = get_songs()

# split them in training and valid sets according to given percentage
songs_train, songs_valid = split_data(songs, 0.85)

# get actual spectrogram(2d np.array) data for the songs
X_train, Y_train = get_image_data('train', songs_train)
X_valid, Y_valid = get_image_data('valid', songs_valid)

# get names and spectrogram data for the final testing set(which is to be uploaded)
X_test, keys = get_image_data('test')

model = Model(False)
model.train(X_train, Y_train, X_valid, Y_valid, 5000)

preds = model.predict(X_test)
preds = [to_label(pred) for pred in preds]
save_preds(keys, preds, 'predictions.csv')
Esempio n. 7
0
        label = [0] * 10
        label[label_index(song.split('.')[0])] = 1

        cnt = int(size / input_size)
        for i in range(cnt):
            X.append(abs(scipy.fft(raw[input_size * i:input_size * (i + 1)])))
            Y.append(label)

    X = np.array(X)
    Y = np.array(Y)

    return X, Y


# gets all songs' names
songs = get_songs()

#splits them into training and validation sets
training_songs, validation_songs = split_data(np.array(songs), 0.85)

# gets fourier transformed data for given songs
X, Y = get_song_data(training_songs)

#fits and transforms a normalizer
norm = Normalizer(norm='l1').fit(X)
X = norm.transform(X)

# gets fourier transformed data of validation set and transforms according to training set
X_valid, Y_valid = get_song_data(validation_songs)
X_valid = norm.transform(X_valid)