Example #1
0
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,
    })
Example #2
0
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
Example #3
0
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,
    )
Example #4
0
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)