Nothing
#' Get Playlist Item IDs
#'
#' @param filter string; Required.
#' named vector of length 1
#' potential names of the entry in the vector:
#' \code{item_id}: comma-separated list of one or more unique playlist item IDs.
#' \code{playlist_id}: YouTube playlist ID.
#'
#' @param part Required. Comma separated string including one or more of the
#' following: \code{contentDetails, id, snippet, status}. Default:
#' \code{contentDetails}.
#' @param max_results Maximum number of items that should be returned.
#' Integer. Optional. Default is 50. Values over 50 will trigger multiple
#' requests and may increase API quota usage.
#' @param simplify returns a data.frame rather than a list.
#' @param page_token specific page in the result set that should be
#' returned, optional
#' @param video_id Optional. request should return only the playlist
#' items that contain the specified video.
#' @param \dots Additional arguments passed to \code{\link{tuber_GET}}.
#'
#' @return playlist items
#' @export
#' @references \url{https://developers.google.com/youtube/v3/docs/playlists/list}
#'
#' @examples
#' \dontrun{
#'
#' # Set API token via yt_oauth() first
#'
#' get_playlist_items(filter =
#' c(playlist_id = "PLrEnWoR732-CN09YykVof2lxdI3MLOZda"))
#' get_playlist_items(filter =
#' c(playlist_id = "PL0fOlXVeVW9QMO3GoESky4yDgQfK2SsXN"),
#' max_results = 51)
#' }
get_playlist_item_ids <- function(filter = NULL, part = "contentDetails",
max_results = 50, video_id = NULL,
page_token = NULL, simplify = TRUE, ...) {
# Modern validation using checkmate
assert_integerish(max_results, len = 1, lower = 1, .var.name = "max_results")
assert_character(filter, len = 1, .var.name = "filter")
assert_choice(names(filter), c("item_id", "playlist_id"),
.var.name = "filter names (must be 'item_id' or 'playlist_id')")
assert_character(part, len = 1, min.chars = 1, .var.name = "part")
assert_logical(simplify, len = 1, .var.name = "simplify")
if (!is.null(video_id)) {
assert_character(video_id, len = 1, min.chars = 1, .var.name = "video_id")
}
if (!is.null(page_token)) {
assert_character(page_token, len = 1, min.chars = 1, .var.name = "page_token")
}
translate_filter <- c(item_id = "id", playlist_id = "playlistId")
filter_name <- translate_filter[names(filter)]
names(filter) <- filter_name
querylist <- list(part = part,
maxResults = min(max_results, 50),
pageToken = page_token, videoId = video_id)
querylist <- c(querylist, filter)
res <- tuber_GET("playlistItems", querylist, ...)
items <- res$items
next_token <- res$nextPageToken
while (length(items) < max_results && !is.null(next_token)) {
querylist$pageToken <- next_token
querylist$maxResults <- min(50, max_results - length(items))
a_res <- tuber_GET("playlistItems", querylist, ...)
items <- c(items, a_res$items)
next_token <- a_res$nextPageToken
}
item_ids <- sapply(items, function(x) x$id)
return(item_ids)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.