void refresh() throws IOException { Disposable disposable = // Observable.just(ytApi.playlistItems() .list(YOUTUBE_PLAYLIST_PART) .setPlaylistId(YOUTUBE_PLAYLIST_ID) .setPageToken(null) .setFields(YOUTUBE_PLAYLIST_FIELDS) .setMaxResults(YOUTUBE_PLAYLIST_MAX_RESULTS) .setKey(API_KEY) // ) .map(AbstractGoogleClientRequest::execute) .map(PlaylistItemListResponse::getItems) .flatMap(playlistItems -> Observable.fromIterable(playlistItems) .map(item -> item.getSnippet().getResourceId().getVideoId())) .toList() .map(ids -> ytApi.videos().list(YOUTUBE_VIDEOS_PART).setFields(YOUTUBE_VIDEOS_FIELDS) // .setKey(API_KEY).setId(TextUtils.join(",", ids)).execute()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnError( throwable -> Log.e(TAG, "accept() called with: throwable = [" + throwable + "]")) .doOnSuccess( response -> Log.d(TAG, "accept() called with: response = [" + response + "]")) .onErrorReturnItem(new VideoListResponse()) // Bad work around .doOnSuccess(liveData::setValue) .subscribe(); disposables.add(disposable); } }
public List<SimpleResult> getPlayListItems(String playlistCode) { List<SimpleResult> playlist = new ArrayList<>(); try { YouTube.PlaylistItems.List playlistRequest = youtube.playlistItems().list("id,contentDetails,snippet"); playlistRequest.setPlaylistId(playlistCode); playlistRequest.setKey(search.getKey()); playlistRequest.setFields("items(contentDetails/videoId,snippet/title,snippet/publishedAt),nextPageToken,pageInfo"); String nextToken = ""; do { playlistRequest.setPageToken(nextToken); PlaylistItemListResponse playlistItemResult = playlistRequest.execute(); playlist.addAll(playlistItemResult.getItems().stream().map(playlistItem -> new SimpleResult(playlistItem.getContentDetails().getVideoId(), playlistItem.getSnippet().getTitle())).collect(Collectors.toList())); nextToken = playlistItemResult.getNextPageToken(); } while (nextToken != null); } catch (IOException e) { e.printStackTrace(); } return playlist; }
playlistItemListResponse = mYouTubeDataApi.playlistItems() .list(YOUTUBE_PLAYLIST_PART) .setPlaylistId(playlistId) .setPageToken(nextPageToken) .setFields(YOUTUBE_PLAYLIST_FIELDS)
.setPlaylistId(uploadsPlaylistId) .setMaxResults(20l).execute(); List<String> videoIds = new ArrayList<String>();