Skip to content

Latest commit

 

History

History
66 lines (66 loc) · 3.89 KB

README_CN.md

File metadata and controls

66 lines (66 loc) · 3.89 KB

MiWifispeaker

English version

🪄 功能

控制小米网络音箱播放本地音乐🎵。

📁 本地音乐的管理

🪟 Windows

确保电脑与音箱在同一局域网下,系统文件管理器地址栏输入 \\<ip> ,其中 <ip> 为音箱 ip 地址,即可访问。若出现错误,请尝试启用 SMBv1 客户端,虽然在通常情况下我们并不建议这么做

🤔 其他系统

确保电脑与音箱在同一局域网下,使用 SMB 客户端连接至音箱 ip ,若需要提供用户名,则填入 GUEST ,密码留空。你可能也需要在某处启用 SMBv1 。

🚩 登录

🔑 使用用户id和密码登录

wifi_speaker = WifiSpeakerV3('<小米id>', '<密码>', '<序列号>')
# 如果你拥有多个网络音箱并且想指定你要控制的网络音箱,序列号是必须的。
# 你通常可以在音箱底部看到序列号。

🍪 使用 Cookie 登录

  1. 确保可正常抓取手机/模拟器的 https 包,即使应用不信任用户证书。(建议使用安卓6及以下的模拟器,配合 Fiddler 实现抓包)
  2. 手机/模拟器安装“小爱音箱”APP(com.xiaomi.mico)。
  3. 打开抓包软件,确认可工作后登录“小爱音箱”软件。
  4. 在抓取到的数据包中,复制任一域名为 api*.mina.mi.com 的请求的 cookie ,确保 cookie 含有 userId, deviceSNProfile, sn, deviceIdserviceToken 字段。以下是一个例子。
    userId=2574549865
    deviceSNProfile=eyJzaWduIjoiNzMzMDA4NzFmNDRjMTY4ZTdjOTQ5ZGUyYzc1MGU2MGMyYzliYjhmZjUzMDAxN2M1YTI2NzIzNGU5Y2I0ZGI4ZSIsInNuIjoiMTUwODcvNTYwMDE1NjQ4In0=
    sn=15087/560015648
    deviceId=6e8h7506-8d34-65df-c0d7-e19480s7d3b4
    serviceToken=tJYUMjSdn6MHAaEJzdchU8XZVqkGnbmrT3n4hhQaIqrrAl9OwgyWGwEZohfPDUENSaQ/aPJF1JVaX32nwCaHAvOACyJ7aJW5g7hw+GYJ5SrKBqVN8XG0wjvPaFYpyQ3Ha8Oelx6IH8OxydiqNop98RTUnOxHLW9G7AkfowucoGiYRls8XbhqBL22q3lBVntfZ7EnEpXY6x9FaNGE0DQWVQ==
    
  5. 转换为 Python dict ,即可开始使用!
    my_cookie = {
        'userId': '2574549865',
        'deviceSNProfile': 'eyJzaWduIjoiNzMzMDA4NzFmNDRjMTY4ZTdjOTQ5ZGUyYzc1MGU2MGMyYzliYjhmZjUzMDAxN2M1YTI2NzIzNGU5Y2I0ZGI4ZSIsInNuIjoiMTUwODcvNTYwMDE1NjQ4In0=',
        'sn': '15087/560015648',
        'deviceId': '6e8h7506-8d34-65df-c0d7-e19480s7d3b4',
        'serviceToken': 'tJYUMjSdn6MHAaEJzdchU8XZVqkGnbmrT3n4hhQaIqrrAl9OwgyWGwEZohfPDUENSaQ/aPJF1JVaX32nwCaHAvOACyJ7aJW5g7hw+GYJ5SrKBqVN8XG0wjvPaFYpyQ3Ha8Oelx6IH8OxydiqNop98RTUnOxHLW9G7AkfowucoGiYRls8XbhqBL22q3lBVntfZ7EnEpXY6x9FaNGE0DQWVQ=='
    }
    wifi_speaker = WifiSpeakerV3(my_cookie)

💡 结合以上两种方法

当你登录成功后,保存 cookie 以备以后使用。下次使用脚本时,你就可以使用保存的 cookie 。如果 cookie 过期,重新登录并保存 cookie 。 Cookie 可以通过 WifiSpeakerV3.cookie 获取。 例子:

from json import load, dump
try:
    with open('cookie') as f:
        wifi_speaker = WifiSpeakerV3(cookie=load(f))
        status = wifi_speaker.status
except:
    print('Refreshing cookie...')
    wifi_speaker = WifiSpeakerV3('<Mi id>', '<password>')
    status = wifi_speaker.status
    with open('cookie', 'w') as f:
        dump(wifi_speaker.cookie.get_dict(), f)

📖 用法

暂无文档,请参考 demo.py

✅ 支持的型号

你可以通过 token extractormiiocli device --ip <ip_address> --token <token> info 以确定你的设备的型号。

  • xiaomi.wifispeaker.v3

⚠️ 注意事项

暂无。

🗒️ Todo

  • 添加 set_loop_type
  • 添加播放列表。