summaryrefslogtreecommitdiff
path: root/mpdlib.rb
diff options
context:
space:
mode:
authorDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2009-07-21 23:02:19 -0700
committerDavid Vazgenovich Shakaryan <dvshakaryan@gmail.com>2009-07-21 23:02:19 -0700
commitb4b04398c1a244ad13fd89345bd32e2379158eef (patch)
tree6fc149c161a096f7589586c1186ad3439c747f23 /mpdlib.rb
parent3885d936f6f2fa4250239348fda5b851509fd45a (diff)
downloadruby-libmpd-b4b04398c1a244ad13fd89345bd32e2379158eef.tar.gz
ruby-libmpd-b4b04398c1a244ad13fd89345bd32e2379158eef.tar.xz
Rename library to libmpd for now...
Diffstat (limited to 'mpdlib.rb')
-rw-r--r--mpdlib.rb152
1 files changed, 0 insertions, 152 deletions
diff --git a/mpdlib.rb b/mpdlib.rb
deleted file mode 100644
index 6b9ac69..0000000
--- a/mpdlib.rb
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Copyright 2009 David Vazgenovich Shakaryan <dvshakaryan@gmail.com>
-# Distributed under the terms of the GNU General Public License v3.
-# See http://www.gnu.org/licenses/gpl.txt for the full license text.
-
-require 'socket'
-
-class MPD
- # Initialise an MPD object with the specified host and port.
- #
- # The default host is "localhost" and the default port is 6600.
- def initialize host='localhost', port=6600
- @host = host
- @port = port
- end
-
- # Connect to the server.
- def connect
- # Connect to MPD and return response.
- @socket = TCPSocket.new @host, @port
- return @socket.gets.chomp
- end
-
- def send_request command
- # Escape backslashes in command.
- @socket.puts command.gsub('\\', '\\\\\\')
- return get_response
- end
-
- def get_response
- response = String.new
-
- while true
- line = @socket.gets
-
- break if line == "OK\n"
- return false if line =~ /^ACK/
-
- response << line
- end
-
- return true if response.empty?
- return response
- end
-
- def generate_hash str
- hash = Hash.new
-
- str.split("\n").each do |line|
- field, value = line.split(': ')
- hash[field.downcase.to_sym] = value
- end
-
- return hash
- end
-
- # Returns a Hash containing information about the current song.
- def currentsong
- return generate_hash send_request 'currentsong'
- end
-
- # Returns a Hash containing the current status.
- def status
- return generate_hash send_request 'status'
- end
-
- # Returns a Hash containing statistics.
- def stats
- return generate_hash send_request 'stats'
- end
-
- # Begins playing the playlist. If argument is supplied, begin at specified
- # position.
- def play songpos=false
- command = 'play'
- command << ' ' + songpos.to_s if songpos
-
- return send_request command
- end
-
- # Toggles pause. (1 = pause, 0 = play)
- def pause pause
- return send_request 'pause ' + pause.to_s
- end
-
- # Stops playing.
- def stop
- return send_request 'stop'
- end
-
- # Plays next song in the playlist.
- def next
- return send_request 'next'
- end
-
- # Plays previous song in the playlist.
- def previous
- return send_request 'previous'
- end
-
- # Seeks to the given position of the given song.
- def seek songpos, time
- return send_request 'seek %s %s' % [songpos, time]
- end
-
- # Adds the specified file to the playlist. (Directories add recursively.)
- def add uri
- return send_request 'add "%s"' % uri
- end
-
- # Deletes a song from the playlist.
- def delete songpos
- return send_request 'delete ' + songpos.to_s
- end
-
- # Clears the playlist.
- def clear
- return send_request 'clear'
- end
-
- def split_and_hash str
- songs = str.split(/(?!\n)(?=file:)/).map do |song|
- generate_hash song
- end
-
- return songs
- end
-
- # Returns an Array composed of Hashes containing information about the songs
- # in the playlist.
- #
- # Not yet complete.
- def playlistinfo
- return split_and_hash send_request 'playlistinfo'
- end
-
- # Find all songs in database with an exact match.
- def find type, what
- return split_and_hash send_request 'find %s "%s"' % [type, what]
- end
-
- # Searches the database.
- def search type, what
- return split_and_hash send_request 'search %s "%s"' % [type, what]
- end
-
- private :generate_hash
- private :get_response
- private :send_request
- private :split_and_hash
-end