def save_playlist(): # What's needed from the client: # be logged in for user_id # playlist_title # final query from final search # list of tracks # TODO prompt to log in to Spotify, then send request to save playlist to user's Spotify account user_id = session.get('user_id') data = request.get_json() query = data["query"] search_track_ids = data["playlist_tracks"] playlist_title = data["playlist_title"] # tracks = pass in from client created_at = datetime.now() last_updated_at = datetime.now() # create the search and save to db search = crud.create_search(user_id, created_at, query) # create playlist and save to db playlist = crud.create_playlist(user_id, search.search_id, created_at, last_updated_at, playlist_title) # create tracks, playlist_tracks and save to db tracks = crud.create_tracks_and_playlist_tracks_for_playlist( search_track_ids, playlist.playlist_id) # return tracks as list of dicts to render on playlist tracks screen return jsonify({ 'playlist_id': playlist.playlist_id, })
def create_playlist(genre, search, user, tracks_in_genre): """Create playlists and assign to random user""" created_at = datetime.now() last_updated_at = datetime.now() playlist_title = f'{genre} Playlist' playlist = crud.create_playlist(user.user_id, search.search_id, created_at, last_updated_at, playlist_title) for track_order, track in enumerate(tracks_in_genre): crud.create_playlist_track(track.track_id, playlist.playlist_id, track_order) return playlist
def register_videos(user_id): """Store video and playlist in video database""" user_obj = crud.check_user_to_playlist_id(user_id) playlist_name = request.form.get("playlist-name") playlist_obj = crud.create_playlist(playlist_name, user_id) playlist_id = playlist_obj.playlist_id video_list = request.form.getlist("video-list") n = 1 video_url_id = [video[n] for video in session["videos"][0]] n = 0 video_title = [video[n] for video in session["videos"][0]] video_duration = session["videos"][2] video_category_name = session["videos"][1] dict_video = { video_url_id[i]: video_title[i] for i in range(len(video_url_id)) } for video_ids in video_list: if video_ids in video_url_id: video_title = dict_video[video_ids] crud.create_video(video_title, video_duration, video_ids, playlist_id) return render_template( "current_playlists.html", user_id=user_id, video_list=video_list, playlist_obj=playlist_obj, user_obj=user_obj, )
def parse_api(): """catches and parses data from external api call and runs appropriate functions""" do = request.args.get('do') if do == "getInfo": access_token = session.get('access_token') if (access_token): user = crud.get_user_by_access_token(session.get('access_token')) return jsonify({ 'access_token': access_token, 'email': user.email, 'name': user.name }) return jsonify({'access_token': "", 'email': "", 'name': ""}) elif do == "zipcodeToPlaylist": weather = request.args.get('weather') moods = crud.get_mood(weather) songs = crud.create_playlist(moods) print(songs) return jsonify(songs) elif do == "getWeather": appid = secrets.appid zipcode = request.args.get('zip') weatherurl = 'https://api.openweathermap.org/data/2.5/weather?zip=' + zipcode + ',us&appid=' + appid print(weatherurl) return dload.json(weatherurl) elif do == "getWeatherLatLon": appid = secrets.appid lat = request.args.get('lat') lon = request.args.get('lon') weatherurl = 'https://api.openweathermap.org/data/2.5/weather?lat=' + lat + '&lon=' + lon + '&appid=' + appid print(weatherurl) return dload.json(weatherurl) elif do == "savePlaylist": trackids = request.args.get('trackids').split(",") access_token = request.args.get('access_token') username = request.args.get('username') weather = request.args.get('weather') city = request.args.get('city') playlist_name = f"{username}'s {weather} in {city} Playlist" if (access_token): user = crud.get_user_by_access_token(access_token) sp = spotipy.Spotify(auth_manager=auth_manager) #token_info = sp.refresh_access_token(user.refresh_token) # token_info = auth_manager.get_access_token(request.args.get('code'), check_cache=False) # spotify = spotipy.Spotify(auth_manager=auth_manager) plist = sp.user_playlist_create(user.spotify_id, playlist_name) print(plist) sp.playlist_add_items(plist['id'], trackids) print("Playlist added: ", plist['id']) return jsonify(plist['id']) return "" #email = request.args.get('email') #user = request.args.get('id') #access_token = crud.get_access_token_by_email(email) #refresh_token = crud.get_refresh_token_by_email(email) # try: # user_playlist_create(user, name, public=True, collaborative=False, description='') elif do == "logout": email = request.args.get('email') session.clear() if (email): return crud.logout(email) return "Could not logout, no access token"
import model import server os.system('dropdb youtube_playlists') os.system('createdb youtube_playlists') model.connect_to_db(server.app) model.db.create_all() # Create playlist table's initial data. with open('data/playlist.json') as f: playlist_data = json.loads(f.read()) playlist_in_db = [] for playlist in playlist_data: channel_name, playlist_name, number_of_videos, last_updated = ( playlist['channel_name'], playlist['playlist_name'], playlist['number_of_videos'], playlist['last_updated']) db_playlist = crud.create_playlist(channel_name, playlist_name, number_of_videos, last_updated) playlist_in_db.append(db_playlist)