Apple Music 专辑链接一键复制

一个专为 Apple Music 设计的 Tampermonkey 用户脚本,能够一键复制当前页面中的所有专辑链接到剪贴板,方便批量使用。
✨ 特性
- 🚀 一键复制:快速提取并复制页面中的所有专辑链接
- 🎯 智能识别:自动检测和过滤 Apple Music 专辑链接
- 🔗 格式优化:链接以空格分隔,方便批量处理
- 📱 现代UI:简洁美观的浮动按钮界面
- 🛡️ 稳定可靠:完善的错误处理和容错机制
- 🌐 兼容性强:支持 Shadow DOM 和现代浏览器
- ⚡ 性能优化:智能缓存和防抖机制
🚀 安装使用
1. 安装 Tampermonkey
首先确保您的浏览器已安装 Tampermonkey 扩展:
2. 安装脚本
- 在 Tampermonkey 中创建新脚本
- 复制
AppleMusic.js
的完整内容并粘贴
- 保存脚本(Ctrl+S)
3. 开始使用
- 访问任意 Apple Music 页面(如专辑、播放列表、艺术家页面等)
- 页面右下角会出现「专辑链接」浮动按钮
- 点击按钮即可复制当前页面的所有专辑链接
📖 使用说明
界面介绍
┌─────────────────┐
│ 专辑链接 [5] │ ← 显示检测到的专辑数量
└─────────────────┘
↓ 点击展开
┌─────────────────┐
│ 复制专辑链接 │ ← 一键复制功能
├─────────────────┤
│ 链接以空格分隔, │ ← 格式说明
│ 方便批量使用 │
└─────────────────┘
操作方式
方式一:浮动按钮
- 页面右下角的浮动按钮
- 显示当前检测到的专辑数量
- 点击展开操作面板
方式二:菜单命令
- Tampermonkey 扩展菜单
- 选择「复制专辑链接」命令
输出格式
复制的链接格式为空格分隔,例如:
https://music.apple.com/cn/album/kind-of-blue/268443092 https://music.apple.com/cn/album/a-love-supreme/1440687467 https://music.apple.com/cn/album/moanin/1440811580
这种格式特别适合:
🎯 适用页面
脚本会自动检测以下类型的 Apple Music 页面:
- 🎵 专辑页面:
/album/
- 📝 播放列表:
/playlist/
- 👤 艺术家页面:
/artist/
- 📻 电台页面:
/station/
- 🏠 主题房间:
/room/
- 🔍 浏览页面:
/browse/
🔧 技术特性
智能识别
- 精确匹配:只识别真正的专辑链接
- 去重处理:基于专辑 ID 自动去重
- URL 清理:移除不必要的查询参数
性能优化
- 懒加载:仅在相关页面激活
- 防抖机制:避免频繁重复执行
- 内存管理:使用 WeakSet 防止内存泄漏
兼容性
- Shadow DOM:支持现代 Web Components
- SPA 路由:适配单页应用的路由变化
- 多浏览器:兼容主流浏览器
容错机制
- 多重回退:GM_setClipboard → navigator.clipboard → 手动复制
- 异常处理:全面的 try-catch 保护
- 日志记录:详细的控制台日志
🛠️ 开发说明
代码结构
AppleMusic.js
├── 用户脚本元数据
├── 工具函数
│ ├── getAllAnchorsDeep() # 深度遍历获取所有链接
│ ├── isAlbumLink() # 判断是否为专辑链接
│ ├── extractAlbumIdFromUrl() # 提取专辑 ID
│ └── getAlbumLinksFromPage() # 获取页面所有专辑链接
├── 页面检测
│ ├── isRelevantPage() # 检测是否为相关页面
│ └── waitForContent() # 等待内容加载
├── 核心功能
│ ├── copyToClipboard() # 复制到剪贴板
│ └── actionCopyCurrent() # 执行复制操作
├── 用户界面
│ ├── addMenuCommands() # 添加菜单命令
│ └── addFloatingButton() # 添加浮动按钮
└── 初始化逻辑
├── SPA 路由监听
├── DOM 变化观察
└── 资源清理
自定义配置
可以通过修改脚本中的常量来自定义行为:
// 等待内容加载的超时时间(毫秒)
const WAIT_TIMEOUT = 5000;
// 防抖延迟时间(毫秒)
const DEBOUNCE_DELAY = 500;
// 检测重试间隔(毫秒)
const RETRY_INTERVAL = 200;
🤝 贡献
欢迎提交 Issue 和 Pull Request!
开发环境
- 安装 Tampermonkey
- 创建开发版脚本
- 在 Apple Music 页面测试
测试页面
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
👤 作者
onlys
🙏 致谢
- Apple Music 提供的优秀音乐服务
- Tampermonkey 团队提供的强大扩展平台
- 所有测试和反馈的用户
🎵 享受音乐,简化操作!