有没有办法在启动mpv后从 中获取当前播放文件的完整路径mpv?
我看到了这个问题,但它没有显示如何获取属性,只是如何发送命令。
编辑:通过“获取完整路径”,我的意思是从编程开始;从另一个程序或终端,而不是通过mpv在mpv应用程序本身上使用命令/键绑定。
为此,您必须mpv从该--input-ipc-server选项开始,或者将其放入您的mpv.conf文件中。那看起来像:
--input-ipc-server=/tmp/mpvsocket
或者文件中没有破折号mpv.conf:
input-ipc-server=/tmp/mpvsocket
该套接字连接到mpv使用相同的最近启动的实例input-ipc-server。
然后,您可以使用如下命令:
echo '{ "command": ["get_property", "<some property>"] }' | socat - /tmp/mpvsocket
Run Code Online (Sandbox Code Playgroud)
例如:
$ echo '{ "command": ["get_property", "path"] }' | socat - /tmp/mpvsocket
{"data":"01 - Don't Know Why.mp3","request_id":0,"error":"success"}
Run Code Online (Sandbox Code Playgroud)
您可以通过执行以下操作获取属性列表mpv --list-properties
要获取完整路径,请组合working-directory和path属性。可以使用 解析响应jq,因此对于所需的输出:
#!/bin/sh
SOCKET='/tmp/mpvsocket'
# pass the property as the first argument
mpv_communicate() {
printf '{ "command": ["get_property", "%s"] }\n' "$1" | socat - "${SOCKET}" | jq -r ".data"
}
WORKING_DIR="$(mpv_communicate "working-directory")"
FILEPATH="$(mpv_communicate "path")"
printf "%s/%s\n" "$WORKING_DIR" "$FILEPATH"
Run Code Online (Sandbox Code Playgroud)
编辑:我已经在上面的脚本中添加了额外的错误处理;mpv-currently-playing。不应总是尝试计算绝对路径,除非您确定它正在播放本地文件。如果它是一个 URL,最终可能会弄乱方案/位置
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |