A package for interacting with the Youtube Data API. This package is being developed first to aid in the processing of R4DS Online Learning Community book club videos. As such, functionality will be focused where it is needed for that task. Long-term, we hope to implement the entire YouTube API.
Installation
You can install the development version of youtubeR from GitHub with:
# install.packages("devtools")
devtools::install_github("kevin-m-kent/youtubeR")
Setting up
Step 1: Create an OAuth 2.0 client.
We’ll add details here soon about the settings to apply in your client. You’ll need to enable the YouTube Data API v3.
library(youtubeR)
browse_gc_credentials()
# Copy the client id and client secret.
Step 2: Set up environment variables
# Use the values copied above.
Sys.setenv(YOUTUBE_CLIENT_ID = "12345-ab12c.apps.googleusercontent.com")
Sys.setenv(YOUTUBE_CLIENT_SECRET = "ABCD-eFg_H")
# Ideally, set these in your .Renviron file.
Retrieving Video Status
The goal here is to get the video status (if it is finished processing) for each video that has been uploaded.
The workflow is as follows:
- Get the playlist ids
- For each playlist, get the video ids
- For each video, get the status
my_playlist_id <- get_upload_playlist_id()
video_ids <- get_playlist_video_ids(my_playlist_id)
video_details <- get_video_processing_details(video_ids)
Uploading Videos
Following a similar workflow, we can also upload videos to youtube. Assuming you already have created the client as above, you will need a snippet and a video path. The snippet defines the title, description, and other metadata for the video. The video path is the path to the video file on your local machine.
snippet <- yt_schema_video_snippet(
title = "video test",
description = "description of this test video",
tags = c("example tag", "another tag")
)
status <- yt_schema_video_status(
privacy_status = "private",
self_declared_made_for_kids = FALSE
)
video_path <- "path/to/video.mp4"
yt_videos_insert(
video_path = video_path,
snippet = snippet,
status = status
)