Class: YouTubeIt::Client

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/youtube_it/client.rb

Direct Known Subclasses

AuthSubClient, OAuthClient

Instance Method Summary collapse

Methods included from Logging

#logger

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)
    hash_options = params.first
    @user                  = hash_options[:username]
    @pass                  = hash_options[:password]
    @dev_key               = hash_options[:dev_key]
    @client_id             = hash_options[:client_id] || "youtube_it"
    @legacy_debug_flag     = hash_options[:debug]
  else
    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

#add_comment(video_id, comment) ⇒ Object



114
115
116
# File 'lib/youtube_it/client.rb', line 114

def add_comment(video_id, comment)
  client.add_comment(video_id, comment)
end

#add_favorite(video_id) ⇒ Object



122
123
124
# File 'lib/youtube_it/client.rb', line 122

def add_favorite(video_id)
  client.add_favorite(video_id)
end

#add_playlist(options) ⇒ Object



146
147
148
# File 'lib/youtube_it/client.rb', line 146

def add_playlist(options)
  client.add_playlist(options)
end

#add_video_to_playlist(playlist_id, video_id) ⇒ Object



154
155
156
# File 'lib/youtube_it/client.rb', line 154

def add_video_to_playlist(playlist_id, video_id)
  client.add_video_to_playlist(playlist_id, video_id)
end

#comments(video_id) ⇒ Object



118
119
120
# File 'lib/youtube_it/client.rb', line 118

def comments(video_id)
  client.comments(video_id)
end

#current_userObject



170
171
172
# File 'lib/youtube_it/client.rb', line 170

def current_user
  client.get_current_user
end

#delete_favorite(video_id) ⇒ Object



126
127
128
# File 'lib/youtube_it/client.rb', line 126

def delete_favorite(video_id)
  client.delete_favorite(video_id)
end

#delete_playlist(playlist_id) ⇒ Object



162
163
164
# File 'lib/youtube_it/client.rb', line 162

def delete_playlist(playlist_id)
  client.delete_playlist(playlist_id)
end

#delete_video_from_playlist(playlist_id, playlist_entry_id) ⇒ Object



158
159
160
# File 'lib/youtube_it/client.rb', line 158

def delete_video_from_playlist(playlist_id, playlist_entry_id)
  client.delete_video_from_playlist(playlist_id, playlist_entry_id)
end

#enable_http_debuggingObject



166
167
168
# File 'lib/youtube_it/client.rb', line 166

def enable_http_debugging
  client.enable_http_debugging
end

#favoritesObject



130
131
132
# File 'lib/youtube_it/client.rb', line 130

def favorites
  client.favorites
end

#playlist(playlist_id) ⇒ Object



134
135
136
# File 'lib/youtube_it/client.rb', line 134

def playlist(playlist_id)
  client.playlist playlist_id
end

#playlistsObject



138
139
140
# File 'lib/youtube_it/client.rb', line 138

def playlists
  client.playlists
end

#playlists_for(user) ⇒ Object



142
143
144
# File 'lib/youtube_it/client.rb', line 142

def playlists_for(user)
 client.playlists_for(user)
end

#update_playlist(playlist_id, options) ⇒ Object



150
151
152
# File 'lib/youtube_it/client.rb', line 150

def update_playlist(playlist_id, options)
  client.update_playlist(playlist_id, options)
end

#upload_token(options, nexturl = "http://www.youtube.com/my_videos") ⇒ Object



110
111
112
# File 'lib/youtube_it/client.rb', line 110

def upload_token(options, nexturl = "http://www.youtube.com/my_videos")
  client.get_upload_token(options, nexturl)
end

#video_by(vid) ⇒ 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
# File 'lib/youtube_it/client.rb', line 86

def video_by(vid)
  video_id = vid =~ /^http/ ? vid : "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



92
93
94
95
96
# File 'lib/youtube_it/client.rb', line 92

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



106
107
108
# File 'lib/youtube_it/client.rb', line 106

def video_delete(video_id)
  client.delete(video_id)
end

#video_update(video_id, opts = {}) ⇒ Object



102
103
104
# File 'lib/youtube_it/client.rb', line 102

def video_update(video_id, opts = {})
  client.update(video_id, opts)
end

#video_upload(data, opts = {}) ⇒ Object



98
99
100
# File 'lib/youtube_it/client.rb', line 98

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, :racy, :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, options={})
  request_params = params.respond_to?(:to_hash) ? params : options
  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