From f77853601f783d7360b6545e8bcc7f9072f0c962 Mon Sep 17 00:00:00 2001 From: Jon Date: Sun, 25 May 2025 20:09:48 +0200 Subject: [PATCH] Lab Apis --- .DS_Store | Bin 0 -> 6148 bytes .cache | 1 + lab-apis.ipynb | 324 ++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 311 insertions(+), 14 deletions(-) create mode 100644 .DS_Store create mode 100644 .cache diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 \u001b[39m\u001b[32m1\u001b[39m \u001b[43msp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mfeatured_playlists\u001b[49m() \u001b[38;5;66;03m# We get a playlist id of a playlist we like\u001b[39;00m\n", + "\u001b[31mAttributeError\u001b[39m: module 'spotipy' has no attribute 'featured_playlists'" + ] + } + ], "source": [ "sp.featured_playlists() # We get a playlist id of a playlist we like" ] @@ -431,10 +623,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "46d35121-9256-4cf4-81f5-118b87f7af32", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'spotipy' has no attribute 'playlist'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[17]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m playlist_id = \u001b[33m\"\u001b[39m\u001b[33m37i9dQZF1DXd9zR7tdziuQ\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m playlist = \u001b[43msp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mplaylist\u001b[49m(playlist_id)\n", + "\u001b[31mAttributeError\u001b[39m: module 'spotipy' has no attribute 'playlist'" + ] + } + ], "source": [ "playlist_id = \"37i9dQZF1DXd9zR7tdziuQ\"\n", "playlist = sp.playlist(playlist_id)" @@ -442,10 +646,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "5260f67f-6024-4fee-8449-30904f03bf76", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'playlist' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNameError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[18]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[43mplaylist\u001b[49m[\u001b[33m'\u001b[39m\u001b[33mname\u001b[39m\u001b[33m'\u001b[39m]) \u001b[38;5;66;03m# Print the playlist's name\u001b[39;00m\n\u001b[32m 2\u001b[39m \u001b[38;5;28mprint\u001b[39m(playlist[\u001b[33m'\u001b[39m\u001b[33mdescription\u001b[39m\u001b[33m'\u001b[39m]) \u001b[38;5;66;03m# Print the playlist's description\u001b[39;00m\n", + "\u001b[31mNameError\u001b[39m: name 'playlist' is not defined" + ] + } + ], "source": [ "print(playlist['name']) # Print the playlist's name\n", "print(playlist['description']) # Print the playlist's description" @@ -462,10 +678,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "69c78f8d-7e6a-4d15-bcbb-fc93edb82433", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'spotipy' has no attribute 'playlist_tracks'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[19]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m tracks = \u001b[43msp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mplaylist_tracks\u001b[49m(playlist_id)\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m track \u001b[38;5;129;01min\u001b[39;00m tracks[\u001b[33m'\u001b[39m\u001b[33mitems\u001b[39m\u001b[33m'\u001b[39m]:\n\u001b[32m 3\u001b[39m \u001b[38;5;28mprint\u001b[39m(track[\u001b[33m'\u001b[39m\u001b[33mtrack\u001b[39m\u001b[33m'\u001b[39m][\u001b[33m'\u001b[39m\u001b[33mname\u001b[39m\u001b[33m'\u001b[39m]) \u001b[38;5;66;03m# Print each track's name\u001b[39;00m\n", + "\u001b[31mAttributeError\u001b[39m: module 'spotipy' has no attribute 'playlist_tracks'" + ] + } + ], "source": [ "tracks = sp.playlist_tracks(playlist_id)\n", "for track in tracks['items']:\n", @@ -533,18 +761,86 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "ed92d961-9646-4375-a386-ccc320a958f5", "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "module 'spotipy' has no attribute 'featured_playlists'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[22]\u001b[39m\u001b[32m, line 3\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;66;03m# 1. Featured Exploration:\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m3\u001b[39m featured_playlists = \u001b[43msp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mfeatured_playlists\u001b[49m(limit=\u001b[32m5\u001b[39m)\n\u001b[32m 5\u001b[39m \u001b[38;5;66;03m# Get the first 5 playlists\u001b[39;00m\n\u001b[32m 6\u001b[39m playlists = featured_playlists[\u001b[33m'\u001b[39m\u001b[33mplaylists\u001b[39m\u001b[33m'\u001b[39m][\u001b[33m'\u001b[39m\u001b[33mitems\u001b[39m\u001b[33m'\u001b[39m]\n", + "\u001b[31mAttributeError\u001b[39m: module 'spotipy' has no attribute 'featured_playlists'" + ] + } + ], + "source": [ + "# 1. Featured Exploration:\n", + "\n", + "featured_playlists = sp.featured_playlists(limit=5)\n", + "\n", + "# Get the first 5 playlists\n", + "playlists = featured_playlists['playlists']['items']\n", + "top_5_playlists=[]\n", + "\n", + "# Loop through them and extract name and id\n", + "for playlist in playlists:\n", + " name = playlist['name']\n", + " playlist_id = playlist['id']\n", + " top_5_playlists.append((name, playlist_id))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4eb398f6", + "metadata": {}, + "outputs": [], + "source": [ + "#2. Deep dive\n", + "chosen_playlist_id = top_5_playlists[0][1] # Pick first one\n", + "chosen_playlist_data = sp.playlist(chosen_playlist_id)\n", + "\n", + "playlist_name = chosen_playlist_data['name']\n", + "playlist_description = chosen_playlist_data['description']\n", + "playlist_total_tracks = chosen_playlist_data['tracks']['total']\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8ea82c2e", + "metadata": {}, + "outputs": [], + "source": [ + "#3. Track-tastic\n", + "tracks_data = sp.playlist_items(chosen_playlist_id, limit=10)\n", + "first_10_tracks = [item['track']['name'] for item in tracks_data['items']]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f89e9afc", + "metadata": {}, "outputs": [], "source": [ - "# Your answer here" + "#4. Artistic flair\n", + "track_artist_map = {}\n", + "\n", + "for item in tracks_data['items']:\n", + " track_name = item['track']['name']\n", + " artists = [artist['name'] for artist in item['track']['artists']]\n", + " track_artist_map[track_name] = artists" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -558,7 +854,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.12.9" } }, "nbformat": 4,