lastfm12 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,6 @@
1
+ == 0.0.2 2010-7-17
2
+ * bug fix
3
+
1
4
  == 0.0.1 2008-12-28
2
5
 
3
6
  * 1 major enhancement:
data/Manifest.txt CHANGED
@@ -7,6 +7,8 @@ config/hoe.rb
7
7
  config/requirements.rb
8
8
  lib/lastfm12.rb
9
9
  lib/lastfm12/version.rb
10
+ sample/play.rb
11
+ sample/more_simple_play.rb
10
12
  script/console
11
13
  script/destroy
12
14
  script/generate
data/PostInstall.txt CHANGED
@@ -1,7 +1,4 @@
1
1
 
2
2
  For more information on lastfm12, see http://lastfm12.rubyforge.org
3
3
 
4
- NOTE: Change this information in PostInstall.txt
5
- You can also delete it if you don't want it.
6
-
7
4
 
data/README.rdoc CHANGED
@@ -4,29 +4,29 @@
4
4
 
5
5
  == DESCRIPTION:
6
6
 
7
- FIX (describe your package)
7
+ * lastfm12 is a wrapper around the Last.fm protocol version 1.2. This library can manipulate last.fm radio streams. So, you can implement easily a last.fm radio.
8
8
 
9
9
  == FEATURES/PROBLEMS:
10
10
 
11
- * FIX (list of features or problems)
11
+ * foo
12
12
 
13
13
  == SYNOPSIS:
14
14
 
15
- FIX (code sample of usage)
15
+
16
16
 
17
17
  == REQUIREMENTS:
18
18
 
19
- * FIX (list of requirements)
19
+ * rubygems
20
20
 
21
21
  == INSTALL:
22
22
 
23
- * FIX (sudo gem install, anything else)
23
+ * sudo gem install lastfm12
24
24
 
25
25
  == LICENSE:
26
26
 
27
27
  (The MIT License)
28
28
 
29
- Copyright (c) 2008 FIXME full name
29
+ Copyright (c) 2008 Keiichiro Ui
30
30
 
31
31
  Permission is hereby granted, free of charge, to any person obtaining
32
32
  a copy of this software and associated documentation files (the
data/lib/lastfm12.rb CHANGED
@@ -85,7 +85,6 @@ class LastFM12
85
85
  #:user_agent or "user_agent":: an string used as an user agent name for handshake, ajusting radio station and playlist requests
86
86
  #:station or "staion":: an array of strings such as ["tag","electoro"]. refer _adjust_station_ method
87
87
  #:verbose or "verbose":: true: output oparations, false: no output
88
-
89
88
  def initialize(username,password,opt=nil)
90
89
 
91
90
  @user_name = username.to_s
@@ -102,7 +101,7 @@ class LastFM12
102
101
  when "station", :station
103
102
  @station = _make_lastfm_url(*(v.to_a))
104
103
  when "verbose", :verbose
105
- @verbose = true
104
+ @verbose = v
106
105
  end
107
106
  end
108
107
  end
@@ -136,7 +135,7 @@ class LastFM12
136
135
  station = _make_lastfm_url(param_name, param)
137
136
 
138
137
  if @station == station
139
- puts "Already Adjusted The Station" if @verbose
138
+ puts "[lastfm12] Already Adjusted The Station" if @verbose
140
139
  return station
141
140
  else
142
141
  @station = station
@@ -148,7 +147,7 @@ class LastFM12
148
147
 
149
148
  #Getting tracks
150
149
  #Return a array of tracks.
151
- #[_num_] the minimun number of tracks
150
+ #[_min_num_tracks_] the minimun number of tracks
152
151
  #===Note
153
152
  #The length of the returned array is vary. So, sometime, _get_tracks_ get no track.
154
153
  #Give _min_num_tracks_, if you want to get tracks more than _min_num_tracks_.
@@ -165,7 +164,8 @@ class LastFM12
165
164
 
166
165
  if @verbose
167
166
  z = ret.length.zero?
168
- puts "#{z ? '' : 'Success'} Getting #{z ? 'No' : ret.length } Tracks"
167
+ o = (ret.length == 1)
168
+ puts "[lastfm12] #{z ? '' : 'Success'} Getting #{z ? 'No' : ret.length } Track#{z and o}s"
169
169
  end
170
170
 
171
171
  end
@@ -178,6 +178,7 @@ class LastFM12
178
178
 
179
179
  end
180
180
 
181
+
181
182
  def play_loop(&block)
182
183
 
183
184
  loop do
@@ -185,7 +186,33 @@ class LastFM12
185
186
  end
186
187
 
187
188
  end
188
-
189
+
190
+ #More simple API
191
+ #LastFM12.play_loop(_username_, _password_, _opt_, &block)
192
+ # or
193
+ #LastFM12.play_loop(_hash_, &block)
194
+ #
195
+ #[_username_]
196
+ # an account name on last.fm
197
+ #[_password_]
198
+ # an password for the account
199
+ #[_opt_]
200
+ # a hash as Fig.A
201
+ #[_hash_]
202
+ # a hash as Fig.A*
203
+ #
204
+ #===Fig.A
205
+ #_key_:: _value_
206
+ #:user_agent or "user_agent":: an string used as an user agent name for handshake, ajusting radio station and playlist requests
207
+ #:station or "staion":: an array of strings such as ["tag","electoro"]. refer _adjust_station_ method
208
+ #:verbose or "verbose":: true: output oparations, false: no output
209
+ #===Fig.A*
210
+ #_key_:: _value_
211
+ #:user_name or "user_name":: an account name on last.fm
212
+ #:password or "password":: an password for the account
213
+ #:user_agent or "user_agent":: an string used as an user agent name for handshake, ajusting radio station and playlist requests
214
+ #:station or "staion":: an array of strings such as ["tag","electoro"]. refer _adjust_station_ method
215
+ #:verbose or "verbose":: true: output oparations, false: no output
189
216
  def LastFM12.play_loop(*args,&block)
190
217
 
191
218
  if args.length == 1 and args[0].kind_of?(Hash)
@@ -194,6 +221,8 @@ class LastFM12
194
221
  hash = args[2]
195
222
  hash[:user_name] = args[0]
196
223
  hash[:password] = args[1]
224
+ else
225
+ raise ArgumentError
197
226
  end
198
227
 
199
228
  new_hash = Hash.new
@@ -203,7 +232,7 @@ class LastFM12
203
232
  if @@instance.nil? or @@instance.user_name != hash[:user_name]
204
233
  @@instance = LastFM12.new(hash[:user_name],hash[:password],hash)
205
234
  else
206
- puts "Skip Handshake" if @@instance.verbose
235
+ puts "[lastfm12] Skip Handshake" if @@instance.verbose
207
236
  end
208
237
 
209
238
  @@instance.play_loop(&block)
@@ -370,9 +399,9 @@ class LastFM12
370
399
  @base_url = ret['base_url']
371
400
  @base_path = ret['base_path']
372
401
  if @session.nil? or @base_url.nil? or @base_path.nil?
373
- raise HandshakeError, "handshake error(session: #{@session}, base_url#{@base_url}, base_path: #{@base_path})"
402
+ raise HandshakeError, "handshake error(session: '#{@session}', base_url: '#{@base_url}', base_path: '#{@base_path}')"
374
403
  else
375
- puts "Success Handshake" if @verbose
404
+ puts "[lastfm12] Success Handshake" if @verbose
376
405
  end
377
406
  end
378
407
 
@@ -402,7 +431,7 @@ class LastFM12
402
431
  if ret['response'] == 'FAILED'
403
432
  raise AdjustingError, AdjustingError::Messages[ret['error'].to_i-1]
404
433
  else
405
- puts "Success Adjusting #{ret[%[stationname]]} Station" if @verbose
434
+ puts "[lastfm12] Success Adjusting #{ret[%[stationname]]} Station" if @verbose
406
435
  end
407
436
  end
408
437
 
@@ -432,7 +461,7 @@ class LastFM12
432
461
  xspf = REXML::Document.new(res.body)
433
462
  station = xspf.elements['/playlist/title']
434
463
  if station.nil? or station.text.nil?
435
- puts "Failure of Getting the Playlist Title" if @verbose
464
+ puts "[lastfm12] Failure of Getting the Playlist Title" if @verbose
436
465
  return []
437
466
  end
438
467
 
@@ -447,6 +476,7 @@ class LastFM12
447
476
  tr[:user_agent] = @user_agent
448
477
  tracks << Track.new(tr)
449
478
  end
479
+
450
480
  end # End of "Net::HTTP.new(@base_url).request_get(..."
451
481
 
452
482
  tracks
@@ -479,13 +509,9 @@ class LastFM12
479
509
  tmp % ["user", "#{param}/neighbours"]
480
510
  when :recommended
481
511
  tmp % ["user", "#{param}/recommended/100"]
512
+ else
513
+ raise ArgumentError, "unknown 1st argment (#{param_name.to_s})"
482
514
  end
483
515
  end
484
516
 
485
517
  end
486
-
487
- if $0 == __FILE__
488
- Lastfm12.new("daftbeats","iamcrz4b",:station => ["tag","bossa"]).get_tracks.each do |tr|
489
- puts tr
490
- end
491
- end
@@ -2,7 +2,7 @@ module Lastfm12
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 0
5
- TINY = 1
5
+ TINY = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  self
@@ -0,0 +1,26 @@
1
+ #!ruby
2
+ #
3
+ # more simple example with mpg123
4
+ # play similar tracks to Queen
5
+ #
6
+
7
+ user_name = "lastfm_user_name"
8
+ password = "lastfm_password"
9
+
10
+ require "rubygems"
11
+ require "lastfm12"
12
+
13
+ LastFM12.play_loop(
14
+ "user_name" => user_name,
15
+ "password" => password,
16
+ "user_agent"=> "lastfm12_sample",
17
+ "station" => ["artist", "Queen"],
18
+ "verbose"=> true
19
+ ) do |track|
20
+ puts "-------------------------------------------"
21
+ puts "artist: #{track.artist}"
22
+ puts "title: #{track.title}"
23
+ puts "album: #{track.album}"
24
+ puts "length: #{track.length/1000}[sec]"
25
+ `mpg123 -b 1024 #{track.location}`
26
+ end
data/sample/play.rb ADDED
@@ -0,0 +1,36 @@
1
+ #!ruby
2
+ #
3
+ # basic example with mpg123
4
+ # play similar tracks to Queen
5
+ #
6
+
7
+ user_name = "lastfm_user_name"
8
+ password = "lastfm_password"
9
+
10
+ require "rubygems"
11
+ require "lastfm12"
12
+
13
+ opt = {
14
+ #"user_agent": "lastfm12_sample", # user-agent
15
+ #"verbose": true # verbose output
16
+ }
17
+
18
+ # handshake
19
+ lastfm = LastFM12.new(user_name,password, opt)
20
+ puts "Success Handshake"
21
+
22
+ lastfm.adjust_station("artist", "Queen")
23
+ puts "Success Adjusting Station(#{lastfm.station})"
24
+
25
+ loop do
26
+ tracks = lastfm.get_tracks
27
+ puts "*** Got #{tracks.length} track#{tracks.length==1 ? nil : 's'}"
28
+ tracks.each do |track|
29
+ puts "-------------------------------------------"
30
+ puts "artist: #{track.artist}"
31
+ puts "title: #{track.title}"
32
+ puts "album: #{track.album}"
33
+ puts "length: #{track.length/1000}[sec]"
34
+ `mpg123 -b 1024 #{track.location}`
35
+ end
36
+ end
data/website/index.html CHANGED
@@ -33,10 +33,10 @@
33
33
  <h1>lastfm12</h1>
34
34
  <div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/lastfm12"; return false'>
35
35
  <p>Get Version</p>
36
- <a href="http://rubyforge.org/projects/lastfm12" class="numbers">0.0.1</a>
36
+ <a href="http://rubyforge.org/projects/lastfm12" class="numbers">0.0.2</a>
37
37
  </div>
38
38
  <h2>What</h2>
39
- <p>lastfm12 is a wrapper around the Last.fm protocol version 1.2. This library can manipulate the last.fm radio streams. So, you can implement easily the last.fm radio.</p>
39
+ <p>lastfm12 is a wrapper around the Last.fm protocol version 1.2. This library can manipulate the last.fm radio streams. So, you can implement easily a last.fm radio.</p>
40
40
  <h2>Installing</h2>
41
41
  <p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">lastfm12</span></pre></p>
42
42
  <h2>Demonstration of usage</h2>
data/website/index.txt CHANGED
@@ -2,7 +2,7 @@ h1. lastfm12
2
2
 
3
3
  h2. What
4
4
 
5
- lastfm12 is a wrapper around the Last.fm protocol version 1.2. This library can manipulate the last.fm radio streams. So, you can implement easily the last.fm radio.
5
+ lastfm12 is a wrapper around the Last.fm protocol version 1.2. This library can manipulate the last.fm radio streams. So, you can implement easily a last.fm radio.
6
6
 
7
7
  h2. Installing
8
8
 
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lastfm12
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
5
11
  platform: ruby
6
12
  authors:
7
13
  - Keiichiro Ui
@@ -9,19 +15,25 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2008-12-28 00:00:00 +09:00
18
+ date: 2010-07-22 00:00:00 +09:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: hoe
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
23
- version: 1.8.0
24
- version:
29
+ hash: 21
30
+ segments:
31
+ - 2
32
+ - 6
33
+ - 1
34
+ version: 2.6.1
35
+ type: :development
36
+ version_requirements: *id001
25
37
  description: lastfm12 is a wrapper around the Last.fm protocol version 1.2. This library can manipulate the last.fm radio streams. So, you can implement easily the last.fm radio.
26
38
  email:
27
39
  - keiichiro.ui@gmail.com
@@ -33,7 +45,6 @@ extra_rdoc_files:
33
45
  - History.txt
34
46
  - Manifest.txt
35
47
  - PostInstall.txt
36
- - README.rdoc
37
48
  - website/index.txt
38
49
  files:
39
50
  - History.txt
@@ -45,6 +56,8 @@ files:
45
56
  - config/requirements.rb
46
57
  - lib/lastfm12.rb
47
58
  - lib/lastfm12/version.rb
59
+ - sample/play.rb
60
+ - sample/more_simple_play.rb
48
61
  - script/console
49
62
  - script/destroy
50
63
  - script/generate
@@ -62,37 +75,42 @@ files:
62
75
  - website/template.html.erb
63
76
  has_rdoc: true
64
77
  homepage: http://lastfm12.rubyforge.org
78
+ licenses: []
79
+
65
80
  post_install_message: |+
66
81
 
67
82
  For more information on lastfm12, see http://lastfm12.rubyforge.org
68
83
 
69
- NOTE: Change this information in PostInstall.txt
70
- You can also delete it if you don't want it.
71
-
72
84
 
73
85
  rdoc_options:
74
86
  - --main
75
- - README.rdoc
87
+ - README.txt
76
88
  require_paths:
77
89
  - lib
78
90
  required_ruby_version: !ruby/object:Gem::Requirement
91
+ none: false
79
92
  requirements:
80
93
  - - ">="
81
94
  - !ruby/object:Gem::Version
95
+ hash: 3
96
+ segments:
97
+ - 0
82
98
  version: "0"
83
- version:
84
99
  required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
85
101
  requirements:
86
102
  - - ">="
87
103
  - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
88
107
  version: "0"
89
- version:
90
108
  requirements: []
91
109
 
92
110
  rubyforge_project: lastfm12
93
- rubygems_version: 1.2.0
111
+ rubygems_version: 1.3.7
94
112
  signing_key:
95
- specification_version: 2
113
+ specification_version: 3
96
114
  summary: lastfm12 is a wrapper around the Last.fm protocol version 1.2. This library can manipulate the last.fm radio streams. So, you can implement easily the last.fm radio.
97
115
  test_files:
98
116
  - test/test_helper.rb