Playlists
Yt::Playlist
represents a YouTube playlist.
Initialize using either the YouTube ID or URL:
Some methods from other classes also return a Yt::Playlist
object
(e.g.: Yt::Account#create_playlist
) or a collection of Yt::Playlist
objects (e.g.: #playlists
from Yt::Account
and
Yt::Channel
).
Authentication
Most methods of Yt::Playlist
retrieve public data from YouTube (e.g.: fetch a playlist’s title and items).
To use these methods (marked with below), you only need to get a Server API key from Google and configure:
Other methods acts on behalf of YouTube accounts (e.g.: add videos to a playlist).
To use these methods (marked with below), you need to get an API Client ID/Secret from Google, obtain an access or refresh token from the account you want to act as, and pass the account as the :auth
parameter:
List of Yt::Playlist
methods
- any authentication works Playlist’s Snippet
→ Yt docs
playlist.id # => "PLSWYkYzOrPMRUYaLE6C9"
→ Yt docsplaylist.title # => "Fullscreen Arcade"
→ Yt docsplaylist.description # => "Retro games!"
→ Yt docsplaylist.published_at # => 2013-08-14 19:14:21 UTC
→ Yt docsplaylist.thumbnail_url # => "https://i.ytimg.com/vi/7gyM4Ue9nGY/default.jpg"
→ Yt docsplaylist.channel_id # => "UCxO1tY8h1AhOz0T4ENwmpow"
→ Yt docsplaylist.channel_title # => "Fullscreen"
→ Yt docsplaylist.tags # => ["arcade", "games"]
- any authentication works Playlist’s Privacy Status
- must authenticate as the playlist’s account or content owner Playlist’s Updates
→ Yt docs
playlist.update title: "Videos I like", privacy_status: "public" # => true
→ Yt docsplaylist.add_video "BPNYv0vd78A" # => #<Yt::PlaylistItem …>
→ Yt docsplaylist.add_videos %w{BPNYv0vd78A 2NW_AqhkYZZ} # => [#<Yt::PlaylistItem …>]
→ Yt docsplaylist.delete_playlist_items video_id: "BPNYv0vd78A" # => [true, false]
- any authentication works Playlist’s Associations
→ Yt docs
playlist.playlist_items # => #<Yt::Collections::PlaylistItems …>
List of Yt::Playlist
analytics methods
By default, analytics methods return the total value for the lifetime of a playlist (e.g., all the views of a playlist).
To set specific starting and ending dates, use the :since
and :until
options.
To obtain one value per each day of the range you specify (rather than the total), use the by: :day
option.
To limit the results to a specific location, use the :in
option .
For brevity, the options above are omitted in the examples below.
- must authenticate as the playlist’s account or content owner Playlist’s Analytics
-
→ Yt docs
playlist.views # => {total: 223}
→ Yt docsplaylist.average_view_duration # => {total: 234}
→ Yt docsplaylist.playlist_starts # => {total: 44}
→ Yt docsplaylist.average_time_in_playlist # => {total: 1.23}
→ Yt docsplaylist.views_per_playlist_start # => {total: 4.53}
→ Yt docsplaylist.estimated_minutes_watched # => {total: 12}
→ Yt docsplaylist.views by: :country # => {"US" => 18, "RU" => 9, …}
→ Yt docsplaylist.average_view_duration by: :country # => {"US" => 456, …}
→ Yt docsplaylist.playlist_starts by: :country # => {"US" => 7, …}
→ Yt docsplaylist.average_time_in_playlist by: :country # => {"US" => 32.0, …}
→ Yt docsplaylist.views_per_playlist_start by: :country # => {"US" => 87, …}
→ Yt docsplaylist.estimated_minutes_watched by: :country # => {"US" => 12, …}
→ Yt docsplaylist.views by: :state # => {"TX" => 8, "AZ" => 5, …}
→ Yt docsplaylist.average_view_duration by: :state # => {"SD" => 456, …}
→ Yt docsplaylist.playlist_starts by: :state # => {"ND" => 7, …}
→ Yt docsplaylist.average_time_in_playlist by: :state # => {"MA" => 32.0, …}
→ Yt docsplaylist.views_per_playlist_start by: :state # => {"TX" => 87, …}
→ Yt docsplaylist.estimated_minutes_watched by: :state # => {"TX" => 12, …}
→ Yt docsplaylist.views by: :video, includes: [:status] # => {#<Yt::Video> => 9, …}
→ Yt docsplaylist.views by: :playlist # => {#<Yt::Playlist @id=…> => 4, …}
→ Yt docsplaylist.views by: :traffic_source # => {channel: 7, …}
→ Yt docsplaylist.views by: :playback_location # => {watch: 467, embedded: 53, …}
→ Yt docsplaylist.views by: :device_type # => {mobile: 457, tv: 954, …}
→ Yt docsplaylist.views by: :related_video # => {#<Yt::Video @id=…> => 7, …}
→ Yt docsplaylist.views by: :search_term # => {"fullscreen" => 7, "music" => 3, …}
→ Yt docsplaylist.views by: :referrer # => {"Google Search" => 7, "ytimg.com" => 3, …}
→ Yt docsplaylist.estimated_minutes_watched by: :video # => {#<Yt::Video> => 9, …}
→ Yt docsplaylist.estimated_minutes_watched by: :playlist # => {#<Yt::Playlist> => …}
→ Yt docsplaylist.estimated_minutes_watched by: :traffic_source # => {channel: 7, …}
→ Yt docsplaylist.estimated_minutes_watched by: :playback_location # => {watch: …}
→ Yt docsplaylist.estimated_minutes_watched by: :device_type # => {tv: 954, …}
→ Yt docsplaylist.estimated_minutes_watched by: :related_video # => {#<Yt::Video>…}
→ Yt docsplaylist.estimated_minutes_watched by: :search_term # => {"music" => 7, …}
→ Yt docsplaylist.estimated_minutes_watched by: :referrer # => {"Facebook" => 7, …}
→ Yt docsplaylist.viewer_percentage # => {female: {'18-24' => 4.12, '25-34' => …}, …}
→ Yt docsplaylist.viewer_percentage by: :gender # => {female: 12.3, male: 87.7}
→ Yt docsplaylist.viewer_percentage by: :age_group # => {'18-24' => 4.1, '25-34' => …}
→ Yt docsplaylist.reports only: [:views] # => {views: {…}}