tiegz-ruby-mtv 1.1 → 1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +8 -0
- data/TODO +1 -2
- data/lib/mtv/artist.rb +72 -18
- data/lib/mtv/base.rb +1 -1
- data/lib/mtv/video.rb +87 -16
- data/ruby-mtv.gemspec +17 -3
- data/test/fixtures/artist_find_beck.xml +31 -0
- data/test/fixtures/artist_find_some_fake_name.xml +17 -0
- data/test/fixtures/artist_related_beck.xml +55 -0
- data/test/fixtures/artist_search_alexanderthegreat.xml +13 -0
- data/test/fixtures/artist_search_beck.xml +45 -0
- data/test/fixtures/artist_videos_beck.xml +158 -0
- data/test/fixtures/video_find_foobar.xml +2 -0
- data/test/fixtures/video_find_hznHivqrbHHDGDZX.xml +51 -0
- data/test/fixtures/video_from_artist_dinosaur_jr.xml +140 -0
- data/test/fixtures/video_search_somelongcrazynameforavideo.xml +13 -0
- data/test/fixtures/video_search_video_killed_the_radio_star.xml +91 -0
- data/test/test_helper.rb +29 -0
- data/test/unit/artist_test.rb +53 -0
- data/test/unit/base_test.rb +16 -0
- data/test/unit/video_test.rb +53 -0
- metadata +18 -4
data/Rakefile
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
+
require 'rake/testtask'
|
3
4
|
require 'rake/gempackagetask'
|
4
5
|
|
6
|
+
desc 'Run all tests by default'
|
7
|
+
task :default => :test
|
5
8
|
|
9
|
+
task :test do
|
10
|
+
Dir['test/**/*_test.rb'].all? do |file|
|
11
|
+
system("export DEBUG=true && ruby -Itest #{file}")
|
12
|
+
end or raise "Failures"
|
13
|
+
end
|
data/TODO
CHANGED
data/lib/mtv/artist.rb
CHANGED
@@ -6,16 +6,29 @@ module MTV
|
|
6
6
|
#-----------------
|
7
7
|
# Class Methods
|
8
8
|
#-----------------
|
9
|
+
|
9
10
|
class << self
|
10
|
-
#
|
11
|
+
# Browse all artists by a single letter.
|
12
|
+
#
|
13
|
+
# ==== Examples
|
14
|
+
#
|
15
|
+
# MTV::Artist.browse('x')
|
16
|
+
# > [#<MTV::Artist name: "X">, #<MTV::Artist name: "X-Clan">, #<MTV::Artist name: "The X-Ecutioners">, ... ]
|
11
17
|
def browse(letter='a')
|
12
18
|
response = request "artist/browse/#{letter.to_s.first}/"
|
13
19
|
raise Error, "That artist not found!" if response.nil? || response.empty?
|
14
20
|
parse_many response
|
15
21
|
end
|
16
|
-
|
17
|
-
#
|
18
|
-
#
|
22
|
+
|
23
|
+
# Find an artist by their specific name. The name will be sanitized for the url, for example
|
24
|
+
# 'Dinosaur Jr.' becomes 'dinosaur_jr'.
|
25
|
+
#
|
26
|
+
# ==== Examples
|
27
|
+
#
|
28
|
+
# MTV::Artist.find('beck')
|
29
|
+
# > #<MTV::Artist name: "Beck">
|
30
|
+
# MTV::Artist.find('meGADeath')
|
31
|
+
# > #<MTV::Artist name: "Megadeath">
|
19
32
|
def find(name, options={})
|
20
33
|
return name if name.is_a? Artist
|
21
34
|
|
@@ -26,9 +39,13 @@ module MTV
|
|
26
39
|
raise Error, "That artist not found!" if response.nil? || response.empty?
|
27
40
|
parse_one response
|
28
41
|
end
|
29
|
-
|
30
|
-
#
|
31
|
-
#
|
42
|
+
|
43
|
+
# Finds any related artists, given an artist or artist name.
|
44
|
+
#
|
45
|
+
# ==== Examples
|
46
|
+
#
|
47
|
+
# MTV::Artist.related('Q Tip')
|
48
|
+
# > [#<MTV::Artist name: "Allure">, #<MTV::Artist name: "Beastie Boys">, #<MTV::Artist name: "Busta Rhymes">, ... ]
|
32
49
|
def related(artist)
|
33
50
|
artist = find(artist)
|
34
51
|
response = request "artist/#{artist.uid}/related/"
|
@@ -36,7 +53,17 @@ module MTV
|
|
36
53
|
parse_many response
|
37
54
|
end
|
38
55
|
|
39
|
-
#
|
56
|
+
# Search all artists.
|
57
|
+
#
|
58
|
+
# ==== Attributes
|
59
|
+
#
|
60
|
+
# * +term+ - The search term to find an artist
|
61
|
+
# * +options+ - <tt>:max_results</tt> and/or <tt>:start_index</tt> for pagination.
|
62
|
+
#
|
63
|
+
# ==== Examples
|
64
|
+
#
|
65
|
+
# MTV::Artist.search('Beck', :max_results => 1, :start_index => 1)
|
66
|
+
# > [#<MTV::Artist name: "Beck">]
|
40
67
|
def search(term=nil, options={})
|
41
68
|
options.symbolize_keys!
|
42
69
|
params = {}
|
@@ -49,13 +76,19 @@ module MTV
|
|
49
76
|
parse_many response
|
50
77
|
end
|
51
78
|
|
52
|
-
# MTV::
|
79
|
+
# Returns a list of MTV::Video instances that are by the given artist.
|
80
|
+
#
|
81
|
+
# ==== Examples
|
82
|
+
#
|
83
|
+
# MTV::Artist.videos('buggles')
|
84
|
+
# > [#<MTV::Video title: "Video Killed The Radio Star", artist_uri: "http://api.mtvnservices.com/1/artist/buggles/">]
|
53
85
|
def videos(artist)
|
54
86
|
MTV::Video.from_artist(artist)
|
55
87
|
end
|
56
88
|
|
57
89
|
protected
|
58
|
-
|
90
|
+
# Parses a response xml string for artists.
|
91
|
+
def parse_many(body) # :nodoc:
|
59
92
|
entries = XmlSimple.xml_in(body)['entry']
|
60
93
|
raise Error, "That artist not found!" if entries.nil?
|
61
94
|
entries = [entries] unless entries.is_a? Array
|
@@ -64,9 +97,11 @@ module MTV
|
|
64
97
|
}.reject { |artist| MTV::Artist.name.nil? || MTV::Artist.name.empty? }
|
65
98
|
end
|
66
99
|
|
67
|
-
|
100
|
+
# Parses a response xml string for an artist.
|
101
|
+
def parse_one(body) # :nodoc:
|
68
102
|
entry = XmlSimple.xml_in(body)
|
69
|
-
|
103
|
+
name = entry['author'].first['name'].first
|
104
|
+
raise Error, "That artist not found!" if name.nil? || name.empty?
|
70
105
|
instantiate entry
|
71
106
|
end
|
72
107
|
|
@@ -81,6 +116,12 @@ module MTV
|
|
81
116
|
#-----------------
|
82
117
|
# Instance Methods
|
83
118
|
#-----------------
|
119
|
+
|
120
|
+
# Creates a new artist, setting all the given hash keys as attributes.
|
121
|
+
#
|
122
|
+
# ==== Attributes
|
123
|
+
#
|
124
|
+
# * +options+ - Possible attributes are <tt>name</tt>, <tt>uid</tt>, <tt>uri</tt>, <tt>links</tt>, <tt>updated</tt>
|
84
125
|
def initialize(values={})
|
85
126
|
super(values)
|
86
127
|
self.uid = uri.gsub(self.class.base_url + "/artist", '').delete '/' unless @uri.nil?
|
@@ -91,20 +132,33 @@ module MTV
|
|
91
132
|
"#<#{self.class} #{attrs}>"
|
92
133
|
end
|
93
134
|
|
94
|
-
#
|
95
|
-
#
|
135
|
+
# Searches for artists with the same first letter.
|
136
|
+
#
|
137
|
+
# ==== Examples
|
138
|
+
#
|
139
|
+
# MTV::Artist.find('Sonic Youth').browse
|
140
|
+
# > [#<MTV::Artist name: "The S.O.U.L. S.Y.S.T.E.M.">, #<MTV::Artist name: "S.T.U.N."> ... ]
|
96
141
|
def browse
|
97
142
|
@browse ||= Artist.browse(uid.first)
|
98
143
|
end
|
99
144
|
|
100
|
-
#
|
101
|
-
#
|
145
|
+
# Searchs for related artists.
|
146
|
+
#
|
147
|
+
# ==== Examples
|
148
|
+
#
|
149
|
+
# MTV::Artist.find('Sonic Youth').related
|
150
|
+
# > [#<MTV::Artist name: "Beck">, #<MTV::Artist name: "Big Black">, #<MTV::Artist name: "Blonde Redhead"> ... ]
|
102
151
|
def related
|
103
152
|
@related ||= Artist.related(self)
|
104
153
|
end
|
105
154
|
|
106
|
-
|
107
|
-
# MTV::
|
155
|
+
|
156
|
+
# Returns all <tt>MTV::Video</tt>s for this artist.
|
157
|
+
#
|
158
|
+
# ==== Examples
|
159
|
+
#
|
160
|
+
# MTV::Artist.find('Sonic Youth').videos
|
161
|
+
# > [#<MTV::Video title: "Incinerate", artist_uri: "http://api.mtvnservices.com/1/artist/sonic_youth/"> ... ]
|
108
162
|
def videos
|
109
163
|
@videos ||= Video.from_artist(self)
|
110
164
|
end
|
data/lib/mtv/base.rb
CHANGED
@@ -21,7 +21,7 @@ module MTV
|
|
21
21
|
protected
|
22
22
|
# assuming that the uid for the artist is downcase and no spaces, this tries to match better
|
23
23
|
def string_to_uid(str)
|
24
|
-
str.downcase.underscore.gsub(" ", "_")
|
24
|
+
str.downcase.underscore.gsub(" ", "_").gsub(".", "")
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
data/lib/mtv/video.rb
CHANGED
@@ -10,8 +10,15 @@ module MTV
|
|
10
10
|
#-----------------
|
11
11
|
# Class Methods
|
12
12
|
#-----------------
|
13
|
+
|
13
14
|
class << self
|
14
|
-
# MTV::
|
15
|
+
# Finds a video based on its unique id. It is unlike the intuitive <tt>MTV::Artist.uid</tt>, so
|
16
|
+
# you usually have to find a video's uid first through a search or through the artist.
|
17
|
+
#
|
18
|
+
# ==== Examples
|
19
|
+
#
|
20
|
+
# MTV::Video.find 'hznHivqrbHHDGDAW'
|
21
|
+
# > #<MTV::Video title: "Loser", artist_uri: "http://api.mtvnservices.com/1/artist/beck/">
|
15
22
|
def find(uid, options={})
|
16
23
|
return uid if uid.is_a? Artist
|
17
24
|
|
@@ -19,22 +26,38 @@ module MTV
|
|
19
26
|
uid = options[:uid] || uid
|
20
27
|
|
21
28
|
response = request "video/#{uid}/"
|
29
|
+
response = hack_empty_response_case(response)
|
22
30
|
raise Error, "That video not found!" if response.nil? || response.empty?
|
23
31
|
parse_one response
|
24
32
|
end
|
25
33
|
|
26
|
-
#
|
27
|
-
#
|
34
|
+
# Finds all videos from a given artist or artist name.
|
35
|
+
#
|
36
|
+
# ==== Examples
|
37
|
+
#
|
38
|
+
# MTV::Video.from_artist(MTV::Artist.find('beck'))
|
39
|
+
# > #<MTV::Video title: "Gamma Ray", artist_uri: "http://api.mtvnservices.com/1/artist/beck/"> ... ]
|
40
|
+
# MTV::Video.from_artist('beck')
|
41
|
+
# > #<MTV::Video title: "Gamma Ray", artist_uri: "http://api.mtvnservices.com/1/artist/beck/"> ... ]
|
28
42
|
def from_artist(artist)
|
29
43
|
artist_uid = artist.is_a?(Artist) ? artist.uid : string_to_uid(artist)
|
30
44
|
|
31
|
-
response = request "artist/#{artist_uid}/videos"
|
45
|
+
response = request "artist/#{artist_uid}/videos/"
|
32
46
|
raise Error, "No videos found!" if response.nil? || response.empty?
|
33
47
|
parse_many response
|
34
48
|
end
|
35
49
|
|
36
|
-
#
|
37
|
-
#
|
50
|
+
# Returns an array of videos that match a given search term.
|
51
|
+
#
|
52
|
+
# ==== Attributes
|
53
|
+
#
|
54
|
+
# * +term+ - The search term to find a video
|
55
|
+
# * +options+ - <tt>:max_results</tt> and/or <tt>:start_index</tt> for pagination.
|
56
|
+
#
|
57
|
+
# ==== Examples
|
58
|
+
#
|
59
|
+
# MTV::Video.search 'the golden age', :max_results => 1, :start_index => 1
|
60
|
+
# > [#<MTV::Video title: "The Golden Age", artist_uri: "http://api.mtvnservices.com/1/artist/beck/">]
|
38
61
|
def search(term=nil, options={})
|
39
62
|
options.symbolize_keys!
|
40
63
|
params = { :'max-results' => (options[:max_results] || 1),
|
@@ -48,9 +71,11 @@ module MTV
|
|
48
71
|
end
|
49
72
|
|
50
73
|
protected
|
51
|
-
|
74
|
+
# Parses a response xml string for videos.
|
75
|
+
def parse_many(body) # :nodoc:
|
52
76
|
body = hack_media_enclosures(body)
|
53
77
|
entries = XmlSimple.xml_in(body)['entry']
|
78
|
+
raise Error, "That video not found!" if entries.nil?
|
54
79
|
entries = [entries] unless entries.is_a? Array
|
55
80
|
entries.reject! { |entry| entry.nil? }
|
56
81
|
entries.map { |entry|
|
@@ -58,16 +83,25 @@ module MTV
|
|
58
83
|
}
|
59
84
|
end
|
60
85
|
|
61
|
-
|
86
|
+
# Parses a response xml string for a video.
|
87
|
+
def parse_one(body) # :nodoc:
|
62
88
|
body = hack_media_enclosures(body)
|
63
89
|
entry = XmlSimple.xml_in(body)
|
64
|
-
|
90
|
+
artist_name = entry['author'].first['name'].first
|
91
|
+
raise Error, "That video not found!" if artist_name.nil? || artist_name.empty?
|
65
92
|
instantiate entry
|
66
93
|
end
|
67
94
|
|
95
|
+
# HACK the 'video not found' response is just an xml processing instruction, which kills
|
96
|
+
# XMLSimple, so let's delete it for now and return empty string.
|
97
|
+
# TODO keep eye out for new MTV error responses
|
98
|
+
def hack_empty_response_case(response) # :nodoc:
|
99
|
+
response.strip.gsub('<?xml version="1.0" encoding="iso-8859-1"?>', '').empty? ? "" : response
|
100
|
+
end
|
101
|
+
|
68
102
|
# HACK because XmlSimple doesn't seem to handle enclosures, we'll replace colons with hyphens
|
69
103
|
# TODO write a better regexp for that hack :\
|
70
|
-
def hack_media_enclosures(body)
|
104
|
+
def hack_media_enclosures(body) # :nodoc:
|
71
105
|
body.gsub("<media:", "<media_").gsub("</media:", "</media_")
|
72
106
|
end
|
73
107
|
|
@@ -75,7 +109,7 @@ module MTV
|
|
75
109
|
Video.new(:title => entry['title'].to_s,
|
76
110
|
:artist_uri => entry['author'].first['uri'].to_s,
|
77
111
|
:artist_name => entry['author'].first['name'].to_s,
|
78
|
-
:published => entry['published'].to_s,
|
112
|
+
:published => entry['published'].first.to_s,
|
79
113
|
:content => entry['content'], # Artist Name, Video Title, and Record Label
|
80
114
|
:uri => entry['link'].select { |link| link['rel'].to_s == 'self' }.first['href'].to_s,
|
81
115
|
:updated => (entry['updated'].to_s.to_datetime rescue nil),
|
@@ -87,7 +121,7 @@ module MTV
|
|
87
121
|
:media_keywords => entry['media_keywords'].to_s,
|
88
122
|
:media_medium => entry['media_content'].first['medium'].to_s,
|
89
123
|
:media_player_url => entry['media_player'].first['url'].to_s,
|
90
|
-
:
|
124
|
+
:thumbnails => entry['media_thumbnail'],
|
91
125
|
:media_title => entry['media_title'].to_s,
|
92
126
|
:media_type => entry['media_content'].first['type'].to_s,
|
93
127
|
:media_url => entry['media_content'].first['url'].to_s)
|
@@ -97,18 +131,44 @@ module MTV
|
|
97
131
|
#-----------------
|
98
132
|
# Instance Methods
|
99
133
|
#-----------------
|
134
|
+
|
135
|
+
# Creates a new video, setting all the given hash keys as attributes.
|
136
|
+
#
|
137
|
+
# ==== Attributes
|
138
|
+
#
|
139
|
+
# * +options+ - Possible attributes are <tt>title</tt>, <tt>artist_uri</tt>, <tt>artist_name</tt>,
|
140
|
+
# <tt>published</tt>, <tt>content</tt>, <tt>uri</tt>, <tt>updated</tt>, <tt>media_category</tt>,
|
141
|
+
# <tt>media_credits</tt>, <tt>media_description</tt>, <tt>media_duration</tt>, <tt>media_expression</tt>,
|
142
|
+
# <tt>media_keywords</tt>, <tt>media_medium</tt>, <tt>media_player_url</tt>, <tt>media_thumbnails</tt>,
|
143
|
+
# <tt>media_title</tt>, <tt>media_type</tt>, <tt>media_url</tt>
|
100
144
|
def initialize(values={})
|
101
145
|
super(values)
|
102
146
|
self.uid = uri.gsub(self.class.base_url + "/video", '').delete '/' unless @uid
|
103
147
|
self.vid = media_url.split(':').last
|
104
148
|
end
|
105
149
|
|
106
|
-
#
|
150
|
+
# Returns the artist object for the video.
|
151
|
+
#
|
152
|
+
# ==== Examples
|
153
|
+
#
|
154
|
+
# MTV::Video.search('mellow gold').first.artist
|
155
|
+
# > #<MTV::Artist name: "Beck">
|
107
156
|
def artist
|
108
157
|
@artist ||= Artist.find(artist_uri.gsub(self.class.base_url + "/artist", '').delete('/'))
|
109
158
|
end
|
110
159
|
|
111
|
-
# HTML to embed the Flash player for this video
|
160
|
+
# Returns HTML to embed the Flash player for this video anywhere
|
161
|
+
#
|
162
|
+
# ==== Attributes
|
163
|
+
#
|
164
|
+
# * +options+ - Takes a combination of <tt>width</tt> and/or <tt>height</tt> for the Flash player
|
165
|
+
# to specify a certain size (if one is given, the ratio will be calculated for the other value)
|
166
|
+
#
|
167
|
+
# ==== Examples
|
168
|
+
#
|
169
|
+
# MTV::Video.search('mellow gold').first.embed_code
|
170
|
+
# MTV::Video.search('mellow gold').first.embed_code(:width => 100)
|
171
|
+
# MTV::Video.search('mellow gold').first.embed_code(:width => 57, :height => 943)
|
112
172
|
def embed_code(options={})
|
113
173
|
options[:width] ||= (options[:height] ? ((options[:height]*448).to_f/366).to_i : 448)
|
114
174
|
options[:height] ||= (options[:width]==448 ? 366 : ((options[:width]*366).to_f/448).to_i)
|
@@ -123,8 +183,19 @@ module MTV
|
|
123
183
|
attrs = [:title, :artist_uri].map { |name| "#{name}: #{attribute_for_inspect(name)}" }.compact.join(", ")
|
124
184
|
"#<#{self.class} #{attrs}>"
|
125
185
|
end
|
126
|
-
|
127
|
-
|
186
|
+
|
187
|
+
# Returns an array of thumbnails for this video.
|
188
|
+
#
|
189
|
+
# ==== Examples
|
190
|
+
#
|
191
|
+
# MTV::Video.search('mellow gold').first.thumbnails
|
192
|
+
# > [#<MTV::Thumbnail:0x184e274 @width="70", @height="53", @url="http://www.mtv.com/shared/promoimages/bands/b/beck/video_stills/loser/loser_70x53.jpg"> ... ]
|
193
|
+
def thumbnails
|
194
|
+
@thumbnails
|
195
|
+
end
|
196
|
+
|
197
|
+
# Parses the video thumbnails and sets them into an array.
|
198
|
+
def thumbnails=(val) # :nodoc:
|
128
199
|
@thumbnails = (val.is_a?(Array) ? val : [val]).map { |t| Thumbnail.new(t['url'], t['width'], t['height']) unless t.nil? }
|
129
200
|
end
|
130
201
|
end
|
data/ruby-mtv.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "ruby-mtv"
|
3
|
-
s.version = "1.
|
3
|
+
s.version = "1.2"
|
4
4
|
s.date = "2008-10-27"
|
5
5
|
s.summary = "Ruby wrapper library for MTV api"
|
6
|
-
s.email = "
|
6
|
+
s.email = "tieg.zaharia+github@gmail.com"
|
7
7
|
s.homepage = "http://github.com/tiegz/ruby-mtv"
|
8
8
|
s.description = "ruby-mtv is a Ruby library for accessing Artist and Video objects through the MTVN api."
|
9
9
|
s.has_rdoc = true
|
@@ -18,7 +18,21 @@ Gem::Specification.new do |s|
|
|
18
18
|
"lib/mtv/base.rb",
|
19
19
|
"lib/mtv/thumbnail.rb",
|
20
20
|
"lib/mtv/video.rb"]
|
21
|
-
s.test_files = [
|
21
|
+
s.test_files = ["test/test_helper.rb",
|
22
|
+
"test/unit/artist_test.rb",
|
23
|
+
"test/unit/base_test.rb",
|
24
|
+
"test/unit/video_test.rb",
|
25
|
+
"test/fixtures/artist_find_beck.xml",
|
26
|
+
"test/fixtures/artist_find_some_fake_name.xml",
|
27
|
+
"test/fixtures/artist_related_beck.xml",
|
28
|
+
"test/fixtures/artist_search_alexanderthegreat.xml",
|
29
|
+
"test/fixtures/artist_search_beck.xml",
|
30
|
+
"test/fixtures/artist_videos_beck.xml",
|
31
|
+
"test/fixtures/video_find_foobar.xml",
|
32
|
+
"test/fixtures/video_find_hznHivqrbHHDGDZX.xml",
|
33
|
+
"test/fixtures/video_from_artist_dinosaur_jr.xml",
|
34
|
+
"test/fixtures/video_search_somelongcrazynameforavideo.xml",
|
35
|
+
"test/fixtures/video_search_video_killed_the_radio_star.xml"]
|
22
36
|
s.rdoc_options = ["--main", "README"]
|
23
37
|
s.extra_rdoc_files = ["README"]
|
24
38
|
s.add_dependency("active-support", ["> 2.0.2"])
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
|
4
|
+
<id>http://api.mtvnservices.com/1/artist/beck/</id>
|
5
|
+
<updated>2008-10-27T16:16:25.207-04:00</updated>
|
6
|
+
<title>Beck</title>
|
7
|
+
<author>
|
8
|
+
<name>Beck</name>
|
9
|
+
<uri>http://api.mtvnservices.com/1/artist/beck/</uri>
|
10
|
+
</author>
|
11
|
+
<link rel="self" type="application/atom+xml"
|
12
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
13
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/videos"
|
14
|
+
type="application/atom+xml"
|
15
|
+
href="http://api.mtvnservices.com/1/artist/beck/videos/"/>
|
16
|
+
|
17
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/related"
|
18
|
+
type="application/atom+xml"
|
19
|
+
href="http://api.mtvnservices.com/1/artist/beck/related/"/>
|
20
|
+
<content/>
|
21
|
+
<media:thumbnail url="http://www.mtv.com/shared/media/images/artist/b/beck/az_official/376x180.jpg"
|
22
|
+
height="180"
|
23
|
+
width="376"/>
|
24
|
+
<media:thumbnail url="http://www.mtv.com/shared/media/images/artist/b/beck/dms/288x162.jpg"
|
25
|
+
height="162"
|
26
|
+
width="288"/>
|
27
|
+
<media:thumbnail url="http://www.mtv.com/shared/media/images/artist/b/beck/dms/92x52.jpg"
|
28
|
+
height="52"
|
29
|
+
width="92"/>
|
30
|
+
</entry>
|
31
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
|
4
|
+
<id>http://api.mtvnservices.com/1/artist/</id>
|
5
|
+
<updated>2008-10-27T16:01:47.351-04:00</updated>
|
6
|
+
<title/>
|
7
|
+
<author>
|
8
|
+
<name/>
|
9
|
+
<uri>http://api.mtvnservices.com/1/artist/</uri>
|
10
|
+
</author>
|
11
|
+
<link rel="self" type="application/atom+xml"
|
12
|
+
href="http://api.mtvnservices.com/1/artist/"/>
|
13
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/related"
|
14
|
+
type="application/atom+xml"
|
15
|
+
href="http://api.mtvnservices.com/1/artist/related/"/>
|
16
|
+
<content/>
|
17
|
+
</entry>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<feed xmlns:media="http://search.yahoo.com/mrss/"
|
4
|
+
xmlns:atom="http://www.w3.org/2005/Atom"
|
5
|
+
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
|
6
|
+
xmlns="http://www.w3.org/2005/Atom">
|
7
|
+
<id>http://api.mtvnservices.com/1/artist/beck/related/</id>
|
8
|
+
<updated>2008-10-27T16:16:43.335-04:00</updated>
|
9
|
+
<title>Beck Related Artists</title>
|
10
|
+
<author>
|
11
|
+
<name>MTV Networks Content API</name>
|
12
|
+
<uri>http://api.mtvnservices.com/1/</uri>
|
13
|
+
</author>
|
14
|
+
<link rel="self" type="application/atom+xml"
|
15
|
+
href="http://api.mtvnservices.com/1/artist/beck/related/"/>
|
16
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
17
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
18
|
+
|
19
|
+
<link rel="related" type="application/atom+xml"
|
20
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
21
|
+
<entry>
|
22
|
+
<id>http://api.mtvnservices.com/1/artist/</id>
|
23
|
+
<updated>2008-10-27T16:16:43.335-04:00</updated>
|
24
|
+
<title/>
|
25
|
+
<author>
|
26
|
+
<name/>
|
27
|
+
<uri>http://api.mtvnservices.com/1/artist/</uri>
|
28
|
+
</author>
|
29
|
+
<link rel="self" type="application/atom+xml"
|
30
|
+
href="http://api.mtvnservices.com/1/artist/"/>
|
31
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/related"
|
32
|
+
type="application/atom+xml"
|
33
|
+
href="http://api.mtvnservices.com/1/artist/related/"/>
|
34
|
+
<content/>
|
35
|
+
</entry>
|
36
|
+
<entry>
|
37
|
+
|
38
|
+
<id>http://api.mtvnservices.com/1/artist/air/</id>
|
39
|
+
<updated>2008-10-27T16:16:43.335-04:00</updated>
|
40
|
+
<title>Air</title>
|
41
|
+
<author>
|
42
|
+
<name>Air</name>
|
43
|
+
<uri>http://api.mtvnservices.com/1/artist/air/</uri>
|
44
|
+
</author>
|
45
|
+
<link rel="self" type="application/atom+xml"
|
46
|
+
href="http://api.mtvnservices.com/1/artist/air/"/>
|
47
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/videos"
|
48
|
+
type="application/atom+xml"
|
49
|
+
href="http://api.mtvnservices.com/1/artist/air/videos/"/>
|
50
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/related"
|
51
|
+
type="application/atom+xml"
|
52
|
+
href="http://api.mtvnservices.com/1/artist/air/related/"/>
|
53
|
+
<content/>
|
54
|
+
</entry>
|
55
|
+
</feed>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<feed xmlns:media="http://search.yahoo.com/mrss/"
|
4
|
+
xmlns:atom="http://www.w3.org/2005/Atom"
|
5
|
+
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
|
6
|
+
xmlns="http://www.w3.org/2005/Atom">
|
7
|
+
<id>http://api.mtvnservices.com/1/artist/search/</id>
|
8
|
+
<updated>2008-10-27T16:46:02.635-04:00</updated>
|
9
|
+
<title>MTVN Content API artist search for "alexanderthegreat"</title>
|
10
|
+
<link rel="self" type="application/atom+xml"
|
11
|
+
href="http://api.mtvnservices.com/1/artist/search/?term=alexanderthegreat"/>
|
12
|
+
</feed>
|
13
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<feed xmlns:media="http://search.yahoo.com/mrss/"
|
4
|
+
xmlns:atom="http://www.w3.org/2005/Atom"
|
5
|
+
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
|
6
|
+
xmlns="http://www.w3.org/2005/Atom">
|
7
|
+
<id>http://api.mtvnservices.com/1/artist/search/</id>
|
8
|
+
<updated>2008-10-27T16:35:22.569-04:00</updated>
|
9
|
+
<title>MTVN Content API artist search for "beck"</title>
|
10
|
+
<link rel="self" type="application/atom+xml"
|
11
|
+
href="http://api.mtvnservices.com/1/artist/search/?term=beck"/>
|
12
|
+
<entry>
|
13
|
+
<id>http://api.mtvnservices.com/1/artist/beck/</id>
|
14
|
+
<updated>2008-10-27T16:35:22.569-04:00</updated>
|
15
|
+
<title>Beck</title>
|
16
|
+
|
17
|
+
<author>
|
18
|
+
<name>Beck</name>
|
19
|
+
<uri>http://api.mtvnservices.com/1/artist/beck/</uri>
|
20
|
+
</author>
|
21
|
+
<link rel="self" type="application/atom+xml"
|
22
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
23
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/related"
|
24
|
+
type="application/atom+xml"
|
25
|
+
href="http://api.mtvnservices.com/1/artist/beck/related/"/>
|
26
|
+
<content/>
|
27
|
+
</entry>
|
28
|
+
<entry>
|
29
|
+
<id>http://api.mtvnservices.com/1/artist/stephanie_beck_williams/</id>
|
30
|
+
<updated>2008-10-27T16:35:22.569-04:00</updated>
|
31
|
+
<title>Stephanie Beck Williams</title>
|
32
|
+
|
33
|
+
<author>
|
34
|
+
<name>Stephanie Beck Williams</name>
|
35
|
+
<uri>http://api.mtvnservices.com/1/artist/stephanie_beck_williams/</uri>
|
36
|
+
</author>
|
37
|
+
<link rel="self" type="application/atom+xml"
|
38
|
+
href="http://api.mtvnservices.com/1/artist/stephanie_beck_williams/"/>
|
39
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist/related"
|
40
|
+
type="application/atom+xml"
|
41
|
+
href="http://api.mtvnservices.com/1/artist/stephanie_beck_williams/related/"/>
|
42
|
+
<content/>
|
43
|
+
</entry>
|
44
|
+
</feed>
|
45
|
+
|
@@ -0,0 +1,158 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<feed xmlns:media="http://search.yahoo.com/mrss/"
|
4
|
+
xmlns:atom="http://www.w3.org/2005/Atom"
|
5
|
+
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
|
6
|
+
xmlns="http://www.w3.org/2005/Atom">
|
7
|
+
<id>http://api.mtvnservices.com/1/artist/beck/videos/</id>
|
8
|
+
<updated>2008-10-27T16:38:28.364-04:00</updated>
|
9
|
+
<title>Beck Videos</title>
|
10
|
+
<link rel="self" type="application/atom+xml"
|
11
|
+
href="http://api.mtvnservices.com/1/artist/beck/videos/"/>
|
12
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
13
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
14
|
+
<entry>
|
15
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHZSWADD/</id>
|
16
|
+
<published>2008-08-12T00:00:00.000-04:00</published>
|
17
|
+
<updated>2008-10-27T16:38:28.364-04:00</updated>
|
18
|
+
|
19
|
+
<title>Gamma Ray</title>
|
20
|
+
<content>Beck | Gamma Ray | Interscope</content>
|
21
|
+
<link rel="self" type="application/atom+xml"
|
22
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHZSWADD/"/>
|
23
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
24
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
25
|
+
<author>
|
26
|
+
<name>Beck</name>
|
27
|
+
<uri>http://api.mtvnservices.com/1/artist/beck/</uri>
|
28
|
+
</author>
|
29
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:265411"
|
30
|
+
duration="0"
|
31
|
+
type="application/x-shockwave-flash"
|
32
|
+
medium="video"
|
33
|
+
isDefault="true"
|
34
|
+
expression="full"/>
|
35
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=265411"/>
|
36
|
+
<media:title>Gamma Ray</media:title>
|
37
|
+
<media:description>Beck | Gamma Ray | Interscope</media:description>
|
38
|
+
|
39
|
+
<media:thumbnail url="http://www.vh1.com/shared/promoimages/bands/b/beck/gamma_ray/70x53.jpg"
|
40
|
+
height="53"
|
41
|
+
width="70"/>
|
42
|
+
<media:thumbnail url="http://www.vh1.com/shared/promoimages/bands/b/beck/gamma_ray/84x77.jpg"
|
43
|
+
height="77"
|
44
|
+
width="84"/>
|
45
|
+
<media:thumbnail url="http://www.vh1.com/shared/promoimages/bands/b/beck/gamma_ray/140x105.jpg"
|
46
|
+
height="105"
|
47
|
+
width="140"/>
|
48
|
+
<media:thumbnail url="http://www.vh1.com/shared/promoimages/bands/b/beck/gamma_ray/281x211.jpg"
|
49
|
+
height="211"
|
50
|
+
width="281"/>
|
51
|
+
<media:thumbnail url="http://www.vh1.com/shared/promoimages/bands/b/beck/gamma_ray/320x240.jpg"
|
52
|
+
height="240"
|
53
|
+
width="320"/>
|
54
|
+
<media:restriction type="country" relationship="allow">US </media:restriction>
|
55
|
+
<media:keywords><![CDATA[Beck, Gamma Ray, Modern Guilt, Autumn deWilde]]></media:keywords>
|
56
|
+
<media:credit role="director" scheme="urn:ebu">Autumn deWilde</media:credit>
|
57
|
+
<media:credit role="artist/performer" scheme="urn:ebu">Beck</media:credit>
|
58
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">3</media:category>
|
59
|
+
</entry>
|
60
|
+
<entry>
|
61
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHZSDZGW/</id>
|
62
|
+
|
63
|
+
<published>2008-07-28T00:00:00.000-04:00</published>
|
64
|
+
<updated>2008-10-27T16:38:28.364-04:00</updated>
|
65
|
+
<title>Orphans</title>
|
66
|
+
<content>Beck | Orphans | </content>
|
67
|
+
<link rel="self" type="application/atom+xml"
|
68
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHZSDZGW/"/>
|
69
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
70
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
71
|
+
<author>
|
72
|
+
<name>Beck</name>
|
73
|
+
<uri>http://api.mtvnservices.com/1/artist/beck/</uri>
|
74
|
+
</author>
|
75
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:261285"
|
76
|
+
duration="0"
|
77
|
+
type="application/x-shockwave-flash"
|
78
|
+
medium="video"
|
79
|
+
isDefault="true"
|
80
|
+
expression="full"/>
|
81
|
+
|
82
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=261285"/>
|
83
|
+
<media:title>Orphans</media:title>
|
84
|
+
<media:description>Beck | Orphans | </media:description>
|
85
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/b/beck/orphans/70x53.jpg"
|
86
|
+
height="53"
|
87
|
+
width="70"/>
|
88
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/b/beck/orphans/84x77.jpg"
|
89
|
+
height="77"
|
90
|
+
width="84"/>
|
91
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/b/beck/orphans/140x105.jpg"
|
92
|
+
height="105"
|
93
|
+
width="140"/>
|
94
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/b/beck/orphans/281x211.jpg"
|
95
|
+
height="211"
|
96
|
+
width="281"/>
|
97
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/b/beck/orphans/320x240.jpg"
|
98
|
+
height="240"
|
99
|
+
width="320"/>
|
100
|
+
<media:restriction type="country" relationship="allow">US </media:restriction>
|
101
|
+
<media:keywords><![CDATA[Beck,Orphans]]></media:keywords>
|
102
|
+
<media:credit role="director" scheme="urn:ebu"/>
|
103
|
+
<media:credit role="artist/performer" scheme="urn:ebu">Beck</media:credit>
|
104
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">6</media:category>
|
105
|
+
|
106
|
+
</entry>
|
107
|
+
<entry>
|
108
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHDDPSXZ/</id>
|
109
|
+
<published>2006-11-06T00:00:00.000-05:00</published>
|
110
|
+
<updated>2008-10-27T16:38:28.364-04:00</updated>
|
111
|
+
<title>Think I'm in Love</title>
|
112
|
+
<content>Beck | Think I'm in Love | Universal/Polydor</content>
|
113
|
+
<link rel="self" type="application/atom+xml"
|
114
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHDDPSXZ/"/>
|
115
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
116
|
+
href="http://api.mtvnservices.com/1/artist/beck/"/>
|
117
|
+
<author>
|
118
|
+
<name>Beck</name>
|
119
|
+
|
120
|
+
<uri>http://api.mtvnservices.com/1/artist/beck/</uri>
|
121
|
+
</author>
|
122
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:117632"
|
123
|
+
duration="0"
|
124
|
+
type="application/x-shockwave-flash"
|
125
|
+
medium="video"
|
126
|
+
isDefault="true"
|
127
|
+
expression="full"/>
|
128
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=117632"/>
|
129
|
+
<media:title>Think I'm in Love</media:title>
|
130
|
+
<media:description>Beck | Think I'm in Love | Universal/Polydor</media:description>
|
131
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/beck/thumbnails/Think_Im_In_Love70x53.jpg"
|
132
|
+
height="53"
|
133
|
+
width="70"/>
|
134
|
+
<media:thumbnail url="http://www.vh1la.com/bands/b/beck/think_im_in_love_82x55.jpg" height="55"
|
135
|
+
width="82"/>
|
136
|
+
<media:thumbnail url="http://www.vh1.com/sitewide/promoimages/artists/b/beck/v_spot/think_im_in_love/84x77.jpg"
|
137
|
+
height="77"
|
138
|
+
width="84"/>
|
139
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/beck/thumbnails/Think_Im_In_Love140x105.jpg"
|
140
|
+
height="105"
|
141
|
+
width="140"/>
|
142
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/beck/thumbnails/Think_Im_In_Love140x211.jpg"
|
143
|
+
height="211"
|
144
|
+
width="140"/>
|
145
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/beck/thumbnails/Think_Im_In_Love281x105.jpg"
|
146
|
+
height="105"
|
147
|
+
width="281"/>
|
148
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/beck/thumbnails/Think_Im_In_Love281x211.jpg"
|
149
|
+
height="211"
|
150
|
+
width="281"/>
|
151
|
+
<media:restriction type="country" relationship="allow">CA US </media:restriction>
|
152
|
+
|
153
|
+
<media:keywords><![CDATA[Beck, Think I'm in Love, Beck Hansen]]></media:keywords>
|
154
|
+
<media:credit role="director" scheme="urn:ebu">Beck Hansen</media:credit>
|
155
|
+
<media:credit role="artist/performer" scheme="urn:ebu">Beck</media:credit>
|
156
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">3</media:category>
|
157
|
+
</entry>
|
158
|
+
</feed>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
|
4
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHDGDZX/</id>
|
5
|
+
<published>2002-09-11T00:00:00.000-04:00</published>
|
6
|
+
<updated>2008-10-27T17:14:28.328-04:00</updated>
|
7
|
+
<title>Video Killed The Radio Star</title>
|
8
|
+
<content>The Buggles | Video Killed The Radio Star | Island Records</content>
|
9
|
+
<link rel="self" type="application/atom+xml"
|
10
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHDGDZX/"/>
|
11
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
12
|
+
href="http://api.mtvnservices.com/1/artist/buggles/"/>
|
13
|
+
<author>
|
14
|
+
<name>The Buggles</name>
|
15
|
+
|
16
|
+
<uri>http://api.mtvnservices.com/1/artist/buggles/</uri>
|
17
|
+
</author>
|
18
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:18123"
|
19
|
+
duration="210"
|
20
|
+
type="application/x-shockwave-flash"
|
21
|
+
medium="video"
|
22
|
+
isDefault="true"
|
23
|
+
expression="full"/>
|
24
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=18123"/>
|
25
|
+
<media:title>Video Killed The Radio Star</media:title>
|
26
|
+
<media:description>The Buggles | Video Killed The Radio Star | Island Records</media:description>
|
27
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_70x5.jpg"
|
28
|
+
height="53"
|
29
|
+
width="70"/>
|
30
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_82x5.jpg"
|
31
|
+
height="55"
|
32
|
+
width="82"/>
|
33
|
+
<media:thumbnail url="http://www.vh1.com/sitewide/promoimages/artists/b/buggles_the/vspot/video_killed_the_radio_star/84x77.jpg"
|
34
|
+
height="77"
|
35
|
+
width="84"/>
|
36
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_star.jpg"
|
37
|
+
height="105"
|
38
|
+
width="140"/>
|
39
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_281x.jpg"
|
40
|
+
height="211"
|
41
|
+
width="281"/>
|
42
|
+
<media:thumbnail url="http://www.vh1.com/sitewide/promoimages/artists/b/buggles_the/vspot/video_killed_the_radio_star/320x240.jpg"
|
43
|
+
height="240"
|
44
|
+
width="320"/>
|
45
|
+
<media:keywords><![CDATA[The Buggles, Video Killed The Radio Star]]></media:keywords>
|
46
|
+
<media:credit role="director" scheme="urn:ebu"/>
|
47
|
+
|
48
|
+
<media:credit role="artist/performer" scheme="urn:ebu">The Buggles</media:credit>
|
49
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">3</media:category>
|
50
|
+
</entry>
|
51
|
+
|
@@ -0,0 +1,140 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<feed xmlns:media="http://search.yahoo.com/mrss/"
|
4
|
+
xmlns:atom="http://www.w3.org/2005/Atom"
|
5
|
+
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
|
6
|
+
xmlns="http://www.w3.org/2005/Atom">
|
7
|
+
<id>http://api.mtvnservices.com/1/artist/dinosaur_jr/videos/</id>
|
8
|
+
<updated>2008-10-28T12:23:06.044-04:00</updated>
|
9
|
+
<title>Dinosaur Jr. Videos</title>
|
10
|
+
<link rel="self" type="application/atom+xml"
|
11
|
+
href="http://api.mtvnservices.com/1/artist/dinosaur_jr/videos/"/>
|
12
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
13
|
+
href="http://api.mtvnservices.com/1/artist/dinosaur_jr/"/>
|
14
|
+
<entry>
|
15
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHDAXBAZ/</id>
|
16
|
+
<published>2007-04-13T00:00:00.000-04:00</published>
|
17
|
+
<updated>2008-10-28T12:23:06.044-04:00</updated>
|
18
|
+
|
19
|
+
<title>Been There All the Time</title>
|
20
|
+
<content>Dinosaur Jr. | Been There All the Time | Fat Possum Records</content>
|
21
|
+
<link rel="self" type="application/atom+xml"
|
22
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHDAXBAZ/"/>
|
23
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
24
|
+
href="http://api.mtvnservices.com/1/artist/dinosaur_jr/"/>
|
25
|
+
<author>
|
26
|
+
<name>Dinosaur Jr.</name>
|
27
|
+
<uri>http://api.mtvnservices.com/1/artist/dinosaur_jr/</uri>
|
28
|
+
</author>
|
29
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:143042"
|
30
|
+
duration="250"
|
31
|
+
type="application/x-shockwave-flash"
|
32
|
+
medium="video"
|
33
|
+
isDefault="true"
|
34
|
+
expression="full"/>
|
35
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=143042"/>
|
36
|
+
<media:title>Been There All the Time</media:title>
|
37
|
+
<media:description>Dinosaur Jr. | Been There All the Time | Fat Possum Records</media:description>
|
38
|
+
|
39
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/d/dinosaur_jr/been_there_all_the_time/70x53.jpg"
|
40
|
+
height="53"
|
41
|
+
width="70"/>
|
42
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/d/dinosaur_jr/been_there_all_the_time/84x77.jpg"
|
43
|
+
height="77"
|
44
|
+
width="84"/>
|
45
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/d/dinosaur_jr/been_there_all_the_time/140x105.jpg"
|
46
|
+
height="105"
|
47
|
+
width="140"/>
|
48
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/d/dinosaur_jr/been_there_all_the_time/281x211.jpg"
|
49
|
+
height="211"
|
50
|
+
width="281"/>
|
51
|
+
<media:thumbnail url="http://www.mtv.com/shared/promoimages/bands/d/dinosaur_jr/been_there_all_the_time/320x240.jpg"
|
52
|
+
height="240"
|
53
|
+
width="320"/>
|
54
|
+
<media:keywords><![CDATA[Dinosaur Jr., Been There All The Time]]></media:keywords>
|
55
|
+
<media:credit role="director" scheme="urn:ebu"/>
|
56
|
+
<media:credit role="artist/performer" scheme="urn:ebu">Dinosaur Jr.</media:credit>
|
57
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">6</media:category>
|
58
|
+
</entry>
|
59
|
+
<entry>
|
60
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHWGWBB/</id>
|
61
|
+
<published>2005-08-23T00:00:00.000-04:00</published>
|
62
|
+
|
63
|
+
<updated>2008-10-28T12:23:06.044-04:00</updated>
|
64
|
+
<title>I Don't Think So</title>
|
65
|
+
<content>Dinosaur Jr. | I Don't Think So | Sire/Reprise Records</content>
|
66
|
+
<link rel="self" type="application/atom+xml"
|
67
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHWGWBB/"/>
|
68
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
69
|
+
href="http://api.mtvnservices.com/1/artist/dinosaur_jr/"/>
|
70
|
+
<author>
|
71
|
+
<name>Dinosaur Jr.</name>
|
72
|
+
<uri>http://api.mtvnservices.com/1/artist/dinosaur_jr/</uri>
|
73
|
+
</author>
|
74
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:58500"
|
75
|
+
duration="213"
|
76
|
+
type="application/x-shockwave-flash"
|
77
|
+
medium="video"
|
78
|
+
isDefault="true"
|
79
|
+
expression="full"/>
|
80
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=58500"/>
|
81
|
+
<media:title>I Don't Think So</media:title>
|
82
|
+
|
83
|
+
<media:description>Dinosaur Jr. | I Don't Think So | Sire/Reprise Records</media:description>
|
84
|
+
<media:thumbnail url="http://www.mtv.com/bands/d/dinosaur_jr/thumbnails/i_dont_think70x53.jpg"
|
85
|
+
height="53"
|
86
|
+
width="70"/>
|
87
|
+
<media:thumbnail url="http://www.mtv.com/bands/d/dinosaur_jr/thumbnails/i_dont_think82x55.jpg"
|
88
|
+
height="55"
|
89
|
+
width="82"/>
|
90
|
+
<media:thumbnail url="http://www.mtv.com/bands/d/dinosaur_jr/thumbnails/i_dont_think140x105.jpg"
|
91
|
+
height="105"
|
92
|
+
width="140"/>
|
93
|
+
<media:thumbnail url="http://www.mtv.com/bands/d/dinosaur_jr/thumbnails/i_dont_think281x211.jpg"
|
94
|
+
height="211"
|
95
|
+
width="281"/>
|
96
|
+
<media:restriction type="country" relationship="allow">US </media:restriction>
|
97
|
+
<media:keywords><![CDATA[ Dinosaur Jr., I Don't Think, Greg Stump]]></media:keywords>
|
98
|
+
<media:credit role="director" scheme="urn:ebu">Greg Stump</media:credit>
|
99
|
+
<media:credit role="artist/performer" scheme="urn:ebu">Dinosaur Jr.</media:credit>
|
100
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">1</media:category>
|
101
|
+
</entry>
|
102
|
+
<entry>
|
103
|
+
|
104
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHWXGNP/</id>
|
105
|
+
<published>2005-07-07T00:00:00.000-04:00</published>
|
106
|
+
<updated>2008-10-28T12:23:06.044-04:00</updated>
|
107
|
+
<title>The Wagon</title>
|
108
|
+
<content>Dinosaur Jr. | The Wagon | Sire/Warner Bros. Records</content>
|
109
|
+
<link rel="self" type="application/atom+xml"
|
110
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHWXGNP/"/>
|
111
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
112
|
+
href="http://api.mtvnservices.com/1/artist/dinosaur_jr/"/>
|
113
|
+
<author>
|
114
|
+
<name>Dinosaur Jr.</name>
|
115
|
+
<uri>http://api.mtvnservices.com/1/artist/dinosaur_jr/</uri>
|
116
|
+
|
117
|
+
</author>
|
118
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:53897"
|
119
|
+
duration="194"
|
120
|
+
type="application/x-shockwave-flash"
|
121
|
+
medium="video"
|
122
|
+
isDefault="true"
|
123
|
+
expression="full"/>
|
124
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=53897"/>
|
125
|
+
<media:title>The Wagon</media:title>
|
126
|
+
<media:description>Dinosaur Jr. | The Wagon | Sire/Warner Bros. Records</media:description>
|
127
|
+
<media:thumbnail url="http://www.mtv.com/bands/d/dinosaur_jr/thumbnails/the_wagon70x53.jpg"
|
128
|
+
height="53"
|
129
|
+
width="70"/>
|
130
|
+
<media:thumbnail url="http://www.mtv.com/bands/d/dinosaur_jr/thumbnails/the_wagon140x105.jpg"
|
131
|
+
height="105"
|
132
|
+
width="140"/>
|
133
|
+
<media:restriction type="country" relationship="allow">US </media:restriction>
|
134
|
+
<media:keywords><![CDATA[Dinosaur Jr., The Wagon]]></media:keywords>
|
135
|
+
<media:credit role="director" scheme="urn:ebu"/>
|
136
|
+
<media:credit role="artist/performer" scheme="urn:ebu">Dinosaur Jr.</media:credit>
|
137
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">1</media:category>
|
138
|
+
|
139
|
+
</entry>
|
140
|
+
</feed>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<feed xmlns:media="http://search.yahoo.com/mrss/"
|
4
|
+
xmlns:atom="http://www.w3.org/2005/Atom"
|
5
|
+
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
|
6
|
+
xmlns="http://www.w3.org/2005/Atom">
|
7
|
+
<id>http://api.mtvnservices.com/1/video/search/</id>
|
8
|
+
<updated>2008-10-27T17:00:59.729-04:00</updated>
|
9
|
+
<title>MTVN Content API video search for "somelongcrazynameforavideo"</title>
|
10
|
+
<link rel="self" type="application/atom+xml"
|
11
|
+
href="http://api.mtvnservices.com/1/video/search/?term=somelongcrazynameforavideo"/>
|
12
|
+
</feed>
|
13
|
+
|
@@ -0,0 +1,91 @@
|
|
1
|
+
<?xml version="1.0" encoding="iso-8859-1"?>
|
2
|
+
|
3
|
+
<feed xmlns:media="http://search.yahoo.com/mrss/"
|
4
|
+
xmlns:atom="http://www.w3.org/2005/Atom"
|
5
|
+
xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/"
|
6
|
+
xmlns="http://www.w3.org/2005/Atom">
|
7
|
+
<id>http://api.mtvnservices.com/1/video/search/</id>
|
8
|
+
<updated>2008-10-27T16:59:50.917-04:00</updated>
|
9
|
+
<title>MTVN Content API video search for "video killed the radio star"</title>
|
10
|
+
<link rel="self" type="application/atom+xml"
|
11
|
+
href="http://api.mtvnservices.com/1/video/search/?term=video%20killed%20the%20radio%20star"/>
|
12
|
+
<entry>
|
13
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHDGDZX/</id>
|
14
|
+
<published/>
|
15
|
+
<updated>2008-10-27T16:59:50.917-04:00</updated>
|
16
|
+
<title>Video Killed The Radio Star</title>
|
17
|
+
|
18
|
+
<content>The Buggles | Video Killed The Radio Star | Island Records</content>
|
19
|
+
<link rel="self" type="application/atom+xml"
|
20
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHDGDZX/"/>
|
21
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
22
|
+
href="http://api.mtvnservices.com/1/artist/buggles/"/>
|
23
|
+
<author>
|
24
|
+
<name>The Buggles</name>
|
25
|
+
<uri>http://api.mtvnservices.com/1/artist/buggles/</uri>
|
26
|
+
</author>
|
27
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:18123"
|
28
|
+
duration="210"
|
29
|
+
type="application/x-shockwave-flash"
|
30
|
+
medium="video"
|
31
|
+
isDefault="true"
|
32
|
+
expression="full"/>
|
33
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=18123"/>
|
34
|
+
<media:title>Video Killed The Radio Star</media:title>
|
35
|
+
<media:description>The Buggles | Video Killed The Radio Star | Island Records</media:description>
|
36
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_70x5.jpg"
|
37
|
+
height="53"
|
38
|
+
width="70"/>
|
39
|
+
|
40
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_82x5.jpg"
|
41
|
+
height="55"
|
42
|
+
width="82"/>
|
43
|
+
<media:thumbnail url="http://www.vh1.com/sitewide/promoimages/artists/b/buggles_the/vspot/video_killed_the_radio_star/84x77.jpg"
|
44
|
+
height="77"
|
45
|
+
width="84"/>
|
46
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_star.jpg"
|
47
|
+
height="105"
|
48
|
+
width="140"/>
|
49
|
+
<media:thumbnail url="http://www.mtv.com/bands/b/buggles_the/video_killed_the_radio_281x.jpg"
|
50
|
+
height="211"
|
51
|
+
width="281"/>
|
52
|
+
<media:thumbnail url="http://www.vh1.com/sitewide/promoimages/artists/b/buggles_the/vspot/video_killed_the_radio_star/320x240.jpg"
|
53
|
+
height="240"
|
54
|
+
width="320"/>
|
55
|
+
<media:keywords><![CDATA[The Buggles, Video Killed The Radio Star]]></media:keywords>
|
56
|
+
<media:credit role="director" scheme="urn:ebu"/>
|
57
|
+
<media:credit role="artist/performer" scheme="urn:ebu">The Buggles</media:credit>
|
58
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">3</media:category>
|
59
|
+
</entry>
|
60
|
+
<entry>
|
61
|
+
<id>http://api.mtvnservices.com/1/video/hznHivqrbHHWGNBD/</id>
|
62
|
+
<published/>
|
63
|
+
<updated>2008-10-27T16:59:50.917-04:00</updated>
|
64
|
+
|
65
|
+
<title>Video Killed The Radio Star</title>
|
66
|
+
<content>Presidents of the United States of America | Video Killed The Radio Star | Maverick Recording Company/New Line Productions, Inc.</content>
|
67
|
+
<link rel="self" type="application/atom+xml"
|
68
|
+
href="http://api.mtvnservices.com/1/video/hznHivqrbHHWGNBD/"/>
|
69
|
+
<link rel="http://api.mtvnservices.com/1/schemas/artist" type="application/atom+xml"
|
70
|
+
href="http://api.mtvnservices.com/1/artist/presidents_of_the_united_states_of_america/"/>
|
71
|
+
<author>
|
72
|
+
<name>Presidents of the United States of America</name>
|
73
|
+
<uri>http://api.mtvnservices.com/1/artist/presidents_of_the_united_states_of_america/</uri>
|
74
|
+
</author>
|
75
|
+
<media:content url="http://media.mtvnservices.com/mgid:uma:video:api.mtvnservices.com:58901"
|
76
|
+
duration="191"
|
77
|
+
type="application/x-shockwave-flash"
|
78
|
+
medium="video"
|
79
|
+
isDefault="true"
|
80
|
+
expression="full"/>
|
81
|
+
<media:player url="http://www.mtv.com/overdrive/?vid=58901"/>
|
82
|
+
<media:title>Video Killed The Radio Star</media:title>
|
83
|
+
<media:description>Presidents of the United States of America | Video Killed The Radio Star | Maverick Recording Company/New Line Productions, Inc.</media:description>
|
84
|
+
|
85
|
+
<media:keywords><![CDATA[Presidents of the United States of America, Video Killed The Radio Star]]></media:keywords>
|
86
|
+
<media:credit role="director" scheme="urn:ebu">Joe Perota</media:credit>
|
87
|
+
<media:credit role="artist/performer" scheme="urn:ebu">Presidents of the United States of America</media:credit>
|
88
|
+
<media:category scheme="urn:mtvn:governing_agreement" label="Governing Agreement">1</media:category>
|
89
|
+
</entry>
|
90
|
+
</feed>
|
91
|
+
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'fake_web'
|
4
|
+
require 'open-uri'
|
5
|
+
require File.dirname(__FILE__) + '/../lib/mtv'
|
6
|
+
|
7
|
+
def enable_fake_web
|
8
|
+
dir = File.dirname(__FILE__)
|
9
|
+
|
10
|
+
# Artist fixtures
|
11
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/artist/some_fake_name/', :string => File.read("#{dir}/fixtures/artist_find_some_fake_name.xml"))
|
12
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/artist/search?term=beck&max-results=2', :string => File.read("#{dir}/fixtures/artist_search_beck.xml"))
|
13
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/artist/search?term=alexanderthegreat&max-results=1', :string => File.read("#{dir}/fixtures/artist_search_alexanderthegreat.xml"))
|
14
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/artist/beck/', :string => File.read("#{dir}/fixtures/artist_find_beck.xml"))
|
15
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/artist/beck/related/', :string => File.read("#{dir}/fixtures/artist_related_beck.xml"))
|
16
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/artist/beck/videos/', :string => File.read("#{dir}/fixtures/artist_videos_beck.xml"))
|
17
|
+
|
18
|
+
# Video fixtures
|
19
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/video/hznHivqrbHHDGDZX', :string => File.read("#{dir}/fixtures/video_find_hznHivqrbHHDGDZX.xml"))
|
20
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/video/foobar', :string => File.read("#{dir}/fixtures/video_find_foobar.xml"))
|
21
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/video/search?term=somelongcrazynameforavideo&max-results=1', :string => File.read("#{dir}/fixtures/video_search_somelongcrazynameforavideo.xml"))
|
22
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/video/search?term=video+killed+the+radio+star&max-results=2', :string => File.read("#{dir}/fixtures/video_search_video_killed_the_radio_star.xml"))
|
23
|
+
FakeWeb.register_uri('http://api.mtvnservices.com/1/artist/dinosaur_jr/videos/', :string => File.read("#{dir}/fixtures/video_from_artist_dinosaur_jr.xml"))
|
24
|
+
end
|
25
|
+
|
26
|
+
def disable_fake_web
|
27
|
+
FakeWeb.clean_registry
|
28
|
+
end
|
29
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
# MTV::Artist.debug = true
|
4
|
+
|
5
|
+
enable_fake_web
|
6
|
+
|
7
|
+
class TestArtist < Test::Unit::TestCase
|
8
|
+
def test_browse
|
9
|
+
a = MTV::Artist.browse('x')
|
10
|
+
assert a.all? { |_| _.is_a? MTV::Artist }
|
11
|
+
assert a.any? { |_| _.name == 'X' }
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_find_succeeds
|
15
|
+
a = MTV::Artist.find('Beck')
|
16
|
+
assert a.is_a?(MTV::Artist)
|
17
|
+
assert_equal a.name, 'Beck'
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_find_succeeds_with_period_and_space_in_name
|
21
|
+
a = MTV::Artist.find('Dinosaur Jr.')
|
22
|
+
assert a.is_a?(MTV::Artist)
|
23
|
+
assert_equal a.name, 'Dinosaur Jr.'
|
24
|
+
assert_equal a.uid, 'dinosaur_jr'
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_find_fails
|
28
|
+
assert_raises(MTV::Error) { MTV::Artist.find('Some Fake Name') }
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_related
|
32
|
+
a = MTV::Artist.related 'Beck'
|
33
|
+
assert a.any? { |_| _.name == 'Air' }
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_search_succeeds
|
37
|
+
a = MTV::Artist.search 'beck', :max_results => 2
|
38
|
+
assert_equal 2, a.size
|
39
|
+
assert a.any? { |_| _.name == 'Beck' }
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_search_fails
|
43
|
+
assert_raises(MTV::Error) { MTV::Artist.search('alexanderthegreat') }
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_videos
|
47
|
+
v = MTV::Artist.videos('Beck')
|
48
|
+
assert v.all? { |_| _.is_a?(MTV::Video) }
|
49
|
+
assert v.all? { |_| _.artist_name == 'Beck' }
|
50
|
+
assert v.any? { |_| _.title == 'Gamma Ray' }
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class Foobar < MTV::Base
|
4
|
+
attr_accessor :foo, :bar, :baz
|
5
|
+
end
|
6
|
+
|
7
|
+
class TestBase < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def test_new_should_set_hash_of_attributes
|
10
|
+
f = Foobar.new(:foo => '123', :bar => 'abc')
|
11
|
+
assert_equal '123', f.foo
|
12
|
+
assert_equal 'abc', f.bar
|
13
|
+
assert_nil f.baz
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
# MTV::Video.debug = true
|
4
|
+
|
5
|
+
enable_fake_web
|
6
|
+
|
7
|
+
class TestVideo < Test::Unit::TestCase
|
8
|
+
def test_search_succeeds
|
9
|
+
a = MTV::Video.search 'video killed the radio star', :max_results => 2
|
10
|
+
assert_equal 2, a.size
|
11
|
+
assert a.any? { |_| _.artist_name == 'The Buggles' && _.title == 'Video Killed The Radio Star' }
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_search_fails
|
15
|
+
assert_raises(MTV::Error) { MTV::Video.search('somelongcrazynameforavideo') }
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_find_succeeds
|
19
|
+
a = MTV::Video.find('hznHivqrbHHDGDZX') # the uid
|
20
|
+
assert a.is_a?(MTV::Video)
|
21
|
+
assert_equal a.title, 'Video Killed The Radio Star'
|
22
|
+
assert_equal a.artist_name, 'The Buggles'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_find_fails
|
26
|
+
assert_raises(MTV::Error) { MTV::Video.find('foobar') }
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_from_artist_succeeds
|
30
|
+
v = MTV::Video.from_artist('Dinosaur Jr.')
|
31
|
+
assert v.all? { |_| _.artist_name == 'Dinosaur Jr.' }
|
32
|
+
assert v.any? { |_| _.title == 'Been There All the Time' }
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_embed_code
|
36
|
+
v = MTV::Video.from_artist('Dinosaur Jr.').first
|
37
|
+
e = v.embed_code
|
38
|
+
assert e =~ /width="448" height="366"/
|
39
|
+
assert e =~ /src="#{v.media_url}" type="#{v.media_type}"/
|
40
|
+
|
41
|
+
e = v.embed_code(:width => 314, :height => 839)
|
42
|
+
assert e =~ /width="314" height="839"/
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_thumbnails
|
46
|
+
v = MTV::Video.from_artist('Dinosaur Jr.').first
|
47
|
+
assert v.thumbnails.all? { |_| _.is_a?(MTV::Thumbnail) }
|
48
|
+
assert v.thumbnails.all? { |_| !_.width.nil? }
|
49
|
+
assert v.thumbnails.all? { |_| !_.height.nil? }
|
50
|
+
assert v.thumbnails.all? { |_| !_.url.nil? }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tiegz-ruby-mtv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "1.
|
4
|
+
version: "1.2"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tieg Zaharia
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
version: 2.0.2
|
23
23
|
version:
|
24
24
|
description: ruby-mtv is a Ruby library for accessing Artist and Video objects through the MTVN api.
|
25
|
-
email:
|
25
|
+
email: tieg.zaharia+github@gmail.com
|
26
26
|
executables: []
|
27
27
|
|
28
28
|
extensions: []
|
@@ -67,5 +67,19 @@ rubygems_version: 1.2.0
|
|
67
67
|
signing_key:
|
68
68
|
specification_version: 2
|
69
69
|
summary: Ruby wrapper library for MTV api
|
70
|
-
test_files:
|
71
|
-
|
70
|
+
test_files:
|
71
|
+
- test/test_helper.rb
|
72
|
+
- test/unit/artist_test.rb
|
73
|
+
- test/unit/base_test.rb
|
74
|
+
- test/unit/video_test.rb
|
75
|
+
- test/fixtures/artist_find_beck.xml
|
76
|
+
- test/fixtures/artist_find_some_fake_name.xml
|
77
|
+
- test/fixtures/artist_related_beck.xml
|
78
|
+
- test/fixtures/artist_search_alexanderthegreat.xml
|
79
|
+
- test/fixtures/artist_search_beck.xml
|
80
|
+
- test/fixtures/artist_videos_beck.xml
|
81
|
+
- test/fixtures/video_find_foobar.xml
|
82
|
+
- test/fixtures/video_find_hznHivqrbHHDGDZX.xml
|
83
|
+
- test/fixtures/video_from_artist_dinosaur_jr.xml
|
84
|
+
- test/fixtures/video_search_somelongcrazynameforavideo.xml
|
85
|
+
- test/fixtures/video_search_video_killed_the_radio_star.xml
|