Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions R/get_playlist_item_ids.R
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
#' 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.
#' If over 50, all the results are 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
Expand Down Expand Up @@ -39,8 +39,8 @@ get_playlist_item_ids <- function(filter = NULL, part = "contentDetails",
max_results = 50, video_id = NULL,
page_token = NULL, simplify = TRUE, ...) {

if (max_results < 0 || max_results > 50) {
stop("max_results must be a value between 0 and 50.")
if (max_results <= 0) {
stop("max_results must be a positive integer.")
}

valid_filters <- c("item_id", "playlist_id")
Expand All @@ -57,17 +57,23 @@ get_playlist_item_ids <- function(filter = NULL, part = "contentDetails",
names(filter) <- filter_name

querylist <- list(part = part,
maxResults = max(min(max_results, 50), 1),
maxResults = min(max_results, 50),
pageToken = page_token, videoId = video_id)
querylist <- c(querylist, filter)

res <- tuber_GET("playlistItems", querylist, ...)
res_items <- res$items
items <- res$items
next_token <- res$nextPageToken

item_ids <- rep("", length(res_items))
for(i in 1:length(res_items)){
item_ids[i] <- res_items[[i]]$id
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)
}

Expand Down
24 changes: 15 additions & 9 deletions R/get_playlist_item_videoids.R
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
#' 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.
#' If over 50, all the results are returned.
#' Integer. Optional. Default is 50. Values over 50 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
Expand Down Expand Up @@ -39,8 +39,8 @@ get_playlist_item_videoids <- function(filter = NULL, part = "contentDetails",
max_results = 50, video_id = NULL,
page_token = NULL, simplify = TRUE, ...) {

if (max_results < 0 || max_results > 50) {
stop("max_results must be a value between 0 and 50.")
if (max_results <= 0) {
stop("max_results must be a positive integer.")
}

valid_filters <- c("item_id", "playlist_id")
Expand All @@ -57,17 +57,23 @@ get_playlist_item_videoids <- function(filter = NULL, part = "contentDetails",
names(filter) <- filter_name

querylist <- list(part = part,
maxResults = max(min(max_results, 50), 1),
maxResults = min(max_results, 50),
pageToken = page_token, videoId = video_id)
querylist <- c(querylist, filter)

res <- tuber_GET("playlistItems", querylist, ...)
res_items <- res$items
items <- res$items
next_token <- res$nextPageToken

item_ids <- rep("", length(res_items))
for(i in 1:length(res_items)){
item_ids[i] <- res_items[[i]]$contentDetails$videoId
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$contentDetails$videoId)
return(item_ids)
}

Expand Down
33 changes: 16 additions & 17 deletions R/get_playlist_items.R
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@
#' 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.
#' If over 50, all the results are returned.
#' Integer. Optional. Default is 50. If over 50, additional requests are made
#' until the requested amount is retrieved. Larger values 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
Expand Down Expand Up @@ -57,30 +58,28 @@ get_playlist_items <- function(filter = NULL, part = "contentDetails",
names(filter) <- filter_name

querylist <- list(part = part,
maxResults = max(min(max_results, 50), 1),
maxResults = min(max_results, 50),
pageToken = page_token, videoId = video_id)
querylist <- c(querylist, filter)

res <- tuber_GET(path = "playlistItems",
query = querylist,
...)
items <- res$items
next_token <- res$nextPageToken

if (max_results > 50) {
page_token <- res$nextPageToken
while (is.character(page_token)) {
a_res <- tuber_GET(path = "playlistItems",
query = list(
part = part,
playlistId = unname(filter[["playlistId"]]), ## <--- double brackets
maxResults = 50,
pageToken = page_token
),
...) ## <--- pass arguments to tuber_GET
res <- c(res, a_res)
page_token <- a_res$nextPageToken
}
while (length(items) < max_results && is.character(next_token)) {
querylist$pageToken <- next_token
querylist$maxResults <- min(50, max_results - length(items))
a_res <- tuber_GET(path = "playlistItems",
query = querylist,
...)
items <- c(items, a_res$items)
next_token <- a_res$nextPageToken
}

res$items <- items

if (simplify) {
allResultsList <- unlist(res[which(names(res) == "items")], recursive = FALSE)
allResultsList <- lapply(allResultsList, unlist)
Expand Down
21 changes: 17 additions & 4 deletions R/get_playlists.R
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
#' @param part Required. One of the following: \code{contentDetails, id,
#' localizations, player, snippet, status}. Default: \code{contentDetails}.
#' @param max_results Maximum number of items that should be returned.
#' Integer. Optional. Can be between 0 and 50. Default is 50.
#' Integer. Optional. Default is 50. Values over 50 trigger additional
#' requests and may increase API quota usage.
#' @param page_token specific page in the result set that should be returned,
#' optional
#' @param hl Language used for text values. Optional. Default is \code{en-US}.
Expand Down Expand Up @@ -42,8 +43,8 @@ get_playlists <- function(filter = NULL,
max_results = 50, hl = NULL,
page_token = NULL, simplify = TRUE, ...) {

if (max_results < 0 | max_results > 50) {
stop("max_results only takes a value between 0 and 50.")
if (max_results <= 0) {
stop("max_results must be a positive integer.")
}

valid_filters <- c("channel_id", "playlist_id")
Expand All @@ -59,11 +60,23 @@ get_playlists <- function(filter = NULL,
yt_filter_name <- translate_filter[names(filter)]
names(filter) <- yt_filter_name

querylist <- list(part = part, maxResults = max_results,
querylist <- list(part = part, maxResults = min(max_results, 50),
pageToken = page_token, hl = hl)
querylist <- c(querylist, filter)

raw_res <- tuber_GET("playlists", querylist, ...)
items <- raw_res$items
next_token <- raw_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("playlists", querylist, ...)
items <- c(items, a_res$items)
next_token <- a_res$nextPageToken
}

raw_res$items <- items

if (length(raw_res$items) == 0) {
cat("No playlists available.\n")
Expand Down
21 changes: 17 additions & 4 deletions R/get_related_videos.R
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
#'
#' @param video_id Character. Required. No default.
#' @param max_results Maximum number of items that should be returned.
#' Integer. Optional. Can be between 0 and 50. Default is 50.
#' Integer. Optional. Default is 50. Values over 50 trigger multiple requests and
#' may increase API quota usage.
#' @param safe_search Character. Optional. Takes one of three values:
#' \code{'moderate'}, \code{'none'} (default) or \code{'strict'}
#' @param \dots Additional arguments passed to \code{\link{tuber_GET}}.
Expand All @@ -31,14 +32,26 @@ get_related_videos <- function(video_id = NULL, max_results = 50,
safe_search = "none", ...) {

if (!is.character(video_id)) stop("Must specify a video ID.")
if (max_results < 0 | max_results > 50) {
stop("max_results only takes a value between 0 and 50.")
if (max_results <= 0) {
stop("max_results must be a positive integer.")
}

querylist <- list(part = "snippet", relatedToVideoId = video_id,
type = "video", maxResults = max_results, safeSearch = safe_search)
type = "video", maxResults = min(max_results, 50), safeSearch = safe_search)

res <- tuber_GET("search", 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("search", querylist, ...)
items <- c(items, a_res$items)
next_token <- a_res$nextPageToken
}

res$items <- items

resdf <- read.table(text = "",
col.names = c("video_id", "rel_video_id", "publishedAt",
Expand Down
20 changes: 16 additions & 4 deletions R/get_subscriptions.R
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
#' \code{contentDetails, id, snippet, subscriberSnippet}. e.g. "id, snippet",
#' "id", etc. Default: \code{contentDetails}.
#' @param max_results Maximum number of items that should be returned.
#' Integer. Optional. Can be between 0 and 50. Default is 50.
#' Integer. Optional. Default is 50. Values over 50 will trigger additional
#' requests and may increase API quota usage.
#' @param page_token Specific page in the result set that should be
#' returned. Optional. String.
#' @param for_channel_id Optional. String. A comma-separated list of
Expand All @@ -37,8 +38,8 @@ get_subscriptions <- function(filter = NULL, part = "contentDetails",
max_results = 50, for_channel_id = NULL,
order = NULL, page_token = NULL, ...) {

if (max_results < 0 | max_results > 50) {
stop("max_results only takes a value between 0 and 50.")
if (max_results <= 0) {
stop("max_results must be a positive integer.")
}

if (!(names(filter) %in% c("channel_id", "subscription_id"))) {
Expand All @@ -52,12 +53,23 @@ get_subscriptions <- function(filter = NULL, part = "contentDetails",
names(translate_filter))])
names(filter) <- yt_filter_name

querylist <- list(part = part, maxResults = max_results,
querylist <- list(part = part, maxResults = min(max_results, 50),
pageToken = page_token, order = order,
forChannelId = for_channel_id)
querylist <- c(querylist, filter)

res <- tuber_GET("subscriptions", 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("subscriptions", querylist, ...)
items <- c(items, a_res$items)
next_token <- a_res$nextPageToken
}

res$items <- items
res
}
21 changes: 17 additions & 4 deletions R/list_channel_activities.R
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
#' @param part specify which part do you want. It can only be one of the three:
#' \code{contentDetails, id, snippet}. Default is \code{snippet}.
#' @param max_results Maximum number of items that should be returned. Integer.
#' Optional. Can be between 0 and 50. Default is 50.
#' Optional. Default is 50. Values over 50 will trigger additional requests and
#' may increase API quota usage.
#' @param page_token specific page in the result set that should be returned,
#' optional
#' @param published_after Character. Optional. RFC 339 Format. For instance,
Expand Down Expand Up @@ -55,8 +56,8 @@ list_channel_activities <- function(filter = NULL, part = "snippet",
published_before = NULL, region_code = NULL,
simplify = TRUE, ...) {

if (max_results < 0 | max_results > 50) {
stop("max_results only takes a value between 0 and 50.")
if (max_results <= 0) {
stop("max_results must be a positive integer.")
}

if (!(names(filter) %in% c("channel_id"))) {
Expand All @@ -82,13 +83,25 @@ list_channel_activities <- function(filter = NULL, part = "snippet",
names(translate_filter))])
names(filter) <- yt_filter_name

querylist <- list(part = part, maxResults = max_results,
querylist <- list(part = part, maxResults = min(max_results, 50),
pageToken = page_token, publishedAfter = published_after,
publishedBefore = published_before,
regionCode = region_code)
querylist <- c(querylist, filter)

raw_res <- tuber_GET("activities", querylist, ...)
items <- raw_res$items
next_token <- raw_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("activities", querylist, ...)
items <- c(items, a_res$items)
next_token <- a_res$nextPageToken
}

raw_res$items <- items

if (length(raw_res$items) == 0) {
warning("No comment information available. Likely cause: Incorrect ID.\n")
Expand Down
24 changes: 18 additions & 6 deletions R/list_channel_resources.R
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
#' @param hl Language used for text values. Optional. The default is \code{en-US}.
#' For other allowed language codes, see \code{\link{list_langs}}.
#' @param max_results Maximum number of items that should be returned. Integer.
#' Optional. Can be between 0 and 50. The default is 50.
#' Optional. Default is 50. Values over 50 will trigger additional requests and
#' may increase API quota usage.
#' @param page_token specific page in the result set that should be returned,
#' optional
#' @param \dots Additional arguments passed to \code{\link{tuber_GET}}.
Expand All @@ -42,8 +43,8 @@

list_channel_resources <- function(filter = NULL, part = "contentDetails",
max_results = 50, page_token = NULL, hl = "en-US", ...) {
if (max_results < 0 | max_results > 50) {
stop("max_results only takes a value between 0 and 50.")
if (max_results <= 0) {
stop("max_results must be a positive integer.")
}
if (!(names(filter) %in% c("category_id", "username", "channel_id"))) {
stop("filter can only take one of three values: category_id,
Expand Down Expand Up @@ -82,12 +83,23 @@ list_channel_resources <- function(filter = NULL, part = "contentDetails",
names(translate_filter))])
names(filter) <- yt_filter_name

querylist <- list(part = part, maxResults = max_results,
querylist <- list(part = part, maxResults = min(max_results, 50),
pageToken = page_token, hl = hl)
querylist <- c(querylist, filter)

res <- tuber_GET("channels", 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("channels", querylist, ...)
items <- c(items, a_res$items)
next_token <- a_res$nextPageToken
}

res$items <- items
res
}

Loading
Loading