在 macOS 上发现并控制 Apple 媒体/AirPlay 设备(HomePod、Apple TV、AirPlay 扬声器)。适用于扫描 AirPlay 设备、映射名称到 IP/ID、配对连接,以及利用 pyatv 和 Airfoil 控制播放与音量。
Apple Media( AirPlay + Apple TV control).是一项面向实际任务的技能,主要用于Author: Parth Maniar — @ officialpm. 此技能是一个细长的工作流程包装器,围绕两个工具:. pyatv(atvremote)用于发现苹果TV/HomePods和(w)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
作者:Parth Maniar — @officialpm
该技能是一个轻量级工作流封装,整合了以下两个工具:
atvremote):用于发现 Apple TV / HomePod 设备,并在支持且已配对的情况下执行远程控制类指令。airfoil 技能):提供跨 AirPlay 音响(包括 HomePod)的可靠音响连接/断开 + 音量控制能力。本技能依赖通过 pipx 安装的 pyatv。
安装或修复(固定使用 Python 3.12,以规避 Python 3.14 中 asyncio 的兼容性问题):
pipx install pyatv || pipx upgrade pyatv pipx reinstall pyatv --python python3.12
验证安装是否成功:
atvremote --help | head
# 快速扫描(5 秒) ./scripts/scan.sh 5 # 已知目标 IP 时可更快扫描 ./scripts/scan-hosts.sh "10.0.0.28,10.0.0.111" 3 # 或输出 JSON 格式结果 node ./scripts/scan-json.js 5
你将看到如下设备:
使用 Airfoil 进行音响控制(对 HomePod 更稳定可靠):
# 列出 Airfoil 可识别的所有音响 ../airfoil/airfoil.sh list # 连接并设置音量 ./scripts/connect.sh "Living Room" ./scripts/volume.sh "Living Room" 35 # 直接断开连接 ../airfoil/airfoil.sh disconnect "Living Room"
首先扫描获取 Apple TV 的名称或 ID,再执行具体命令:
# 示例(设备名可以是 “TV”,或其他目标名称) atvremote -n "TV" playing atvremote -n "TV" play_pause atvremote -n "TV" turn_on atvremote -n "TV" turn_off
若出现认证或协议错误,则需进行配对或提供凭据(取决于具体设备)。
atvremote scan 是获取设备 IP 地址与 ID 的权威来源。scripts/scan.sh调用 atvremote scan 并支持自定义超时时间。
./scripts/scan.sh 5
scripts/scan-json.js将 atvremote scan 的原始输出解析为紧凑的 JSON 汇总格式(包含 name、address、model、services 字段)。
node ./scripts/scan-json.js