1. I Don't Have Spotify (github.com)
IDHS (I Don't Have Spotify) 工具总结
核心功能
IDHS 是一个跨流媒体平台的链接转换工具。用户只需复制来自任一支持平台的链接(如 Spotify、Apple Music 等),粘贴到 IDHS 的搜索栏,即可获取该内容在其他所有支持平台上的对应链接。若原链接来自 Spotify,还可能提供音频预览以便确认。
注意:目前仅支持单个曲目、专辑、艺人和播客,不支持播放列表。
支持的流媒体服务
下表列出了 IDHS 的“适配器”(即支持转换的平台)及其功能特性:
| 适配器 | 反向搜索 | 使用官方API | 验证链接 |
|---|---|---|---|
| Spotify | 是 | 否 | 是 |
| Tidal | 是 | 是 | 是 |
| YouTube Music | 是 | 否 | 是 |
| Apple Music | 是 | 否 | 是 |
| Deezer | 是 | 是 | 是 |
| SoundCloud | 是 | 否 | 是 |
| Qobuz | 是 | 否 | 是 |
| Bandcamp | 是 | 否 | 是 |
| Pandora | 是 | 否 | 是 |
技术架构
系统主要由两部分组成:解析器 和 适配器,采用模块化设计。
解析器:
- 作用:识别传入链接的来源平台,并从链接中提取标准化的元数据(如标题、描述、类型、图片、可选的音频预览)。
- 输出:基于提取的元数据,构建一个规范化的搜索查询字符串。例如,一个 Spotify 链接会被解析以获取 Open Graph 元数据并生成代表该曲目/专辑/艺人/节目/单集的查询。
适配器:
- 作用:接收解析器生成的标准化查询,并为每个目标平台(如 Spotify、YouTube Music 等)生成对应的链接。
- 工作流程:每个适配器负责使用标准化的查询,在其对应平台上执行搜索(通过官方 API 或基于 HTML 的搜索)。随后返回一个包含类型、URL 以及
isVerified(是否为验证链接)、notAvailable(是否可用)等标志的结果。当平台提供可靠的匹配信号时,系统会优先返回“已验证”的链接。
关键说明:该系统通过公共搜索引擎或官方 API(如 Apple Music、YouTube、SoundCloud)进行搜索,并选择看似最相关的结果。无法保证返回的链接一定是用户想要的精确曲目,甚至可能不是一首歌。设计时要求保持请求速度快,并避免使用暴力重试以防触发速率限制。
可用形式与源码
- Web 应用:在线版本。
- 扩展程序:提供 Raycast 扩展。
- 源代码:托管于 GitHub (
raycast/extensions/tree/main/extensions/idonthavespotify)。
本地部署与配置
环境变量:需要在
.env文件中配置以下变量(具体获取方式见说明):TIDAL_CLIENT_ID和TIDAL_CLIENT_SECRET:从 TIDAL 开发者门户获取。YOUTUBE_API_KEY:从 Google 开发者控制台获取。- Spotify 认证说明:由于 Spotify 自2026年3月起限制了其 Web API,该项目不使用官方开发者 API,而是通过模拟 Spotify 网页播放器,提取一个基于 TOTP 认证的匿名访问令牌。该令牌会自动刷新(约1小时有效期),无需开发者账户。
URL_SHORTENER_API_KEY:如需运行 URL 缩短服务,需配置此变量(值需与docker-compose.yml中一致)。
启动应用:
- 使用 Docker Compose 启动服务:
docker compose up -d。 - 安装依赖:
bun install。 - 启动开发服务器:
bun dev。
- 使用 Docker Compose 启动服务:
其他信息
- 项目欢迎贡献代码,可通过提交 PR 参与。
- 工具图标由
deepai.org的text2img模型生成。