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セクションを参照してください模様

おすすめ記事