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、より適切なパターンマッチングと抽出でこの設定を変更できます。 Luaセクションを参照してください模様

答え2

mpvイベントフックライブラリがありますlibmpv。以下は本質的に同じことを要求する質問です。C##3810のlibmpvイベントフック

スクリーンショットに問題についてのコメントがあります。

            SS#1

mpvこのスレッドを見れば、少なくとも欲しいものをある程度実行できるようです。必要なものを達成するには、いくつかのコードを書く必要があると思います。

D-Busを見る

すでにD-Bus経由でメッセージを送信している場合は、この問題を解決するもう1つの方法はmpvcliツールを使用することですdbus-monitor。このツールを使用すると、記録されているすべてのイベントをキャプチャし、からのイベントをキャプチャすることもできますmpv

$ sudo dbus-monitor --system

メモ: mpvフォークmplayer2でD-Busを利用していることがわかっているので、同じことをしてくださいmplayer2mpv

引用する

関連情報