tmm1-youtube-g 0.4.9.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -1
- data/Manifest.txt +28 -0
- data/README.txt +1 -0
- data/lib/youtube_g.rb +1 -1
- data/lib/youtube_g/client.rb +7 -3
- data/lib/youtube_g/model/video.rb +6 -0
- data/lib/youtube_g/parser.rb +10 -1
- data/lib/youtube_g/request/base_search.rb +1 -1
- data/lib/youtube_g/request/user_search.rb +27 -2
- data/lib/youtube_g/response/video_search.rb +18 -0
- data/test/test_client.rb +13 -1
- data/test/test_video_search.rb +12 -2
- data/youtube-g.gemspec +29 -28
- metadata +5 -4
data/History.txt
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
==
|
1
|
+
== 0.4.9.9 / 2008-09-01
|
2
|
+
|
3
|
+
* Add Geodata information (thanks Jose Galisteo)
|
2
4
|
* Added :page and :per_page options, this allows easier usage of the will_paginate
|
3
5
|
plugin with the library. The :offset and :max_results options are no longer available. [Daniel Insley]
|
4
6
|
* Added ability to get video responses on the instances of the YouTube::Model::Video object. [Daniel Insley]
|
data/Manifest.txt
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
History.txt
|
2
|
+
Manifest.txt
|
3
|
+
README.txt
|
4
|
+
Rakefile
|
5
|
+
TODO.txt
|
6
|
+
lib/youtube_g.rb
|
7
|
+
lib/youtube_g/client.rb
|
8
|
+
lib/youtube_g/logger.rb
|
9
|
+
lib/youtube_g/model/author.rb
|
10
|
+
lib/youtube_g/model/category.rb
|
11
|
+
lib/youtube_g/model/contact.rb
|
12
|
+
lib/youtube_g/model/content.rb
|
13
|
+
lib/youtube_g/model/playlist.rb
|
14
|
+
lib/youtube_g/model/rating.rb
|
15
|
+
lib/youtube_g/model/thumbnail.rb
|
16
|
+
lib/youtube_g/model/user.rb
|
17
|
+
lib/youtube_g/model/video.rb
|
18
|
+
lib/youtube_g/parser.rb
|
19
|
+
lib/youtube_g/record.rb
|
20
|
+
lib/youtube_g/request/base_search.rb
|
21
|
+
lib/youtube_g/request/standard_search.rb
|
22
|
+
lib/youtube_g/request/user_search.rb
|
23
|
+
lib/youtube_g/request/video_search.rb
|
24
|
+
lib/youtube_g/request/video_upload.rb
|
25
|
+
lib/youtube_g/response/video_search.rb
|
26
|
+
test/test_client.rb
|
27
|
+
test/test_video.rb
|
28
|
+
test/test_video_search.rb
|
data/README.txt
CHANGED
@@ -37,6 +37,7 @@ Basic queries:
|
|
37
37
|
client.videos_by(:categories => [:news, :sports])
|
38
38
|
client.videos_by(:categories => [:news, :sports], :tags => ['soccer', 'football'])
|
39
39
|
client.videos_by(:user => 'liz')
|
40
|
+
client.videos_by(:favorites, :user => 'liz')
|
40
41
|
|
41
42
|
Standard feeds:
|
42
43
|
|
data/lib/youtube_g.rb
CHANGED
data/lib/youtube_g/client.rb
CHANGED
@@ -35,10 +35,10 @@ class YouTubeG
|
|
35
35
|
# YouTubeG::Response::VideoSearch
|
36
36
|
def videos_by(params, options={})
|
37
37
|
request_params = params.respond_to?(:to_hash) ? params : options
|
38
|
-
request_params[:page]
|
38
|
+
request_params[:page] = integer_or_default(request_params[:page], 1)
|
39
39
|
|
40
40
|
unless request_params[:max_results]
|
41
|
-
request_params[:max_results] = request_params[:per_page]
|
41
|
+
request_params[:max_results] = integer_or_default(request_params[:per_page], 25)
|
42
42
|
end
|
43
43
|
|
44
44
|
unless request_params[:offset]
|
@@ -48,7 +48,7 @@ class YouTubeG
|
|
48
48
|
if params.respond_to?(:to_hash) and not params[:user]
|
49
49
|
request = YouTubeG::Request::VideoSearch.new(request_params)
|
50
50
|
elsif (params.respond_to?(:to_hash) && params[:user]) || (params == :favorites)
|
51
|
-
request = YouTubeG::Request::UserSearch.new(
|
51
|
+
request = YouTubeG::Request::UserSearch.new(params, request_params)
|
52
52
|
else
|
53
53
|
request = YouTubeG::Request::StandardSearch.new(params, request_params)
|
54
54
|
end
|
@@ -77,5 +77,9 @@ class YouTubeG
|
|
77
77
|
page == 1 ? 1 : ((per_page * page) - per_page + 1)
|
78
78
|
end
|
79
79
|
|
80
|
+
def integer_or_default(value, default)
|
81
|
+
value = value.to_i
|
82
|
+
value > 0 ? value : default
|
83
|
+
end
|
80
84
|
end
|
81
85
|
end
|
@@ -108,6 +108,12 @@ class YouTubeG
|
|
108
108
|
|
109
109
|
# *Fixnum*:: Number of times that the video has been viewed
|
110
110
|
attr_reader :view_count
|
111
|
+
|
112
|
+
# Geodata
|
113
|
+
attr_reader :where
|
114
|
+
attr_reader :position
|
115
|
+
attr_reader :latitude
|
116
|
+
attr_reader :longitude
|
111
117
|
|
112
118
|
attr_reader :statistics
|
113
119
|
|
data/lib/youtube_g/parser.rb
CHANGED
@@ -91,6 +91,11 @@ class YouTubeG
|
|
91
91
|
noembed = entry.elements["yt:noembed"] ? true : false
|
92
92
|
racy = entry.elements["media:rating"] ? true : false
|
93
93
|
|
94
|
+
if where = entry.elements["georss:where"]
|
95
|
+
position = where.elements["gml:Point"].elements["gml:pos"].text
|
96
|
+
latitude, longitude = position.split(" ")
|
97
|
+
end
|
98
|
+
|
94
99
|
YouTubeG::Model::Video.new(
|
95
100
|
:video_id => video_id,
|
96
101
|
:published_at => published_at,
|
@@ -108,7 +113,11 @@ class YouTubeG
|
|
108
113
|
:rating => rating,
|
109
114
|
:view_count => view_count,
|
110
115
|
:noembed => noembed,
|
111
|
-
:racy => racy
|
116
|
+
:racy => racy,
|
117
|
+
:where => where,
|
118
|
+
:position => position,
|
119
|
+
:latitude => latitude,
|
120
|
+
:longitude => longitude)
|
112
121
|
end
|
113
122
|
|
114
123
|
def parse_media_content (media_content_element)
|
@@ -1,10 +1,27 @@
|
|
1
1
|
class YouTubeG
|
2
2
|
module Request #:nodoc:
|
3
3
|
class UserSearch < BaseSearch #:nodoc:
|
4
|
+
attr_reader :max_results # max_results
|
5
|
+
attr_reader :order_by # orderby, ([relevance], viewCount, published, rating)
|
6
|
+
attr_reader :offset # start-index
|
7
|
+
|
4
8
|
def initialize(params, options={})
|
9
|
+
@max_results, @order_by, @offset = nil
|
5
10
|
@url = base_url
|
6
|
-
|
7
|
-
|
11
|
+
|
12
|
+
if params == :favorites
|
13
|
+
@url << "#{options[:user]}/favorites"
|
14
|
+
set_instance_variables(options)
|
15
|
+
elsif params[:user] && options[:favorites]
|
16
|
+
@url << "#{params[:user]}/favorites"
|
17
|
+
set_instance_variables(params)
|
18
|
+
break
|
19
|
+
elsif params[:user]
|
20
|
+
@url << "#{params[:user]}/uploads"
|
21
|
+
set_instance_variables(params)
|
22
|
+
end
|
23
|
+
|
24
|
+
@url << build_query_params(to_youtube_params)
|
8
25
|
end
|
9
26
|
|
10
27
|
private
|
@@ -12,6 +29,14 @@ class YouTubeG
|
|
12
29
|
def base_url #:nodoc:
|
13
30
|
super << "users/"
|
14
31
|
end
|
32
|
+
|
33
|
+
def to_youtube_params #:nodoc:
|
34
|
+
{
|
35
|
+
'max-results' => @max_results,
|
36
|
+
'orderby' => @order_by,
|
37
|
+
'start-index' => @offset
|
38
|
+
}
|
39
|
+
end
|
15
40
|
end
|
16
41
|
|
17
42
|
end
|
@@ -18,6 +18,24 @@ class YouTubeG
|
|
18
18
|
|
19
19
|
# *Array*:: Array of YouTubeG::Model::Video records
|
20
20
|
attr_reader :videos
|
21
|
+
|
22
|
+
def current_page
|
23
|
+
((offset - 1) / max_result_count) + 1
|
24
|
+
end
|
25
|
+
|
26
|
+
# current_page + 1 or nil if there is no next page
|
27
|
+
def next_page
|
28
|
+
current_page < total_pages ? (current_page + 1) : nil
|
29
|
+
end
|
30
|
+
|
31
|
+
# current_page - 1 or nil if there is no previous page
|
32
|
+
def previous_page
|
33
|
+
current_page > 1 ? (current_page - 1) : nil
|
34
|
+
end
|
35
|
+
|
36
|
+
def total_pages
|
37
|
+
(total_result_count / max_result_count.to_f).ceil
|
38
|
+
end
|
21
39
|
end
|
22
40
|
end
|
23
41
|
end
|
data/test/test_client.rb
CHANGED
@@ -52,7 +52,6 @@ class TestClient < Test::Unit::TestCase
|
|
52
52
|
assert_equal 51, response2.offset
|
53
53
|
end
|
54
54
|
|
55
|
-
|
56
55
|
def test_should_get_videos_for_multiword_metasearch_query
|
57
56
|
response = @client.videos_by(:query => 'christina ricci')
|
58
57
|
|
@@ -132,6 +131,13 @@ class TestClient < Test::Unit::TestCase
|
|
132
131
|
response = @client.videos_by(:user => 'liz')
|
133
132
|
response.videos.each { |v| assert_valid_video v }
|
134
133
|
end
|
134
|
+
|
135
|
+
def test_should_get_videos_by_user_with_pagination_and_ordering
|
136
|
+
response = @client.videos_by(:user => 'liz', :page => 2, :per_page => '2', :order_by => 'published')
|
137
|
+
response.videos.each { |v| assert_valid_video v }
|
138
|
+
assert_equal 3, response.offset
|
139
|
+
assert_equal 2, response.max_result_count
|
140
|
+
end
|
135
141
|
|
136
142
|
# HTTP 403 Error
|
137
143
|
# def test_should_get_favorite_videos_by_user
|
@@ -139,6 +145,12 @@ class TestClient < Test::Unit::TestCase
|
|
139
145
|
# response.videos.each { |v| assert_valid_video v }
|
140
146
|
# end
|
141
147
|
|
148
|
+
def test_should_get_favorite_videos_by_user
|
149
|
+
response = @client.videos_by(:favorites, :user => 'drnicwilliams')
|
150
|
+
assert_equal "http://gdata.youtube.com/feeds/api/users/drnicwilliams/favorites", response.feed_id
|
151
|
+
response.videos.each { |v| assert_valid_video v }
|
152
|
+
end
|
153
|
+
|
142
154
|
def test_should_get_videos_for_query_search_with_categories_excluded
|
143
155
|
video = @client.video_by("EkF4JD2rO3Q")
|
144
156
|
assert_equal "<object width=\"425\" height=\"350\">\n <param name=\"movie\" value=\"http://www.youtube.com/v/EkF4JD2rO3Q\"></param>\n <param name=\"wmode\" value=\"transparent\"></param>\n <embed src=\"http://www.youtube.com/v/EkF4JD2rO3Q\" type=\"application/x-shockwave-flash\" \n wmode=\"transparent\" width=\"425\" height=\"350\"></embed>\n</object>\n", video.embed_html
|
data/test/test_video_search.rb
CHANGED
@@ -74,7 +74,7 @@ class TestVideoSearch < Test::Unit::TestCase
|
|
74
74
|
|
75
75
|
def test_should_build_url_for_most_viewed_offset_and_max_results_with_time
|
76
76
|
request = YouTubeG::Request::StandardSearch.new(:top_rated, :offset => 5, :max_results => 10, :time => :today)
|
77
|
-
assert_equal "http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?
|
77
|
+
assert_equal "http://gdata.youtube.com/feeds/api/standardfeeds/top_rated?max-results=10&start-index=5&time=today", request.url
|
78
78
|
end
|
79
79
|
|
80
80
|
def test_should_raise_exception_for_invalid_type
|
@@ -111,7 +111,7 @@ class TestVideoSearch < Test::Unit::TestCase
|
|
111
111
|
request = YouTubeG::Request::VideoSearch.new(:query => 'bench press',
|
112
112
|
:categories => { :exclude => [:comedy, :entertainment] },
|
113
113
|
:max_results => 10)
|
114
|
-
assert_equal "http://gdata.youtube.com/feeds/api/videos/-/-Comedy/-Entertainment/?vq=bench+press
|
114
|
+
assert_equal "http://gdata.youtube.com/feeds/api/videos/-/-Comedy/-Entertainment/?max-results=10&vq=bench+press", request.url
|
115
115
|
end
|
116
116
|
|
117
117
|
# -- User Queries ---------------------------------------------------------------------------------
|
@@ -121,8 +121,18 @@ class TestVideoSearch < Test::Unit::TestCase
|
|
121
121
|
assert_equal "http://gdata.youtube.com/feeds/api/users/liz/uploads", request.url
|
122
122
|
end
|
123
123
|
|
124
|
+
def test_should_build_url_for_videos_by_user_paginate_and_order
|
125
|
+
request = YouTubeG::Request::UserSearch.new(:user => 'liz', :offset => 20, :max_results => 10, :order_by => 'published')
|
126
|
+
assert_equal "http://gdata.youtube.com/feeds/api/users/liz/uploads?max-results=10&orderby=published&start-index=20", request.url
|
127
|
+
end
|
128
|
+
|
124
129
|
def test_should_build_url_for_favorite_videos_by_user
|
125
130
|
request = YouTubeG::Request::UserSearch.new(:favorites, :user => 'liz')
|
126
131
|
assert_equal "http://gdata.youtube.com/feeds/api/users/liz/favorites", request.url
|
127
132
|
end
|
133
|
+
|
134
|
+
def test_should_build_url_for_favorite_videos_by_user_paginate
|
135
|
+
request = YouTubeG::Request::UserSearch.new(:favorites, :user => 'liz', :offset => 20, :max_results => 10)
|
136
|
+
assert_equal "http://gdata.youtube.com/feeds/api/users/liz/favorites?max-results=10&start-index=20", request.url
|
137
|
+
end
|
128
138
|
end
|
data/youtube-g.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'youtube-g'
|
3
|
-
s.version = '0.
|
4
|
-
s.date = '
|
3
|
+
s.version = '0.5.0'
|
4
|
+
s.date = '2009-01-07'
|
5
5
|
s.summary = 'An object-oriented Ruby wrapper for the YouTube GData API'
|
6
6
|
s.email = "ruby-youtube-library@googlegroups.com"
|
7
7
|
s.homepage = "http://youtube-g.rubyforge.org/"
|
@@ -12,32 +12,33 @@ spec = Gem::Specification.new do |s|
|
|
12
12
|
# ruby -rpp -e "pp Dir['**/*.*'].map"
|
13
13
|
s.files = [
|
14
14
|
"History.txt",
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
15
|
+
"lib/youtube_g/client.rb",
|
16
|
+
"lib/youtube_g/logger.rb",
|
17
|
+
"lib/youtube_g/model/author.rb",
|
18
|
+
"lib/youtube_g/model/category.rb",
|
19
|
+
"lib/youtube_g/model/contact.rb",
|
20
|
+
"lib/youtube_g/model/content.rb",
|
21
|
+
"lib/youtube_g/model/playlist.rb",
|
22
|
+
"lib/youtube_g/model/rating.rb",
|
23
|
+
"lib/youtube_g/model/thumbnail.rb",
|
24
|
+
"lib/youtube_g/model/user.rb",
|
25
|
+
"lib/youtube_g/model/video.rb",
|
26
|
+
"lib/youtube_g/parser.rb",
|
27
|
+
"lib/youtube_g/record.rb",
|
28
|
+
"lib/youtube_g/request/base_search.rb",
|
29
|
+
"lib/youtube_g/request/standard_search.rb",
|
30
|
+
"lib/youtube_g/request/user_search.rb",
|
31
|
+
"lib/youtube_g/request/video_search.rb",
|
32
|
+
"lib/youtube_g/request/video_upload.rb",
|
33
|
+
"lib/youtube_g/response/video_search.rb",
|
34
|
+
"lib/youtube_g.rb",
|
35
|
+
"Manifest.txt",
|
36
|
+
"README.txt",
|
37
|
+
"test/test_client.rb",
|
38
|
+
"test/test_video.rb",
|
39
|
+
"test/test_video_search.rb",
|
40
|
+
"TODO.txt",
|
41
|
+
"youtube-g.gemspec"
|
41
42
|
]
|
42
43
|
|
43
44
|
s.test_files = [
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tmm1-youtube-g
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane Vitarana
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date:
|
15
|
+
date: 2009-01-07 00:00:00 -08:00
|
16
16
|
default_executable:
|
17
17
|
dependencies: []
|
18
18
|
|
@@ -27,8 +27,6 @@ extra_rdoc_files:
|
|
27
27
|
- README.txt
|
28
28
|
files:
|
29
29
|
- History.txt
|
30
|
-
- README.txt
|
31
|
-
- TODO.txt
|
32
30
|
- lib/youtube_g/client.rb
|
33
31
|
- lib/youtube_g/logger.rb
|
34
32
|
- lib/youtube_g/model/author.rb
|
@@ -49,9 +47,12 @@ files:
|
|
49
47
|
- lib/youtube_g/request/video_upload.rb
|
50
48
|
- lib/youtube_g/response/video_search.rb
|
51
49
|
- lib/youtube_g.rb
|
50
|
+
- Manifest.txt
|
51
|
+
- README.txt
|
52
52
|
- test/test_client.rb
|
53
53
|
- test/test_video.rb
|
54
54
|
- test/test_video_search.rb
|
55
|
+
- TODO.txt
|
55
56
|
- youtube-g.gemspec
|
56
57
|
has_rdoc: true
|
57
58
|
homepage: http://youtube-g.rubyforge.org/
|