private AudioItem extractSearchResults(Document document, String query) { List<AudioTrack> tracks = new ArrayList<>(); for (Element results : document.select("#page > #content #results")) { for (Element result : results.select(".yt-lockup-video")) { if (!result.hasAttr("data-ad-impressions") && result.select(".standalone-ypc-badge-renderer-label").isEmpty()) { extractTrackFromResultEntry(tracks, result); } } } if (tracks.isEmpty()) { return AudioReference.NO_TRACK; } else { return new BasicAudioPlaylist("Search results for: " + query, tracks, null, true); } }
private AudioItem extractTracksFromSearchResults(String query, JsonBrowser searchResults) { List<AudioTrack> tracks = new ArrayList<>(); for (JsonBrowser item : searchResults.get("collection").values()) { if (!item.isNull()) { tracks.add(buildAudioTrack(item, null)); } } return new BasicAudioPlaylist("Search results for: " + query, tracks, null, true); }
private AudioPlaylist loadTracksAsynchronously(List<String> videoIds, String selectedVideoId) { ExecutorCompletionService<AudioItem> completion = new ExecutorCompletionService<>(mixLoadingExecutor); List<AudioTrack> tracks = new ArrayList<>(); for (final String videoId : videoIds) { completion.submit(() -> sourceManager.loadTrackWithVideoId(videoId, true)); } try { fetchTrackResultsFromExecutor(completion, tracks, videoIds.size()); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } AudioTrack selectedTrack = sourceManager.findSelectedTrack(tracks, selectedVideoId); if (tracks.isEmpty()) { throw new FriendlyException("No tracks from the mix loaded succesfully.", SUSPICIOUS, null); } else if (selectedTrack == null) { throw new FriendlyException("The selected track of the mix failed to load.", SUSPICIOUS, null); } return new BasicAudioPlaylist("YouTube mix", tracks, selectedTrack, false); }
private AudioItem extractTracksFromLikedList(JsonBrowser likedTracks, UserInfo userInfo) { List<AudioTrack> tracks = new ArrayList<>(); for (JsonBrowser item : likedTracks.get("collection").values()) { JsonBrowser trackItem = item.get("track"); if (!trackItem.isNull()) { tracks.add(buildAudioTrack(trackItem, null)); } } return new BasicAudioPlaylist("Liked by " + userInfo.name, tracks, null, false); }
return new BasicAudioPlaylist(playlistName, tracks, findSelectedTrack(tracks, selectedVideoId), false);
@Override public AudioItem loadItem(DefaultAudioPlayerManager manager, AudioReference ar) { String[] parsed = parse(ar.identifier); if (parsed == null) return null; String serviceName = parsed[0]; String pasteId = parsed[1]; if (pasteId == null || "".equals(pasteId) || !PasteServiceConstants.pasteServiceUrl.containsKey(serviceName)) { return null; } List<String> trackIds = loadAndParseTrackIds(serviceName, pasteId); PasteServiceAudioResultHandler handler = new PasteServiceAudioResultHandler(); Future<Void> lastFuture = null; for (String id : trackIds) { lastFuture = privateManager.loadItemOrdered(handler, id, handler); } if (lastFuture == null) { return null; } try { lastFuture.get(); } catch (InterruptedException | ExecutionException ex) { throw new FriendlyException("Failed loading playlist item", FriendlyException.Severity.FAULT, ex); } return new BasicAudioPlaylist(pasteId, handler.getLoadedTracks(), null, false); }
private AudioItem loadAlbum(String albumUrl) { return extractFromPage(albumUrl, (httpClient, text) -> { String bandUrl = readBandUrl(text); JsonBrowser trackListInfo = readTrackListInformation(text); String artist = trackListInfo.get("artist").text(); List<AudioTrack> tracks = new ArrayList<>(); for (JsonBrowser trackInfo : trackListInfo.get("trackinfo").values()) { tracks.add(extractTrack(trackInfo, bandUrl, artist)); } JsonBrowser albumInfo = readAlbumInformation(text); return new BasicAudioPlaylist(albumInfo.get("album_title").text(), tracks, null, false); }); }
private AudioPlaylist loadFromSet(String playlistWebUrl) { try (HttpInterface httpInterface = getHttpInterface()) { JsonBrowser playlistInfo = loadPlaylistInfoFromJson(loadPageConfigJson(httpInterface, playlistWebUrl)); return new BasicAudioPlaylist( playlistInfo.get("title").text(), loadTracksFromPlaylist(httpInterface, playlistInfo, playlistWebUrl), null, false ); } catch (IOException e) { throw new FriendlyException("Loading playlist from SoundCloud failed.", SUSPICIOUS, e); } }