ruby-mpd 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,347 @@
1
+ - &songs
2
+ - &song1
3
+ file: "Shpongle/Are_You_Shpongled/1.Shpongle_Falls.ogg"
4
+ time: 514
5
+ artist: "Shpongle"
6
+ album: "Are You Shpongled?"
7
+ title: "Shpongle Falls"
8
+ track: 1
9
+ - &song2
10
+ file: "Shpongle/Are_You_Shpongled/2.Monster_Hit.ogg"
11
+ time: 537
12
+ artist: "Shpongle"
13
+ album: "Are You Shpongled?"
14
+ title: "Monster Hit"
15
+ track: 2
16
+ - &song3
17
+ file: "Shpongle/Are_You_Shpongled/3.Vapour_Rumours.ogg"
18
+ time: 626
19
+ artist: "Shpongle"
20
+ album: "Are You Shpongled?"
21
+ title: "Vapour Rumours"
22
+ track: 3
23
+ - &song4
24
+ file: "Shpongle/Are_You_Shpongled/4.Shpongle_Spores.ogg"
25
+ time: 436
26
+ artist: "Shpongle"
27
+ album: "Are You Shpongled?"
28
+ title: "Shpongle Spores"
29
+ track: 4
30
+ - &song5
31
+ file: "Shpongle/Are_You_Shpongled/5.Behind_Closed_Eyelids.ogg"
32
+ time: 749
33
+ artist: "Shpongle"
34
+ album: "Are You Shpongled?"
35
+ title: "Behind Closed Eyelids"
36
+ track: 5
37
+ - &song6
38
+ file: "Shpongle/Are_You_Shpongled/6.Divine_Moments_of_Truth.ogg"
39
+ time: 620
40
+ artist: "Shpongle"
41
+ album: "Are You Shpongled?"
42
+ title: "Divine Moments of Truth"
43
+ track: 6
44
+ - &song7
45
+ file: "Shpongle/Are_You_Shpongled/7...._and_the_Day_Turned_to_Night.ogg"
46
+ time: 1198
47
+ artist: "Shpongle"
48
+ album: "Are You Shpongled?"
49
+ title: "... and the Day Turned to Night"
50
+ track: 7
51
+ - &song8
52
+ file: "Astral_Projection/Dancing_Galaxy/1.Dancing_Galaxy.ogg"
53
+ time: 558
54
+ artist: "Astral Projection"
55
+ album: "Dancing Galaxy"
56
+ title: "Dancing Galaxy"
57
+ track: 1
58
+ - &song9
59
+ file: "Astral_Projection/Dancing_Galaxy/2.Soundform.ogg"
60
+ time: 492
61
+ artist: "Astral Projection"
62
+ album: "Dancing Galaxy"
63
+ title: "Soundform"
64
+ track: 2
65
+ - &song10
66
+ file: "Astral_Projection/Dancing_Galaxy/3.Flying_Into_A_Star.ogg"
67
+ time: 585
68
+ artist: "Astral Projection"
69
+ album: "Dancing Galaxy"
70
+ title: "Flying Into A Star"
71
+ track: 3
72
+ - &song11
73
+ file: "Astral_Projection/Dancing_Galaxy/4.No_One_Ever_Dreams.ogg"
74
+ time: 505
75
+ artist: "Astral Projection"
76
+ album: "Dancing Galaxy"
77
+ title: "No One Ever Dreams"
78
+ track: 4
79
+ - &song12
80
+ file: "Astral_Projection/Dancing_Galaxy/5.Cosmic_Ascension_(ft._DJ_Jorg).ogg"
81
+ time: 619
82
+ artist: "Astral Projection"
83
+ album: "Dancing Galaxy"
84
+ title: "Cosmic Ascension (ft. DJ Jorg)"
85
+ track: 5
86
+ - &song13
87
+ file: "Astral_Projection/Dancing_Galaxy/6.Life_On_Mars.ogg"
88
+ time: 549
89
+ artist: "Astral Projection"
90
+ album: "Dancing Galaxy"
91
+ title: "Life On Mars"
92
+ track: 6
93
+ - &song14
94
+ file: "Astral_Projection/Dancing_Galaxy/7.Liquid_Sun.ogg"
95
+ time: 660
96
+ artist: "Astral Projection"
97
+ album: "Dancing Galaxy"
98
+ title: "Liquid Sun"
99
+ track: 7
100
+ - &song15
101
+ file: "Astral_Projection/Dancing_Galaxy/8.Ambient_Galaxy_(Disco_Valley_Mix).ogg"
102
+ time: 825
103
+ artist: "Astral Projection"
104
+ album: "Dancing Galaxy"
105
+ title: "Ambient Galaxy (Disco Valley Mix)"
106
+ track: 8
107
+ - &song16
108
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/01.Central_Plains.ogg"
109
+ time: 488
110
+ artist: "Carbon Based Lifeforms"
111
+ album: "Hydroponic Garden"
112
+ title: "Central Plains"
113
+ track: 1
114
+ - &song17
115
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/02.Tensor.ogg"
116
+ time: 344
117
+ artist: "Carbon Based Lifeforms"
118
+ album: "Hydroponic Garden"
119
+ title: "Tensor"
120
+ track: 2
121
+ - &song18
122
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/03.MOS_6581_(Album_Version).ogg"
123
+ time: 431
124
+ artist: "Carbon Based Lifeforms"
125
+ album: "Hydroponic Garden"
126
+ title: "MOS 6581 (Album Version)"
127
+ track: 3
128
+ - &song19
129
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/04.Silent_Running.ogg"
130
+ time: 425
131
+ artist: "Carbon Based Lifeforms"
132
+ album: "Hydroponic Garden"
133
+ title: "Silent Running"
134
+ track: 4
135
+ - &song20
136
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/05.Neurotransmitter.ogg"
137
+ time: 448
138
+ artist: "Carbon Based Lifeforms"
139
+ album: "Hydroponic Garden"
140
+ title: "Neurotransmitter"
141
+ track: 5
142
+ - &song21
143
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/06.Hydroponic_Garden.ogg"
144
+ time: 553
145
+ artist: "Carbon Based Lifeforms"
146
+ album: "Hydroponic Garden"
147
+ title: "Hydroponic Garden"
148
+ track: 6
149
+ - &song22
150
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/07.Exosphere.ogg"
151
+ time: 306
152
+ artist: "Carbon Based Lifeforms"
153
+ album: "Hydroponic Garden"
154
+ title: "Exosphere"
155
+ track: 7
156
+ - &song23
157
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/08.Comsat.ogg"
158
+ time: 429
159
+ artist: "Carbon Based Lifeforms"
160
+ album: "Hydroponic Garden"
161
+ title: "Comsat"
162
+ track: 8
163
+ - &song24
164
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/09.Epicentre_(First_Movement).ogg"
165
+ time: 358
166
+ artist: "Carbon Based Lifeforms"
167
+ album: "Hydroponic Garden"
168
+ title: "Epicentre (First Movement)"
169
+ track: 9
170
+ - &song25
171
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/10.Artificial_Island.ogg"
172
+ time: 312
173
+ artist: "Carbon Based Lifeforms"
174
+ album: "Hydroponic Garden"
175
+ title: "Artificial Island"
176
+ track: 10
177
+ - &song26
178
+ file: "Carbon_Based_Lifeforms/Hydroponic_Garden/11.Refraction_1.33.ogg"
179
+ time: 500
180
+ artist: "Carbon Based Lifeforms"
181
+ album: "Hydroponic Garden"
182
+ title: "Refraction 1.33"
183
+ track: 11
184
+ - &song27
185
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/01.Botanical_Dimensions.ogg"
186
+ time: 278
187
+ artist: "Shpongle"
188
+ album: "Nothing Lasts... But Nothing Is Lost"
189
+ title: "Botanical Dimensions"
190
+ track: 1
191
+ - &song28
192
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/02.Outer_Shpongolia.ogg"
193
+ time: 153
194
+ artist: "Shpongle"
195
+ album: "Nothing Lasts... But Nothing Is Lost"
196
+ title: "Outer Shpongolia"
197
+ track: 2
198
+ - &song29
199
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/03.Levitation_Nation.ogg"
200
+ time: 220
201
+ artist: "Shpongle"
202
+ album: "Nothing Lasts... But Nothing Is Lost"
203
+ title: "Levitation Nation"
204
+ track: 3
205
+ - &song30
206
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/04.Periscopes_of_Consciousness.ogg"
207
+ time: 114
208
+ artist: "Shpongle"
209
+ album: "Nothing Lasts... But Nothing Is Lost"
210
+ title: "Periscopes of Consciousness"
211
+ track: 4
212
+ - &song31
213
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/05.Schmaltz_Herring.ogg"
214
+ time: 141
215
+ artist: "Shpongle"
216
+ album: "Nothing Lasts... But Nothing Is Lost"
217
+ title: "Schmaltz Herring"
218
+ track: 5
219
+ - &song32
220
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/06.Nothing_Lasts....ogg"
221
+ time: 269
222
+ artist: "Shpongle"
223
+ album: "Nothing Lasts... But Nothing Is Lost"
224
+ title: "Nothing Lasts..."
225
+ track: 6
226
+ - &song33
227
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/07.Shnitzled_in_the_Negev.ogg"
228
+ time: 258
229
+ artist: "Shpongle"
230
+ album: "Nothing Lasts... But Nothing Is Lost"
231
+ title: "Shnitzled in the Negev"
232
+ track: 7
233
+ - &song34
234
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/08....But_Nothing_Is_Lost.ogg"
235
+ time: 279
236
+ artist: "Shpongle"
237
+ album: "Nothing Lasts... But Nothing Is Lost"
238
+ title: "...But Nothing Is Lost"
239
+ track: 8
240
+ - &song35
241
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/09.When_Shall_I_Be_Free.ogg"
242
+ time: 277
243
+ artist: "Shpongle"
244
+ album: "Nothing Lasts... But Nothing Is Lost"
245
+ title: "When Shall I Be Free"
246
+ track: 9
247
+ - &song36
248
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/10.The_Stamen_of_the_Shamen.ogg"
249
+ time: 251
250
+ artist: "Shpongle"
251
+ album: "Nothing Lasts... But Nothing Is Lost"
252
+ title: "The Stamen of the Shamen"
253
+ track: 10
254
+ - &song37
255
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/11.Circuits_of_the_Imagination.ogg"
256
+ time: 192
257
+ artist: "Shpongle"
258
+ album: "Nothing Lasts... But Nothing Is Lost"
259
+ title: "Circuits of the Imagination"
260
+ track: 11
261
+ - &song38
262
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/12.Linguistic_Mystic.ogg"
263
+ time: 96
264
+ artist: "Shpongle"
265
+ album: "Nothing Lasts... But Nothing Is Lost"
266
+ title: "Linguistic Mystic"
267
+ track: 12
268
+ - &song39
269
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/13.Mentalism.ogg"
270
+ time: 174
271
+ artist: "Shpongle"
272
+ album: "Nothing Lasts... But Nothing Is Lost"
273
+ title: "Mentalism"
274
+ track: 13
275
+ - &song40
276
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/14.Invocation.ogg"
277
+ time: 160
278
+ artist: "Shpongle"
279
+ album: "Nothing Lasts... But Nothing Is Lost"
280
+ title: "Invocation"
281
+ track: 14
282
+ - &song41
283
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/15.Molecular_Superstructure.ogg"
284
+ time: 287
285
+ artist: "Shpongle"
286
+ album: "Nothing Lasts... But Nothing Is Lost"
287
+ title: "Molecular Superstructure"
288
+ track: 15
289
+ - &song42
290
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/16.Turn_Up_the_Silence.ogg"
291
+ time: 202
292
+ artist: "Shpongle"
293
+ album: "Nothing Lasts... But Nothing Is Lost"
294
+ title: "Turn Up the Silence"
295
+ track: 16
296
+ - &song43
297
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/17.Exhalation.ogg"
298
+ time: 136
299
+ artist: "Shpongle"
300
+ album: "Nothing Lasts... But Nothing Is Lost"
301
+ title: "Exhalation"
302
+ track: 17
303
+ - &song44
304
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/18.Connoisseur_of_Hallucinations.ogg"
305
+ time: 212
306
+ artist: "Shpongle"
307
+ album: "Nothing Lasts... But Nothing Is Lost"
308
+ title: "Connoisseur of Hallucinations"
309
+ track: 18
310
+ - &song45
311
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/19.The_Nebbish_Route.ogg"
312
+ time: 215
313
+ artist: "Shpongle"
314
+ album: "Nothing Lasts... But Nothing Is Lost"
315
+ title: "The Nebbish Route"
316
+ track: 19
317
+ - &song46
318
+ file: "Shpongle/Nothing_Lasts..._But_Nothing_Is_Lost/20.Falling_Awake.ogg"
319
+ time: 110
320
+ artist: "Shpongle"
321
+ album: "Nothing Lasts... But Nothing Is Lost"
322
+ title: "Falling Awake"
323
+ track: 20
324
+
325
+ - &playlists
326
+ - &playlist1
327
+ file: "Shpongle_-_Are_You_Shpongled.m3u"
328
+ songs:
329
+ - *song1
330
+ - *song2
331
+ - *song3
332
+ - *song4
333
+ - *song5
334
+ - *song6
335
+ - *song7
336
+ - &playlist2
337
+ file: "Astral_Projection_-_Dancing_Galaxy.m3u"
338
+ songs:
339
+ - *song8
340
+ - *song9
341
+ - *song10
342
+ - *song11
343
+ - *song12
344
+ - *song13
345
+ - *song14
346
+ - *song15
347
+
data/examples/rmpc.rb ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ # This is a very simple MPD client that just sends commands to the server
4
+ # from the command line
5
+ #
6
+ # Copyright 2006 Andrew Rader ( bitwise_mcgee AT yahoo.com | http://nymb.us )
7
+ #
8
+
9
+ require 'librmpd'
10
+
11
+ if ARGV.length == 0
12
+ puts "Usage: rmpc.rb <command> <command options>"
13
+ puts "\tUse --help for commands / command options"
14
+
15
+ else
16
+ if ARGV.include?( '--help' ) or ARGV.include?( '-h' )
17
+ puts "Usage: rmpc.rb <command> <command options>"
18
+ puts "\tAvailable Commands / Command Options:\n\n"
19
+ puts "\tcmd\topts\tdescription"
20
+ puts "\tplay\t[pos]\tbegin playback, optionally play song at position pos"
21
+ puts "\tpause\tnone\ttoggle the pause flag"
22
+ puts "\tstop\tnone\tstop playback"
23
+ puts "\tnext\tnone\tplay next in playlist"
24
+ puts "\tprev\tnone\tplay previous in playlist"
25
+ puts "\tvolume\t[vol]\tprint the current volume, or, sets the volume to vol"
26
+ puts "\trepeat\tnone\ttoggle the repeat flag"
27
+ puts "\trandom\tnone\ttoggle the random flag"
28
+ puts "\tstats\tnone\tprint the server stats"
29
+ else
30
+ mpd = MPD.new
31
+ mpd.connect
32
+ case ARGV[0]
33
+ when 'play'
34
+ mpd.play ARGV[1].to_i - 1
35
+ when 'pause'
36
+ mpd.pause = !mpd.paused?
37
+ when 'stop'
38
+ mpd.stop
39
+ when 'next'
40
+ mpd.next
41
+ when 'prev'
42
+ mpd.previous
43
+ when 'volume'
44
+ if ARGV[1].nil?
45
+ puts "Volume: #{mpd.volume}"
46
+ else
47
+ mpd.volume = ARGV[1].to_i
48
+ end
49
+ when 'consume'
50
+ mpd.consume = !mpd.consume?
51
+ when 'single'
52
+ mpd.single = !mpd.single?
53
+ when 'repeat'
54
+ mpd.repeat = !mpd.repeat?
55
+ when 'random'
56
+ mpd.random = !mpd.random?
57
+ when 'stats'
58
+ hash = mpd.stats
59
+ hash.each_pair do |key, value|
60
+ puts "#{key} => #{value}"
61
+ end
62
+ else
63
+ puts "Unknown Command #{ARGV[0]}"
64
+ end
65
+ mpd.disconnect
66
+ end
67
+ end
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ #
4
+ # This is a very simple MPD client that just spews changes on the server
5
+ # out to the console (much like tail works on normal files)
6
+ #
7
+ # Copyright 2006 Andrew Rader ( bitwise_mcgee AT yahoo.com | http://nymb.us )
8
+ #
9
+
10
+ require 'librmpd'
11
+
12
+ class TailMPC
13
+
14
+ def initialize( time_cb = false )
15
+ @mpd = MPD.new
16
+
17
+ @mpd.register_callback( self.method('playlist_cb'), MPD::PLAYLIST_CALLBACK )
18
+ @mpd.register_callback( self.method('song_cb'), MPD::CURRENT_SONG_CALLBACK )
19
+ @mpd.register_callback( self.method('state_cb'), MPD::STATE_CALLBACK )
20
+ @mpd.register_callback( self.method('time_cb'), MPD::TIME_CALLBACK ) if time_cb
21
+ @mpd.register_callback( self.method('vol_cb'), MPD::VOLUME_CALLBACK )
22
+ @mpd.register_callback( self.method('repeat_cb'), MPD::REPEAT_CALLBACK )
23
+ @mpd.register_callback( self.method('random_cb'), MPD::RANDOM_CALLBACK )
24
+ @mpd.register_callback( self.method('pls_length_cb'), MPD::PLAYLIST_LENGTH_CALLBACK )
25
+ @mpd.register_callback( self.method('xfade_cb'), MPD::CROSSFADE_CALLBACK )
26
+ @mpd.register_callback( self.method('songid_cb'), MPD::CURRENT_SONGID_CALLBACK )
27
+ @mpd.register_callback( self.method('bitrate_cb'), MPD::BITRATE_CALLBACK )
28
+ @mpd.register_callback( self.method('audio_cb'), MPD::AUDIO_CALLBACK )
29
+ @mpd.register_callback( self.method('connection_cb'), MPD::CONNECTION_CALLBACK )
30
+ end
31
+
32
+ def start
33
+ puts "Starting TailMPC - Press Ctrl-D to quit\n\n"
34
+ @mpd.connect true
35
+ t = Thread.new do
36
+ gets
37
+ end
38
+
39
+ t.join
40
+ end
41
+
42
+ def stop
43
+ puts "Shutting Down TailMPC"
44
+ @mpd.disconnect true
45
+ end
46
+
47
+ def time_cb( elapsed, total )
48
+ el_min = elapsed / 60
49
+ el_sec = elapsed % 60
50
+
51
+ elapsed = "#{el_min}:#{el_sec}"
52
+
53
+ tot_min = total / 60
54
+ tot_sec = total % 60
55
+
56
+ total = "#{tot_min}:#{tot_sec}"
57
+ puts "Time: #{elapsed} / #{total}"
58
+ end
59
+
60
+ def state_cb( newstate )
61
+ puts "State: #{newstate}"
62
+ end
63
+
64
+ def song_cb( current )
65
+ if not current.nil?
66
+ puts "Current Song: \n\tID: #{current.songid}\n\tPosition: #{current.pos}\n\tFile: #{current.file}\n\tArtist: #{current.artist}\n\tTitle: #{current.title}"
67
+ else
68
+ puts "Curent Song: nil"
69
+ end
70
+ end
71
+
72
+ def playlist_cb( pls )
73
+ puts "Playlist: Version ##{pls}"
74
+ end
75
+
76
+ def vol_cb( vol )
77
+ puts "Volume: #{vol}%"
78
+ end
79
+
80
+ def repeat_cb( rep )
81
+ puts(rep ? 'Repeat: On' : 'Repeat: Off')
82
+ end
83
+
84
+ def random_cb( ran )
85
+ puts(ran ? 'Random: On' : 'Random: Off')
86
+ end
87
+
88
+ def pls_length_cb( len )
89
+ puts "Playlist Length: #{len}"
90
+ end
91
+
92
+ def xfade_cb( xfade )
93
+ puts "Crossfade: #{xfade}"
94
+ end
95
+
96
+ def songid_cb( id )
97
+ puts "Current Song ID: #{id}"
98
+ end
99
+
100
+ def bitrate_cb( rate )
101
+ puts "Bitrate: #{rate}"
102
+ end
103
+
104
+ def audio_cb( sample, bits, channels )
105
+ puts "Audio:\n\tSample Rate: #{sample}\n\tBits: #{bits}\n\tChannels: #{channels}"
106
+ end
107
+
108
+ def connection_cb( connected )
109
+ puts( connected ? 'Connected' : 'Disconnected' )
110
+ end
111
+ end
112
+
113
+ client = TailMPC.new #true # Uncomment the true to enable the time callback
114
+
115
+ client.start