johndeniel commited on
Commit
f966fd8
1 Parent(s): 1504d85

Update src/static/index.html

Browse files
Files changed (1) hide show
  1. src/static/index.html +57 -52
src/static/index.html CHANGED
@@ -1,52 +1,57 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Spotify Playlist</title>
7
- <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
8
- </head>
9
- <body class="bg-gray-900 text-white">
10
- <header class="bg-black p-6">
11
- <h1 class="text-3xl font-bold">Spotify API Demo</h1>
12
- </header>
13
- <main class="p-6">
14
- <ul id="playlist" class="space-y-6"></ul>
15
- </main>
16
-
17
- <script>
18
- async function fetchPlaylist() {
19
- try {
20
- const response = await fetch('/playlist');
21
- const { tracks: { items } } = await response.json();
22
- const playlistElement = document.getElementById('playlist');
23
-
24
- items.forEach(({ track }) => {
25
- const listItem = document.createElement('li');
26
- listItem.className = 'flex items-start space-x-4 p-4 bg-gray-800 rounded-lg hover:bg-gray-700 transition';
27
-
28
- listItem.innerHTML = `
29
- <img src="${track.album.images[0].url}" alt="${track.name} cover" class="w-48 h-48 object-cover rounded-md">
30
- <div class="flex flex-col space-y-2">
31
- <h2 class="text-xl font-semibold">${track.name}</h2>
32
- <p class="text-gray-400">Artists: ${track.artists.map(artist => artist.name).join(', ')}</p>
33
- <p class="text-gray-400">Album: ${track.album.name}</p>
34
- <p class="text-gray-400">Release Date: ${track.album.release_date}</p>
35
- <p class="text-gray-400">Duration: ${Math.floor(track.duration_ms / 60000)}:${((track.duration_ms % 60000) / 1000).toFixed(0).padStart(2, '0')} minutes</p>
36
- <p class="text-gray-400">Popularity: ${track.popularity}</p>
37
- <a href="${track.external_urls.spotify}" target="_blank" class="text-green-500 hover:underline">Listen on Spotify</a>
38
- <a href="https://open.spotify.com/playlist/4kTgs1z0nssQlYk3Q3xecY?si=cktIWgT6SMiEzF5qZfQSYw&pi=7GCDGY_zRmKUp&nd=1&dlsi=9394824faa9043fe" target="_blank" class="text-green-500 hover:underline">View Playlist</a>
39
- </div>
40
- `;
41
-
42
- playlistElement.appendChild(listItem);
43
- });
44
- } catch (error) {
45
- console.error('Error fetching playlist:', error);
46
- }
47
- }
48
-
49
- fetchPlaylist();
50
- </script>
51
- </body>
52
- </html>
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Spotify Playlist</title>
7
+ <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
8
+ <style>
9
+ body {
10
+ font-family: 'Arial', sans-serif;
11
+ }
12
+ </style>
13
+ </head>
14
+ <body class="bg-gray-900 text-white">
15
+ <header class="bg-black p-6 shadow-md">
16
+ <h1 class="text-3xl font-bold text-green-500">Spotify API Demo</h1>
17
+ </header>
18
+ <main class="p-6">
19
+ <ul id="playlist" class="grid gap-6 md:grid-cols-2 lg:grid-cols-3"></ul>
20
+ </main>
21
+
22
+ <script>
23
+ async function fetchPlaylist() {
24
+ try {
25
+ const response = await fetch('/playlist');
26
+ const { tracks: { items } } = await response.json();
27
+ const playlistElement = document.getElementById('playlist');
28
+
29
+ items.forEach(({ track }) => {
30
+ const listItem = document.createElement('li');
31
+ listItem.className = 'flex flex-col md:flex-row items-start space-y-4 md:space-y-0 md:space-x-4 p-4 bg-gray-800 rounded-lg hover:bg-gray-700 transition shadow-lg';
32
+
33
+ listItem.innerHTML = `
34
+ <img src="${track.album.images[0].url}" alt="${track.name} cover" class="w-full md:w-48 h-48 object-cover rounded-md shadow-md">
35
+ <div class="flex flex-col space-y-2">
36
+ <h2 class="text-xl font-semibold">${track.name}</h2>
37
+ <p class="text-gray-400">Artists: ${track.artists.map(artist => artist.name).join(', ')}</p>
38
+ <p class="text-gray-400">Album: ${track.album.name}</p>
39
+ <p class="text-gray-400">Release Date: ${track.album.release_date}</p>
40
+ <p class="text-gray-400">Duration: ${Math.floor(track.duration_ms / 60000)}:${((track.duration_ms % 60000) / 1000).toFixed(0).padStart(2, '0')} minutes</p>
41
+ <p class="text-gray-400">Popularity: ${track.popularity}</p>
42
+ <a href="${track.external_urls.spotify}" target="_blank" class="text-green-500 hover:underline">Listen on Spotify</a>
43
+ <a href="https://open.spotify.com/playlist/4kTgs1z0nssQlYk3Q3xecY?si=cktIWgT6SMiEzF5qZfQSYw&pi=7GCDGY_zRmKUp&nd=1&dlsi=9394824faa9043fe" target="_blank" class="text-green-500 hover:underline">View Playlist</a>
44
+ </div>
45
+ `;
46
+
47
+ playlistElement.appendChild(listItem);
48
+ });
49
+ } catch (error) {
50
+ console.error('Error fetching playlist:', error);
51
+ }
52
+ }
53
+
54
+ fetchPlaylist();
55
+ </script>
56
+ </body>
57
+ </html>