0.02
No commit activity in last 3 years
No release in over 3 years
ActiveResource extension to Gdata Youtube API, anonymous Reads, Updates using your API key and OAuth, no Create or Delete access.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
~> 2.6

Runtime

 Project Readme

SIMPLE_YOUTUBE IS NO LONGER MAINTAINED

simple_youtube works with the YouTube v2 API to...

  1. Read(:get) YouTube data with no API Key

  2. Update(:put) YouTube video data using your Gdata API Key and OAuth2(v3 of this gem uses OAuth1). Pass in your OAuth2 access token, created using the omniauth-youtube OAuth2 set up in Rails. Beforehand you'll also need to authenticate and authorize your host to use the Google APIs to set up the correct keys

  3. Currently no Create or Delete functionality.

I have tried to cover most of the examples from the YouTube API reference

gem install simple_youtube

Video

:get a single video uid

http://gdata.youtube.com/feeds/api/videos/wOzOc0xxJu8?v=2

video_uid = Youtube::Video.find(:scope => 'wOzOc0xxJu8', :params => {:v => '2'})
video_uid.entry.size # => 1
video_uid.entry[0].title # => "Michael Watford - So Into You (Dub Mix)"

:get top 5 'ruby on rails' videos

http://gdata.youtube.com/feeds/api/videos?q=ruby+on+rails&max-results=5&v=2

video_search = Youtube::Video.find(:params => {:q => 'ruby on rails', :"max-results" => '5', :v => '2'})
video_search.entry.size             # => 5
video_search.title                  # => "YouTube Videos matching query: ruby on rails"
video_search.entry[3].link[1].href  # => http://gdata.youtube.com/feeds/api/videos/UCB57Npj9U0/responses?v=2

:get related videos

http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/related?v=2

video_related = Youtube::Video.find(:scope => 'rFVHjZYoq4Q', :type => 'related', :params => {:v => '2'})
video_related.entry.size            # => 25
video_related.entry[24].author.uri  # => http://gdata.youtube.com/feeds/api/users/neodracco

:get video responses

http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/responses?v=2

video_responses = Youtube::Video.find(:scope => 'rFVHjZYoq4Q', :type => 'responses', :params => {:v => '2'})
video_responses.entry[1].group.category  # => Music

:get video comments

http://gdata.youtube.com/feeds/api/videos/rFVHjZYoq4Q/comments?v=2

video_comments = Youtube::Video.find(:scope => 'rFVHjZYoq4Q', :type => 'comments', :params => {:v => '2'})
video_comments.entry[0].content         # => Come up to my first ever e on this about 14-15 years ago, ahh too long...

:get top 11 videos in Comedy category/tag

http://gdata.youtube.com/feeds/api/videos?category=Comedy&max-results=11&v=2

video_category = Youtube::Video.find(:params => {:category => 'Comedy', :"max-results" => '11', :v => '2'})
video_category.entry.size  # => 11
video_category.entry[9].category[2].term  # => Harry Potter
video_category.entry[0].category[1].term  # => Comedy

:get top 5 videos in Comedy category/tag, excluding Film category/tag

http://gdata.youtube.com/feeds/api/videos?category=Comedy%2C-Film&max-results=5&v=2

video_category_comedy_exclude_film = Youtube::Video.find(:params => {:category => 'Comedy,-Film', :"max-results" => '5', :v => '2'})
video_category_comedy_exclude_film.entry[1].category.size  # => 18
video_category_comedy_exclude_film.entry[1].category.each { |category| puts 'film' if category.term.eql?('Film') }  #=> nil

:get videos in david, beckham,(News or Sports) category/tags

http://gdata.youtube.com/feeds/api/videos?category=david%2Cbeckham%2CNews%7CSports&v=2

video_category_david_beckham_news_or_sports = Youtube::Video.find(:params => {:category => 'david,beckham,News|Sports', :v => '2'})
video_category_david_beckham_news_or_sports.entry[7].category[1].label  # => Sports
video_category_david_beckham_news_or_sports.entry[7].category[2].term   # => david

:put an updated video

video_uid = "video_uid"
user_name = "user_name"
update_xml = IO.read('fixture/video_update.xml')
oauth_token = "oauth_token"
x_gdata_key = "x_gdata_key"

response = Youtube::Video.update(video_uid, user_name, update_xml, oauth_token, oauth_token_secret, x_gdata_key, host, host_secret)
response.code # => 200

Standardfeed

:get top rated videos from today

http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?time=today&v=2

standardfeed_topratedtoday = Youtube::Standardfeed.find(:type => 'top_rated', :params => {:time => 'today', :v => '2'})
standardfeed_topratedtoday.entry[16].author.name = "ZOMGitsCriss"

:get top rated videos from jp

http://gdata.youtube.com/feeds/api/standardfeeds/JP/top_rated?v=2

standardfeed_toprated_jp = Youtube::Standardfeed.find(:scope => 'JP', :type => 'top_rated', :params => {:v => '2'})
standardfeed_toprated_jp.id = "tag:youtube.com,2008:standardfeed:jp:top_rated"
standardfeed_toprated_jp.entry[1].link[4].href = "http://gdata.youtube.com/feeds/api/standardfeeds/jp/top_rated/v/BQ9YtJC-Kd8?v=2"

:get top rated comedy videos from jp

http://gdata.youtube.com/feeds/api/standardfeeds/JP/top_rated?category=Comedy&max-results=11&v=2

standardfeed_toprated_jp_comedy = Youtube::Standardfeed.find(:scope => 'JP', :type => 'top_rated', :params => {:category => 'Comedy', :"max-results" => '11', :v => '2'})
standardfeed_toprated_jp_comedy.entry[1].link[4].href = "http://gdata.youtube.com/feeds/api/standardfeeds/jp/top_rated/v/7hYGkqc1gqE?v=2"

User

:get a single user

http://gdata.youtube.com/feeds/api/users/neodracco

user_search = Youtube::User.find(:scope => 'neodracco')
user_search.entry.size => 1

:get ionysis favourite videos

http://gdata.youtube.com/feeds/api/users/ionysis/favorites?v=2

user_ionysis_favourites = Youtube::User.find(:scope => 'ionysis', :type => 'favorites', :params => {:v => '2'})
user_ionysis_favourites.entry[7].statistics.favoriteCount) = "9586"
user_ionysis_favourites.entry[7].rating[1].numLikes) = "2568"

:get cyanure1982 playlists

http://gdata.youtube.com/feeds/api/users/cyanure1982/playlists?v=2

user_cyanure1982_playlists = Youtube::User.find(:scope => 'cyanure1982', :type => 'playlists', :params => {:v => '2'})
user_cyanure1982_playlists.entry[2].title) = "shinnenkai"

:get ionysis subscriptions

http://gdata.youtube.com/feeds/api/users/ionysis/subscriptions?v=2

user_ionysis_subscriptions = Youtube::User.find(:scope => 'ionysis', :type => 'subscriptions', :params => {:v => '2'})
user_ionysis_subscriptions.entry[0].title) = "Videos published by : vinyljunkie07"

:get vinyljunkie07 contacts

http://gdata.youtube.com/feeds/api/users/vinyljunkie07/contacts?v=2

user_vinyljunkie07_contacts = Youtube::User.find(:scope => 'vinyljunkie07', :type => 'contacts', :params => {:v => '2'})
user_vinyljunkie07_contacts.entry[18].id) "tag:youtube.com,2008:user:vinyljunkie07:contact:CrackerSchool"

Playlist

:get the cyanure1982 playlist - shinnenkai(D00BDE6AA710D50C)

http://gdata.youtube.com/feeds/api/playlists/D00BDE6AA710D50C?max-results=14&v=2

playlist_cyanure1982 = Youtube::Playlist.find(:scope => 'D00BDE6AA710D50C', :params => {:"max-results" => '14', :v => '2'})
playlist_cyanure1982.entry.size = 14
playlist_cyanure1982.entry[7].group.keywords = "nu, jazz, club, house, Jazztronik, dj, Yukihiro, Fukutomi, Mondo, Grosso, Daishi, Dance, FreeTEMPO, FPM, KJM, Kentaro, Takizawa"

simple_youtube is derived from the active_youtube gem from the Quark ruby blog

Big Thanks to the Quark crew for the inspiration!!!