AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 455037
Accepted
kurokirasama
kurokirasama
Asked: 2018-07-13 20:49:50 +0800 CST2018-07-13 20:49:50 +0800 CST 2018-07-13 20:49:50 +0800 CST

通过 notify.send 向 mpv 添加通知?

  • 772

每次mpv开始播放时是否可以生成一个简短的通知?也许通过notify-send?

mpv notify-send
  • 2 2 个回答
  • 980 Views

2 个回答

  • Voted
  1. Best Answer
    meuh
    2018-07-14T12:51:41+08:002018-07-14T12:51:41+08:00

    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 个字符后缀。它尝试查找文件名的最后一个目录部分,并在通知中使用这两项。如果您的目录结构是艺术家/专辑名称/tracktitle.aac,您可能希望使用更合适的模式匹配和提取来更改它。请参阅有关模式的 lua 部分。

    • 3
  2. slm
    2018-07-14T04:24:26+08:002018-07-14T04:24:26+08:00

    mpv有一个事件挂钩库,libmpv. 这里有一个问题要求基本相同的东西,标题为:libmpv event hooking in C# #3810。

    有一个截图评论这个问题:

                #1

    从这个线程来看,它看起来mpv至少在某种程度上能够做你想做的事。我相信你必须编写一些代码来实现你想要的。

    探索 D-Bus

    mpv在已经通过 D-Bus 发送消息的情况下,解决此问题的另一种方法是使用 cli 工具dbus-monitor。使用此工具,您将能够捕获所有正在记录的事件,也许您将能够捕获来自mpv.

    $ sudo dbus-monitor --system
    

    注意: mpv是一个分支,mplayer2我知道mplayer2确实使用了 D-Bus,所以我希望mpv这样做。

    参考

    • https://github.com/mpv-player/mpv/tree/master/libmpv
    • https://github.com/mpv-player/mpv
    • 探索 D-Bus
    • 0

相关问题

  • 是否可以像在 vlc 中那样继续从 mpv 中离开的电影?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve