mpv
pode executar scripts de usuário lua , alguns dos quais estão listados aqui . Um desses, notifique , gerará um notify-send
sofisticado. Ele tem algumas dependências, e eu não consegui fazê-lo funcionar na minha configuração, mas o código simplificado seguido funcionou para mim. Coloque este arquivo em
~/.config/mpv/scripts/mynotify.lua
(crie o diretório, se necessário) e execute mpv
como de costume. Você deve ver uma notificação quando o artista ou o título for alterado.
-- based on https://github.com/rohieb/mpv-notify
-- https://unix.stackexchange.com/a/455198/119298
lastcommand = nil
function string.shellescape(str)
return "'"..string.gsub(str, "'", "'\"'\"'").."'"
end
function do_notify(a,b)
local command = ("notify-send -a mpv -- %s %s"):format(a:shellescape(),
b:shellescape())
if command ~= lastcommand then
os.execute(command)
lastcommand = command
end
end
function notify_current_track()
data = mp.get_property_native("metadata")
if data then
local artist = (data["ARTIST"] or data["artist"] or " ")
local title = (data["TITLE"] or data["title"] or " ")
if artist..title~=" " then
do_notify(artist, title)
return
end
end
local data = mp.get_property("path")
if data then
local file = data:gsub("^.-([^/]+)$","%1")
file = file:gsub("%....$","") -- delete 3 char suffix
local dir = data:gsub("^.-([^/]+)/[^/]*$","%1")
do_notify(dir, file)
end
end
mp.register_event("file-loaded", notify_current_track)
Esta versão atualizada aguarda por eventos que são enviados quando um novo arquivo está pronto para ser jogado. Ele tenta encontrar os metadados e extrair o artista e o título dele. Se estiver vazio, ele obtém o nome do arquivo atual ( "path"
) e divide a última parte depois de /
para obter um nome de arquivo, do qual remove qualquer sufixo de 3 caracteres à direita. Ele tenta encontrar a última parte do diretório do nome do arquivo e usa esses dois itens na notificação. Se seus diretórios são estruturados com, por exemplo, artist / albumname / tracktitle.aac , você pode querer mudar isso com uma correspondência e extração de padrões mais apropriada. Veja a seção de lua nos padrões .