diff --git a/lab-apis.ipynb b/lab-apis.ipynb index e923554..2a0c723 100644 --- a/lab-apis.ipynb +++ b/lab-apis.ipynb @@ -382,12 +382,48 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "29694252-f217-454d-8881-681b2b6eeb1e", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'spotipy'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[5], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mos\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mspotipy\u001b[39;00m\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mspotipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01moauth2\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SpotifyClientCredentials\n\u001b[0;32m 5\u001b[0m sp \u001b[38;5;241m=\u001b[39m spotipy\u001b[38;5;241m.\u001b[39mSpotify(auth_manager\u001b[38;5;241m=\u001b[39mSpotifyClientCredentials(\n\u001b[0;32m 6\u001b[0m client_id\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m5b61068672e64adf9724606e348bbf78\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 7\u001b[0m client_secret\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124me2a2831b55c840f4b9f0ccb001e350e4\u001b[39m\u001b[38;5;124m'\u001b[39m))\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'spotipy'" + ] + } + ], "source": [ - "# Your answer here" + "\n", + "import os\n", + "import spotipy\n", + "from spotipy.oauth2 import SpotifyClientCredentials\n", + "\n", + "sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(\n", + " client_id='5b61068672e64adf9724606e348bbf78',\n", + " client_secret='e2a2831b55c840f4b9f0ccb001e350e4'))\n", + "\n", + "# 1. Search artist\n", + "artist_name = \"Coldplay\"\n", + "results = sp.search(q=artist_name, type='artist')\n", + "artist = results['artists']['items'][0]\n", + "artist_id = artist['id']\n", + "\n", + "# 2. Get top tracks\n", + "top_tracks = sp.artist_top_tracks(artist_id)\n", + "for track in top_tracks['tracks'][:5]:\n", + " print(track['name'])\n", + "\n", + "# 3. Get related artists\n", + "related = sp.artist_related_artists(artist_id)\n", + "print(\"\\nRelated artists:\")\n", + "for a in related['artists'][:5]:\n", + " print(a['name'])" ] }, { @@ -533,18 +569,49 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "ed92d961-9646-4375-a386-ccc320a958f5", "metadata": {}, - "outputs": [], - "source": [ - "# Your answer here" + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'sp' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[6], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m featured \u001b[38;5;241m=\u001b[39m sp\u001b[38;5;241m.\u001b[39mfeatured_playlists(limit\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m)\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m playlist \u001b[38;5;129;01min\u001b[39;00m featured[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mplaylists\u001b[39m\u001b[38;5;124m'\u001b[39m][\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mitems\u001b[39m\u001b[38;5;124m'\u001b[39m]:\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mPlaylist: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mplaylist[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mNameError\u001b[0m: name 'sp' is not defined" + ] + } + ], + "source": [ + "featured = sp.featured_playlists(limit=5)\n", + "for playlist in featured['playlists']['items']:\n", + " print(f\"Playlist: {playlist['name']}\")\n", + "\n", + "# 2. Get tracks from one playlist\n", + "playlist_id = featured['playlists']['items'][0]['id']\n", + "tracks = sp.playlist_tracks(playlist_id)\n", + "\n", + "print(\"\\nTracks in first playlist:\")\n", + "for item in tracks['items'][:5]:\n", + " track = item['track']\n", + " print(f\"{track['name']} — {track['artists'][0]['name']}\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93c3da79", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -558,7 +625,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.13.5" } }, "nbformat": 4,