Добавьте уведомление в MPV через Notify.Send?

Алгоритм сравнения сначала проверяет Эпоху (обычно скрытое значение, которое большинство пакетов не использует), затем Версию, затем Выпуск. В каждом из них сравнивается каждая отдельная секция букв или цифр. Это означает, что схема, которой вы следуете, работает нормально - , если снимки происходят с разными датами .

Однако, если вы внимательно прочитаете раздел « post-release packages », обратите внимание, что вам следует каждый раз увеличивать «приращение номера выпуска», поэтому ваши пакеты должны быть

paper-icon- theme-1.0- 2 .20151202git954bb77

paper-icon-theme-1.0-1.20151202gited30409

(курсив добавлен на измененную цифру "2").

Это число продолжает расти по мере того, как вы делаете снимки состояния после 1.0 - снова сбрасывается на 1 при увеличении самой версии.

3
13.07.2018, 07:51
2 ответа

mpvможет запускать lua пользовательские сценарии, некоторые из которых перечислены здесь . Один из них, notify , сгенерирует сложный 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-символьные суффиксы. Он пытается найти последнюю часть имени файла в каталоге и использует эти 2 элемента в уведомлении. Если ваши каталоги структурированы, скажем, исполнитель/название альбома/название трека.aac , вы можете изменить это с помощью более подходящего сопоставления и извлечения шаблона. См. раздел lua о шаблонах .

3
27.01.2020, 21:30

mpvимеет библиотеку обработчиков событий, libmpv. Здесь есть проблема, требующая, по сути, того же самого под названием:Перехват событий libmpv в C##3810 .

Есть комментарий по этой проблеме со скриншотом:

            ss #1

Судя по этой ветке, mpvхоть немного способен делать то, что вы хотите. Я считаю, что вам придется написать некоторый код, чтобы реализовать то, что вы хотите.

Изучение D -Автобус

Другой способ приблизиться к этому, если mpvуже отправляет сообщение через шину D -, заключается в использовании инструмента cli dbus-monitor. С помощью этого инструмента вы сможете перехватывать все регистрируемые события и, возможно, вы сможете перехватывать те, которые исходят от mpv.

$ sudo dbus-monitor --system

ПРИМЕЧАНИЕ:mpvявляется ответвлением mplayer2, и я знаю, что mplayer2использует шину D -, поэтому я ожидаю, что mpvбудет делать то же самое.

Ссылки

0
27.01.2020, 21:30

Теги

Похожие вопросы