--- title: "Yt::Playlist" h2: "Playlists" ---
Yt::Playlist
represents a YouTube playlist.
Initialize using its YouTube ID:
{% include doc.html instance="Playlist#initialize" %}{% include example.html object='playlist = Yt::Playlist' method='new' params=' id: "PL-LeTutc9GRKD3yBDhnRF_yE8UTaQI5Jf"' %}
{% include example.html result='#<Yt::Playlist @id=PL-LeTutc9GRKD3yBDhnRF_yE8UTaQI5Jf>' %}
{% include doc.html instance="Playlist#canonical_url" %}{% include example.html object='playlist' method='canonical_url' %}
{% include example.html result='"https://www.youtube.com/playlist?list=PL-LeTutc9GRKD3yBDhnRF_yE8UTaQI5Jf"' %}
Most methods of Yt::Playlist
retrieve public data from YouTube (e.g.: fetch a playlist’s title).
To use these methods (marked with below), you only need to generate an API key and configure:
Yt::Playlist
data methods
{% include doc.html instance="Playlist#id" %}{% include example.html object='playlist' method='id' result='"PL-LeTutc9GRKD3yBDhnRF_yE8UTaQI5Jf"' %}
{% include doc.html instance="Playlist#title" %}{% include example.html object='playlist' method='title' result='"First public playlist"' %}
{% include doc.html instance="Playlist#description" %}{% include example.html object='playlist' method='description' result='"A YouTube playlist to test the yt gem."' %}
{% include doc.html instance="Playlist#published_at" %}{% include example.html object='playlist' method='published_at' result='2016-11-18 00:40:02 UTC' %}
{% include doc.html instance="Playlist#thumbnail_url" %}{% include example.html object='playlist' method='thumbnail_url' result='"https://i.ytimg.com/vi/gknzFj_0vvY/default.jpg"' %}
{% include doc.html instance="Playlist#channel_id" %}{% include example.html object='playlist' method='channel_id' result='"UCwCnUcLcb9-eSrHa_RQGkQQ"' %}
{% include doc.html instance="Playlist#channel_title" %}{% include example.html object='playlist' method='channel_title' result='"Yt Test"' %}
{% include doc.html instance="Playlist#privacy_status" %}{% include example.html object='playlist' method='privacy_status' result='"public"' %}
{% include doc.html instance="Playlist#item_count" %}{% include example.html object='playlist' method='item_count' result='2' %}
To limit the number of HTTP requests, use select
to specify which parts of the playlist’s data to load:
{% include example.html object='slow = playlist' result='without select: 2 HTTP requests' %}
{% include example.html object='slow' method='title' result='one HTTP request to fetch the playlist’s snippet' %}
{% include example.html object='slow' method='privacy_status' result='=> another HTTP request to fetch the playlist’s status' %}
{% include doc.html instance="Playlist#select" %}{% include example.html object='fast = playlist' method='select' params=' :snippet, :status' result='with select: 1 HTTP request' %}
{% include example.html object='fast' method='title' result='one HTTP request to fetch both the playlist’s snippet and status' %}
{% include example.html object='fast' method='privacy_status' result='=> no extra HTTP requests' %}
{% include doc.html instance="Playlist#items" %}{% include example.html object='playlist' method='items' %}
{% include example.html result='#<Yt::Relation [#<Yt::PlaylistItem @id=U...>, #<Yt::PlaylistItem @id=T...>, ...]>' %}
{% include doc.html instance="Playlist#videos" %}{% include example.html object='playlist' method='videos' %}
{% include example.html result='#<Yt::Relation [#<Yt::Video @id=gknz...>, #<Yt::Video @id=32Gc...>, ...]>' %}
Before iterating through items or videos, use select
to specify which parts to load:
{% include doc.html instance="Relation#select" %}{% include example.html object='items = playlist.items' method='select' params=' :snippet, :status' %}
{% include example.html object='items' method='map &:title' result='["First public video", "Second public video", ...]' %}
{% include example.html object='items' method='map &:privacy_status' result='["public", "public", ...]' %}
You can also use limit
to only fetch a certain number of items or videos:
{% include doc.html instance="Relation#limit" %}{% include example.html object='videos = playlist.videos' method='limit' params=' 2' %}
{% include example.html object='videos' method='map &:id' result='["gknzFj_0vvY", "oO6WawhsxTA"]' %}
You can also use size
to quickly obtain the estimated number of items or videos:
{% include doc.html instance="Relation#size" %}{% include example.html object='playlist.items' method='size' result='63' %}