scrobbler-ng 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. data/VERSION.yml +2 -2
  2. data/lib/scrobbler.rb +4 -2
  3. data/lib/scrobbler/album.rb +2 -8
  4. data/lib/scrobbler/artist.rb +5 -7
  5. data/lib/scrobbler/base.rb +9 -34
  6. data/lib/scrobbler/basexml.rb +1 -0
  7. data/lib/scrobbler/basexmlinfo.rb +18 -0
  8. data/lib/scrobbler/event.rb +3 -7
  9. data/lib/scrobbler/helper/image.rb +1 -2
  10. data/lib/scrobbler/playlist.rb +2 -7
  11. data/lib/scrobbler/shout.rb +0 -2
  12. data/lib/scrobbler/tag.rb +55 -93
  13. data/lib/scrobbler/user.rb +12 -16
  14. data/lib/scrobbler/venue.rb +6 -6
  15. data/tasks/jeweler.rake +5 -6
  16. data/tasks/tests.rake +8 -6
  17. data/test/mocks/rest.rb +1 -1
  18. data/test/unit/tag_spec.rb +1 -1
  19. data/test/unit/venue_spec.rb +3 -2
  20. metadata +56 -134
  21. data/lib/scrobbler/scrobble.rb +0 -116
  22. data/test/fixtures/xml/album/info.xml +0 -43
  23. data/test/fixtures/xml/artist/fans.xml +0 -52
  24. data/test/fixtures/xml/artist/info.xml +0 -58
  25. data/test/fixtures/xml/artist/similar.xml +0 -1004
  26. data/test/fixtures/xml/artist/topalbums.xml +0 -61
  27. data/test/fixtures/xml/artist/toptags.xml +0 -19
  28. data/test/fixtures/xml/artist/toptracks.xml +0 -62
  29. data/test/fixtures/xml/auth/session.xml +0 -7
  30. data/test/fixtures/xml/auth/token.xml +0 -3
  31. data/test/fixtures/xml/event/attend.xml +0 -3
  32. data/test/fixtures/xml/event/attendees.xml +0 -53
  33. data/test/fixtures/xml/event/event.xml +0 -35
  34. data/test/fixtures/xml/event/shouts.xml +0 -35
  35. data/test/fixtures/xml/geo/events-distance-p1.xml +0 -151
  36. data/test/fixtures/xml/geo/events-lat-long.xml +0 -167
  37. data/test/fixtures/xml/geo/events-p1.xml +0 -152
  38. data/test/fixtures/xml/geo/events-p2.xml +0 -380
  39. data/test/fixtures/xml/geo/events-p3.xml +0 -427
  40. data/test/fixtures/xml/geo/top_artists-p1.xml +0 -76
  41. data/test/fixtures/xml/geo/top_tracks-p1.xml +0 -77
  42. data/test/fixtures/xml/library/albums-f30.xml +0 -454
  43. data/test/fixtures/xml/library/albums-p1.xml +0 -754
  44. data/test/fixtures/xml/library/albums-p2.xml +0 -754
  45. data/test/fixtures/xml/library/albums-p3.xml +0 -754
  46. data/test/fixtures/xml/library/albums-p4.xml +0 -739
  47. data/test/fixtures/xml/library/albums-p5.xml +0 -754
  48. data/test/fixtures/xml/library/albums-p6.xml +0 -754
  49. data/test/fixtures/xml/library/albums-p7.xml +0 -739
  50. data/test/fixtures/xml/library/albums-p8.xml +0 -724
  51. data/test/fixtures/xml/library/artists-f30.xml +0 -334
  52. data/test/fixtures/xml/library/artists-p1.xml +0 -554
  53. data/test/fixtures/xml/library/artists-p2.xml +0 -554
  54. data/test/fixtures/xml/library/artists-p3.xml +0 -554
  55. data/test/fixtures/xml/library/artists-p4.xml +0 -554
  56. data/test/fixtures/xml/library/artists-p5.xml +0 -554
  57. data/test/fixtures/xml/library/artists-p6.xml +0 -554
  58. data/test/fixtures/xml/library/artists-p7.xml +0 -444
  59. data/test/fixtures/xml/library/tracks-f30.xml +0 -472
  60. data/test/fixtures/xml/library/tracks-p1.xml +0 -789
  61. data/test/fixtures/xml/library/tracks-p10.xml +0 -771
  62. data/test/fixtures/xml/library/tracks-p11.xml +0 -792
  63. data/test/fixtures/xml/library/tracks-p12.xml +0 -777
  64. data/test/fixtures/xml/library/tracks-p13.xml +0 -762
  65. data/test/fixtures/xml/library/tracks-p14.xml +0 -759
  66. data/test/fixtures/xml/library/tracks-p15.xml +0 -762
  67. data/test/fixtures/xml/library/tracks-p16.xml +0 -756
  68. data/test/fixtures/xml/library/tracks-p17.xml +0 -780
  69. data/test/fixtures/xml/library/tracks-p18.xml +0 -756
  70. data/test/fixtures/xml/library/tracks-p19.xml +0 -774
  71. data/test/fixtures/xml/library/tracks-p2.xml +0 -765
  72. data/test/fixtures/xml/library/tracks-p20.xml +0 -777
  73. data/test/fixtures/xml/library/tracks-p21.xml +0 -777
  74. data/test/fixtures/xml/library/tracks-p22.xml +0 -771
  75. data/test/fixtures/xml/library/tracks-p23.xml +0 -765
  76. data/test/fixtures/xml/library/tracks-p24.xml +0 -783
  77. data/test/fixtures/xml/library/tracks-p25.xml +0 -777
  78. data/test/fixtures/xml/library/tracks-p26.xml +0 -777
  79. data/test/fixtures/xml/library/tracks-p27.xml +0 -756
  80. data/test/fixtures/xml/library/tracks-p28.xml +0 -771
  81. data/test/fixtures/xml/library/tracks-p29.xml +0 -753
  82. data/test/fixtures/xml/library/tracks-p3.xml +0 -771
  83. data/test/fixtures/xml/library/tracks-p30.xml +0 -780
  84. data/test/fixtures/xml/library/tracks-p31.xml +0 -753
  85. data/test/fixtures/xml/library/tracks-p32.xml +0 -771
  86. data/test/fixtures/xml/library/tracks-p33.xml +0 -762
  87. data/test/fixtures/xml/library/tracks-p34.xml +0 -538
  88. data/test/fixtures/xml/library/tracks-p4.xml +0 -792
  89. data/test/fixtures/xml/library/tracks-p5.xml +0 -780
  90. data/test/fixtures/xml/library/tracks-p6.xml +0 -789
  91. data/test/fixtures/xml/library/tracks-p7.xml +0 -789
  92. data/test/fixtures/xml/library/tracks-p8.xml +0 -780
  93. data/test/fixtures/xml/library/tracks-p9.xml +0 -774
  94. data/test/fixtures/xml/tag/similar.xml +0 -254
  95. data/test/fixtures/xml/tag/topalbums.xml +0 -805
  96. data/test/fixtures/xml/tag/topartists.xml +0 -605
  97. data/test/fixtures/xml/tag/toptags.xml +0 -1254
  98. data/test/fixtures/xml/tag/toptracks.xml +0 -852
  99. data/test/fixtures/xml/track/fans.xml +0 -34
  100. data/test/fixtures/xml/track/info.xml +0 -53
  101. data/test/fixtures/xml/track/toptags.xml +0 -504
  102. data/test/fixtures/xml/user/events.xml +0 -401
  103. data/test/fixtures/xml/user/friends.xml +0 -30
  104. data/test/fixtures/xml/user/lovedtracks.xml +0 -678
  105. data/test/fixtures/xml/user/neighbours.xml +0 -23
  106. data/test/fixtures/xml/user/playlists.xml +0 -61
  107. data/test/fixtures/xml/user/profile.xml +0 -12
  108. data/test/fixtures/xml/user/recentbannedtracks.xml +0 -24
  109. data/test/fixtures/xml/user/recentlovedtracks.xml +0 -24
  110. data/test/fixtures/xml/user/recenttracks.xml +0 -124
  111. data/test/fixtures/xml/user/systemrecs.xml +0 -18
  112. data/test/fixtures/xml/user/topalbums.xml +0 -61
  113. data/test/fixtures/xml/user/topartists.xml +0 -41
  114. data/test/fixtures/xml/user/toptags.xml +0 -44
  115. data/test/fixtures/xml/user/toptracks.xml +0 -65
  116. data/test/fixtures/xml/user/weeklyalbumchart.xml +0 -256
  117. data/test/fixtures/xml/user/weeklyartistchart.xml +0 -220
  118. data/test/fixtures/xml/user/weeklytrackchart.xml +0 -746
  119. data/test/fixtures/xml/venue/events.xml +0 -151
  120. data/test/fixtures/xml/venue/venue.xml +0 -16
  121. data/test/unit/scrobble_spec.rb +0 -55
  122. data/test/unit/scrobble_test.rb +0 -69
@@ -1,151 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <lfm status="ok">
3
- <events venue="Postbahnhof" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
4
- <event status="2">
5
- <id>875740</id>
6
- <title>Kilians</title>
7
- <artists>
8
- <artist>Kilians</artist>
9
- <artist>Miyagi</artist>
10
- <headliner>Kilians</headliner>
11
- </artists>
12
- <venue>
13
- <id>8927785</id>
14
- <name>Postbahnhof</name>
15
- <location>
16
- <city>Berlin</city>
17
- <country>Germany</country>
18
- <street>Straße der Pariser Kommune 8</street>
19
- <postalcode>10243</postalcode>
20
- <geo:point>
21
- <geo:lat>52.508693</geo:lat>
22
- <geo:long>13.435056</geo:long>
23
- </geo:point>
24
- </location>
25
- <url>http://www.last.fm/venue/8927785</url>
26
- </venue>
27
- <startDate>Wed, 03 Jun 2009 15:47:01</startDate>
28
- <description></description>
29
- <image size="small">http://userserve-ak.last.fm/serve/34/420392.jpg</image>
30
- <image size="medium">http://userserve-ak.last.fm/serve/64/420392.jpg</image>
31
- <image size="large">http://userserve-ak.last.fm/serve/126/420392.jpg</image>
32
- <attendance>77</attendance>
33
- <reviews>0</reviews>
34
- <tag>lastfm:event=875740</tag>
35
- <url>http://www.last.fm/event/875740</url>
36
- <website>http://popula.de/the-kilians-tour-2009</website>
37
- <tickets>
38
- </tickets>
39
- </event>
40
- <event status="2">
41
- <id>950267</id>
42
- <title>Convention of the Universe - International Depeche Mode Fan Event</title>
43
- <artists>
44
- <artist>De/Vision</artist>
45
- <artist>Nitzer Ebb</artist>
46
- <artist>Frozen Plasma</artist>
47
- <headliner>De/Vision</headliner>
48
- </artists>
49
- <venue>
50
- <id>8927785</id>
51
- <name>Postbahnhof</name>
52
- <location>
53
- <city>Berlin</city>
54
- <country>Germany</country>
55
- <street>Straße der Pariser Kommune 8</street>
56
- <postalcode>10243</postalcode>
57
- <geo:point>
58
- <geo:lat>52.508693</geo:lat>
59
- <geo:long>13.435056</geo:long>
60
- </geo:point>
61
- </location>
62
- <url>http://www.last.fm/venue/8927785</url>
63
- </venue>
64
- <startDate>Tue, 09 Jun 2009 20:00:00</startDate>
65
- <description><![CDATA[<div class="bbcode">[youtube]<a href="http://www.youtube.com/watch?v=jHbTI9ZkMxg&amp;feature=player_embedded" rel="nofollow">http://www.youtube.com/watch?v=jHbTI9ZkMxg&amp;feature=player_embedded</a>[/youtube]</div>]]>
66
- </description>
67
- <image size="small">http://userserve-ak.last.fm/serve/34/134107.jpg</image>
68
- <image size="medium">http://userserve-ak.last.fm/serve/64/134107.jpg</image>
69
- <image size="large">http://userserve-ak.last.fm/serve/126/134107.jpg</image>
70
- <attendance>61</attendance>
71
- <reviews>0</reviews>
72
- <tag>lastfm:event=950267</tag>
73
- <url>http://www.last.fm/event/950267</url>
74
- <website>http://ww.blackswarm.de</website>
75
- <tickets>
76
- </tickets>
77
- </event>
78
- <event status="2">
79
- <id>1082373</id>
80
- <title>The Get Up Kids</title>
81
- <artists>
82
- <artist>The Get Up Kids</artist>
83
- <headliner>The Get Up Kids</headliner>
84
- </artists>
85
- <venue>
86
- <id>8927785</id>
87
- <name>Postbahnhof</name>
88
- <location>
89
- <city>Berlin</city>
90
- <country>Germany</country>
91
- <street>Straße der Pariser Kommune 8</street>
92
- <postalcode>10243</postalcode>
93
- <geo:point>
94
- <geo:lat>52.508693</geo:lat>
95
- <geo:long>13.435056</geo:long>
96
- </geo:point>
97
- </location>
98
- <url>http://www.last.fm/venue/8927785</url>
99
- </venue>
100
- <startDate>Tue, 25 Aug 2009 09:23:01</startDate>
101
- <description><![CDATA[<div class="bbcode">VVK 18,00 €<br />
102
- zzgl. Gebühren</div>]]>
103
- </description>
104
- <image size="small">http://userserve-ak.last.fm/serve/34/219315.jpg</image>
105
- <image size="medium">http://userserve-ak.last.fm/serve/64/219315.jpg</image>
106
- <image size="large">http://userserve-ak.last.fm/serve/126/219315.jpg</image>
107
- <attendance>36</attendance>
108
- <reviews>0</reviews>
109
- <tag>lastfm:event=1082373</tag>
110
- <url>http://www.last.fm/event/1082373</url>
111
- <website></website>
112
- <tickets>
113
- </tickets>
114
- </event>
115
- <event status="2">
116
- <id>1059277</id>
117
- <title>Philipp Poisel</title>
118
- <artists>
119
- <artist>Philipp Poisel</artist>
120
- <headliner>Philipp Poisel</headliner>
121
- </artists>
122
- <venue>
123
- <id>8927785</id>
124
- <name>Postbahnhof</name>
125
- <location>
126
- <city>Berlin</city>
127
- <country>Germany</country>
128
- <street>Straße der Pariser Kommune 8</street>
129
- <postalcode>10243</postalcode>
130
- <geo:point>
131
- <geo:lat>52.508693</geo:lat>
132
- <geo:long>13.435056</geo:long>
133
- </geo:point>
134
- </location>
135
- <url>http://www.last.fm/venue/8927785</url>
136
- </venue>
137
- <startDate>Sat, 12 Sep 2009 15:53:01</startDate>
138
- <description></description>
139
- <image size="small">http://userserve-ak.last.fm/serve/34/12542985.jpg</image>
140
- <image size="medium">http://userserve-ak.last.fm/serve/64/12542985.jpg</image>
141
- <image size="large">http://userserve-ak.last.fm/serve/126/12542985.jpg</image>
142
- <attendance>23</attendance>
143
- <reviews>0</reviews>
144
- <tag>lastfm:event=1059277</tag>
145
- <url>http://www.last.fm/event/1059277</url>
146
- <website></website>
147
- <tickets>
148
- </tickets>
149
- </event>
150
- </events>
151
- </lfm>
@@ -1,16 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <venue xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
3
- <name>Karrera Klub</name>
4
- <location>
5
- <city>Berlin</city>
6
- <country>Germany</country>
7
- <street>Neue Promenade 10</street>
8
- <postalcode>10178</postalcode>
9
- <geo:point>
10
- <geo:lat>52.532019</geo:lat>
11
- <geo:long>13.427965</geo:long>
12
- </geo:point>
13
- <timezone>CET</timezone>
14
- </location>
15
- <url>http://www.last.fm/venue/9027137</url>
16
- </venue>
@@ -1,55 +0,0 @@
1
- describe Scrobbler::Scrobble do
2
- before do
3
- Scrobbler::Scrobble.client_id = 'spec'
4
- @user = Scrobbler::User.new(:name => 'TestUser')
5
- @session = Scrobbler::Session.new(:key => 'testKey', :name => 'testName', :subscriber => true)
6
- @scrobble = Scrobbler::Scrobble.new(:handshake_on_init => false, :user => @user, :session => @session)
7
- end
8
-
9
- describe 'should implement the method' do
10
- [:submit, :now_playing, :handshake].each do |method_name|
11
- it "'#{method_name}'" do
12
- @scrobble.should respond_to(method_name)
13
- end
14
- end
15
- end
16
-
17
- describe 'doing initialization should require' do
18
- it 'a session' do
19
- lambda {
20
- Scrobbler::Scrobble.new(:session => nil, :user => @user)
21
- }.should raise_error(ArgumentError)
22
- end
23
-
24
- it 'a user' do
25
- lambda {
26
- Scrobbler::Scrobble.new(:session => @session, :user => nil)
27
- }.should raise_error(ArgumentError)
28
- end
29
- end
30
-
31
- describe 'handshaking should provide' do
32
- it 'a session id'
33
- it 'a now-playing url'
34
- it 'a submisson url'
35
- end
36
-
37
- describe 'handshaking could fail with' do
38
- it BadAuthError
39
- it BadTimeError
40
- it RequestFailedError
41
- it ClientBannedError
42
- end
43
-
44
- describe 'now_playing should work with' do
45
- it 'just track and artist'
46
- it 'additionally the duration'
47
- it 'additionally the album name'
48
- it 'additionally the track\'s MusicBrainz id'
49
- end
50
-
51
- describe 'now_playing could fail with' do
52
- it BadSessionError
53
- end
54
-
55
- end
@@ -1,69 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper.rb'
2
-
3
- class TestScrobble < Test::Unit::TestCase
4
-
5
- def setup
6
- @session_id = '17E61E13454CDD8B68E8D7DEEEDF6170'
7
- @submission_url = 'http://62.216.251.205:80/protocol_1.2'
8
- @artist = 'Coldplay'
9
- @name = 'Viva La Vida'
10
-
11
- @scrobble = Scrobbler::Scrobble.new(:session_id => @session_id, :submission_url => @submission_url,
12
- :artist => @artist, :track => @name, :album => @name, :time => Time.new,
13
- :length => 244, :track_number => 7)
14
- end
15
-
16
- test 'should require a session id' do
17
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:submission_url => @submission_url,
18
- :artist => @artist, :track => @name, :album => @name, :time => Time.new,
19
- :length => 244, :track_number => 7) }
20
- end
21
-
22
- test 'should require a submission url' do
23
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:session_id => @session_id,
24
- :artist => @artist, :track => @name, :album => @name, :time => Time.new,
25
- :length => 244, :track_number => 7) }
26
- end
27
-
28
- test 'should require an artist' do
29
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:session_id => @session_id, :submission_url => @submission_url,
30
- :track => @name, :album => @name, :time => Time.new,
31
- :length => 244, :track_number => 7) }
32
- end
33
-
34
- test 'should require a track' do
35
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:session_id => @session_id, :submission_url => @submission_url,
36
- :artist => @artist, :album => @name, :time => Time.new,
37
- :length => 244, :track_number => 7) }
38
- end
39
-
40
- test 'should require a Time object' do
41
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:session_id => @session_id, :submission_url => @submission_url,
42
- :artist => @artist, :track => @name, :album => @name, :time => 'chunky_bacon',
43
- :length => 244, :track_number => 7) }
44
- end
45
-
46
- test 'should require a valid source' do
47
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:session_id => @session_id, :submission_url => @submission_url,
48
- :artist => @artist, :track => @name, :album => @name, :time => Time.new,
49
- :length => 244, :track_number => 7, :source => 'Z') }
50
- end
51
-
52
- test 'should require a length if source is set to P' do
53
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:session_id => @session_id, :submission_url => @submission_url,
54
- :artist => @artist, :track => @name, :album => @name, :time => Time.new,
55
- :track_number => 7, :source => 'P') }
56
- end
57
-
58
- test 'should require a length greater than 30 if source is set to P' do
59
- assert_raises(ArgumentError) { Scrobbler::Scrobble.new(:session_id => @session_id, :submission_url => @submission_url,
60
- :artist => @artist, :track => @name, :album => @name, :time => Time.new,
61
- :length => 29, :track_number => 7, :source => 'P') }
62
- end
63
-
64
- test 'should submit successfully' do
65
- @scrobble.submit!
66
- assert_equal('OK', @scrobble.status)
67
- end
68
-
69
- end