1
0
mirror of https://github.com/danbee/mpd-client synced 2025-03-04 08:39:09 +00:00
mpd-client/mpd_client.rb
2013-08-30 10:50:45 +01:00

50 lines
843 B
Ruby

require 'sinatra'
require "sinatra/namespace"
require 'json'
require 'ruby-mpd'
require 'cgi'
class MPDClient < Sinatra::Base
register Sinatra::Namespace
namespace '/api' do
get '/albums' do
JSON mpd.albums
end
get '/artists/:artist' do
JSON mpd.albums(CGI.unescape(params[:artist]))
end
get '/albums/:album' do
JSON get_songs_by_album(CGI.unescape(params[:album]))
end
get '/artists/:artist/:album' do
JSON get_songs_by_album(CGI.unescape(params[:album]))
end
get '/artists' do
JSON mpd.artists
end
end
private
def get_songs_by_album(album)
mpd.search(:album, album).map do |song|
{ tracknumber: song.track,
title: song.title }
end
end
def mpd
@mpd ||= MPD.new
@mpd.connect unless @mpd.connected?
@mpd
end
end