Apple Media

🍎 一键掌控全屋 Apple 音响

通过 pyatv 和 Airfoil 在 macOS 上发现并控制 Apple TV、HomePod 及 AirPlay 设备,支持设备扫描、配对连接和播放/音量控制。

收藏
10.4k
安装
2.1k
版本
0.1.0
CLS 安全性认证2026-08-12
点击查看完整报告 >

使用说明

核心用法

本 Skill 是围绕 pyatv(atvremote)和 Airfoil 的轻量级工作流封装,专为 macOS 用户设计,用于发现并控制 Apple 媒体生态系统设备:

  • 设备发现:通过 ./scripts/scan.sh./scan-json.js 扫描本地网络,获取 HomePod、Apple TV、AirPlay 音箱的 IP、设备 ID 和型号信息
  • 音箱控制(推荐路径):集成 Airfoil Skill,提供可靠的 HomePod/AirPlay 音箱连接、断开和音量调节,避免 pyatv 的认证限制
  • Apple TV 遥控:使用 atvremote 执行播放控制(play_pause)、电源管理(turn_on/off)及状态查询(playing)

显著优点

1. 双工具互补设计:pyatv 负责设备发现和 Apple TV 深层控制,Airfoil 专攻音频路由,扬长避短
2. 开箱即用的脚本封装:提供扫描、连接、音量调节等 Shell/Node 脚本,降低命令行操作门槛

3. JSON 结构化输出scan-json.js 将扫描结果转为机器可读的设备清单,便于自动化集成

潜在局限

  • HomePod 控制受限:pyatv 对 HomePod 的播放/音量控制常需认证配对,功能不完整,必须回退到 Airfoil
  • macOS 独占:依赖 Airfoil 和 pyatv 的特定平台实现,无法跨平台使用
  • Python 版本锁定:需固定 Python 3.12 运行环境,规避 3.14 的 asyncio 兼容性问题
  • 网络环境依赖:设备发现依赖 mDNS/Bonjour,复杂网络(VLAN隔离、多子网)可能导致扫描失败

适合人群

  • macOS 深度用户,已拥有 HomePod/Apple TV/AirPlay 音箱生态
  • 希望通过脚本或自动化工具(如 Alfred、Raycast、Hammerspoon)快捷控制客厅媒体设备的效率用户
  • 智能家居集成开发者,需将 Apple 设备纳入现有自动化工作流

常规风险

| 风险项 | 说明 |
|--------|------|
| 网络暴露 | 扫描和控制命令在本地网络明文传输(部分设备支持加密配对) |
| 认证凭证 | Apple TV 配对可能生成持久化凭证,需妥善存储避免泄露 |
| 误操作风险 | 音量脚本无二次确认,过高音量可能损伤设备或听力 |
| 依赖维护 | pyatv 需跟进 tvOS/iOS 协议变更,存在未来兼容性风险 |

安全解读

核心用法

Apple Media Skill 是一套面向 macOS 用户的 Apple 智能家居设备控制方案,主要解决 HomePod、Apple TV 及 AirPlay 音箱的统一管理问题。其核心工作流程分为三步:

1. 设备发现:通过 scan.shscan-json.js 脚本调用 atvremote scan 命令,在本地局域网内快速扫描 AirPlay 设备,获取设备名称、IP 地址、型号和服务类型等信息,支持纯文本和 JSON 两种输出格式。

2. 音箱控制:针对 HomePod 等 AirPlay 音箱的音量调节和连接管理,推荐使用 Airfoil 工具链(connect.shvolume.sh),通过相对路径调用外部 airfoil skill 实现可靠的扬声器路由控制。

3. Apple TV 遥控:对于 Apple TV 设备,使用 atvremote 直接发送播放控制指令(play_pause、turn_on/off、playing 状态查询等),支持基于设备名称或 ID 的精准定位。

显著优点

  • 原生生态兼容:深度集成 Apple 的 mDNS/Bonjour 和 AirPlay 协议,无需额外桥接设备即可发现和控制 HomePod、Apple TV 等官方设备。
  • 双工具互补设计:pyatv 提供完整的协议层支持(包括配对、认证、远程控制),Airfoil 弥补其在 HomePod 音量控制上的稳定性短板,形成优势互补。
  • 轻量无侵入:120 行代码、5 个文件的极简实现,通过子进程调用外部工具而非直接绑定复杂库,降低维护成本和兼容性风险。
  • 本地隐私优先:所有设备扫描和控制流量严格限定于本地网络,不经过任何第三方服务器,扫描结果仅本地输出。

潜在缺点与局限性

  • 平台强绑定:完全依赖 macOS 环境,Airfoil 为 macOS 专属商业软件,pyatv 虽跨平台但 Skill 整体无法迁移至 Linux 或 Windows。
  • 外部依赖繁琐:需用户手动通过 pipx 安装 pyatv 并指定 Python 3.12 版本,同时需预先安装 Airfoil 应用,入门门槛较高。
  • 认证门槛未完全消除:部分 HomePod 控制场景仍需设备配对和认证,Skill 本身不管理凭证,遇到协议错误需用户手动处理。
  • Skill 间耦合脆弱:通过硬编码相对路径 ../../airfoil/airfoil.sh 引用外部 skill,若目录结构变化将导致功能失效。

适合的目标群体

  • Apple 全家桶重度用户:已部署多台 HomePod、Apple TV,希望通过命令行或自动化脚本集中管理音频设备的效率爱好者。
  • 智能家居自动化开发者:需要将 Apple 设备纳入 Home Assistant、n8n 等自动化工作流的技术用户。
  • macOS 终端工作者:习惯命令行操作,不愿频繁打开 Home App 或系统偏好设置进行音量调节的开发者群体。

使用风险

  • 子进程注入风险scan-json.js 使用 execSync 拼接命令字符串,虽已做 Number() 类型转换防护,但仍建议未来版本迁移至 spawn 以获得更严格的参数隔离。
  • 依赖可用性风险:pyatv 与 Python 版本兼容性存在历史问题(如 Python 3.14 的 asyncio 变更),需持续关注上游更新;Airfoil 作为商业软件存在授权和版本兼容性变数。
  • 网络环境依赖:mDNS 扫描在多子网、VLAN 隔离或企业级网络中可能受限,设备发现成功率受本地网络配置影响。
  • 权限与认证管理:AirPlay 2 的加密和认证机制持续演进,未来 iOS/tvOS 更新可能导致现有配对方式失效,需跟踪 pyatv 社区适配进度。

Apple Media 内容

scripts文件夹
手动下载zip · 4.5 kB
connect.shtext/x-shellscript
请选择文件