diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..f8d576f
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "cSpell.words": ["emily"]
+}
diff --git a/data/fetched-songs.json b/data/fetched-songs.json
index b672e5a..6d97378 100644
--- a/data/fetched-songs.json
+++ b/data/fetched-songs.json
@@ -1,39 +1,39 @@
{
- "hybrid-theory-1": true,
- "hybrid-theory-2": true,
- "hybrid-theory-3": true,
- "hybrid-theory-4": true,
- "hybrid-theory-5": true,
- "hybrid-theory-6": true,
- "hybrid-theory-7": true,
- "hybrid-theory-8": true,
- "hybrid-theory-9": true,
- "hybrid-theory-10": true,
- "hybrid-theory-11": true,
- "hybrid-theory-12": true,
- "meteora-1": true,
- "meteora-2": true,
- "meteora-3": true,
- "meteora-4": true,
- "meteora-5": true,
- "meteora-6": true,
- "meteora-7": true,
- "meteora-8": true,
- "meteora-9": true,
- "meteora-10": true,
- "meteora-11": true,
- "meteora-12": true,
- "meteora-13": true,
- "minutes-to-midnight-1": true,
- "minutes-to-midnight-2": true,
- "minutes-to-midnight-3": true,
- "minutes-to-midnight-4": true,
- "minutes-to-midnight-5": true,
- "minutes-to-midnight-6": true,
- "minutes-to-midnight-7": true,
- "minutes-to-midnight-8": true,
- "minutes-to-midnight-9": true,
- "minutes-to-midnight-10": true,
- "minutes-to-midnight-11": true,
- "minutes-to-midnight-12": true
+ "hybrid-theory_1": true,
+ "hybrid-theory_2": true,
+ "hybrid-theory_3": true,
+ "hybrid-theory_4": true,
+ "hybrid-theory_5": true,
+ "hybrid-theory_6": true,
+ "hybrid-theory_7": true,
+ "hybrid-theory_8": true,
+ "hybrid-theory_9": true,
+ "hybrid-theory_10": true,
+ "hybrid-theory_11": true,
+ "hybrid-theory_12": true,
+ "meteora_1": true,
+ "meteora_2": true,
+ "meteora_3": true,
+ "meteora_4": true,
+ "meteora_5": true,
+ "meteora_6": true,
+ "meteora_7": true,
+ "meteora_8": true,
+ "meteora_9": true,
+ "meteora_10": true,
+ "meteora_11": true,
+ "meteora_12": true,
+ "meteora_13": true,
+ "minutes-to-midnight_1": true,
+ "minutes-to-midnight_2": true,
+ "minutes-to-midnight_3": true,
+ "minutes-to-midnight_4": true,
+ "minutes-to-midnight_5": true,
+ "minutes-to-midnight_6": true,
+ "minutes-to-midnight_7": true,
+ "minutes-to-midnight_8": true,
+ "minutes-to-midnight_9": true,
+ "minutes-to-midnight_10": true,
+ "minutes-to-midnight_11": true,
+ "minutes-to-midnight_12": true
}
diff --git a/data/song-links.json b/data/song-links.json
index 7196df4..3412095 100644
--- a/data/song-links.json
+++ b/data/song-links.json
@@ -1,221 +1,221 @@
{
- "hybrid-theory-1": {
+ "hybrid-theory_1": {
"spotify": "https://open.spotify.com/track/4HvcbAR8LisalXKt7cpqE1",
"youtube": "https://www.youtube.com/watch?v=vjVkXlxsO8Q",
"youtubeMusic": "https://music.youtube.com/watch?v=vjVkXlxsO8Q",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528436568&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-2": {
+ "hybrid-theory_2": {
"spotify": "https://open.spotify.com/track/4bYLTrlcqctyHck3fjhMgW",
"youtube": "https://www.youtube.com/watch?v=4qlCC1GOwFw",
"youtubeMusic": "https://music.youtube.com/watch?v=4qlCC1GOwFw",
"appleMusic": "https://geo.music.apple.com/de/album/_/590431776?i=590431778&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-3": {
+ "hybrid-theory_3": {
"spotify": "https://open.spotify.com/track/1Q9QN6dHEDeUegsySY012f",
"youtube": "https://www.youtube.com/watch?v=M8UTS2iFXOo",
"youtubeMusic": "https://music.youtube.com/watch?v=M8UTS2iFXOo",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528437421&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-4": {
+ "hybrid-theory_4": {
"spotify": "https://open.spotify.com/track/214LJVTqrkUOGemWDGHJpr",
"youtube": "https://www.youtube.com/watch?v=jZSPAp8kCl4",
"youtubeMusic": "https://music.youtube.com/watch?v=jZSPAp8kCl4",
"appleMusic": "https://geo.music.apple.com/de/album/_/590431776?i=590431781&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-5": {
+ "hybrid-theory_5": {
"spotify": "https://open.spotify.com/track/0X576XiCW9uEtko6f6VkcU",
"youtube": "https://www.youtube.com/watch?v=Gd9OhYroLN0",
"youtubeMusic": "https://music.youtube.com/watch?v=Gd9OhYroLN0",
"appleMusic": "https://geo.music.apple.com/de/album/_/591534774?i=591534780&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-6": {
+ "hybrid-theory_6": {
"spotify": "https://open.spotify.com/track/5tkHje8FGSF258gi869GcV",
"youtube": "https://www.youtube.com/watch?v=ig-fyQqf510",
"youtubeMusic": "https://music.youtube.com/watch?v=ig-fyQqf510",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528437609&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-7": {
+ "hybrid-theory_7": {
"spotify": "https://open.spotify.com/track/4SJoEhpI6C61wtUfxSHMGc",
"youtube": "https://www.youtube.com/watch?v=wWBp-nlGX1o",
"youtubeMusic": "https://music.youtube.com/watch?v=wWBp-nlGX1o",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528437611&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-8": {
+ "hybrid-theory_8": {
"spotify": "https://open.spotify.com/track/7q115ia4fQn9zonjpexWsY",
"youtube": "https://www.youtube.com/watch?v=eVTXPUF4Oz4",
"youtubeMusic": "https://music.youtube.com/watch?v=eVTXPUF4Oz4",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528437613&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-9": {
+ "hybrid-theory_9": {
"spotify": "https://open.spotify.com/track/1B8WdDScvobpFsZLfdmIE1",
"youtube": "https://www.youtube.com/watch?v=3t2WkCudwfY",
"youtubeMusic": "https://music.youtube.com/watch?v=3t2WkCudwfY",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528437708&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-10": {
+ "hybrid-theory_10": {
"spotify": "https://open.spotify.com/track/3JAu2BH8sSI46rJGzQerb6",
"youtube": "https://www.youtube.com/watch?v=HNCgBuI2eJc",
"youtubeMusic": "https://music.youtube.com/watch?v=HNCgBuI2eJc",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528437709&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-11": {
+ "hybrid-theory_11": {
"spotify": "https://open.spotify.com/track/15voDM9pGkwEvHBUecpcmo",
"youtube": "https://www.youtube.com/watch?v=qqC5sdsHLq8",
"youtubeMusic": "https://music.youtube.com/watch?v=qqC5sdsHLq8",
"appleMusic": "https://geo.music.apple.com/de/album/_/528436018?i=528437710&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "hybrid-theory-12": {
+ "hybrid-theory_12": {
"spotify": "https://open.spotify.com/track/4HlMOXxwF9SYG1RoJxEjio",
"youtube": "https://www.youtube.com/watch?v=Ve1LNJEIKUE",
"youtubeMusic": "https://music.youtube.com/watch?v=Ve1LNJEIKUE",
"appleMusic": "https://geo.music.apple.com/de/album/_/590431776?i=590431790&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-1": {
+ "meteora_1": {
"spotify": "https://open.spotify.com/track/4hbpxoMCp62bd1sdy7XehS",
"youtube": "https://www.youtube.com/watch?v=U6R-twDkrcI",
"youtubeMusic": "https://music.youtube.com/watch?v=U6R-twDkrcI",
"appleMusic": "https://geo.music.apple.com/de/album/_/590423275?i=590423280&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-2": {
+ "meteora_2": {
"spotify": "https://open.spotify.com/track/6HZdbb05lEXLvcmee3ZXO2",
"youtube": "https://www.youtube.com/watch?v=oWfGOVWrueo",
"youtubeMusic": "https://music.youtube.com/watch?v=oWfGOVWrueo",
"appleMusic": "https://geo.music.apple.com/de/album/_/1668484895?i=1668485277&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-3": {
+ "meteora_3": {
"spotify": "https://open.spotify.com/track/3agtg0x11wPvLIWkYR39nZ",
"youtube": "https://www.youtube.com/watch?v=zsCD5XCu6CM",
"youtubeMusic": "https://music.youtube.com/watch?v=zsCD5XCu6CM",
"appleMusic": "https://geo.music.apple.com/de/album/_/528435845?i=528437020&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-4": {
+ "meteora_4": {
"spotify": "https://open.spotify.com/track/4zP2e2aIzOZGEFTq1MDJmm",
"youtube": "https://www.youtube.com/watch?v=NjdgcHdzvac",
"youtubeMusic": "https://music.youtube.com/watch?v=NjdgcHdzvac",
"appleMusic": "https://geo.music.apple.com/de/album/_/590423275?i=590423283&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-5": {
+ "meteora_5": {
"spotify": "https://open.spotify.com/track/3R9NKZ4jmxNjOFihSF5s7f",
"youtube": "https://www.youtube.com/watch?v=oMals9XXQY8",
"youtubeMusic": "https://music.youtube.com/watch?v=oMals9XXQY8",
"appleMusic": "https://geo.music.apple.com/de/album/_/590423275?i=590423284&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-6": {
+ "meteora_6": {
"spotify": "https://open.spotify.com/track/17bgialGAwoiGj1STY4cnR",
"youtube": "https://www.youtube.com/watch?v=U5zdmjVeQzE",
"youtubeMusic": "https://music.youtube.com/watch?v=U5zdmjVeQzE",
"appleMusic": "https://geo.music.apple.com/de/album/_/590423275?i=590423285&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-7": {
+ "meteora_7": {
"spotify": "https://open.spotify.com/track/4Yf5bqU3NK4kNOypcrLYwU",
"youtube": "https://www.youtube.com/watch?v=LYU-8IFcDPw",
"youtubeMusic": "https://music.youtube.com/watch?v=LYU-8IFcDPw",
"appleMusic": "https://geo.music.apple.com/de/album/_/528435845?i=528437024&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-8": {
+ "meteora_8": {
"spotify": "https://open.spotify.com/track/2DrMcGNKEY0FZqjMovGaCm",
"youtube": "https://www.youtube.com/watch?v=6dEAeCHQrBs",
"youtubeMusic": "https://music.youtube.com/watch?v=6dEAeCHQrBs",
"appleMusic": "https://geo.music.apple.com/de/album/_/528435845?i=528437025&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-9": {
+ "meteora_9": {
"spotify": "https://open.spotify.com/track/6n8TMVyFKoUmDc4apxceRD",
"youtube": "https://www.youtube.com/watch?v=v2H4l9RpkwM",
"youtubeMusic": "https://music.youtube.com/watch?v=v2H4l9RpkwM",
"appleMusic": "https://geo.music.apple.com/de/album/_/528435845?i=528437026&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-10": {
+ "meteora_10": {
"spotify": "https://open.spotify.com/track/60IkVf7UfQXmt5CwkpcX8a",
"youtube": "https://www.youtube.com/watch?v=YLHpvjrFpe0",
"youtubeMusic": "https://music.youtube.com/watch?v=YLHpvjrFpe0",
"appleMusic": "https://geo.music.apple.com/de/album/_/528435845?i=528437027&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-11": {
+ "meteora_11": {
"spotify": "https://open.spotify.com/track/4m1P1BSg9nLxaWbvPhNdhw",
"youtube": "https://www.youtube.com/watch?v=QJ87793QXes",
"youtubeMusic": "https://music.youtube.com/watch?v=QJ87793QXes",
"appleMusic": "https://geo.music.apple.com/de/album/_/590423275?i=590423550&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-12": {
+ "meteora_12": {
"spotify": "https://open.spotify.com/track/3sbezh9MMCQrr4KY7zw13j",
"youtube": "https://www.youtube.com/watch?v=J1KqQYsUYIk",
"youtubeMusic": "https://music.youtube.com/watch?v=J1KqQYsUYIk",
"appleMusic": "https://geo.music.apple.com/de/album/_/528435845?i=528437513&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "meteora-13": {
+ "meteora_13": {
"spotify": "https://open.spotify.com/track/2nLtzopw4rPReszdYBJU6h",
"youtube": "https://www.youtube.com/watch?v=kXYiU_JCYtU",
"youtubeMusic": "https://music.youtube.com/watch?v=kXYiU_JCYtU",
"appleMusic": "https://geo.music.apple.com/de/album/_/528435845?i=528437514&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-1": {
+ "minutes-to-midnight_1": {
"spotify": "https://open.spotify.com/track/0GkuKdv0osuL9QhfnXqVNP",
"youtube": "https://www.youtube.com/watch?v=Me7TJDHCELk",
"youtubeMusic": "https://music.youtube.com/watch?v=Me7TJDHCELk",
"appleMusic": "https://geo.music.apple.com/de/album/_/590427297?i=590427304&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-2": {
+ "minutes-to-midnight_2": {
"spotify": "https://open.spotify.com/track/1fLlRApgzxWweF1JTf8yM5",
"youtube": "https://www.youtube.com/watch?v=0xyxtzD54rM",
"youtubeMusic": "https://music.youtube.com/watch?v=0xyxtzD54rM",
"appleMusic": "https://geo.music.apple.com/de/album/_/528975362?i=528975364&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-3": {
+ "minutes-to-midnight_3": {
"spotify": "https://open.spotify.com/track/0sp00HSXkQyqTa6QqM0O8V",
"youtube": "https://www.youtube.com/watch?v=yZIummTz9mM",
"youtubeMusic": "https://music.youtube.com/watch?v=yZIummTz9mM",
"appleMusic": "https://geo.music.apple.com/de/album/_/590427297?i=590427307&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-4": {
+ "minutes-to-midnight_4": {
"spotify": "https://open.spotify.com/track/0UFDKFqW2oGspYeYqo9wjA",
"youtube": "https://www.youtube.com/watch?v=OnuuYcqhzCE",
"youtubeMusic": "https://music.youtube.com/watch?v=OnuuYcqhzCE",
"appleMusic": "https://geo.music.apple.com/de/album/_/528975362?i=528975366&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-5": {
+ "minutes-to-midnight_5": {
"spotify": "https://open.spotify.com/track/0OYcEfskah1egYHjYRvbg1",
"youtube": "https://www.youtube.com/watch?v=n1PCW0C1aiM",
"youtubeMusic": "https://music.youtube.com/watch?v=n1PCW0C1aiM",
"appleMusic": "https://geo.music.apple.com/de/album/_/528975362?i=528975367&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-6": {
+ "minutes-to-midnight_6": {
"spotify": "https://open.spotify.com/track/18lR4BzEs7e3qzc0KVkTpU",
"youtube": "https://www.youtube.com/watch?v=8sgycukafqQ",
"youtubeMusic": "https://music.youtube.com/watch?v=8sgycukafqQ",
"appleMusic": "https://geo.music.apple.com/de/album/_/258416684?i=258416690&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-7": {
+ "minutes-to-midnight_7": {
"spotify": "https://open.spotify.com/track/0m7mTaFGMiKI3rBJpYknip",
"youtube": "https://www.youtube.com/watch?v=gG4P3ayBzVY",
"youtubeMusic": "https://music.youtube.com/watch?v=gG4P3ayBzVY",
"appleMusic": "https://geo.music.apple.com/de/album/_/528975362?i=528975409&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-8": {
+ "minutes-to-midnight_8": {
"spotify": "https://open.spotify.com/track/4CWhc9FaMMfBTt4ANjfbOf",
"youtube": "https://www.youtube.com/watch?v=rW4uBvP2Dqc",
"youtubeMusic": "https://music.youtube.com/watch?v=rW4uBvP2Dqc",
"appleMusic": "https://geo.music.apple.com/de/album/_/590427297?i=590427452&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-9": {
+ "minutes-to-midnight_9": {
"spotify": "https://open.spotify.com/track/2vfshZvISOKy2Je7wQBWOV",
"youtube": "https://www.youtube.com/watch?v=KAFOpywZbMM",
"youtubeMusic": "https://music.youtube.com/watch?v=KAFOpywZbMM",
"appleMusic": "https://geo.music.apple.com/de/album/_/528975362?i=528975411&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-10": {
+ "minutes-to-midnight_10": {
"spotify": "https://open.spotify.com/track/2ysXuQd8uOfSMZcMRR5Ux4",
"youtube": "https://www.youtube.com/watch?v=YgVzhgygYfs",
"youtubeMusic": "https://music.youtube.com/watch?v=YgVzhgygYfs",
"appleMusic": "https://geo.music.apple.com/de/album/_/528975362?i=528975412&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-11": {
+ "minutes-to-midnight_11": {
"spotify": "https://open.spotify.com/track/7jeI6EdY0elPSNz80mAKS8",
"youtube": "https://www.youtube.com/watch?v=NaRBn6QIMcQ",
"youtubeMusic": "https://music.youtube.com/watch?v=NaRBn6QIMcQ",
"appleMusic": "https://geo.music.apple.com/de/album/_/590427297?i=590427477&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m"
},
- "minutes-to-midnight-12": {
+ "minutes-to-midnight_12": {
"spotify": "https://open.spotify.com/track/7jeI6EdY0elPSNz80mAKS8",
"youtube": "https://www.youtube.com/watch?v=NaRBn6QIMcQ",
"youtubeMusic": "https://music.youtube.com/watch?v=NaRBn6QIMcQ",
diff --git a/package.json b/package.json
index 401b543..351a101 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,9 @@
"fetch-links": "bun run scripts/fetch-song-links.ts"
},
"dependencies": {
+ "@fortawesome/fontawesome-svg-core": "^7.1.0",
+ "@fortawesome/free-brands-svg-icons": "^7.1.0",
+ "@fortawesome/react-fontawesome": "^3.1.0",
"@mantine/carousel": "^8.3.5",
"@mantine/core": "^8.3.5",
"@mantine/hooks": "^8.3.5",
diff --git a/scripts/fetch-song-links.ts b/scripts/fetch-song-links.ts
index 49d0544..231c393 100644
--- a/scripts/fetch-song-links.ts
+++ b/scripts/fetch-song-links.ts
@@ -102,6 +102,10 @@ export interface SongLinksData {
[songId: string]: SongLinks;
}
+export function getSongLink(songId: string): SongLinks {
+ return songLinks[songId];
+}
+
export const songLinks: SongLinksData = ${JSON.stringify(songLinks, null, 2)};
`;
diff --git a/src/Components/TrackCard.tsx b/src/Components/TrackCard.tsx
index 972f90e..29cf212 100644
--- a/src/Components/TrackCard.tsx
+++ b/src/Components/TrackCard.tsx
@@ -4,6 +4,7 @@ import { Card, Group, Text, Badge, Box } from "@mantine/core";
import { useState } from "react";
import type { AlbumTheme } from "@/lib/themes";
import type { Track } from "@/lib/ListTypes";
+import { useHash } from "@mantine/hooks";
interface TrackCardProps {
track: Track;
@@ -13,9 +14,11 @@ interface TrackCardProps {
export default function TrackCard({ track, index, theme }: TrackCardProps) {
const [isHovered, setIsHovered] = useState(false);
+ const [_hash, setHash] = useHash();
return (
setHash(`trackModal_${track.id}`)}
className="backdrop-blur-sm transition-all duration-300"
style={{
background: isHovered ? theme.card.backgroundHover : theme.card.background,
@@ -52,19 +55,6 @@ export default function TrackCard({ track, index, theme }: TrackCardProps) {
-
- {track.duration}
-
{track.studioUrl && (
)}
+
+ {track.duration}
+
diff --git a/src/Components/TrackModal.tsx b/src/Components/TrackModal.tsx
new file mode 100644
index 0000000..e5b19ce
--- /dev/null
+++ b/src/Components/TrackModal.tsx
@@ -0,0 +1,199 @@
+"use client";
+import { albums } from "@/lib/list";
+import { getSongLink } from "@/lib/songLinks";
+import { getThemeColors } from "@/lib/themes";
+import { faApple, faSpotify, faYoutube, faYoutubeSquare, IconDefinition } from "@fortawesome/free-brands-svg-icons";
+import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
+import {
+ ActionIcon,
+ Anchor,
+ Box,
+ Divider,
+ Grid,
+ GridCol,
+ Group,
+ Modal,
+ Stack,
+ Text,
+ Title,
+ Tooltip,
+} from "@mantine/core";
+import { useDisclosure, useHash } from "@mantine/hooks";
+import Link from "next/link";
+
+export default function TrackModal() {
+ const [hash, setHash] = useHash();
+ console.log("🚀 ~ TrackModal.tsx:8 ~ TrackModal ~ hash:", hash);
+ const close = () => {
+ setHash("");
+ };
+
+ const album = albums.find((album) => {
+ return album.id === hash.split("_")[1];
+ });
+ const track = album?.tracks.find((track) => {
+ return track.id === `${hash.split("_")[1]}_${hash.split("_")[2]}`;
+ });
+
+ const songLink = getSongLink(track?.id || "");
+ console.log("🚀 ~ TrackModal.tsx:25 ~ TrackModal ~ songLink:", songLink);
+
+ const theme = getThemeColors(album?.id || "");
+
+ return (
+
+
+ {track?.label}
+ Studio Version} />
+ 0 ? Object.keys(songLink).length : 4}>
+ {songLink &&
+ Object.entries(songLink).map(([key, value]) => {
+ let themeColor: {
+ color: string;
+ icon: IconDefinition;
+ tooltip: string;
+ };
+ switch (key) {
+ case "spotify":
+ themeColor = {
+ color: "#1ED760",
+ icon: faSpotify,
+ tooltip: "Spotify",
+ };
+ break;
+ case "youtube":
+ themeColor = {
+ color: "#FF0000",
+ icon: faYoutube,
+ tooltip: "YouTube",
+ };
+ break;
+ case "youtubeMusic":
+ themeColor = {
+ color: "#FF0000",
+ icon: faYoutubeSquare,
+ tooltip: "YouTube Music",
+ };
+ break;
+ case "appleMusic":
+ themeColor = {
+ color: "#FF4E6B",
+ icon: faApple,
+ tooltip: "Apple Music",
+ };
+ break;
+ default:
+ return null;
+ }
+
+ if (!themeColor) return null;
+
+ return (
+
+
+
+
+
+
+
+ );
+ })}
+
+ {Array.isArray(track?.emilyLive) && (
+ <>
+ Fan Live Versions} />
+
+ {track.emilyLive.map((live, idx) => (
+
+
+
+ By: {live.author}
+ {live.location}
+
+ {new Date(live.date).toLocaleDateString("en-US", { year: "numeric", month: "long", day: "numeric" })}
+
+
+
+
+
+
+
+ ))}
+
+ >
+ )}
+
+ {track?.lpLive && (
+ <>
+ Linkin Park Live Versions} />
+
+
+
+ {new Date(track?.lpLive.date).toLocaleDateString("en-US", {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ })}
+
+ {track?.lpLive.location}
+
+
+
+
+
+ >
+ )}
+
+
+ );
+}
diff --git a/src/app/album/[albumId]/page.tsx b/src/app/album/[albumId]/page.tsx
index 75d5b07..38dec3f 100644
--- a/src/app/album/[albumId]/page.tsx
+++ b/src/app/album/[albumId]/page.tsx
@@ -4,6 +4,7 @@ import { albums } from "../../../lib/list";
import BackButton from "../../../Components/BackButton";
import { getThemeColors } from "@/lib/themes";
import TrackCard from "@/Components/TrackCard";
+import TrackModal from "@/Components/TrackModal";
export function generateStaticParams() {
return albums.map((album) => ({
@@ -45,6 +46,7 @@ export default async function AlbumDetail({ params }: { params: Promise<{ albumI
viewTransitionName: `album-card-background-${album.id}`,
}}
>
+
{/* Back Button */}
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index fd8c2e3..50f7e2f 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -4,6 +4,10 @@ import { MantineProvider } from "@mantine/core";
import { ViewTransitions } from "next-view-transitions";
import { Nunito } from "next/font/google";
+import { config } from "@fortawesome/fontawesome-svg-core";
+import "@fortawesome/fontawesome-svg-core/styles.css";
+config.autoAddCss = false;
+
const nunito = Nunito({
subsets: ["latin"],
weight: ["200", "300", "400", "500", "600", "700", "800", "900"],
diff --git a/src/lib/ListTypes.ts b/src/lib/ListTypes.ts
index a2a8f6e..97fd3ab 100644
--- a/src/lib/ListTypes.ts
+++ b/src/lib/ListTypes.ts
@@ -3,11 +3,14 @@ export type Track = {
label: string;
duration: string;
studioUrl: string | null;
- emilyLive: null | {
- url: string;
- date: string;
- location: string;
- };
+ emilyLive:
+ | null
+ | {
+ url: string;
+ date: string;
+ location: string;
+ author: string;
+ }[];
lpLive: null | {
url: string;
date: string;
diff --git a/src/lib/list.ts b/src/lib/list.ts
index 74960e4..ec728cb 100644
--- a/src/lib/list.ts
+++ b/src/lib/list.ts
@@ -11,17 +11,34 @@ export const albums: Album[] = [
"Hybrid Theory is the debut studio album by American rock band Linkin Park, released on October 24, 2000, by Warner Bros. Records. It was recorded at The Plant Studios in Sausalito, California, and produced by Don Gilmore. The album was a commercial success, reaching number one on the Billboard 200 chart and selling over 10 million copies in the United States alone.",
tracks: [
{
- id: "hybrid-theory-1",
+ id: "hybrid-theory_1",
label: "Papercut",
duration: "03:04",
studioUrl: null,
- emilyLive: null,
- lpLive: null,
+ emilyLive: [
+ {
+ url: "https://youtu.be/miQ9Y5UW08g",
+ date: "2025-04-26",
+ location: "Austin, Texas, USA",
+ author: "Erynn Halvorson",
+ },
+ {
+ url: "https://youtu.be/miQ9Y5UW08dasdasdg",
+ date: "2025-04-26",
+ location: "Austin, Texas, USdasdsaA",
+ author: "Erynn Halvorson",
+ },
+ ],
+ lpLive: {
+ url: "https://www.youtube.com/watch?v=DOKcCl6iKaA",
+ date: "2024-09-11",
+ location: "Los Angeles, California, USA",
+ },
__SPOTIFY_URL__: "https://open.spotify.com/track/4HvcbAR8LisalXKt7cpqE1?si=a736ed41b9e84ff9",
},
{
- id: "hybrid-theory-2",
+ id: "hybrid-theory_2",
label: "One Step Closer",
duration: "02:35",
studioUrl: null,
@@ -31,7 +48,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/4bYLTrlcqctyHck3fjhMgW?si=dd2c47138fed4c4c",
},
{
- id: "hybrid-theory-3",
+ id: "hybrid-theory_3",
label: "With You",
duration: "03:23",
studioUrl: null,
@@ -41,7 +58,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/1Q9QN6dHEDeUegsySY012f?si=d4a1aca393954caa",
},
{
- id: "hybrid-theory-4",
+ id: "hybrid-theory_4",
label: "Points of Authority",
duration: "03:20",
studioUrl: null,
@@ -51,7 +68,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/214LJVTqrkUOGemWDGHJpr?si=749f11d7cd9a4f56",
},
{
- id: "hybrid-theory-5",
+ id: "hybrid-theory_5",
label: "Crawling",
duration: "03:29",
studioUrl: null,
@@ -61,7 +78,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/0X576XiCW9uEtko6f6VkcU?si=0a47dc1d660b4c71",
},
{
- id: "hybrid-theory-6",
+ id: "hybrid-theory_6",
label: "Runaway",
duration: "03:03",
studioUrl: null,
@@ -71,7 +88,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/5tkHje8FGSF258gi869GcV?si=f69a7e1ebf0f4f31",
},
{
- id: "hybrid-theory-7",
+ id: "hybrid-theory_7",
label: "By Myself",
duration: "03:09",
studioUrl: null,
@@ -81,7 +98,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/4SJoEhpI6C61wtUfxSHMGc?si=4ca78fd74ae74d6f",
},
{
- id: "hybrid-theory-8",
+ id: "hybrid-theory_8",
label: "In the End",
duration: "03:36",
studioUrl: null,
@@ -91,7 +108,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/7q115ia4fQn9zonjpexWsY?si=1e4cb0fe76244b11",
},
{
- id: "hybrid-theory-9",
+ id: "hybrid-theory_9",
label: "A Place for My Head",
duration: "03:04",
studioUrl: null,
@@ -101,7 +118,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/1B8WdDScvobpFsZLfdmIE1?si=f1b5b6fe0abb4e23",
},
{
- id: "hybrid-theory-10",
+ id: "hybrid-theory_10",
label: "Forgotten",
duration: "03:04",
studioUrl: null,
@@ -111,7 +128,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/3JAu2BH8sSI46rJGzQerb6?si=92186e546f0049b9",
},
{
- id: "hybrid-theory-11",
+ id: "hybrid-theory_11",
label: "Cure for the Itch",
duration: "02:37",
studioUrl: null,
@@ -121,7 +138,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/15voDM9pGkwEvHBUecpcmo?si=0b50fb655a2e4649",
},
{
- id: "hybrid-theory-12",
+ id: "hybrid-theory_12",
label: "Pushing Me Away",
duration: "03:11",
studioUrl: null,
@@ -142,7 +159,7 @@ export const albums: Album[] = [
"Meteora is the second studio album by American rock band Linkin Park, released on March 24, 2003, by Warner Bros. Records. It was recorded at The Plant Studios in Sausalito, California, and produced by Don Gilmore. The album was a commercial success, reaching number one on the Billboard 200 chart and selling over 10 million copies in the United States alone.",
tracks: [
{
- id: "meteora-1",
+ id: "meteora_1",
label: "Foreword",
duration: "00:13",
studioUrl: null,
@@ -152,7 +169,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/4hbpxoMCp62bd1sdy7XehS?si=0c4b2f93b36e43e7",
},
{
- id: "meteora-2",
+ id: "meteora_2",
label: "Don't Stay",
duration: "03:07",
studioUrl: null,
@@ -162,7 +179,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/6HZdbb05lEXLvcmee3ZXO2?si=b1f8362c72694a1b",
},
{
- id: "meteora-3",
+ id: "meteora_3",
label: "Somewhere I Belong",
duration: "03:33",
studioUrl: null,
@@ -172,7 +189,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/3agtg0x11wPvLIWkYR39nZ?si=e79dfe0143374cd9",
},
{
- id: "meteora-4",
+ id: "meteora_4",
label: "Lying from You",
duration: "02:55",
studioUrl: null,
@@ -182,7 +199,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/4zP2e2aIzOZGEFTq1MDJmm?si=a7951a3a01e740ac",
},
{
- id: "meteora-5",
+ id: "meteora_5",
label: "Hit the Floor",
duration: "02:44",
studioUrl: null,
@@ -192,7 +209,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/3R9NKZ4jmxNjOFihSF5s7f?si=3f07863add1e4e0f",
},
{
- id: "meteora-6",
+ id: "meteora_6",
label: "Easier to Run",
duration: "03:24",
studioUrl: null,
@@ -202,7 +219,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/17bgialGAwoiGj1STY4cnR?si=679a5b245d1d4610",
},
{
- id: "meteora-7",
+ id: "meteora_7",
label: "Faint",
duration: "02:42",
studioUrl: null,
@@ -212,7 +229,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/4Yf5bqU3NK4kNOypcrLYwU?si=cf2f7362cff04704",
},
{
- id: "meteora-8",
+ id: "meteora_8",
label: "Figure.09",
duration: "03:17",
studioUrl: null,
@@ -222,7 +239,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/2DrMcGNKEY0FZqjMovGaCm?si=583eb32931e84c48",
},
{
- id: "meteora-9",
+ id: "meteora_9",
label: "Breaking the Habit",
duration: "03:16",
studioUrl: null,
@@ -232,7 +249,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/6n8TMVyFKoUmDc4apxceRD?si=2b17f6b1906f46ec",
},
{
- id: "meteora-10",
+ id: "meteora_10",
label: "From the Inside",
duration: "02:55",
studioUrl: null,
@@ -242,7 +259,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/60IkVf7UfQXmt5CwkpcX8a?si=56ad75e64c174188",
},
{
- id: "meteora-11",
+ id: "meteora_11",
label: "Nobody's Listening",
duration: "02:58",
studioUrl: null,
@@ -252,7 +269,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/4m1P1BSg9nLxaWbvPhNdhw?si=9671f8d0299f429f",
},
{
- id: "meteora-12",
+ id: "meteora_12",
label: "Session",
duration: "02:24",
studioUrl: null,
@@ -262,7 +279,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/3sbezh9MMCQrr4KY7zw13j?si=62626db46f734d63",
},
{
- id: "meteora-13",
+ id: "meteora_13",
label: "Numb",
duration: "03:05",
studioUrl: null,
@@ -283,7 +300,7 @@ export const albums: Album[] = [
"Minutes to Midnight is the third studio album by American rock band Linkin Park, released on May 14, 2007, by Warner Bros. Records. The album marked a departure from the band's previous nu-metal sound, incorporating more alternative rock and experimental elements.",
tracks: [
{
- id: "minutes-to-midnight-1",
+ id: "minutes-to-midnight_1",
label: "Wake",
duration: "01:40",
studioUrl: null,
@@ -293,7 +310,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/0GkuKdv0osuL9QhfnXqVNP?si=0491e2d35b0a4e12",
},
{
- id: "minutes-to-midnight-2",
+ id: "minutes-to-midnight_2",
label: "Given Up",
duration: "03:09",
studioUrl: null,
@@ -303,7 +320,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/1fLlRApgzxWweF1JTf8yM5?si=9b22e697bdd640e8",
},
{
- id: "minutes-to-midnight-3",
+ id: "minutes-to-midnight_3",
label: "Leave Out All the Rest",
duration: "03:29",
studioUrl: null,
@@ -313,7 +330,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/0sp00HSXkQyqTa6QqM0O8V?si=c9ad349e7f164919",
},
{
- id: "minutes-to-midnight-4",
+ id: "minutes-to-midnight_4",
label: "Bleed It Out",
duration: "02:44",
studioUrl: null,
@@ -323,7 +340,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/0UFDKFqW2oGspYeYqo9wjA?si=2f4e310a85674523",
},
{
- id: "minutes-to-midnight-5",
+ id: "minutes-to-midnight_5",
label: "Shadow of the Day",
duration: "04:49",
studioUrl: null,
@@ -333,7 +350,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/0OYcEfskah1egYHjYRvbg1?si=e7fe66722b7544d9",
},
{
- id: "minutes-to-midnight-6",
+ id: "minutes-to-midnight_6",
label: "What I've Done",
duration: "03:25",
studioUrl: null,
@@ -343,7 +360,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/18lR4BzEs7e3qzc0KVkTpU?si=f04a6e933aab4ba0",
},
{
- id: "minutes-to-midnight-7",
+ id: "minutes-to-midnight_7",
label: "Hands Held High",
duration: "03:53",
studioUrl: null,
@@ -353,7 +370,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/0m7mTaFGMiKI3rBJpYknip?si=e382b6252c7c427a",
},
{
- id: "minutes-to-midnight-8",
+ id: "minutes-to-midnight_8",
label: "No More Sorrow",
duration: "03:41",
studioUrl: null,
@@ -363,7 +380,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/4CWhc9FaMMfBTt4ANjfbOf?si=dd3a00c6453c4737",
},
{
- id: "minutes-to-midnight-9",
+ id: "minutes-to-midnight_9",
label: "Valentine's Day",
duration: "03:16",
studioUrl: null,
@@ -373,7 +390,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/2vfshZvISOKy2Je7wQBWOV?si=51d75042da314fa4",
},
{
- id: "minutes-to-midnight-10",
+ id: "minutes-to-midnight_10",
label: "In Between",
duration: "03:16",
studioUrl: null,
@@ -383,7 +400,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/2ysXuQd8uOfSMZcMRR5Ux4?si=3ae5e92155874795",
},
{
- id: "minutes-to-midnight-11",
+ id: "minutes-to-midnight_11",
label: "In Pieces",
duration: "03:38",
studioUrl: null,
@@ -393,7 +410,7 @@ export const albums: Album[] = [
__SPOTIFY_URL__: "https://open.spotify.com/track/7jeI6EdY0elPSNz80mAKS8?si=983410366a774f68",
},
{
- id: "minutes-to-midnight-12",
+ id: "minutes-to-midnight_12",
label: "The Little Things Give You Away",
duration: "06:23",
studioUrl: null,
diff --git a/src/lib/songLinks.ts b/src/lib/songLinks.ts
index 210c2f5..95c25d2 100644
--- a/src/lib/songLinks.ts
+++ b/src/lib/songLinks.ts
@@ -1,6 +1,6 @@
// This file is auto-generated by scripts/fetch-song-links.ts
// Do not edit manually
-// Last updated: 2025-10-24T23:43:29.142Z
+// Last updated: 2025-10-25T00:32:44.823Z
// Run: bun run fetch-links
export interface SongLinks {
@@ -14,260 +14,264 @@ export interface SongLinksData {
[songId: string]: SongLinks;
}
+export function getSongLink(songId: string): SongLinks {
+ return songLinks[songId];
+}
+
export const songLinks: SongLinksData = {
- "hybrid-theory-1": {
+ "hybrid-theory_1": {
spotify: "https://open.spotify.com/track/4HvcbAR8LisalXKt7cpqE1",
youtube: "https://www.youtube.com/watch?v=vjVkXlxsO8Q",
youtubeMusic: "https://music.youtube.com/watch?v=vjVkXlxsO8Q",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528436568&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-2": {
+ "hybrid-theory_2": {
spotify: "https://open.spotify.com/track/4bYLTrlcqctyHck3fjhMgW",
youtube: "https://www.youtube.com/watch?v=4qlCC1GOwFw",
youtubeMusic: "https://music.youtube.com/watch?v=4qlCC1GOwFw",
appleMusic:
"https://geo.music.apple.com/de/album/_/590431776?i=590431778&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-3": {
+ "hybrid-theory_3": {
spotify: "https://open.spotify.com/track/1Q9QN6dHEDeUegsySY012f",
youtube: "https://www.youtube.com/watch?v=M8UTS2iFXOo",
youtubeMusic: "https://music.youtube.com/watch?v=M8UTS2iFXOo",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528437421&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-4": {
+ "hybrid-theory_4": {
spotify: "https://open.spotify.com/track/214LJVTqrkUOGemWDGHJpr",
youtube: "https://www.youtube.com/watch?v=jZSPAp8kCl4",
youtubeMusic: "https://music.youtube.com/watch?v=jZSPAp8kCl4",
appleMusic:
"https://geo.music.apple.com/de/album/_/590431776?i=590431781&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-5": {
+ "hybrid-theory_5": {
spotify: "https://open.spotify.com/track/0X576XiCW9uEtko6f6VkcU",
youtube: "https://www.youtube.com/watch?v=Gd9OhYroLN0",
youtubeMusic: "https://music.youtube.com/watch?v=Gd9OhYroLN0",
appleMusic:
"https://geo.music.apple.com/de/album/_/591534774?i=591534780&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-6": {
+ "hybrid-theory_6": {
spotify: "https://open.spotify.com/track/5tkHje8FGSF258gi869GcV",
youtube: "https://www.youtube.com/watch?v=ig-fyQqf510",
youtubeMusic: "https://music.youtube.com/watch?v=ig-fyQqf510",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528437609&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-7": {
+ "hybrid-theory_7": {
spotify: "https://open.spotify.com/track/4SJoEhpI6C61wtUfxSHMGc",
youtube: "https://www.youtube.com/watch?v=wWBp-nlGX1o",
youtubeMusic: "https://music.youtube.com/watch?v=wWBp-nlGX1o",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528437611&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-8": {
+ "hybrid-theory_8": {
spotify: "https://open.spotify.com/track/7q115ia4fQn9zonjpexWsY",
youtube: "https://www.youtube.com/watch?v=eVTXPUF4Oz4",
youtubeMusic: "https://music.youtube.com/watch?v=eVTXPUF4Oz4",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528437613&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-9": {
+ "hybrid-theory_9": {
spotify: "https://open.spotify.com/track/1B8WdDScvobpFsZLfdmIE1",
youtube: "https://www.youtube.com/watch?v=3t2WkCudwfY",
youtubeMusic: "https://music.youtube.com/watch?v=3t2WkCudwfY",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528437708&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-10": {
+ "hybrid-theory_10": {
spotify: "https://open.spotify.com/track/3JAu2BH8sSI46rJGzQerb6",
youtube: "https://www.youtube.com/watch?v=HNCgBuI2eJc",
youtubeMusic: "https://music.youtube.com/watch?v=HNCgBuI2eJc",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528437709&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-11": {
+ "hybrid-theory_11": {
spotify: "https://open.spotify.com/track/15voDM9pGkwEvHBUecpcmo",
youtube: "https://www.youtube.com/watch?v=qqC5sdsHLq8",
youtubeMusic: "https://music.youtube.com/watch?v=qqC5sdsHLq8",
appleMusic:
"https://geo.music.apple.com/de/album/_/528436018?i=528437710&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "hybrid-theory-12": {
+ "hybrid-theory_12": {
spotify: "https://open.spotify.com/track/4HlMOXxwF9SYG1RoJxEjio",
youtube: "https://www.youtube.com/watch?v=Ve1LNJEIKUE",
youtubeMusic: "https://music.youtube.com/watch?v=Ve1LNJEIKUE",
appleMusic:
"https://geo.music.apple.com/de/album/_/590431776?i=590431790&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-1": {
+ meteora_1: {
spotify: "https://open.spotify.com/track/4hbpxoMCp62bd1sdy7XehS",
youtube: "https://www.youtube.com/watch?v=U6R-twDkrcI",
youtubeMusic: "https://music.youtube.com/watch?v=U6R-twDkrcI",
appleMusic:
"https://geo.music.apple.com/de/album/_/590423275?i=590423280&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-2": {
+ meteora_2: {
spotify: "https://open.spotify.com/track/6HZdbb05lEXLvcmee3ZXO2",
youtube: "https://www.youtube.com/watch?v=oWfGOVWrueo",
youtubeMusic: "https://music.youtube.com/watch?v=oWfGOVWrueo",
appleMusic:
"https://geo.music.apple.com/de/album/_/1668484895?i=1668485277&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-3": {
+ meteora_3: {
spotify: "https://open.spotify.com/track/3agtg0x11wPvLIWkYR39nZ",
youtube: "https://www.youtube.com/watch?v=zsCD5XCu6CM",
youtubeMusic: "https://music.youtube.com/watch?v=zsCD5XCu6CM",
appleMusic:
"https://geo.music.apple.com/de/album/_/528435845?i=528437020&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-4": {
+ meteora_4: {
spotify: "https://open.spotify.com/track/4zP2e2aIzOZGEFTq1MDJmm",
youtube: "https://www.youtube.com/watch?v=NjdgcHdzvac",
youtubeMusic: "https://music.youtube.com/watch?v=NjdgcHdzvac",
appleMusic:
"https://geo.music.apple.com/de/album/_/590423275?i=590423283&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-5": {
+ meteora_5: {
spotify: "https://open.spotify.com/track/3R9NKZ4jmxNjOFihSF5s7f",
youtube: "https://www.youtube.com/watch?v=oMals9XXQY8",
youtubeMusic: "https://music.youtube.com/watch?v=oMals9XXQY8",
appleMusic:
"https://geo.music.apple.com/de/album/_/590423275?i=590423284&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-6": {
+ meteora_6: {
spotify: "https://open.spotify.com/track/17bgialGAwoiGj1STY4cnR",
youtube: "https://www.youtube.com/watch?v=U5zdmjVeQzE",
youtubeMusic: "https://music.youtube.com/watch?v=U5zdmjVeQzE",
appleMusic:
"https://geo.music.apple.com/de/album/_/590423275?i=590423285&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-7": {
+ meteora_7: {
spotify: "https://open.spotify.com/track/4Yf5bqU3NK4kNOypcrLYwU",
youtube: "https://www.youtube.com/watch?v=LYU-8IFcDPw",
youtubeMusic: "https://music.youtube.com/watch?v=LYU-8IFcDPw",
appleMusic:
"https://geo.music.apple.com/de/album/_/528435845?i=528437024&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-8": {
+ meteora_8: {
spotify: "https://open.spotify.com/track/2DrMcGNKEY0FZqjMovGaCm",
youtube: "https://www.youtube.com/watch?v=6dEAeCHQrBs",
youtubeMusic: "https://music.youtube.com/watch?v=6dEAeCHQrBs",
appleMusic:
"https://geo.music.apple.com/de/album/_/528435845?i=528437025&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-9": {
+ meteora_9: {
spotify: "https://open.spotify.com/track/6n8TMVyFKoUmDc4apxceRD",
youtube: "https://www.youtube.com/watch?v=v2H4l9RpkwM",
youtubeMusic: "https://music.youtube.com/watch?v=v2H4l9RpkwM",
appleMusic:
"https://geo.music.apple.com/de/album/_/528435845?i=528437026&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-10": {
+ meteora_10: {
spotify: "https://open.spotify.com/track/60IkVf7UfQXmt5CwkpcX8a",
youtube: "https://www.youtube.com/watch?v=YLHpvjrFpe0",
youtubeMusic: "https://music.youtube.com/watch?v=YLHpvjrFpe0",
appleMusic:
"https://geo.music.apple.com/de/album/_/528435845?i=528437027&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-11": {
+ meteora_11: {
spotify: "https://open.spotify.com/track/4m1P1BSg9nLxaWbvPhNdhw",
youtube: "https://www.youtube.com/watch?v=QJ87793QXes",
youtubeMusic: "https://music.youtube.com/watch?v=QJ87793QXes",
appleMusic:
"https://geo.music.apple.com/de/album/_/590423275?i=590423550&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-12": {
+ meteora_12: {
spotify: "https://open.spotify.com/track/3sbezh9MMCQrr4KY7zw13j",
youtube: "https://www.youtube.com/watch?v=J1KqQYsUYIk",
youtubeMusic: "https://music.youtube.com/watch?v=J1KqQYsUYIk",
appleMusic:
"https://geo.music.apple.com/de/album/_/528435845?i=528437513&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "meteora-13": {
+ meteora_13: {
spotify: "https://open.spotify.com/track/2nLtzopw4rPReszdYBJU6h",
youtube: "https://www.youtube.com/watch?v=kXYiU_JCYtU",
youtubeMusic: "https://music.youtube.com/watch?v=kXYiU_JCYtU",
appleMusic:
"https://geo.music.apple.com/de/album/_/528435845?i=528437514&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-1": {
+ "minutes-to-midnight_1": {
spotify: "https://open.spotify.com/track/0GkuKdv0osuL9QhfnXqVNP",
youtube: "https://www.youtube.com/watch?v=Me7TJDHCELk",
youtubeMusic: "https://music.youtube.com/watch?v=Me7TJDHCELk",
appleMusic:
"https://geo.music.apple.com/de/album/_/590427297?i=590427304&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-2": {
+ "minutes-to-midnight_2": {
spotify: "https://open.spotify.com/track/1fLlRApgzxWweF1JTf8yM5",
youtube: "https://www.youtube.com/watch?v=0xyxtzD54rM",
youtubeMusic: "https://music.youtube.com/watch?v=0xyxtzD54rM",
appleMusic:
"https://geo.music.apple.com/de/album/_/528975362?i=528975364&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-3": {
+ "minutes-to-midnight_3": {
spotify: "https://open.spotify.com/track/0sp00HSXkQyqTa6QqM0O8V",
youtube: "https://www.youtube.com/watch?v=yZIummTz9mM",
youtubeMusic: "https://music.youtube.com/watch?v=yZIummTz9mM",
appleMusic:
"https://geo.music.apple.com/de/album/_/590427297?i=590427307&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-4": {
+ "minutes-to-midnight_4": {
spotify: "https://open.spotify.com/track/0UFDKFqW2oGspYeYqo9wjA",
youtube: "https://www.youtube.com/watch?v=OnuuYcqhzCE",
youtubeMusic: "https://music.youtube.com/watch?v=OnuuYcqhzCE",
appleMusic:
"https://geo.music.apple.com/de/album/_/528975362?i=528975366&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-5": {
+ "minutes-to-midnight_5": {
spotify: "https://open.spotify.com/track/0OYcEfskah1egYHjYRvbg1",
youtube: "https://www.youtube.com/watch?v=n1PCW0C1aiM",
youtubeMusic: "https://music.youtube.com/watch?v=n1PCW0C1aiM",
appleMusic:
"https://geo.music.apple.com/de/album/_/528975362?i=528975367&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-6": {
+ "minutes-to-midnight_6": {
spotify: "https://open.spotify.com/track/18lR4BzEs7e3qzc0KVkTpU",
youtube: "https://www.youtube.com/watch?v=8sgycukafqQ",
youtubeMusic: "https://music.youtube.com/watch?v=8sgycukafqQ",
appleMusic:
"https://geo.music.apple.com/de/album/_/258416684?i=258416690&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-7": {
+ "minutes-to-midnight_7": {
spotify: "https://open.spotify.com/track/0m7mTaFGMiKI3rBJpYknip",
youtube: "https://www.youtube.com/watch?v=gG4P3ayBzVY",
youtubeMusic: "https://music.youtube.com/watch?v=gG4P3ayBzVY",
appleMusic:
"https://geo.music.apple.com/de/album/_/528975362?i=528975409&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-8": {
+ "minutes-to-midnight_8": {
spotify: "https://open.spotify.com/track/4CWhc9FaMMfBTt4ANjfbOf",
youtube: "https://www.youtube.com/watch?v=rW4uBvP2Dqc",
youtubeMusic: "https://music.youtube.com/watch?v=rW4uBvP2Dqc",
appleMusic:
"https://geo.music.apple.com/de/album/_/590427297?i=590427452&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-9": {
+ "minutes-to-midnight_9": {
spotify: "https://open.spotify.com/track/2vfshZvISOKy2Je7wQBWOV",
youtube: "https://www.youtube.com/watch?v=KAFOpywZbMM",
youtubeMusic: "https://music.youtube.com/watch?v=KAFOpywZbMM",
appleMusic:
"https://geo.music.apple.com/de/album/_/528975362?i=528975411&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-10": {
+ "minutes-to-midnight_10": {
spotify: "https://open.spotify.com/track/2ysXuQd8uOfSMZcMRR5Ux4",
youtube: "https://www.youtube.com/watch?v=YgVzhgygYfs",
youtubeMusic: "https://music.youtube.com/watch?v=YgVzhgygYfs",
appleMusic:
"https://geo.music.apple.com/de/album/_/528975362?i=528975412&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-11": {
+ "minutes-to-midnight_11": {
spotify: "https://open.spotify.com/track/7jeI6EdY0elPSNz80mAKS8",
youtube: "https://www.youtube.com/watch?v=NaRBn6QIMcQ",
youtubeMusic: "https://music.youtube.com/watch?v=NaRBn6QIMcQ",
appleMusic:
"https://geo.music.apple.com/de/album/_/590427297?i=590427477&mt=1&app=music&ls=1&at=1000lHKX&ct=api_http&itscg=30200&itsct=odsl_m",
},
- "minutes-to-midnight-12": {
+ "minutes-to-midnight_12": {
spotify: "https://open.spotify.com/track/7jeI6EdY0elPSNz80mAKS8",
youtube: "https://www.youtube.com/watch?v=NaRBn6QIMcQ",
youtubeMusic: "https://music.youtube.com/watch?v=NaRBn6QIMcQ",