SIMPLE_YOUTUBE IS NO LONGER MAINTAINED
simple_youtube works with the YouTube v2 API to...
-
Read(:get) YouTube data with no API Key
-
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
-
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!!!