|
1 | 1 | package de.presti.ree6.module.game.impl.musicquiz.util;
|
2 | 2 |
|
| 3 | +import de.presti.ree6.main.Main; |
3 | 4 | import de.presti.ree6.module.game.impl.musicquiz.entities.MusicQuizEntry;
|
4 | 5 | import de.presti.ree6.utils.apis.SpotifyAPIHandler;
|
5 | 6 | import de.presti.ree6.utils.apis.YouTubeAPIHandler;
|
|
12 | 13 | import java.util.ArrayList;
|
13 | 14 | import java.util.Arrays;
|
14 | 15 | import java.util.List;
|
| 16 | +import java.util.concurrent.atomic.AtomicInteger; |
15 | 17 |
|
16 | 18 | /**
|
17 | 19 | * Class used to handle MusicQuiz related Utilities.
|
@@ -40,68 +42,45 @@ public class MusicQuizUtil {
|
40 | 42 | public MusicQuizUtil() {
|
41 | 43 | instance = this;
|
42 | 44 |
|
| 45 | + |
43 | 46 | ThreadUtil.createThread(x -> {
|
44 | 47 | if (!SpotifyAPIHandler.getInstance().isSpotifyConnected()) return;
|
45 | 48 |
|
46 |
| - // Spotify "just hits" Playlist. |
47 |
| - SpotifyAPIHandler.getInstance().getTracks("37i9dQZF1DXcRXFNfZr7Tp").forEach(track -> { |
48 |
| - ArtistSimplified[] artistSimplified = track.getArtists(); |
49 |
| - |
50 |
| - String url = null; |
51 |
| - |
52 |
| - try { |
53 |
| - url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName()); |
54 |
| - } catch (Exception e) { |
55 |
| - log.error("Couldn't get Track from ID", e); |
56 |
| - } |
57 |
| - |
58 |
| - if (url == null) return; |
59 |
| - |
60 |
| - MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(), |
61 |
| - Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url); |
62 |
| - |
63 |
| - entries.add(musicQuizEntry); |
64 |
| - }); |
65 |
| - |
66 |
| - // Spotify "Today's Top Hits" Playlist. |
67 |
| - SpotifyAPIHandler.getInstance().getTracks("37i9dQZF1DXcBWIGoYBM5M").forEach(track -> { |
68 |
| - ArtistSimplified[] artistSimplified = track.getArtists(); |
69 |
| - |
70 |
| - String url = null; |
| 49 | + var playListIds = Main.getInstance().getConfig().getConfiguration().getStringList("bot.misc.game.musicQuiz.playlistIds"); |
71 | 50 |
|
72 |
| - try { |
73 |
| - url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName()); |
74 |
| - } catch (Exception e) { |
75 |
| - log.error("Couldn't get Track from ID", e); |
76 |
| - } |
77 |
| - |
78 |
| - if (url == null) return; |
79 |
| - |
80 |
| - MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(), |
81 |
| - Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url); |
82 |
| - |
83 |
| - entries.add(musicQuizEntry); |
84 |
| - }); |
85 |
| - |
86 |
| - // Spotify "Rap Caviar" Playlist. |
87 |
| - SpotifyAPIHandler.getInstance().getTracks("37i9dQZF1DX0XUsuxWHRQd").forEach(track -> { |
88 |
| - ArtistSimplified[] artistSimplified = track.getArtists(); |
89 |
| - |
90 |
| - String url = null; |
| 51 | + log.info("Loading {} Spotify Playlists.", playListIds.size()); |
91 | 52 |
|
| 53 | + for (String playlistId : playListIds) { |
92 | 54 | try {
|
93 |
| - url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName()); |
| 55 | + var tracks = SpotifyAPIHandler.getInstance().getTracks(playlistId); |
| 56 | + if (tracks == null || tracks.isEmpty()) { |
| 57 | + log.warn("No tracks found in Spotify Playlist: {}", playlistId); |
| 58 | + continue; |
| 59 | + } else { |
| 60 | + log.info("Loading {} entries from Spotify Playlist: {}", tracks.size(), playlistId); |
| 61 | + } |
| 62 | + tracks.forEach(track -> { |
| 63 | + ArtistSimplified[] artistSimplified = track.getArtists(); |
| 64 | + |
| 65 | + String url = null; |
| 66 | + |
| 67 | + try { |
| 68 | + url = YouTubeAPIHandler.getInstance().searchYoutube(track.getName() + " - " + artistSimplified[0].getName()); |
| 69 | + } catch (Exception e) { |
| 70 | + log.error("Couldn't get Track from ID", e); |
| 71 | + } |
| 72 | + |
| 73 | + if (url == null) return; |
| 74 | + |
| 75 | + MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(), |
| 76 | + Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url); |
| 77 | + |
| 78 | + entries.add(musicQuizEntry); |
| 79 | + }); |
94 | 80 | } catch (Exception e) {
|
95 |
| - log.error("Couldn't get Track from ID", e); |
| 81 | + log.error("Couldn't get tracks from Spotify Playlist: {}", playlistId, e); |
96 | 82 | }
|
97 |
| - |
98 |
| - if (url == null) return; |
99 |
| - |
100 |
| - MusicQuizEntry musicQuizEntry = new MusicQuizEntry(artistSimplified[0].getName(), track.getName(), |
101 |
| - Arrays.stream(artistSimplified).skip(1).map(ArtistSimplified::getName).toArray(String[]::new), url); |
102 |
| - |
103 |
| - entries.add(musicQuizEntry); |
104 |
| - }); |
| 83 | + } |
105 | 84 |
|
106 | 85 | log.info("Loaded {} entries from Spotify.", entries.size());
|
107 | 86 | }, Sentry::captureException);
|
|
0 commit comments