Adiciona notificação ao mpv através do notify.send?

3

É possível gerar uma breve notificação toda vez que o mpv inicia uma reprodução? Talvez através de notify-send ?

    
por kurokirasama 13.07.2018 / 06:49

2 respostas

1

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 .

    
por 13.07.2018 / 22:51
0

mpv tem uma biblioteca de hooks de eventos, libmpv . Há um problema que pede basicamente a mesma coisa aqui: evento do libmpv em hooking em C # # 3810 .

Há um comentário sobre esse problema com uma captura de tela:

Aoprocuraressesegmento,parecequempvéaomenosumpoucocapazdefazeroquevocêquer.Euacreditoquevocêteráqueescreveralgumcódigoparaimplementaroquequiser.

ExplorandooD-Bus

AoutramaneiradeabordarissonachancedequempvjáestejaenviandomensagensviaD-Buséusaraferramentaclidbus-monitor.Comestaferramenta,vocêpoderácapturartodososeventosregistrados,etalvezvocêconsigacapturarosquevêmdempv.

$sudodbus-monitor--system

NOTA:mpvéumabifurcaçãodemplayer2eeuseiquemplayer2utilizaoD-Bus,entãoeuesperariaquempvfizesseomesmo.

Referências

por 13.07.2018 / 14:24