Here is my code to load youtube playlistitem. It’s working and I can get the result.
private static final int MAX_RESULTS_PER_PAGE = 50;
public static List<PlaylistItemSnippet> loadPlaylistItems(String playlistId) throws IOException {
List<PlaylistItemSnippet> allItems = new ArrayList<>();
YouTube youtube = YouTubeSingleton.getYouTube();
long startTime = System.currentTimeMillis(); // Start time for logging
String nextPageToken = null;
do {
// Batch request for playlist items and status
YouTube.PlaylistItems.List playlistItemsListRequest = youtube.playlistItems().list("snippet,status");
playlistItemsListRequest.setPlaylistId(playlistId);
playlistItemsListRequest.setMaxResults((long) MAX_RESULTS_PER_PAGE);
playlistItemsListRequest.setPageToken(nextPageToken);
playlistItemsListRequest.setKey(DeveloperKey.getDeveloperKey());
// Execute the batched request
PlaylistItemListResponse playlistItemListResponse = playlistItemsListRequest.execute();
long apiCallDuration = System.currentTimeMillis() - startTime; // Duration of API call
Log.d("text", "API_call_duration_for_token " + ": " + apiCallDuration + " ms");
List<PlaylistItemSnippet> snippets = new ArrayList<>();
for (PlaylistItem item : playlistItemListResponse.getItems()) {
// Get the snippet object from the PlaylistItem
PlaylistItemSnippet snippet = item.getSnippet();
snippets.add(snippet);
PlaylistItemStatus status = item.getStatus();
if (status != null && status.getPrivacyStatus().equals("public")) { // Check privacy status
allItems.add(snippet);
if (allItems.size() >= MAX_RESULTS_PER_PAGE) {
break;
}
}
}
nextPageToken = playlistItemListResponse.getNextPageToken();
} while (nextPageToken != null);
return allItems;
}
I’ve also used direct http request with okhttp client.
But the trouble is here the time request response is very slow now. It’s more than 80s. I don’t know why ?
How to improve it ? User can’t wait too long to get the result