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イベントフック。
スクリーンショットに問題についてのコメントがあります。
mpv
このスレッドを見れば、少なくとも欲しいものをある程度実行できるようです。必要なものを達成するには、いくつかのコードを書く必要があると思います。
D-Busを見る
すでにD-Bus経由でメッセージを送信している場合は、この問題を解決するもう1つの方法はmpv
cliツールを使用することですdbus-monitor
。このツールを使用すると、記録されているすべてのイベントをキャプチャし、からのイベントをキャプチャすることもできますmpv
。
$ sudo dbus-monitor --system
メモ: mpv
フォークmplayer2
でD-Busを利用していることがわかっているので、同じことをしてくださいmplayer2
。mpv