scripts/mpd.lua
author Myhailo Danylenko <isbear@ukrpost.net>
Mon, 23 Feb 2009 23:16:46 +0200
changeset 4 bca17e4a9851
permissions -rw-r--r--
Added sample configuration files
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     1
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     2
-- Requires libsocket
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     3
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     4
-- TODO:
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     5
-- do pubsub tunes+notify instead of status hacking
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     6
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     7
require 'socket'
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     8
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
     9
local settings = {
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    10
	hostname     = "localhost",
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    11
	password     = nil,
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    12
	port         = 6600,
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    13
}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    14
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    15
mpd = {}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    16
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    17
-- separator allows split output into records, that are started by any of present in separator keys
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    18
-- returns table of field (lowercase) - value records
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    19
-- command status is returned in STATUS field
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    20
-- on unexpected errors returns just false, dropping any available data
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    21
function mpd.receive_message ( tcp, separator )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    22
	local ret  = {}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    23
	local line = tcp:receive ( '*l' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    24
	while line and not ( line:find ( '^OK' ) or line:find ( '^ACK' ) ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    25
		local key, val = line:match ( '^(.-):%s*(.*)$' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    26
		if key then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    27
			if separator then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    28
				key = key:lower ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    29
				if separator[key] then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    30
					table.insert ( ret, {} )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    31
				end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    32
				ret[#ret][key]   = val
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    33
			else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    34
				ret[key:lower()] = val
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    35
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    36
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    37
		line = tcp:receive ( '*l' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    38
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    39
	if not line then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    40
		return false -- an error occured, ret, most likely, does not contains exact and complete info...
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    41
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    42
		ret.STATUS = line:match ( '^%S+' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    43
		return ret
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    44
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    45
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    46
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    47
-- use: mpd.call_command { 'status' }
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    48
--      mpd.call_command { 'lsinfo misc', list = { file = true, directory = true } }
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    49
--      mpd.call_command { 'next', noret = true }
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    50
--      mpd.call_command { 'status', 'currentsong' }
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    51
-- on one command returns just results of that command, on multi - array of results
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    52
-- on errors returns nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    53
-- noret can terminate socket too early, thus, do not use it with lists of commands
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    54
function mpd.call_command ( opts )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    55
	local tcp = socket.tcp ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    56
	if not tcp then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    57
		print ( 'mpd: cannot get master tcp object' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    58
		return nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    59
	elseif not tcp:connect ( settings.hostname, settings.port ) then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    60
		tcp:close ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    61
		print ( 'mpd: cannot connect to server' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    62
		return nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    63
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    64
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    65
	local ret = {}
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    66
	if not opts.noret then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    67
		ret = mpd.receive_message ( tcp )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    68
		if not ret then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    69
			tcp:close ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    70
			print ( 'mpd: error getting greeting from server' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    71
			return nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    72
		elseif ret.STATUS ~= 'OK' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    73
			print ( 'mpd: server ack\'s in greeting' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    74
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    75
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    76
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    77
	for num, command in ipairs ( opts ) do
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    78
		if not tcp:send ( command .. "\n" ) then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    79
			tcp:close ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    80
			print ( 'mpd: error sending command ' .. command )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    81
			return nil
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    82
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    83
		if not opts.noret then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    84
			ret[num] = mpd.receive_message ( tcp, opts.list )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    85
			if not ret[num] then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    86
				print ( 'mpd: error getting result' )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    87
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    88
			if ret[num]['STATUS'] ~= 'OK' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    89
				print ( 'mpd: server acks our command ' .. command )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    90
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    91
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    92
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    93
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    94
	tcp:close ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    95
	if #ret > 1 then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    96
		return ret
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    97
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    98
		return ret[1]
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
    99
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   100
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   101
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   102
-- MCABBER PART --
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   103
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   104
mpd_enabled = false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   105
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   106
function mpd_getstatus ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   107
	if not mpd_enabled then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   108
		return ''
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   109
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   110
	
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   111
	local stats = mpd.call_command { 'status', 'currentsong' }
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   112
	if stats[1].state ~= 'play' and stats[1].state ~= 'pause' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   113
		return ''
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   114
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   115
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   116
	local title = stats[2].title
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   117
	if not title then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   118
		if stats[2].file then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   119
			title = stats[2].file
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   120
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   121
			title = ''
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   122
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   123
	elseif not stats[2].artist then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   124
		title = string.format ( "%s (%s)", title, stats[2].file )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   125
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   126
		title = string.format ( "%s - %s", stats[2].artist, title )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   127
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   128
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   129
	if stats[1].state == 'pause' then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   130
		return string.format ( "[mpd: <зупинено> %s]", title )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   131
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   132
		return string.format ( "[mpd: %s]", title )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   133
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   134
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   135
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   136
function parse_status ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   137
	local stletter, stmessage = main.status ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   138
	local cmd = char2status[stletter]
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   139
	local message, mpd_string = stmessage:match ( "^(.-)%s+(%[mpd:%s+.+%s*%])" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   140
	if message then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   141
		return cmd, message, mpd_string
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   142
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   143
		return cmd, stmessage, ''
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   144
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   145
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   146
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   147
function mpd_callback ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   148
	local new_mpd_string = mpd_getstatus ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   149
	local status, message, mpd_string = parse_status ()
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   150
	if new_mpd_string ~= mpd_string then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   151
		main.run ( string.format ( 'status %s %s %s', status, message, new_mpd_string ) )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   152
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   153
	if mpd_enabled then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   154
		return true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   155
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   156
		return false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   157
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   158
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   159
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   160
-- do not call it too fast, or you end up with many daemons at once
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   161
function enable_mpd ( yn )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   162
	if yn == nil then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   163
		yn = true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   164
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   165
	if yn then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   166
		if not mpd_enabled then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   167
			main.timer ( 15, mpd_callback )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   168
			mpd_enabled = true
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   169
			-- update status
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   170
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   171
	else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   172
		if mpd_enabled then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   173
			mpd_enabled = false
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   174
			-- update status
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   175
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   176
	end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   177
end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   178
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   179
main.add_command ( 'mpd',
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   180
	function ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   181
		local enable = yesno ( args )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   182
		if enable == nil then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   183
			if mpd_enabled then
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   184
				print ( "MPD status string is enabled" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   185
			else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   186
				print ( "MPD status string is disabled" )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   187
			end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   188
		else
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   189
			enable_mpd ( enable )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   190
		end
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   191
	end )
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   192
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   193
commands_help['mpd'] = "[enable|disable|on|off|yes|no|true|false]\n\nSets state of mpd string in your status.\nIf state is omitted, prints current state."
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   194
bca17e4a9851 Added sample configuration files
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
   195
-- vim: se ts=4: --