#音乐播放器 #mpd #mpd客户端 #命令行客户端 #守护进程 #mpc #实现

app mp-cli

使用Rust编写的音乐播放器守护进程(MPD)命令行客户端

9个版本

0.2.1 2024年1月14日
0.2.0 2024年1月12日
0.1.7 2024年1月7日
0.1.4 2023年10月9日
0.1.3 2023年9月25日

#93音频

Download history 47/week @ 2024-04-02

每月 79 次下载

MIT/Apache

70KB
2K SLoC

mp-cli

ci Coverage Status Crate Status

使用Rust编写的音乐播放器守护进程(MPD)命令行客户端。

功能

我正在努力使它与mpc兼容。有关当前状态,请参阅此跟踪问题

或者,请参阅帮助

安装

目前需要本地编译和安装crate。最简单的方法是安装Rust工具链

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

然后使用cargocrates.io构建和安装。

cargo install mp-cli

为什么?

主要是因为我想练习写Rust。此外,为了与令人惊叹的macOS栏应用程序SketchyBar一起使用。我创建的一个插件可以显示MPD当前状态(播放/暂停)以及艺术家和标题。我过去曾使用mpc来达到这个目的,但状态输出不适合解析(更适合人类可读性)。

因此,我决定实现一个客户端,它将提供更一致和可解析的输出。

 mp-cli status
volume=100
state=play
artist=King Gizzard & The Lizard Wizard
title=Wah Wah

此格式易于在shell脚本中解析和高效

#! /usr/bin/env bash

status=$(mp-cli)

while IFS='=' read -r key value; do
	case "$key" in
	'artist') artist="$value" ;;
	'state') state="$value" ;;
	'title') title="$value" ;;
	'volume') volume="$value" ;;
	esac
done <<<"$status"

echo "${artist}"
echo "${state}"
echo "${title}"
echo "${volume}"

或者可以将状态呈现为JSON。

 mp-cli --format json status | jq
{
  "volume": "100",
  "state": "play",
  "artist": "King Gizzard & The Lizard Wizard",
  "title": "Road Train"
}

致谢

与守护进程通信的重任全部由rust-mpd处理。

显然mpc是用于与mpd交互的实际CLI工具。对于我(目前)已实现的命令,我已经尽最大努力模仿mpc的界面。理论上,这可以作为一个非常有限的用例的替换。

依赖项

~2.8–4MB
~74K SLoC