offset dynamisch gestalten

pull/46/head
eric 2025-08-12 01:19:55 +02:00
parent 04f374cfff
commit 5f176bab0f
1 changed files with 25 additions and 23 deletions

View File

@ -81,51 +81,51 @@ public class SpotifyAuthService {
public List<String> getRecentTracks(String user) { public List<String> getRecentTracks(String user) {
System.out.println("Hole kürzlich gespielte Tracks für Benutzer: " + user); System.out.println("Hole kürzlich gespielte Tracks für Benutzer: " + user);
int limit = 5; int limit = 50;
SpotifyApi userApi = userApis.get(user); SpotifyApi userApi = userApis.get(user);
if (userApi == null) { if (userApi == null) {
System.out.println("Kein SpotifyApi-Client für Benutzer gefunden: " + user); System.err.println("Kein SpotifyApi-Client für Benutzer gefunden: " + user);
return Collections.emptyList(); return Collections.emptyList();
} }
System.out.println("SpotifyApi-Client für Benutzer gefunden: " + user); // System.out.println("SpotifyApi-Client für Benutzer gefunden: " + user);
System.out.println("AccessToken: " + userApi.getAccessToken()); // System.out.println("AccessToken: " + userApi.getAccessToken());
System.out.println("RefreshToken: " + userApi.getRefreshToken()); // System.out.println("RefreshToken: " + userApi.getRefreshToken());
try { try {
System.out.println("Hole Profil für Benutzer: " + user); //System.out.println("Hole Profil für Benutzer: " + user);
// Hole das Profil des Benutzers, um den Account-Typ zu überprüfen // Hole das Profil des Benutzers, um den Account-Typ zu überprüfen
var profile = userApi.getCurrentUsersProfile().build().execute(); //var profile = userApi.getCurrentUsersProfile().build().execute();
System.out.println("Account-Typ: " + profile.getProduct()); //System.out.println("Account-Typ: " + profile.getProduct());
System.out.println("Erstelle Anfrage für kürzlich gespielte Tracks..."); //System.out.println("Erstelle Anfrage für kürzlich gespielte Tracks...");
if (userApi.getRefreshToken() == null) { // if (userApi.getRefreshToken() == null) {
System.out.println("Refresh Token für Benutzer " + user + " ist nicht gesetzt."); // System.err.println("Refresh Token für Benutzer " + user + " ist nicht gesetzt.");
} // }
System.out.println("Refresh Token für Benutzer " + user + " ist gesetzt."); // System.out.println("Refresh Token für Benutzer " + user + " ist gesetzt.");
if( userApi.getAccessToken() == null) { // if( userApi.getAccessToken() == null) {
System.out.println("Access Token für Benutzer " + user + " ist nicht gesetzt."); // System.out.println("Access Token für Benutzer " + user + " ist nicht gesetzt.");
return Collections.emptyList(); // return Collections.emptyList();
} // }
System.out.println("Access Token für Benutzer " + user + " ist gesetzt."); // System.out.println("Access Token für Benutzer " + user + " ist gesetzt.");
GetCurrentUsersRecentlyPlayedTracksRequest request = userApi.getCurrentUsersRecentlyPlayedTracks() GetCurrentUsersRecentlyPlayedTracksRequest request = userApi.getCurrentUsersRecentlyPlayedTracks()
.limit(limit) .limit(limit)
.build(); .build();
// Führe die Anfrage aus und erhalte die Ergebnisse // Führe die Anfrage aus und erhalte die Ergebnisse
System.out.println("Führe paging Anfrage aus..."); // System.out.println("Führe paging Anfrage aus...");
PagingCursorbased<PlayHistory> history = request.execute(); PagingCursorbased<PlayHistory> history = request.execute();
System.out.println("Paging Anfrage erfolgreich ausgeführt."); // System.out.println("Paging Anfrage erfolgreich ausgeführt.");
// Überprüfe, ob die Ergebnisse leer sind // Überprüfe, ob die Ergebnisse leer sind
System.out.println("Überprüfe, ob Ergebnisse vorhanden sind..."); // System.out.println("Überprüfe, ob Ergebnisse vorhanden sind...");
if (history == null || history.getItems() == null) { if (history == null || history.getItems() == null) {
return Collections.emptyList(); return Collections.emptyList();
} }
System.out.println("Verarbeite kürzlich gespielte Tracks..."); // System.out.println("Verarbeite kürzlich gespielte Tracks...");
// Extrahiere die URIs der kürzlich gespielten Tracks // Extrahiere die URIs der kürzlich gespielten Tracks
List<String> recentTracks = Arrays.stream(history.getItems()) List<String> recentTracks = Arrays.stream(history.getItems())
.map(item -> item.getTrack().getUri()) .map(item -> item.getTrack().getUri())
@ -134,6 +134,7 @@ public class SpotifyAuthService {
System.out.println("Gefundene kürzlich gespielte Tracks: " + recentTracks.size()); System.out.println("Gefundene kürzlich gespielte Tracks: " + recentTracks.size());
if (recentTracks.size() < limit) { if (recentTracks.size() < limit) {
int oldLimit = limit;
int newLimit = limit - recentTracks.size(); int newLimit = limit - recentTracks.size();
// restliche songs mit kürzlich gespeicherten Tracks auffüllen // restliche songs mit kürzlich gespeicherten Tracks auffüllen
List<String> savedTracks = getSavedTracks(user, newLimit, 0); List<String> savedTracks = getSavedTracks(user, newLimit, 0);
@ -142,8 +143,9 @@ public class SpotifyAuthService {
recentTracks = new java.util.ArrayList<>(recentTracks); recentTracks = new java.util.ArrayList<>(recentTracks);
recentTracks.addAll(savedTracks.subList(0, Math.min(newLimit, savedTracks.size()))); recentTracks.addAll(savedTracks.subList(0, Math.min(newLimit, savedTracks.size())));
if(recentTracks.size() < limit){ if(recentTracks.size() < limit){
oldLimit = newLimit;
newLimit = limit - recentTracks.size(); newLimit = limit - recentTracks.size();
List<String> savedTracks2 = getSavedTracks(user, newLimit, 50); List<String> savedTracks2 = getSavedTracks(user, newLimit, oldLimit);
savedTracks2.removeAll(recentTracks); savedTracks2.removeAll(recentTracks);
recentTracks.addAll(savedTracks2.subList(0, Math.min(newLimit, savedTracks2.size()))); recentTracks.addAll(savedTracks2.subList(0, Math.min(newLimit, savedTracks2.size())));
} }