告别深夜切歌烦恼:用cli3/cli打造Spotify睡眠定时器
你是否曾在睡前听歌却不小心睡过头?是否希望音乐能在设定时间后自动停止,避免整夜播放影响睡眠质量?本文将介绍如何利用cli3/cli工具为Spotify客户端开发一个睡眠定时器扩展,通过简单配置实现音乐自动停止播放功能。
项目基础:cli3/cli工具简介
cli3/cli是一款用于自定义Spotify客户端的命令行工具,支持Windows、MacOS和Linux系统。该工具允许用户通过注入扩展脚本(Javascript)来扩展Spotify功能,如自定义UI、控制播放器行为等。项目核心功能包括:
- 修改整个UI的颜色主题
- 注入CSS实现高级样式定制
- 通过扩展脚本扩展功能
- 加载自定义应用
- 移除冗余组件提升性能
完整项目说明参见README.md。
技术实现:基于现有扩展的改造方案
虽然当前项目中没有直接提供睡眠定时器功能,但我们可以基于现有的Extensions/loopyLoop.js扩展进行改造。该扩展实现了音乐循环播放功能,其核心原理是监听播放器进度并在特定条件下控制播放行为。
loopyLoop.js的主要结构包括:
// 监听播放器进度事件
Spicetify.Player.addEventListener("onprogress", (event) => {
if (start != null && end != null) {
// 进度判断逻辑
if (percent > end || percent < start) {
// 控制播放位置
Spicetify.Player.seek(start);
}
}
});
// 创建上下文菜单
const startBtn = createMenuItem("Set start", () => {
start = mouseOnBarPercent;
// ...
});
我们可以借鉴这种实现思路,开发睡眠定时器功能。
开发步骤:构建睡眠定时器扩展
1. 创建扩展文件
在项目的Extensions目录下创建sleepTimer.js文件:
// NAME: Sleep Timer
// AUTHOR: Your Name
// VERSION: 0.1
// DESCRIPTION: Auto stop music after specified time
(function SleepTimer() {
// 扩展实现代码
})();
2. 实现核心功能
睡眠定时器的核心功能包括:
- 设置倒计时时间
- 启动/暂停定时器
- 时间结束时停止播放
关键实现代码如下:
let timer = null;
let remainingTime = 0;
function startTimer(minutes) {
remainingTime = minutes * 60;
updateDisplay();
timer = setInterval(() => {
remainingTime--;
updateDisplay();
if (remainingTime <= 0) {
clearInterval(timer);
Spicetify.Player.pause();
showNotification("睡眠定时器已结束,音乐已暂停");
}
}, 1000);
}
// 创建定时器控制界面
function createTimerUI() {
// UI实现代码
}
3. 集成到Spotify界面
参考loopyLoop.js的上下文菜单实现,将定时器控制选项添加到进度条右键菜单中:
const setTimerBtn = createMenuItem("设置睡眠定时器", () => {
const minutes = prompt("请输入睡眠时间(分钟):");
if (minutes && !isNaN(minutes)) {
startTimer(parseInt(minutes));
}
});
const contextMenu = document.createElement("div");
// ...添加菜单到界面
应用场景:改善睡眠的使用示例
如上图所示的歌词显示界面(CustomApps/lyrics-plus/),我们可以在类似位置添加睡眠定时器控制界面。用户使用流程如下:
- 右键点击播放进度条
- 选择"设置睡眠定时器"选项
- 输入希望音乐播放的时间(分钟)
- 定时器启动后在界面显示剩余时间
- 时间结束后自动暂停播放
扩展思路:更多自定义功能
基于cli3/cli的扩展能力,我们还可以实现更多实用功能:
- 结合CustomApps/lyrics-plus/Translator.js中的定时逻辑,实现歌词同步显示
- 利用Extensions/autoSkipVideo.js的自动跳过功能,实现广告过滤
- 参考Extensions/bookmark.js的收藏功能,添加睡眠定时器预设
总结与展望
通过本文介绍的方法,我们可以利用cli3/cli工具为Spotify添加睡眠定时器功能,有效解决睡前听歌忘记关闭的问题。这一实现不仅展示了cli3/cli的强大扩展能力,也为用户提供了个性化音乐体验的新思路。
未来可以进一步完善功能,如添加多个定时预设、渐进式降低音量等高级特性。更多扩展开发指南可参考项目官方文档和现有扩展实现。
希望这个小工具能帮助你获得更好的睡眠质量,享受更智能的音乐体验!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




