Алгоритм сравнения сначала проверяет Эпоху (обычно скрытое значение, которое большинство пакетов не использует), затем Версию, затем Выпуск. В каждом из них сравнивается каждая отдельная секция букв или цифр. Это означает, что схема, которой вы следуете, работает нормально - , если снимки происходят с разными датами .
Однако, если вы внимательно прочитаете раздел « post-release packages », обратите внимание, что вам следует каждый раз увеличивать «приращение номера выпуска», поэтому ваши пакеты должны быть
paper-icon- theme-1.0- 2 .20151202git954bb77
paper-icon-theme-1.0-1.20151202gited30409
(курсив добавлен на измененную цифру "2").
Это число продолжает расти по мере того, как вы делаете снимки состояния после 1.0 - снова сбрасывается на 1 при увеличении самой версии.
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 о шаблонах .
mpv
имеет библиотеку обработчиков событий, libmpv
. Здесь есть проблема, требующая, по сути, того же самого под названием:Перехват событий libmpv в C##3810 .
Есть комментарий по этой проблеме со скриншотом:
Судя по этой ветке, mpv
хоть немного способен делать то, что вы хотите. Я считаю, что вам придется написать некоторый код, чтобы реализовать то, что вы хотите.
Другой способ приблизиться к этому, если mpv
уже отправляет сообщение через шину D -, заключается в использовании инструмента cli dbus-monitor
. С помощью этого инструмента вы сможете перехватывать все регистрируемые события и, возможно, вы сможете перехватывать те, которые исходят от mpv
.
$ sudo dbus-monitor --system
ПРИМЕЧАНИЕ:mpv
является ответвлением mplayer2
, и я знаю, что mplayer2
использует шину D -, поэтому я ожидаю, что mpv
будет делать то же самое.