xiaomusic/docs/.vitepress/dist/issues/index.html

89 lines
115 KiB
HTML
Raw Normal View History

2024-12-12 17:02:34 +00:00
<!DOCTYPE html>
<html lang="en-US" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>XiaoMusic: 无限听歌,解放小爱音箱 | XiaoMusic</title>
<meta name="description" content="XiaoMusic doc">
<meta name="generator" content="VitePress v1.5.0">
<link rel="preload stylesheet" href="/assets/style.DKcHOilP.css" as="style">
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
<script type="module" src="/assets/app.BW3PQTBv.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.CHcreDy7.js">
<link rel="modulepreload" href="/assets/chunks/framework.p2VkXzrt.js">
<link rel="modulepreload" href="/assets/issues_index.md.Do1eTGGf.lean.js">
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-d8b57b2d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-d8b57b2d data-v-7ad780c2><div class="VPNavBar" data-v-7ad780c2 data-v-9fd4d1dd><div class="wrapper" data-v-9fd4d1dd><div class="container" data-v-9fd4d1dd><div class="title" data-v-9fd4d1dd><div class="VPNavBarTitle has-sidebar" data-v-9fd4d1dd data-v-9f43907a><a class="title" href="/" data-v-9f43907a><!--[--><!--]--><!----><span data-v-9f43907a>XiaoMusic</span><!--[--><!--]--></a></div></div><div class="content" data-v-9fd4d1dd><div class="content-body" data-v-9fd4d1dd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-9fd4d1dd><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-9fd4d1dd data-v-afb2845e><span id="main-nav-aria-label" class="visually-hidden" data-v-afb2845e> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/markdown-examples.html" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>Examples</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-9fd4d1dd data-v-3f90c1a5><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-3f90c1a5 data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-9fd4d1dd data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/hanxi/xiaomusic" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-9fd4d1dd data-v-f953d92f data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-bfe7971f><span class="vpi-more-horizontal icon" data-v-bfe7971f></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><!----><!--[--><!--[--><!----><div class="group" data-v-f953d92f><div class="item appearance" data-v-f953d92f><p class="label" data-v-f953d92f>Appearance</p><div class="appearance-action" data-v-f953d92f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f953d92f data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div></div></div><div class="group" data-v-f953d92f><div class="item social-links" data-v-f953d92f><div class="VPSocialLinks social-links-list" data-v-f953d92f data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/hanxi/xiaomusic" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-9fd4d1dd data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><div class="divider" data-v-9fd4d1dd><div class="divider-line" data-v-9fd4d1dd></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> xiaomusic</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hanxi/xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">8090:8090</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/music:/app/music</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/conf:/app/conf</span></span></code></pre></div><p>🔥 国内:</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> xiaomusic</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">m.daocloud.io/docker.io/hanxi/xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">8090:8090</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/music:/app/music</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/conf:/app/conf</span></span></code></pre></div><p>其中 conf 目录为配置文件存放目录music 目录为音乐存放目录,建议分开配置为不同的目录。</p><div class="note custom-block github-alert"><p class="custom-block-title">NOTE</p><p>上面配置的 /xiaomusic/music 和 /xiaomusic/conf 是 docker 主机里的 /xiaomusic 目录下的,可以修改为其他目录。如果报错找不到 /xiaomusic/music 目录,可以先执行 <code>mkdir -p /xiaomusic/{music,conf}</code> 命令新建目录。</p></div><p>docker 和 docker compose 二选一即可,启动成功后,在 web 页面可以配置其他参数,带有 <code>*</code> 号的配置是必须要配置的,其他的用不上时不用修改。初次配置时需要在页面上输入小米账号和密码保存后才能获取到设备列表。</p><div class="tip custom-block github-alert"><p class="custom-block-title">TIP</p><p>目前安装步骤已经是最简化了,如果还是嫌安装麻烦,可以微信或者 QQ 约我远程安装,我一般周末和晚上才有时间,收个辛苦费 💰 50 元一次,安装失败不收费。</p></div><h3 id="🔥-修改默认8090端口映射" tabindex="-1">🔥 修改默认8090端口映射 <a class="header-anchor" href="#🔥-修改默认8090端口映射" aria-label="Permalink to &quot;🔥 修改默认8090端口映射&quot;" target="_self"></a></h3><h4 id="方法1-不修改监听端口-8090" tabindex="-1">方法1 不修改监听端口 8090 <a class="header-anchor" href="#方法1-不修改监听端口-8090" aria-label="Permalink to &quot;方法1 不修改监听端口 8090&quot;" target="_self"></a></h4><p>【监听端口】保持为默认的 8090 不变,把【外网访问端口】改为 5678 。</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> xiaomusic</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hanxi/xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">5678:8090</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/music:/app/music</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/conf:/app/conf</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> XIAOMUSIC_PUBLIC_PORT</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5678</span></span></code></pre></div><p>XIAOMUSIC_PUBLIC_PORT 对应后台设置里的【外网访问端口】,修改后可以不用重启。</p><h4 id="方法2-修改监听端口-8090-为-5678" tabindex="-1">方法2 修改监听端口 8090 为 5678 <a class="header-anchor" href="#方法2-修改监听端口-8090-为-5678" aria-label="Permalink to &quot;方法2 修改监听端口 8090 为 5678&quot;" target="_self"></a></h4><p>如果需要修改 8090 端口为其他端口,比如 5678需要这样配3个数字都需要是 5678 。见 <a href="https://github.com/hanxi/xiaomusic/issues/19" target="_self">https://github.com/hanxi/xiaomusic/issues/19</a></p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;">services</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> xiaomusic</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> image</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hanxi/xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> container_name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> restart</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">unless-stopped</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> ports</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">5678:5678</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> volumes</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/music:/app/music</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> - </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/xiaomusic/conf:/app/conf</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> environment</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> XIAOMUSIC_PORT</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5678</span></span></code></pre></div><p>如果不是首次修改端口,还需要修改 /xiaomusic/conf/setting.json 文件里的端口(也可以在后台修改监听端口后重启)。</p><p>遇到问题可以去 web 设置页面底部点击【下载日志文件】按钮,然后搜索一下日志文件内容确保里面没有账号密码信息后(有就删除这些敏感信息),然后在提 issues 反馈问题时把下载的日志文件带上。</p><div class="important custom-block github-alert"><p class="custom-block-title">IMPORTANT</p><p>XIAOMUSIC_PORT 也可以在后台配置,对应的是监听端口,修改后记得重启。</p></div><h3 id="🤐-支持语音口令" tabindex="-1">🤐 支持语音口令 <a class="header-anchor" href="#🤐-支持语音口令" aria-label="Permalink to &quot;🤐 支持语音口令&quot;" target="_self"></a></h3><ul><li>【播放歌曲】,播放本地的歌曲</li><li>【播放歌曲+歌名】,比如:播放歌曲周杰伦晴天</li><li>【上一首】</li><li>【下一首】</li><li>【单曲循环】</li><li>【全部循环】</li><li>【随机播放】</li><li>【关机】,【停止播放】,两个效果是一样的。</li><li>【刷新列表】,当复制了歌曲进 music 目录后,可以用这个口令刷新歌单。</li><li>【播放列表+列表名】,比如:播放列表其他。</li><li>【加入收藏】,把当前播放的歌曲加入收藏歌单。</li><li>【取消收藏】,把当前播放的歌曲从收藏歌单里移除。</li><li>【播放列表收藏】,这个用于播放收藏歌单。</li><li>【播放本地歌曲+歌名】,这个口令和播放歌曲的区别是本地找不到也不会去下载。</li><li>【播放列表第几个+列表名】,具体见: <a href="https://github.com/hanxi/xiaomusic/issues/158" target="_self">https://github.com/hanxi/xiaomusic/issues/158</a></li><li>【搜索播放+关键词】,会搜索关键词作为临时搜索列表播放,比如说【搜索播放林俊杰】,会播放所有林俊杰的歌。</li><li>【本地搜索播放+关键词】,跟搜索播放的区别是本地找不到也不会去下载。</li></ul><div class="tip custom-block github-alert"><p class="custom-block-title">TIP</p><p>隐藏玩法: 对小爱同学说播放歌曲小猪佩奇的故事,会先下载小猪佩奇的故事,然后再播放小猪佩奇的故事。</p></div><h2 id="🛠️-pip-方式安装运行" tabindex="-1">🛠️ pip 方式安装运行 <a class="header-anchor" href="#🛠️-pip-方式安装运行" aria-label="Permalink to &quot;🛠️ pip 方式安装运行&quot;" target="_self"></a></h2><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> pip install -U xiaomusic</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic --help</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> __</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> __</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> _</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> __</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> __</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> _</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \/</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (_) __ _ ___ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> _</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> _</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ___</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (_) ___</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> /</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> /</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> _` </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> /</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> _ </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">\/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> /</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> __</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> /</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> __</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> /</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> (</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> (</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \__</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> \ </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> (</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">__</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> /_/\_\</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \__,_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \___/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \__,_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">___/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> |</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">_</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> \___</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">|</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> XiaoMusic</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> v0.3.37 by: github.com/hanxi</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">usage:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> xiaomusic [-h] [--port PORT] [--hardware HARDWARE] [--account ACCOUNT]</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> [--password PASSWORD] [--cookie COOKIE] [--verbose]</span></span>
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> [--config CONFIG] [--ffmpeg_location FFMPEG_LOCATION]</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">options:</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> -h,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --help</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> show this help message and exit</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --port</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> PORT 监听端口</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --hardware</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> HARDWARE 小爱音箱型号</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --account</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ACCOUNT xiaomi account</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --password</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> PASSWORD xiaomi password</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --cookie</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> COOKIE xiaomi cookie</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --verbose</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> show info</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> CONFIG config file path</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> --ffmpeg_location</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> FFMPEG_LOCATION</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> ffmpeg</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> bin path</span></span>
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">&gt;</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> xiaomusic --config config.json</span></span></code></pre></div><p>其中 <code>config.json</code> 文件可以参考 <code>config-example.json</code> 文件配置。见 <a href="https://github.com/hanxi/xiaomusic/issues/94" target="_self">https://github.com/hanxi/xiaomusic/issues/94</a></p><p>不修改默认端口 8090 的情况下,只需要执行 <code>xiaomusic</code> 即可启动。</p><h2 id="🔩-开发环境运行" tabindex="-1">🔩 开发环境运行 <a class="header-anchor" href="#🔩-开发环境运行" aria-label="Permalink to &quot;🔩 开发环境运行&quot;" target="_self"></a></h2><ul><li>使用 install_dependencies.sh 下载依赖</li><li>使用 pdm 安装环境</li><li>默认监听了端口 8090 , 使用其他端口自行修改。</li></ul><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">pdm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> run</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> xiaomusic.py</span></span></code></pre></div><p>如果是开发前端界面,可以通过 <a href="http://localhost:8090/docs" target="_self">http://localhost:8090/docs</a> 查看有什么接口。目前的 web 控制台非常简陋,欢迎有兴趣的朋友帮忙实现一个漂亮的前端,需要什么接口可以随时提需求。</p><h3 id="🚦-代码提交规范" tabindex="-1">🚦 代码提交规范 <a class="header-anchor" href="#🚦-代码提交规范" aria-label="Permalink to &quot;🚦 代码提交规范&quot;" target="_self"></a></h3><p>提交前请执行</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span>pdm lintfmt</span></span></code></pre></div><p>用于检查代码和格式化代码。</p><h3 id="本地编译-docker-image" tabindex="-1">本地编译 Docker Image <a class="header-anchor" href="#本地编译-docker-image" aria-label="Permalink to &quot;本地编译 Docker Image&quot;" target="_self"></a></h3><div class="language-shell vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">shell</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">docker</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> build</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> -t</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> xiaomusic</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> .</span></span></code></pre></div><h3 id="技术栈" tabindex="-1">技术栈 <a class="header-anchor" href="#技术栈" aria-label="Permalink to &quot;技术栈&quot;" target="_self"></a></h3><ul><li>后端代码使用 Python 语言编写。</li><li>HTTP 服务使用的是 FastAPI 框架,<s>早期版本使用的是 Flask</s></li><li>使用了 Docker ,在 NAS 上安装更方便。</li><li>默认的前端主题使用了 jQuery 。</li></ul><h2 id="已测试支持的设备" tabindex="-1">已测试支持的设备 <a class="header-anchor" href="#已测试支持的设备" aria-label="Permalink to &quot;已测试支持的设备&quot;" target="_self"></a></h2><table tabindex="0"><thead><tr><th>型号</th><th>名称</th></tr></thead><tbody><tr><td>L06A</td><td><a href="https://home.mi.com/baike/index.html#/detail?model=xiaomi.wifispeaker.l06a" target="_self">小爱音箱</a></td></tr><tr><td>L07A</td><td><a href="https://home.mi.com/webapp/content/baike/product/index.html?model=xiaomi.wifispeaker.l7a" target="_self">Redmi小爱音箱
<script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"ByDiiWcV\",\"issues_101.md\":\"DBQG9jJP\",\"issues_105.md\":\"8_yuCS-D\",\"issues_182.md\":\"CpqPtztd\",\"issues_19.md\":\"DB81ml38\",\"issues_210.md\":\"C4LG69AC\",\"issues_211.md\":\"DUZAr3Vg\",\"issues_212.md\":\"j95HTJwO\",\"issues_269.md\":\"CwdSqsHN\",\"issues_285.md\":\"0b7MF6MA\",\"issues_294.md\":\"CrOAwh-t\",\"issues_297.md\":\"CtkkBK4R\",\"issues_78.md\":\"CH6fxnfx\",\"issues_88.md\":\"VOyx9x2b\",\"issues_94.md\":\"GErTTh9P\",\"issues_96.md\":\"D6uW10Mi\",\"issues_99.md\":\"amwtZpFn\",\"issues_index.md\":\"Do1eTGGf\",\"test1_api-examples.md\":\"LfndiNnB\",\"test1_index.md\":\"Bma_WtEx\",\"test1_markdown-examples.md\":\"D-SZaDZl\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"XiaoMusic\",\"description\":\"XiaoMusic doc\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Examples\",\"link\":\"/markdown-examples\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/hanxi/xiaomusic\"}],\"sidebar\":{\"/issues/\":[{\"items\":[{\"text\":\"docker xiaomusic\",\"link\":\"/issues/101.html\"},{\"text\":\"\",\"link\":\"/issues/105.html\"},{\"text\":\"\",\"link\":\"/issues/182.html\"},{\"text\":\"8090\",\"link\":\"/issues/19.html\"},{\"text\":\"yt-dlp cookies \",\"link\":\"/issues/210.html\"},{\"text\":\"📝 \",\"link\":\"/issues/211.html\"},{\"text\":\"\",\"link\":\"/issues/212.html\"},{\"text\":\" playlist\",\"link\":\"/issues/269.html\"},{\"text\":\"\",\"link\":\"/issues/285.html\"},{\"text\":\"M01\",\"link\":\"/issues/294.html\"},{\"text\":\"xiaomusic2024-12-4\",\"link\":\"/issues/297.html\"},{\"text\":\"\",\"link\":\"/issues/78.html\"},{\"text\":\"m3u\",\"link\":\"/issues/88.html\"},{\"text\":\"config.json\",\"link\":\"/issues/94.html\"},{\"text\":\"ios\",\"link\":\"/issues/96.html\"},{\"text\":\"💬 FAQ\",\"link\":\"/issues/99.html\"},{\"text\":\"XiaoMusic: \",\"link\":\"/issues/index.html\"}]}],\"/node_modules/\":[{\"items\":[{\"text\":\"@algolia\",\"items\":[{\"text\":\"autocomplete-core\",\"items\":[{\"text\":\"@algolia/autocomplete-core\",\"link\":\"/node_modules/@algolia/autocomplete-core/README.html\"}],\"collapsed\":true},{\"text\":\"autocomplete-plugin-algolia-insights\",\"items\":[{\"text\":\"@algolia/autocomplete-plugin-algolia-insights\",\"link\":\"/node_modules/@algolia/autocomplete-plugin-algolia-insights/README.html\"}],\"collapsed\":true},{\"text\":\"autocomplete-preset-algolia\",\"items\":[{\"text\":\"@algolia/autocomplete-preset-algolia\",\"link\":\"/node_modules/@algolia/autocomplete-preset-algolia/README.html\"}],\"collapsed\":true},{\"text\":\"client-abtesting\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-abtesting/README.html\"}],\"collapsed\":true},{\"text\":\"client-analytics\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-analytics/README.html\"}],\"collapsed\":true},{\"text\":\"client-insights\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-insights/README.html\"}],\"collapsed\":true},{\"text\":\"client-personalization\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-personalization/README.html\"}],\"collapsed\":true},{\"text\":\"client-query-suggestions\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-query-suggestions/README.html\"}],\"collapsed\":true},{\"text\":\"client-search\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-search/README.html\"}],\"collapsed\":true},{\"text\":\"ingestion\",\"ite
</body>
</html>