inform.send를 통해 mpv에 알림을 추가하시겠습니까?

inform.send를 통해 mpv에 알림을 추가하시겠습니까?

mpv 재생이 시작될 때마다 짧은 알림을 생성할 수 있나요? 어쩌면 통과할까요 notify-send?

답변1

mpv실행할 수 있습니다루아일부를 나열하는 사용자 스크립트여기. 그들 중 하나,통지하다복잡한 코드를 생성할 것입니다 notify-send. 여기에는 몇 가지 종속성이 있으므로 내 설정에서 작동하도록 할 수는 없지만 다음과 같이 매우 단순화된 코드가 적합합니다. 이 파일을 여기에 넣고 ~/.config/mpv/scripts/mynotify.lua(필요한 경우 디렉터리 생성) mpv평소대로 실행합니다. 아티스트나 제목이 변경되면 알림이 표시됩니다.

-- 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)

이 업데이트된 버전은 새 파일을 재생할 준비가 되면 전송되는 이벤트를 기다립니다. 메타데이터를 찾고 여기에서 아티스트와 제목을 추출하려고 시도합니다. 비어 있으면 현재 파일 이름( "path")을 가져오고 마지막 부분을 분할하여 /파일 이름을 가져오고 후행 3자 접미사를 제거합니다. 파일 이름의 마지막 디렉터리 부분을 찾으려고 시도하고 알림에서 두 항목을 모두 사용합니다. 디렉토리 구조가 다음과 같은 경우:아티스트/앨범명/tracktitle.aac, 보다 적절한 패턴 일치 및 추출을 통해 이 설정을 변경할 수 있습니다. 루아 섹션을 참조하세요무늬.

답변2

mpv이벤트 후킹 라이브러리가 있습니다 libmpv. 다음은 본질적으로 동일한 것을 요구하는 질문입니다.C# #3810의 libmpv 이벤트 후킹.

스크린샷에 문제에 대한 의견이 있습니다.

            SS #1

mpv이 스레드를 보면 적어도 원하는 것을 어느 정도 수행할 수 있는 것 같습니다 . 원하는 것을 달성하려면 몇 가지 코드를 작성해야 한다고 생각합니다.

D-Bus 살펴보기

이미 D-Bus를 통해 메시지를 보내고 있다면 이 문제를 해결하는 또 다른 방법은 mpvcli 도구를 사용하는 것입니다 dbus-monitor. 이 도구를 사용하면 기록되는 모든 이벤트를 캡처할 수 있으며, 에서 오는 이벤트를 캡처할 수도 있습니다 mpv.

$ sudo dbus-monitor --system

노트: mpv포크 mplayer2이고 D-Bus를 활용한다는 것을 알고 있으므로 동일한 작업을 수행하기를 mplayer2바랍니다 .mpv

인용하다

관련 정보