Я создаю приложение для 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) Есть ли способ сделать это более эффективно без использования рекурсии?
Буду признателен за любую помощь или руководство, спасибо!