Получить все видео плейлиста, используя paginate и rxjava - PullRequest
2 голосов
/ 18 октября 2019

Я создаю приложение для Android, в котором пользователь может выбрать плейлист из YouTube, и после его выбора мне нужно будет загрузить все видео из этого плейлиста в один список.

Я нашел несколько решенийв сети, но они использовали javascript и те, что были написаны на rxjava, а paginate использовал целые числа, а не строки (я не смогу использовать диапазон).

На данный момент я могу загрузитьПервые 50 видео я попробовал несколько подходов (один из которых был рекурсией, но, видимо, я написал это плохо и в итоге использовал все запросы API в одной загрузке).

Вот мой код:

 fun getVidoesFromPlayList(playListId: String,pageToken: String): Single<MutableList<YTVideo>> {
    return youTubeService.getPlayListResponse(playListId, pageToken)
        .flatMap { response ->
            Observable.just(response.items)
                .flatMapIterable { data -> data }
                .flatMap { item ->
                    youTubeService.getVideoResponse(item.snippet!!.resourceId!!.videoId).toObservable()
                        .subscribeOn(Schedulers.io())
                        .map { videoResponse ->
                            YTVideo(
                                item.snippet.position,
                                item.snippet.resourceId!!.videoId,
                                item.snippet.thumbnails!!.medium!!.url,
                                item.snippet.title,
                                videoResponse.items!![0].contentDetails!!.duration,
                                videoResponse.items[0].snippet!!.channelTitle
                            )
                        }
                }
                .repeatUntil { response.nextPageToken!=null }
                .toList()
        }
}

1) Как я могу вызвать getVidoesFromPlayList с другим маркером nextpage при кэшировании текущих видео? 2) Есть ли способ сделать это более эффективно без использования рекурсии?

Буду признателен за любую помощь или руководство, спасибо!

...