9 个版本 (稳定)

使用旧的 Rust 2015

1.1.2 2020 年 12 月 13 日
1.1.0 2019 年 7 月 12 日
1.0.2 2020 年 12 月 13 日
1.0.1 2019 年 2 月 1 日
0.0.2 2017 年 5 月 13 日

#269 in 音频

Apache-2.0

535KB
4K SLoC

icon Connectr icon

OSX/Linux Build Status Windows Build Status Crates.io Version

一个超级轻量级的 Spotify 控制器。

Connectr 是一个小程序,让您可以快速轻松地查看或更改 Spotify 账户上正在播放的内容。

它与支持 Spotify Connect 的任何设备兼容:电脑、手机、扬声器、电视、PlayStation 等。

注意: 使用 Spotify 的远程控制功能需要 Spotify Premium。免费账户无法使用。

它运行在 Mac 菜单栏(右上角)或 Windows 系统托盘(右下角...),以及 Mac Touch Bar(新 Macbook 键盘上的触摸屏)。它只是一个图标,当您需要时弹出控制,不需要时隐藏起来。或者只需悬停在其上即可查看当前正在播放的内容。

它能做什么

  • 显示播放内容
  • 播放/暂停
  • 跳过曲目
  • 快速播放保存的“预设”
  • 快速将播放的曲目保存到播放列表
  • 选择播放设备
  • 更改音量
  • 闹钟(在指定时间在所选设备上播放)
  • 向 Last.fm 播放

最重要的是,它在运行时保持极小的内存占用。与 Spotify 桌面应用的 300-1000MB 相比,Mac 上约为 10MB。您不需要购买额外的 RAM 只是为了监控扬声器上正在播放的内容。

闹钟和 scrobbling 功能期望 Connectr 在始终开启的服务器上运行。如果您想在无头 Linux 机器上运行它,您可以先在本地机器上配置它,然后将 ~/.connectr.ini 移动到您的服务器。

对于开发者:与 Spotify 后端通信的 API 以 Rust 库的形式提供,作为 Cargo crate 提供。Connectr 提供了官方的 Spotify 'Player' Web API 以控制 Spotify Connect 设备。

注意: Connectr 不是一个音频播放工具;它只是一个遥控器。Spotify 没有公开发布支持 Spotify Connect 的音频播放库。有一个逆向工程努力,巧合的是也在 Rust 中,在 librespot。librespot + connectr 组合可以在约 15MB 的 RAM 中为您提供完整的 Spotify 播放体验。这是听 Spotify 最节省资源的途径。

注意: Connectr 不是由 Spotify 开发的,与他们的公司无关。

下载

提供二进制发布是为了方便。建议从源代码构建。

Connectr v1.1.0

Mac OS X (64 位,md5: ce958529bcf3fef1ece3c73b1197678d)

旧版本:Connectr v0.2.0

Windows 10 (64 位,md5: 1745ecb67bd5ef0822eeabd96d98dcde)

屏幕截图

Mac OS X
Windows 10
Macbook 触控栏

构建说明

您需要下载 Rust 来进行构建。

$ git clone https://github.com/mrmekon/connectr.git
$ cd connectr
$ cargo run

使用/帮助

首次启动时,Connectr 将打开您的网络浏览器到一个自配置页面,并将其配置保存到您的系统主目录。配置页面将指导您创建必要的 Spotify 开发者应用程序。

Spotify 开发者应用程序配置

首次启动时,Connectr 将指导您设置 Spotify 开发者应用程序。如果您想手动操作或出现错误,请按照以下说明操作

  • 转到您的 Spotify 应用程序 页面(使用您的 Spotify 凭据登录)
  • 点击右上角的“创建应用”
  • 输入名称(例如“Connectr”)和描述(“使用 Connectr 应用与我的账户一起使用。”)
  • 添加重定向 URI: http://127.0.0.1:5432
  • 将您的 客户端 ID客户端密钥 复制到 connectr.ini(见下文)。

Mac 触控栏界面

设置

  • 确保在系统偏好设置的键盘部分已启用“控制条”,在 Touch Bar 显示 下。
  • 按下控制条中的 Connectr 图标以展开它。它将在您按下左侧的 x 按钮之前保持展开。
  • 控制条仅支持 4 个图标,并将所有新的图标堆叠在最左侧的图标上。如果 Connectr 图标缺失,它可能被隐藏在其他图标“下面”。您可以继续单击最左侧的图标以打开它们。

控件

  • 双击曲目标题以在模式之间旋转
  • 曲目和艺术家
  • 曲目
  • 艺术家
  • 要快速保存曲目,在曲目标题上向右滑动直到围绕它画出一个框,然后释放。首先在 connectr.ini 中配置快速保存。

配置文件(connectr.ini)格式

注意: 如果存在,connectr 使用 ~/.connectr.ini。如果不存在,connectr 将尝试从运行目录中尝试使用 connectr.ini。在 connectr.ini.in 中提供了一个模板。

配置文件是在 Connectr 首次启动时由图形化网络配置生成的,可以通过从菜单中选择 重新配置 Connectr 来重新配置。您不需要自己编写 connectr.ini。以下文档仅供参考。

connectr 的配置是从具有以下部分的常规 INI 文件中读取的

[connectr]

  • 端口号 - 请求初始OAuth令牌时,临时运行Web服务器的端口号(整数)。默认为5432。例如:端口号 = 5432
  • quicksave_default - 选择“快速保存”时保存曲目到播放列表

[应用]

  • client_id - Spotify Web应用程序的Client ID(字符串)。例如:client_id = ABCABCABCABC123123123
  • secret - Spotify Web应用程序的Client Secret(字符串)。例如:secret = DEFDEFDEFDEF456456456

[预设]

每行一个预设,格式如下

  • [预设名称] = [上下文URI]
  • [预设名称] = [上下文URI],[快速保存播放列表URI]

其中

  • 预设名称是您为预设选择的任何名称
  • 上下文URI是选择时播放的Spotify上下文(专辑、播放列表等)
  • 快速保存URI是(可选的)在播放此预设时,如果点击“快速保存”,将当前曲目保存到播放列表的URI。

示例

创建一个名为Bakesale的预设,当选择时播放Sebadoh的专辑,并将该专辑中我喜欢的曲目保存到私人播放列表

Bakesale=spotify:album:70XjdLKH7HHsFVWoQipP0T,spotify:user:mrmekon:playlist:4aqg0RkXSxknWvIXARV7or

[闹钟]

注意:此设置应通过图形化Web界面配置,而不是直接编辑。从Connectr菜单中选择编辑闹钟以启动图形界面。

最多五个闹钟条目,指定时间、设备、要播放的播放列表和重复闹钟的日期。

格式

alarm<i> = <hour>:<minute>,<repeat>,<Spotify URI>,<Device ID>

  • <i> - 从0到4(包括0和4)的数字
  • <hour> - 24小时制的小时(0-23)
  • <minute> - 分钟(0-59)
  • <repeat> - 其中之一:dailyweekdaysweekends
  • <Spotify URI> - 要播放的Spotify上下文的URI。格式与预设相同。
  • <Device ID> - 要播放的设备的唯一ID。这些在图形化Web界面上列出,或者在~/.connectr.log日志文件中可以找到。

注意:Connectr必须在预定闹钟时间运行并连接到互联网。目标设备也必须运行并使用您的Spotify账户登录。这意味着闹钟功能在运行在始终开启的机器上(如家庭媒体服务器或VPS)时最有用。您可以通过在桌面机器上配置它并在服务器上复制~/.connectr.ini配置文件来在无头服务器上运行Connectr。

[lastfm]

可选配置让Connectr将播放的曲目同步到Last.fm同步服务。这需要一个免费的Last.fm账户和免费的Last.fm开发者API令牌。

注意:必须通过图形化网页界面进行配置。网页界面会请求您的Last.fm用户名和密码,并在保存到配置文件之前将密码替换为会话密钥。在配置文件中无法指定密码,因此没有GUI无法启用Last.fm同步。一旦启用,有效的Last.fm配置可以传输到其他机器。

注意:与闹钟功能类似,同步需要Connectr始终运行。这意味着应该从始终开启的计算机上运行,例如家庭媒体服务器或VPS。您可以先在普通机器上配置它,然后将/.connectr.ini文件复制到您的始终开启的服务器。

有选项可以忽略在手机/平板电脑或计算机上播放的曲目,如果您希望官方的Spotify客户端处理这些设备上的同步。这对手机尤其有利,因为Spotify可以在离线时同步播放的曲目。

  • 启用 - 是否启用Last.fm同步
  • key - Last.fm开发者API密钥
  • secret - Last.fm开发者API密钥
  • session_key - 缓存的Last.fm认证令牌
  • username - Last.fm用户名
  • ignore_pc - Connectr是否应忽略在计算机上播放的曲目
  • ignore_phone - Connectr是否应忽略在手机/平板电脑上播放的曲目

[tokens]

注意:此部分在运行时自动生成和自动更新。如果您制作自己的配置文件,则可以将其留空。

  • version - Connectr认证格式的版本
  • access - Spotify Web API访问令牌
  • refresh - Spotify Web API刷新令牌
  • expire - 访问令牌的过期时间(UTC)

示例connectr.ini

[connectr]
port=5432

[application]
secret=xxxxxyyyyyaaaaabbbbbcccccddddd
client_id=xXxXxyYyYynNnNnNmMmMmMpPpPpP

[presets]
Discover Weekly=spotify:user:spotify:playlist:37i9dQZEVXcOmDhsenkuCu
Edge Detector=spotify:user:mrmekon:playlist:4SKkpDbZwNGklpIILmEZAg
Play Today=spotify:user:mrmekon:playlist:4c8eKK6kKrcdt1HToEX7Jc

[tokens]
version=1
access=this-is-autogenerated
refresh=this-is-also-autogenerated
expire=1492766270

[lastfm]
enabled=true
key=aaaaabbbbbbccccccddddddeeeeee
secret=ffffffgggggghhhhhhhiiiiiijjjjjj
session_key=kkkkkkllllllmmmmmmnnnnnooooooppppp
username=MyGloriousUsername
ignore_phone=true
ignore_pc=false

[alarms]
alarm1=08:00,weekdays,spotify:user:mrmekon:playlist:1BayoBGuBA5HhF0ZuYw2sN,1267eba791c19740744eb5c41a5165ce6691fb9b

功能进度

功能 OS X Windows Linux
API
获取设备列表
  • [x]
  • [x]
  • [x]
获取当前播放信息
  • [x]
  • [x]
  • [x]
将播放传输到设备
  • [x]
  • [x]
  • [x]
在设备上开始新的播放
  • [x]
  • [x]
  • [x]
暂停/恢复
  • [x]
  • [x]
  • [x]
跳到下一曲/上一曲
  • [x]
  • [x]
  • [x]
在曲目中搜索
  • [x]
  • [x]
  • [x]
更改音量
  • [x]
  • [x]
  • [x]
更改重复状态
  • [x]
  • [x]
  • [x]
更改随机播放状态
  • [x]
  • [x]
  • [x]
闹钟
  • [x]
  • [x]
  • [x]
Last.fm同步
  • [x]
  • [x]
  • [x]
获取专辑封面
  • [ ]
  • [ ]
  • [ ]
用户界面
显示当前曲目
  • [x]
  • [x]
  • [ ]
工具提示中的当前曲目
  • [x]
  • [x]
  • [ ]
播放控制
  • [x]
  • [x]
  • [ ]
设备选择
  • [x]
  • [x]
  • [ ]
音量控制
  • [x]
  • [x]
  • [ ]
预设
  • [x]
  • [x]
  • [ ]
将当前曲目保存到播放列表
  • [x]
  • [x]
  • [ ]
系统
持久配置
  • [x]
  • [x]
  • [x]
系统日志
  • [x]
  • [x]
  • [x]

重要依赖项

  • fruitbasket - 为Connectr编写的Mac应用程序生命周期框架。
  • rubrail - 为Connectr编写的Mac触控栏库。
  • objc - SSheldon的Objective-C包装器套件,用于Rust。
  • cocoa-rs - 与objc互补的Rust的Cocoa绑定。
  • systray - Rust的Windows系统托盘库。
  • rustfm-scrobble - Last.fm同步库。

依赖项

~12–24MB
~388K SLoC