librmpd 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README +3 -2
  2. data/lib/librmpd.rb +32 -62
  3. metadata +2 -2
data/README CHANGED
@@ -26,9 +26,10 @@ such as `artists` to get all artists and `songs` to get all songs.
26
26
  All functionality is contained in the MPD class. Creating an instance of this
27
27
  class is as simple as
28
28
 
29
- require 'path/to/lib/librmpd.rb'
29
+ require 'rubygems'
30
+ require 'librmpd'
30
31
 
31
- mpd = MPD.new
32
+ mpd = MPD.new 'localhost', 6600
32
33
 
33
34
  Once you have an instance of the MPD class, start by connecting to the server:
34
35
 
@@ -92,7 +92,8 @@ class MPD
92
92
  # which may an empty string.
93
93
  STATE_CALLBACK = 0
94
94
 
95
- # CURRENT_SONG_CALLBACK: This is used to listen for changes in the current
95
+ # CURRENT_SONG_CALLBACK: This is used to listen for changes in the current
96
+ #
96
97
  # song being played by the server.
97
98
  #
98
99
  # The callback will always be called with a single argument, an MPD::Song
@@ -180,66 +181,23 @@ class MPD
180
181
  #== Song
181
182
  #
182
183
  # This class is a glorified Hash used to represent a song
183
- # It provides several reader methods for accessing common tags of a song,
184
- # If a tag doesn't have a reader method, just use the normal hash method of
185
- # accessing it
184
+ # You can access the various fields of a song (such as title) by
185
+ # either the normal hash method (song['title']) or by using
186
+ # the field as a method name (song.title).
187
+ #
188
+ # If the field doesn't exist or isn't set, nil will be returned
186
189
  #
187
190
  class Song < Hash
188
- def songid
189
- self['id']
190
- end
191
-
192
- def pos
193
- self['pos']
194
- end
195
-
196
- def artist
197
- self['artist']
198
- end
199
-
200
- def album
201
- self['album']
202
- end
203
-
204
- def title
205
- self['title']
206
- end
207
-
208
- def track
209
- self['track']
210
- end
211
-
212
- def name
213
- self['name']
214
- end
215
-
216
- def genre
217
- self['genre']
218
- end
219
-
220
- def date
221
- self['date']
222
- end
223
-
224
- def composer
225
- self['composer']
226
- end
227
-
228
- def performer
229
- self['performer']
230
- end
231
-
232
- def comment
233
- self['comment']
234
- end
235
-
236
- def disc
237
- self['disc']
238
- end
239
-
240
- def file
241
- self['file']
242
- end
191
+ def method_missing(m, *a)
192
+ key = m.to_s
193
+ if key =~ /=$/
194
+ self[$`] = a[0]
195
+ elsif a.empty?
196
+ self[key]
197
+ else
198
+ raise NoMethodError, "#{m}"
199
+ end
200
+ end
243
201
  end
244
202
 
245
203
  # Initialize an MPD object with the specified hostname and port
@@ -267,6 +225,18 @@ class MPD
267
225
  @callbacks[CONNECTION_CALLBACK] = []
268
226
  end
269
227
 
228
+ # This will store the given method onto the given type's callback
229
+ # list. First you must get a reference to the method to call by
230
+ # the following:
231
+ #
232
+ # callback_method = my_object.method 'method name'
233
+ #
234
+ # Then you can call register_callback:
235
+ #
236
+ # mpd.register_callback( callback_method, MPD::STATE_CALLBACK )
237
+ #
238
+ # Now my_object's 'method name' method will be called whenever the
239
+ # state changes
270
240
  def register_callback( method, type )
271
241
  @callbacks[type].push method
272
242
  end
@@ -496,8 +466,8 @@ class MPD
496
466
  end
497
467
 
498
468
  #
499
- # Read the crossfade between songs in seconds,
500
- # Raises a RuntimeError if the command failed
469
+ # Read the crossfade between songs in seconds,
470
+ # Raises a RuntimeError if the command failed
501
471
  def crossfade
502
472
  status = self.status
503
473
  return if status.nil?
@@ -505,7 +475,7 @@ class MPD
505
475
  end
506
476
 
507
477
  #
508
- # Read the current song in seconds
478
+ # Read the currently playing song
509
479
  #
510
480
  # Returns a Song object with the current song's data,
511
481
  # Raises a RuntimeError if the command failed
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: librmpd
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2006-11-27 00:00:00 -05:00
6
+ version: 0.1.1
7
+ date: 2006-12-18 00:00:00 -05:00
8
8
  summary: A library for the Music Player Daemon (MPD)
9
9
  require_paths:
10
10
  - lib