Yndaw2h/discord-widget-music-sync

GitHub: Yndaw2h/discord-widget-music-sync

将 Spotify 实时播放状态和收听统计数据同步到 Discord 实验性个人资料小部件的自动化脚本。

Stars: 0 | Forks: 0

# Discord 动态小部件(Spotify 同步)

此脚本会自动将你当前正在播放的 Spotify 曲目直接同步到 Discord 全新的、未公开的 **Widgets** 系统中。它会从 Spotify 获取元数据和专辑封面,在 Discord 的 CDN 上管理图像资源,并实时更新你的个人资料小部件。 它还会在本地维护一个 SQLite 数据库来记录你的收听历史,以便直接在你的个人资料中显示诸如 **连续天数**、**热门歌曲**、**总播放次数** 和 **总时长** 等统计数据。 ## 功能 - **实时 Spotify 同步**:歌曲切换时立即更新你的 Discord 小部件。 - **动态专辑封面**:将 Spotify 专辑封面作为应用资源直接上传到 Discord 的 CDN。 - **收听统计**:使用本地 SQLite 数据库 (`music_history.db`) 跟踪你的总播放次数、时长、连续天数和热门歌曲。 - **完全自动化**:在后台运行并无缝轮询 Spotify。 ## 设置与安装 ### 1. 环境要求 - Python 3.8+ - 一个 Spotify 账号(推荐使用 Premium,但也支持免费版) - 一个启用了 "Widgets" 功能的 Discord 账号(目前需要在 Discord 中启用开发者实验才能看到该 UI)。 ### 2. 安装说明 克隆此仓库并安装所需的包: ``` git clone https://github.com/Yndaw2h/discord-widget-music-sync.git cd discord-widget-music-sync pip install -r requirements.txt ``` ### 3. 环境变量 将 `.env.example` 复制为一个名为 `.env` 的新文件: ``` cp .env.example .env ``` 打开 `.env` 并填写相应的值: #### Spotify API 设置 1. 前往 [Spotify Developer Dashboard](https://developer.spotify.com/dashboard/)。 2. 创建一个 App。 3. 在应用设置中将 `https://open.spotify.com/` 添加为 Redirect URI。 4. 将 **Client ID** 和 **Client Secret** 复制到你的 `.env` 文件中。 #### Discord Widgets 设置 *免责声明:Discord Widgets 是一项实验性功能。你需要在 Discord 客户端中启用开发者实验才能访问它。* 关于如何启用开发者实验的详细视频指南,我强烈推荐 **No Text To Speech** 制作的这份教程: [![No Text To Speech Tutorial](https://img.youtube.com/vi/gYv7D83u7yQ/maxresdefault.jpg)](https://www.youtube.com/watch?v=gYv7D83u7yQ) 此外,如果你更喜欢文字指南: [启用开发者实验并配置应用完整指南](https://chloecinders.com/blog/discord-widgets#setting-up-your-application-and-developer-portal) ### 4. 运行脚本 运行此追踪器: ``` python tracker.py ``` *注意:首次运行此脚本时,系统会打开一个浏览器窗口,要求你登录 Spotify 并对该应用进行授权。* 现在,该脚本将在后台静默运行,更新你的数据库,并将最新的曲目推送到你的 Discord 个人资料小部件! ### 已知限制 - **激进的客户端缓存**:虽然脚本能成功在 Discord 服务器上实时更新小部件,但 Discord 桌面端/Web 客户端会对个人资料小部件进行大量缓存。目前尚不清楚客户端究竟何时会自然地获取最新小部件数据。要强制客户端查看最新小部件,你可能需要完全重新加载 Discord 客户端(例如,按下 `Ctrl + R`)。 ## 免责声明 本项目使用了未公开的 Discord API 端点(`/users/@me/widgets` 和 `/applications/{app_id}/assets`),并通过 **用户账号 token** 自动执行操作,这属于 Discord 对 "self-botting" 的定义范畴。这违反了 Discord 的服务条款。使用此脚本会使你的账号面临受到 Discord 处罚的风险,甚至可能导致账号被封禁。Discord 也可能随时在不另行通知的情况下更改或移除这些端点。使用风险自负。
标签:逆向工具