youtube 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/dirtywork.rb +1 -4
  2. data/youtube.rb +65 -16
  3. metadata +1 -1
data/dirtywork.rb CHANGED
@@ -39,7 +39,6 @@ module DirtyWork
39
39
  # the remote method API name based on the ruby method name.
40
40
  private
41
41
  def method_missing(method_id, *params)
42
- # params[0] is the argument to the YouTube API
43
42
  request(method_id.to_s.sub('_', '.'), *params)
44
43
  end
45
44
 
@@ -53,9 +52,7 @@ module DirtyWork
53
52
  private
54
53
  def request_url(method, *params)
55
54
  param_list = String.new
56
- params[0].each_pair do |k,v|
57
- param_list << "&"+k.to_s+"="+v.to_s
58
- end
55
+ params[0].each_pair { |k,v| param_list << "&"+k.to_s+"="+v.to_s } if !params.empty?
59
56
  url = "#{HOST}#{API}?method=youtube."+method+"&dev_id="+@dev_id+param_list
60
57
  end
61
58
 
data/youtube.rb CHANGED
@@ -21,22 +21,10 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #++
23
23
 
24
- # USAGE:
25
- # require 'youtube'
26
- # youtube = YouTube.new 'your dev id'
27
- # profile = youtube.profile 'username'
28
- # profile.age
29
- # ...
30
- # videos = youtube.videos_by_tag('malsky')
31
- # video = video[0]
32
- # video.title
33
- # ...
34
- # details = video.details
35
- # details.channel_list
36
-
37
24
  require 'dirtywork'
38
25
 
39
- # YouTube client class. Requires a dev id.
26
+ # YouTube client class. Requires a Developer ID.
27
+ # Get one here: <http://youtube.com/my_profile_dev>.
40
28
 
41
29
  class YouTube
42
30
  include DirtyWork
@@ -51,18 +39,79 @@ class YouTube
51
39
  Profile.new response['user_profile']
52
40
  end
53
41
 
42
+ # username = the user to get favorite videos for
43
+ def favorite_videos(username)
44
+ videos = Array.new
45
+ response = users_list_favorite_videos(:user => username)
46
+ if !response['video_list'].empty?
47
+ response['video_list']['video'].each do |video|
48
+ videos << Video.new(video, @dev_id)
49
+ end
50
+ end
51
+ videos
52
+ end
53
+
54
+ #username = the user to get list of friends from
55
+ def friends(username)
56
+ friends = Array.new
57
+ response = users_list_friends(:user => username)
58
+ if !response['friend_list'].empty?
59
+ response['friend_list'].each do |friend|
60
+ friends << Friend.new(friend[1])
61
+ end
62
+ end
63
+ friends
64
+ end
65
+
54
66
  # tag = the tag to search for, must be one word
55
67
  # optional: page = the "page" of results to retrieve (e.g. 1, 2, 3)
56
68
  # optional: per_page = the number of results per page (default: 20, max 100)
57
69
  def videos_by_tag(tag, page=1, per_page=20)
58
70
  videos = Array.new
59
71
  response = videos_list_by_tag(:tag => tag, :page => page, :per_page => per_page)
60
- response['video_list']['video'].each do |video|
61
- videos << Video.new(video, @dev_id)
72
+ if !response['video_list'].empty?
73
+ response['video_list']['video'].each do |video|
74
+ videos << Video.new(video, @dev_id)
75
+ end
62
76
  end
63
77
  videos
64
78
  end
65
79
 
80
+ # username = the user to get videos for
81
+ def videos_by_user(username)
82
+ videos = Array.new
83
+ response = videos_list_by_user(:user => username)
84
+ if !response['video_list'].empty?
85
+ response['video_list']['video'].each do |video|
86
+ videos << Video.new(video, @dev_id)
87
+ end
88
+ end
89
+ videos
90
+ end
91
+
92
+ # this method takes no arguments
93
+ def featured_videos
94
+ videos = Array.new
95
+ response = videos_list_featured
96
+ if !response['video_list'].empty?
97
+ response['video_list']['video'].each do |video|
98
+ videos << Video.new(video, @dev_id)
99
+ end
100
+ end
101
+ videos
102
+ end
103
+
104
+ class Friend
105
+ attr_reader :user, :video_upload_count, :favorite_count, :friend_count
106
+
107
+ def initialize(friend)
108
+ @user = friend['user']
109
+ @video_upload_count = friend['video_upload_count']
110
+ @favorite_count = friend['favorite_count']
111
+ @friend_count = friend['friend_count']
112
+ end
113
+ end
114
+
66
115
  class Profile
67
116
  attr_reader :first_name, :last_name, :about_me, :age, :video_upload_count,
68
117
  :video_watch_count, :homepage, :hometown, :gender, :occupations,
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: youtube
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.1
6
+ version: 0.1.0
7
7
  date: 2006-09-27 00:00:00 -05:00
8
8
  summary: An interface in Ruby to the YouTube REST API. By Shane Vitarana.
9
9
  require_paths: