Class: YouTubeIt::Client
- Inherits:
-
Object
- Object
- YouTubeIt::Client
- Includes:
- Logging
- Defined in:
- lib/youtube_it/client.rb
Direct Known Subclasses
Instance Method Summary collapse
-
#activity(user = nil, opts = {}) ⇒ Object
Fetches a user’s activity feed.
- #add_comment(video_id, comment, opts = {}) ⇒ Object
- #add_favorite(video_id) ⇒ Object
- #add_playlist(options) ⇒ Object
- #add_response(original_video_id, response_video_id) ⇒ Object
- #add_video_to_playlist(playlist_id, video_id) ⇒ Object
- #add_video_to_watchlater(video_id) ⇒ Object
-
#all_playlists(user = nil) ⇒ Object
Fetches all playlists for a given user by repeatedly making requests for as many pages of playlists as the user has.
- #captions_update(video_id, data, opts = {}) ⇒ Object
-
#comments(video_id, opts = {}) ⇒ Object
opts is converted to get params and appended to comments gdata api url eg opts = { ‘max-results’ => 10, ‘start-index’ => 20 } hash does not play nice with symbols.
- #current_user ⇒ Object
- #delete_comment(video_id, comment_id) ⇒ Object
- #delete_favorite(video_id) ⇒ Object
- #delete_playlist(playlist_id) ⇒ Object
- #delete_response(original_video_id, response_video_id) ⇒ Object
- #delete_video_from_playlist(playlist_id, playlist_entry_id) ⇒ Object
- #delete_video_from_watchlater(video_id) ⇒ Object
- #dislike_video(video_id) ⇒ Object
- #enable_http_debugging ⇒ Object
- #favorites(user = nil, opts = {}) ⇒ Object
-
#initialize(*params) ⇒ Client
constructor
Previously this was a logger instance but we now do it globally.
- #like_video(video_id) ⇒ Object
- #message_delete(message_id) ⇒ Object
-
#my_contacts(opts = {}) ⇒ Object
Gets all of the user’s contacts/friends.
-
#my_messages(opts = {}) ⇒ Object
Gets all of the user’s messages/inbox.
-
#my_video(video_id) ⇒ Object
Gets the authenticated users video with the given ID.
-
#my_videos(opts = {}) ⇒ Object
Gets all videos.
-
#new_subscription_videos(user_id = nil) ⇒ Object
Gets new subscription videos.
- #playlist(playlist_id, order_by = :position) ⇒ Object
- #playlists(user = nil, opts = nil) ⇒ Object
- #profile(user = nil) ⇒ Object
- #profiles(*users) ⇒ Object
-
#send_message(opts = {}) ⇒ Object
Send video message.
- #subscribe_channel(channel_name) ⇒ Object
- #subscriptions(user_id = nil) ⇒ Object
- #unsubscribe_channel(subscription_id) ⇒ Object
- #update_playlist(playlist_id, options) ⇒ Object
- #upload_token(options, nexturl = "http://www.youtube.com/my_videos") ⇒ Object
-
#video_by(video) ⇒ Object
Retrieves a single YouTube video.
- #video_by_user(user, vid) ⇒ Object
- #video_delete(video_id) ⇒ Object
- #video_update(video_id, opts = {}) ⇒ Object
- #video_upload(data, opts = {}) ⇒ Object
-
#videos_by(params, options = {}) ⇒ Object
Retrieves an array of standard feed, custom query, or user videos.
-
#watch_history ⇒ Object
Gets the user’s watch history.
- #watchlater(user = nil) ⇒ Object
Methods included from Logging
Constructor Details
#initialize(*params) ⇒ Client
Previously this was a logger instance but we now do it globally
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/youtube_it/client.rb', line 6 def initialize *params if params.first.is_a?(Hash) = params.first @user = [:username] @pass = [:password] @dev_key = [:dev_key] @client_id = [:client_id] || "youtube_it" @legacy_debug_flag = [:debug] elsif params.first puts "* warning: the method YouTubeIt::Client.new(user, passwd, dev_key) is deprecated, use YouTubeIt::Client.new(:username => 'user', :password => 'passwd', :dev_key => 'dev_key')" @user = params.shift @pass = params.shift @dev_key = params.shift @client_id = params.shift || "youtube_it" @legacy_debug_flag = params.shift end end |
Instance Method Details
#activity(user = nil, opts = {}) ⇒ Object
Fetches a user’s activity feed.
165 166 167 |
# File 'lib/youtube_it/client.rb', line 165 def activity(user = nil, opts = {}) client.get_activity(user, opts) end |
#add_comment(video_id, comment, opts = {}) ⇒ Object
129 130 131 |
# File 'lib/youtube_it/client.rb', line 129 def add_comment(video_id, comment, opts = {}) client.add_comment(video_id, comment, opts) end |
#add_favorite(video_id) ⇒ Object
144 145 146 |
# File 'lib/youtube_it/client.rb', line 144 def add_favorite(video_id) client.add_favorite(video_id) end |
#add_playlist(options) ⇒ Object
205 206 207 |
# File 'lib/youtube_it/client.rb', line 205 def add_playlist() client.add_playlist() end |
#add_response(original_video_id, response_video_id) ⇒ Object
249 250 251 |
# File 'lib/youtube_it/client.rb', line 249 def add_response(original_video_id, response_video_id) client.add_response(original_video_id, response_video_id) end |
#add_video_to_playlist(playlist_id, video_id) ⇒ Object
213 214 215 |
# File 'lib/youtube_it/client.rb', line 213 def add_video_to_playlist(playlist_id, video_id) client.add_video_to_playlist(playlist_id, video_id) end |
#add_video_to_watchlater(video_id) ⇒ Object
173 174 175 |
# File 'lib/youtube_it/client.rb', line 173 def add_video_to_watchlater(video_id) client.add_video_to_watchlater(video_id) end |
#all_playlists(user = nil) ⇒ Object
Fetches all playlists for a given user by repeatedly making requests for as many pages of playlists as the user has. Note that this can take a long time if the user has many playlists.
192 193 194 195 196 197 198 199 200 201 202 203 |
# File 'lib/youtube_it/client.rb', line 192 def all_playlists(user = nil) newest_playlists, all_playlists_for_user = [], [] start_index, page_size = 1, 25 begin newest_playlists = playlists(user, {'start-index' => start_index, 'max-results' => page_size}) all_playlists_for_user += newest_playlists start_index += page_size end while newest_playlists && newest_playlists.size == page_size all_playlists_for_user end |
#captions_update(video_id, data, opts = {}) ⇒ Object
113 114 115 |
# File 'lib/youtube_it/client.rb', line 113 def (video_id, data, opts = {}) client.(video_id, data, opts) end |
#comments(video_id, opts = {}) ⇒ Object
opts is converted to get params and appended to comments gdata api url eg opts = { ‘max-results’ => 10, ‘start-index’ => 20 } hash does not play nice with symbols
140 141 142 |
# File 'lib/youtube_it/client.rb', line 140 def comments(video_id, opts = {}) client.comments(video_id, opts) end |
#current_user ⇒ Object
257 258 259 |
# File 'lib/youtube_it/client.rb', line 257 def current_user client.get_current_user end |
#delete_comment(video_id, comment_id) ⇒ Object
133 134 135 |
# File 'lib/youtube_it/client.rb', line 133 def delete_comment(video_id, comment_id) client.delete_comment(video_id, comment_id) end |
#delete_favorite(video_id) ⇒ Object
148 149 150 |
# File 'lib/youtube_it/client.rb', line 148 def delete_favorite(video_id) client.delete_favorite(video_id) end |
#delete_playlist(playlist_id) ⇒ Object
221 222 223 |
# File 'lib/youtube_it/client.rb', line 221 def delete_playlist(playlist_id) client.delete_playlist(playlist_id) end |
#delete_response(original_video_id, response_video_id) ⇒ Object
253 254 255 |
# File 'lib/youtube_it/client.rb', line 253 def delete_response(original_video_id, response_video_id) client.delete_response(original_video_id, response_video_id) end |
#delete_video_from_playlist(playlist_id, playlist_entry_id) ⇒ Object
217 218 219 |
# File 'lib/youtube_it/client.rb', line 217 def delete_video_from_playlist(playlist_id, playlist_entry_id) client.delete_video_from_playlist(playlist_id, playlist_entry_id) end |
#delete_video_from_watchlater(video_id) ⇒ Object
177 178 179 |
# File 'lib/youtube_it/client.rb', line 177 def delete_video_from_watchlater(video_id) client.delete_video_from_watchlater(video_id) end |
#dislike_video(video_id) ⇒ Object
229 230 231 |
# File 'lib/youtube_it/client.rb', line 229 def dislike_video(video_id) client.rate_video(video_id, 'dislike') end |
#enable_http_debugging ⇒ Object
245 246 247 |
# File 'lib/youtube_it/client.rb', line 245 def enable_http_debugging client.enable_http_debugging end |
#favorites(user = nil, opts = {}) ⇒ Object
152 153 154 |
# File 'lib/youtube_it/client.rb', line 152 def favorites(user = nil, opts = {}) client.favorites(user, opts) end |
#like_video(video_id) ⇒ Object
225 226 227 |
# File 'lib/youtube_it/client.rb', line 225 def like_video(video_id) client.rate_video(video_id, 'like') end |
#message_delete(message_id) ⇒ Object
121 122 123 |
# File 'lib/youtube_it/client.rb', line 121 def () client.() end |
#my_contacts(opts = {}) ⇒ Object
Gets all of the user’s contacts/friends.
272 273 274 |
# File 'lib/youtube_it/client.rb', line 272 def my_contacts(opts = {}) client.get_my_contacts(opts) end |
#my_messages(opts = {}) ⇒ Object
Gets all of the user’s messages/inbox.
282 283 284 |
# File 'lib/youtube_it/client.rb', line 282 def (opts = {}) client.(opts) end |
#my_video(video_id) ⇒ Object
Gets the authenticated users video with the given ID. It may be private.
262 263 264 |
# File 'lib/youtube_it/client.rb', line 262 def my_video(video_id) client.get_my_video(video_id) end |
#my_videos(opts = {}) ⇒ Object
Gets all videos
267 268 269 |
# File 'lib/youtube_it/client.rb', line 267 def my_videos(opts = {}) client.get_my_videos(opts) end |
#new_subscription_videos(user_id = nil) ⇒ Object
Gets new subscription videos
292 293 294 |
# File 'lib/youtube_it/client.rb', line 292 def new_subscription_videos(user_id = nil) client.new_subscription_videos(user_id) end |
#playlist(playlist_id, order_by = :position) ⇒ Object
181 182 183 |
# File 'lib/youtube_it/client.rb', line 181 def playlist(playlist_id, order_by = :position) client.playlist(playlist_id, order_by) end |
#playlists(user = nil, opts = nil) ⇒ Object
185 186 187 |
# File 'lib/youtube_it/client.rb', line 185 def playlists(user = nil, opts = nil) client.playlists(user, opts) end |
#profile(user = nil) ⇒ Object
156 157 158 |
# File 'lib/youtube_it/client.rb', line 156 def profile(user = nil) client.profile(user) end |
#profiles(*users) ⇒ Object
160 161 162 |
# File 'lib/youtube_it/client.rb', line 160 def profiles(*users) client.profiles(*users) end |
#send_message(opts = {}) ⇒ Object
Send video message
277 278 279 |
# File 'lib/youtube_it/client.rb', line 277 def (opts = {}) client.(opts) end |
#subscribe_channel(channel_name) ⇒ Object
233 234 235 |
# File 'lib/youtube_it/client.rb', line 233 def subscribe_channel(channel_name) client.subscribe_channel(channel_name) end |
#subscriptions(user_id = nil) ⇒ Object
241 242 243 |
# File 'lib/youtube_it/client.rb', line 241 def subscriptions(user_id = nil) client.subscriptions(user_id) end |
#unsubscribe_channel(subscription_id) ⇒ Object
237 238 239 |
# File 'lib/youtube_it/client.rb', line 237 def unsubscribe_channel(subscription_id) client.unsubscribe_channel(subscription_id) end |
#update_playlist(playlist_id, options) ⇒ Object
209 210 211 |
# File 'lib/youtube_it/client.rb', line 209 def update_playlist(playlist_id, ) client.update_playlist(playlist_id, ) end |
#upload_token(options, nexturl = "http://www.youtube.com/my_videos") ⇒ Object
125 126 127 |
# File 'lib/youtube_it/client.rb', line 125 def upload_token(, nexturl = "http://www.youtube.com/my_videos") client.get_upload_token(, nexturl) end |
#video_by(video) ⇒ Object
Retrieves a single YouTube video.
Parameters
vid<String>:: The ID or URL of the video that you'd like to retrieve.
user<String>:: The user that uploaded the video that you'd like to retrieve.
Returns
YouTubeIt::Model::Video
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/youtube_it/client.rb', line 86 def video_by(video) vid = nil vid_regex = /(?:youtube.com|youtu.be).*(?:\/|v=)([\w-]+)/ if video =~ vid_regex vid = $1 else vid = video end video_id ="http://gdata.youtube.com/feeds/api/videos/#{vid}?v=2#{@dev_key ? '&key='+@dev_key : ''}" parser = YouTubeIt::Parser::VideoFeedParser.new(video_id) parser.parse end |
#video_by_user(user, vid) ⇒ Object
99 100 101 102 103 |
# File 'lib/youtube_it/client.rb', line 99 def video_by_user(user, vid) video_id = "http://gdata.youtube.com/feeds/api/users/#{user}/uploads/#{vid}?v=2#{@dev_key ? '&key='+@dev_key : ''}" parser = YouTubeIt::Parser::VideoFeedParser.new(video_id) parser.parse end |
#video_delete(video_id) ⇒ Object
117 118 119 |
# File 'lib/youtube_it/client.rb', line 117 def video_delete(video_id) client.delete(video_id) end |
#video_update(video_id, opts = {}) ⇒ Object
109 110 111 |
# File 'lib/youtube_it/client.rb', line 109 def video_update(video_id, opts = {}) client.update(video_id, opts) end |
#video_upload(data, opts = {}) ⇒ Object
105 106 107 |
# File 'lib/youtube_it/client.rb', line 105 def video_upload(data, opts = {}) client.upload(data, opts) end |
#videos_by(params, options = {}) ⇒ Object
Retrieves an array of standard feed, custom query, or user videos.
Parameters
If fetching videos for a standard feed:
params<Symbol>:: Accepts a symbol of :top_rated, :top_favorites, :most_viewed,
:most_popular, :most_recent, :most_discussed, :most_linked,
:most_responded, :recently_featured, and :watch_on_mobile.
You can find out more specific information about what each standard feed provides
by visiting: http://code.google.com/apis/youtube/reference.html#Standard_feeds
options<Hash> (optional):: Accepts the options of :time, :page (default is 1),
and :per_page (default is 25). :offset and :max_results
can also be passed for a custom offset.
If fetching videos by tags, categories, query:
params<Hash>:: Accepts the keys :tags, :categories, :query, :order_by,
:author, :safe_search, :response_format, :video_format, :page (default is 1),
and :per_page(default is 25)
options<Hash>:: Not used. (Optional)
If fetching videos for a particular user:
params<Hash>:: Key of :user with a value of the username.
options<Hash>:: Not used. (Optional)
Returns
YouTubeIt::Response::VideoSearch
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/youtube_it/client.rb', line 51 def videos_by(params, ={}) request_params = params.respond_to?(:to_hash) ? params : request_params[:page] = integer_or_default(request_params[:page], 1) request_params[:dev_key] = @dev_key if @dev_key unless request_params[:max_results] request_params[:max_results] = integer_or_default(request_params[:per_page], 25) end unless request_params[:offset] request_params[:offset] = calculate_offset(request_params[:page], request_params[:max_results]) end if params.respond_to?(:to_hash) and not params[:user] request = YouTubeIt::Request::VideoSearch.new(request_params) elsif (params.respond_to?(:to_hash) && params[:user]) || (params == :favorites) request = YouTubeIt::Request::UserSearch.new(params, request_params) else request = YouTubeIt::Request::StandardSearch.new(params, request_params) end logger.debug "Submitting request [url=#{request.url}]." if @legacy_debug_flag parser = YouTubeIt::Parser::VideosFeedParser.new(request.url) parser.parse end |
#watch_history ⇒ Object
Gets the user’s watch history
287 288 289 |
# File 'lib/youtube_it/client.rb', line 287 def watch_history client.get_watch_history end |
#watchlater(user = nil) ⇒ Object
169 170 171 |
# File 'lib/youtube_it/client.rb', line 169 def watchlater(user = nil) client.watchlater(user) end |