docs: update
This commit is contained in:
parent
31eeb0a1cf
commit
2815f058ec
22
docs/.vitepress/dist/404.html
vendored
Normal file
22
docs/.vitepress/dist/404.html
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/app.BW3PQTBv.js
vendored
Normal file
1
docs/.vitepress/dist/assets/app.BW3PQTBv.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{t as i}from"./chunks/theme.CHcreDy7.js";import{R as o,a1 as u,a2 as c,a3 as l,a4 as f,a5 as d,a6 as m,a7 as h,a8 as g,a9 as A,aa as v,d as P,u as y,v as C,s as b,ab as w,ac as R,ad as E,ae as S}from"./chunks/framework.p2VkXzrt.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=p(i),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=y();return C(()=>{b(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),R(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp};
|
18
docs/.vitepress/dist/assets/chunks/framework.p2VkXzrt.js
vendored
Normal file
18
docs/.vitepress/dist/assets/chunks/framework.p2VkXzrt.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/chunks/theme.CHcreDy7.js
vendored
Normal file
1
docs/.vitepress/dist/assets/chunks/theme.CHcreDy7.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/index.md.ByDiiWcV.js
vendored
Normal file
1
docs/.vitepress/dist/assets/index.md.ByDiiWcV.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as e,c as t,o as a}from"./chunks/framework.p2VkXzrt.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"XiaoMusic","text":"无限听歌,解放小爱音箱","tagline":"使用小爱音箱播放音乐,音乐使用 yt-dlp 下载","actions":[{"theme":"brand","text":"快速开始","link":"/issues/index"},{"theme":"alt","text":"文档汇总","link":"/issues/211"}]},"features":[{"title":"MIT 开源","details":"完全开源,自主可控"},{"title":"一键部署","details":"支持 Docker 部署,兼容各大 NAS 平台"},{"title":"口令自定义","details":"可以完全自定义语音口令,可以写自己的插件"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function s(n,o,d,l,r,c){return a(),t("div")}const x=e(i,[["render",s]]);export{p as __pageData,x as default};
|
1
docs/.vitepress/dist/assets/index.md.ByDiiWcV.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/index.md.ByDiiWcV.lean.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as e,c as t,o as a}from"./chunks/framework.p2VkXzrt.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"XiaoMusic","text":"无限听歌,解放小爱音箱","tagline":"使用小爱音箱播放音乐,音乐使用 yt-dlp 下载","actions":[{"theme":"brand","text":"快速开始","link":"/issues/index"},{"theme":"alt","text":"文档汇总","link":"/issues/211"}]},"features":[{"title":"MIT 开源","details":"完全开源,自主可控"},{"title":"一键部署","details":"支持 Docker 部署,兼容各大 NAS 平台"},{"title":"口令自定义","details":"可以完全自定义语音口令,可以写自己的插件"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function s(n,o,d,l,r,c){return a(),t("div")}const x=e(i,[["render",s]]);export{p as __pageData,x as default};
|
BIN
docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2
vendored
Normal file
BIN
docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2
vendored
Normal file
Binary file not shown.
2
docs/.vitepress/dist/assets/issues_101.md.DBQG9jJP.js
vendored
Normal file
2
docs/.vitepress/dist/assets/issues_101.md.DBQG9jJP.js
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
import{_ as i,c as e,a0 as t,o as s}from"./chunks/framework.p2VkXzrt.js";const p=JSON.parse('{"title":"群晖docker安装 xiaomusic","description":"","frontmatter":{"title":"群晖docker安装 xiaomusic"},"headers":[],"relativePath":"issues/101.md","filePath":"issues/101.md","lastUpdated":null}'),o={name:"issues/101.md"};function r(c,a,d,h,n,l){return s(),e("div",null,a[0]||(a[0]=[t(`<h1 id="群晖docker安装-xiaomusic" tabindex="-1">群晖docker安装 xiaomusic <a class="header-anchor" href="#群晖docker安装-xiaomusic" aria-label="Permalink to "群晖docker安装 xiaomusic"" target="_self"></a></h1><p>由于现在群晖已经无法正常下载 docker 里的镜像了,绕了好多弯;现在用 ssh 服务命令拉取镜像来创建容器; 1、ssh 输入账号密码进入群晖 2、输入 sudo -i 再次输入密码进入 root 权限 3、输入 docker search xiaomusic来查找到该镜像名; 4、然后输入 docker pull xiaomusic 试试是否能安装,如果不能;就得在命令前加个代理地址;下面列了一些代理地址可以一个个的试 docker.fxxk.dedyn.iodocker.io registry-docker-hub-latest-9vgc.onrender.com docker.chenby.cn dockerproxy.com hub.uuuadc.top docker.jsdelivr.fyi docker.registry.cyou dockerhub.anzu.vip</p><p>我是用的最下面这个成功的 docker pull dockerhub.anzu.vip/xiaomusic:latest 5、安装完成后就进入群晖 DOCKER 配置 xiaomusic <img width="491" alt="image" src="https://github.com/hanxi/xiaomusic/assets/38914725/e318062b-bd70-464c-a8df-8ce3635f2d84"> MI_HARDWARE=型号 前面第4 步骤获取的 XIAOMUSIC_SEARCH=搜索方式,我填写的bilisearch: 意思是通过 bilibili 搜索 MI_DID=前面第4 步骤获取的 MI_USER=小米账号 MI_PASS=小米密码 XIAOMUSIC_FUZZY_MATCH_CUTOFF=模糊匹配,最小为 0.1 最大为 1,越小越模糊,越大越精准</p><p>6、配置端口 <img width="757" alt="image (1)" src="https://github.com/hanxi/xiaomusic/assets/38914725/2b6b9283-296f-4845-a3ff-0ebb11f548b4"> 7、映射路径 <img width="737" alt="image (2)" src="https://github.com/hanxi/xiaomusic/assets/38914725/593718dd-8302-4a69-bec9-36e70f3f0407"></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-kiwi5656" tabindex="-1">评论 1 - kiwi5656 <a class="header-anchor" href="#评论-1-kiwi5656" aria-label="Permalink to "评论 1 - kiwi5656"" target="_self"></a></h3><p>MI_DID=前面第4 步骤获取的,第4步骤在哪?</p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><blockquote><p>MI_DID=前面第4 步骤获取的,第4步骤在哪?</p></blockquote><p>不用设置 MI_DID</p><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><p>国内 docker 镜像</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>docker pull m.daocloud.io/docker.io/hanxi/xiaomusic:latest</span></span>
|
||||||
|
<span class="line"><span>docker tag m.daocloud.io/docker.io/hanxi/xiaomusic:latest hanxi/xiaomusic:latest</span></span></code></pre></div><hr><h3 id="评论-4-ginitaimeiyty" tabindex="-1">评论 4 - ginitaimeiyty <a class="header-anchor" href="#评论-4-ginitaimeiyty" aria-label="Permalink to "评论 4 - ginitaimeiyty"" target="_self"></a></h3><p>如果手头上有能科学上网的机器,直接把群辉的代理服务器IP填写成可以科学上网的机器IP+端口,翻墙软件打开允许局域网连接就可以</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/101" target="_self">链接到 GitHub Issue</a></p>`,20)]))}const m=i(o,[["render",r]]);export{p as __pageData,m as default};
|
2
docs/.vitepress/dist/assets/issues_101.md.DBQG9jJP.lean.js
vendored
Normal file
2
docs/.vitepress/dist/assets/issues_101.md.DBQG9jJP.lean.js
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
import{_ as i,c as e,a0 as t,o as s}from"./chunks/framework.p2VkXzrt.js";const p=JSON.parse('{"title":"群晖docker安装 xiaomusic","description":"","frontmatter":{"title":"群晖docker安装 xiaomusic"},"headers":[],"relativePath":"issues/101.md","filePath":"issues/101.md","lastUpdated":null}'),o={name:"issues/101.md"};function r(c,a,d,h,n,l){return s(),e("div",null,a[0]||(a[0]=[t(`<h1 id="群晖docker安装-xiaomusic" tabindex="-1">群晖docker安装 xiaomusic <a class="header-anchor" href="#群晖docker安装-xiaomusic" aria-label="Permalink to "群晖docker安装 xiaomusic"" target="_self"></a></h1><p>由于现在群晖已经无法正常下载 docker 里的镜像了,绕了好多弯;现在用 ssh 服务命令拉取镜像来创建容器; 1、ssh 输入账号密码进入群晖 2、输入 sudo -i 再次输入密码进入 root 权限 3、输入 docker search xiaomusic来查找到该镜像名; 4、然后输入 docker pull xiaomusic 试试是否能安装,如果不能;就得在命令前加个代理地址;下面列了一些代理地址可以一个个的试 docker.fxxk.dedyn.iodocker.io registry-docker-hub-latest-9vgc.onrender.com docker.chenby.cn dockerproxy.com hub.uuuadc.top docker.jsdelivr.fyi docker.registry.cyou dockerhub.anzu.vip</p><p>我是用的最下面这个成功的 docker pull dockerhub.anzu.vip/xiaomusic:latest 5、安装完成后就进入群晖 DOCKER 配置 xiaomusic <img width="491" alt="image" src="https://github.com/hanxi/xiaomusic/assets/38914725/e318062b-bd70-464c-a8df-8ce3635f2d84"> MI_HARDWARE=型号 前面第4 步骤获取的 XIAOMUSIC_SEARCH=搜索方式,我填写的bilisearch: 意思是通过 bilibili 搜索 MI_DID=前面第4 步骤获取的 MI_USER=小米账号 MI_PASS=小米密码 XIAOMUSIC_FUZZY_MATCH_CUTOFF=模糊匹配,最小为 0.1 最大为 1,越小越模糊,越大越精准</p><p>6、配置端口 <img width="757" alt="image (1)" src="https://github.com/hanxi/xiaomusic/assets/38914725/2b6b9283-296f-4845-a3ff-0ebb11f548b4"> 7、映射路径 <img width="737" alt="image (2)" src="https://github.com/hanxi/xiaomusic/assets/38914725/593718dd-8302-4a69-bec9-36e70f3f0407"></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-kiwi5656" tabindex="-1">评论 1 - kiwi5656 <a class="header-anchor" href="#评论-1-kiwi5656" aria-label="Permalink to "评论 1 - kiwi5656"" target="_self"></a></h3><p>MI_DID=前面第4 步骤获取的,第4步骤在哪?</p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><blockquote><p>MI_DID=前面第4 步骤获取的,第4步骤在哪?</p></blockquote><p>不用设置 MI_DID</p><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><p>国内 docker 镜像</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>docker pull m.daocloud.io/docker.io/hanxi/xiaomusic:latest</span></span>
|
||||||
|
<span class="line"><span>docker tag m.daocloud.io/docker.io/hanxi/xiaomusic:latest hanxi/xiaomusic:latest</span></span></code></pre></div><hr><h3 id="评论-4-ginitaimeiyty" tabindex="-1">评论 4 - ginitaimeiyty <a class="header-anchor" href="#评论-4-ginitaimeiyty" aria-label="Permalink to "评论 4 - ginitaimeiyty"" target="_self"></a></h3><p>如果手头上有能科学上网的机器,直接把群辉的代理服务器IP填写成可以科学上网的机器IP+端口,翻墙软件打开允许局域网连接就可以</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/101" target="_self">链接到 GitHub Issue</a></p>`,20)]))}const m=i(o,[["render",r]]);export{p as __pageData,m as default};
|
189
docs/.vitepress/dist/assets/issues_105.md.8_yuCS-D.js
vendored
Normal file
189
docs/.vitepress/dist/assets/issues_105.md.8_yuCS-D.js
vendored
Normal file
File diff suppressed because one or more lines are too long
189
docs/.vitepress/dist/assets/issues_105.md.8_yuCS-D.lean.js
vendored
Normal file
189
docs/.vitepress/dist/assets/issues_105.md.8_yuCS-D.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
53
docs/.vitepress/dist/assets/issues_182.md.CpqPtztd.js
vendored
Normal file
53
docs/.vitepress/dist/assets/issues_182.md.CpqPtztd.js
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const d=JSON.parse('{"title":"定时任务配置格式","description":"","frontmatter":{"title":"定时任务配置格式"},"headers":[],"relativePath":"issues/182.md","filePath":"issues/182.md","lastUpdated":null}'),l={name:"issues/182.md"};function h(p,s,k,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="定时任务配置格式" tabindex="-1">定时任务配置格式 <a class="header-anchor" href="#定时任务配置格式" aria-label="Permalink to "定时任务配置格式"" target="_self"></a></h1><p>支持采用 crontab 的格式配置定时任务,已经支持下面的任务类型:</p><ul><li>stop 关机</li><li>play 播放歌曲</li><li>play_music_list 播放列表</li><li>tts 文字转语音</li><li>refresh_music_list 刷新播放列表</li><li>set_volume 设置音量</li><li>set_play_type 设置播放类型,单曲循环 0 , 全部循环 1 , 随机播放 2 , 单曲播放 3 , 顺序播放 4</li></ul><h3 id="示例" tabindex="-1">示例 <a class="header-anchor" href="#示例" aria-label="Permalink to "示例"" target="_self"></a></h3><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 8 * * 0-4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦晴天"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"10 8 * * 0-4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 9 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦晴天"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 10 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"30 10 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦|晴天"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 7 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"tts"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"早上好!该起床了!"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 3 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"refresh_music_list"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_volume"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"25"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_play_type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>示例中的意思是:</p><ul><li>周一到周五每天 8 点播放歌曲 "周杰伦晴天"</li><li>周一到周五每天 8 点 10 分执行关机指令</li><li>每天 9 点播放歌曲 "周杰伦晴天"</li><li>每天 10 点播放列表 "周杰伦"</li><li>每天 10 点 30 分播放列表 "周杰伦" 里的 "晴天"</li><li>每天 7 点发出语音 "早上好!该起床了!"</li><li>每天 3 点刷新播放列表,用于自动更新目录下的歌曲到播放列表里。</li><li>每分钟设置音量为 25</li><li>每分钟设置为随机播放</li></ul><blockquote><p>注意星期一是0,星期二是1,星期日是6。 (0-6 or mon,tue,wed,thu,fri,sat,sun) The first weekday is always monday.</p></blockquote><h3 id="参数意思" tabindex="-1">参数意思 <a class="header-anchor" href="#参数意思" aria-label="Permalink to "参数意思"" target="_self"></a></h3><ul><li>expression 的格式是标准的 crontab 的格式,用于配置任务的执行时机,如何配置可以直接用下面的 crontab ai 工具生成 <ul><li><a href="https://cronly.app/ai" target="_self">https://cronly.app/ai</a></li><li><a href="https://cronify.zimo.li/" target="_self">https://cronify.zimo.li/</a></li></ul></li><li>name 是任务名,目前只支持上面那几种。</li><li>did 是小爱音箱的设备ID,就是设置页面的音箱型号后面的那串数字。</li><li>arg1 根据任务不同而不同。 <ul><li>play 的 arg1 表示要播放的歌曲名。</li><li>play_music_list 的 arg1 表示要播放的播放目录名,可以加 <code>|</code> 符合加上目录下面的歌曲名,也可不加。</li><li>tts 的 arg1 表示要说的语音文字。</li></ul></li></ul><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" target="_self"></a></h3><p>0.3.38版本功能。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/182" target="_self">链接到 GitHub Issue</a></p>`,15)]))}const u=i(l,[["render",h]]);export{d as __pageData,u as default};
|
53
docs/.vitepress/dist/assets/issues_182.md.CpqPtztd.lean.js
vendored
Normal file
53
docs/.vitepress/dist/assets/issues_182.md.CpqPtztd.lean.js
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const d=JSON.parse('{"title":"定时任务配置格式","description":"","frontmatter":{"title":"定时任务配置格式"},"headers":[],"relativePath":"issues/182.md","filePath":"issues/182.md","lastUpdated":null}'),l={name:"issues/182.md"};function h(p,s,k,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="定时任务配置格式" tabindex="-1">定时任务配置格式 <a class="header-anchor" href="#定时任务配置格式" aria-label="Permalink to "定时任务配置格式"" target="_self"></a></h1><p>支持采用 crontab 的格式配置定时任务,已经支持下面的任务类型:</p><ul><li>stop 关机</li><li>play 播放歌曲</li><li>play_music_list 播放列表</li><li>tts 文字转语音</li><li>refresh_music_list 刷新播放列表</li><li>set_volume 设置音量</li><li>set_play_type 设置播放类型,单曲循环 0 , 全部循环 1 , 随机播放 2 , 单曲播放 3 , 顺序播放 4</li></ul><h3 id="示例" tabindex="-1">示例 <a class="header-anchor" href="#示例" aria-label="Permalink to "示例"" target="_self"></a></h3><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 8 * * 0-4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦晴天"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"10 8 * * 0-4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 9 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦晴天"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 10 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"30 10 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"周杰伦|晴天"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 7 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"tts"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"早上好!该起床了!"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"0 3 * * *"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"refresh_music_list"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_volume"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"25"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "expression"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_play_type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"123456789"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "arg1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"2"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>示例中的意思是:</p><ul><li>周一到周五每天 8 点播放歌曲 "周杰伦晴天"</li><li>周一到周五每天 8 点 10 分执行关机指令</li><li>每天 9 点播放歌曲 "周杰伦晴天"</li><li>每天 10 点播放列表 "周杰伦"</li><li>每天 10 点 30 分播放列表 "周杰伦" 里的 "晴天"</li><li>每天 7 点发出语音 "早上好!该起床了!"</li><li>每天 3 点刷新播放列表,用于自动更新目录下的歌曲到播放列表里。</li><li>每分钟设置音量为 25</li><li>每分钟设置为随机播放</li></ul><blockquote><p>注意星期一是0,星期二是1,星期日是6。 (0-6 or mon,tue,wed,thu,fri,sat,sun) The first weekday is always monday.</p></blockquote><h3 id="参数意思" tabindex="-1">参数意思 <a class="header-anchor" href="#参数意思" aria-label="Permalink to "参数意思"" target="_self"></a></h3><ul><li>expression 的格式是标准的 crontab 的格式,用于配置任务的执行时机,如何配置可以直接用下面的 crontab ai 工具生成 <ul><li><a href="https://cronly.app/ai" target="_self">https://cronly.app/ai</a></li><li><a href="https://cronify.zimo.li/" target="_self">https://cronify.zimo.li/</a></li></ul></li><li>name 是任务名,目前只支持上面那几种。</li><li>did 是小爱音箱的设备ID,就是设置页面的音箱型号后面的那串数字。</li><li>arg1 根据任务不同而不同。 <ul><li>play 的 arg1 表示要播放的歌曲名。</li><li>play_music_list 的 arg1 表示要播放的播放目录名,可以加 <code>|</code> 符合加上目录下面的歌曲名,也可不加。</li><li>tts 的 arg1 表示要说的语音文字。</li></ul></li></ul><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" target="_self"></a></h3><p>0.3.38版本功能。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/182" target="_self">链接到 GitHub Issue</a></p>`,15)]))}const u=i(l,[["render",h]]);export{d as __pageData,u as default};
|
50
docs/.vitepress/dist/assets/issues_19.md.DB81ml38.js
vendored
Normal file
50
docs/.vitepress/dist/assets/issues_19.md.DB81ml38.js
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import{_ as a,c as n,a0 as i,o as p}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"如何修改默认的8090端口","description":"","frontmatter":{"title":"如何修改默认的8090端口"},"headers":[],"relativePath":"issues/19.md","filePath":"issues/19.md","lastUpdated":null}'),e={name:"issues/19.md"};function t(l,s,o,c,h,d){return p(),n("div",null,s[0]||(s[0]=[i(`<h1 id="如何修改默认的8090端口" tabindex="-1">如何修改默认的8090端口 <a class="header-anchor" href="#如何修改默认的8090端口" aria-label="Permalink to "如何修改默认的8090端口"" target="_self"></a></h1><p>docker-compose 修改映射端口会播放失败</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>ports:</span></span>
|
||||||
|
<span class="line"><span> - 80:8090</span></span></code></pre></div><p>从日志看继续调用了 <a href="http://10.0.0.4:8090" target="_self">http://10.0.0.4:8090</a> 而不是修改映射的80,还原成</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>ports:</span></span>
|
||||||
|
<span class="line"><span> - 8090:8090</span></span></code></pre></div><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>xiaomusic | [BiliBiliSearch] Playlist 安河桥北: Downloading 1 items of 1</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [download] Downloading item 1 of 1</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] Extracting URL: http://www.bilibili.com/video/av319943893</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] 319943893: Downloading webpage</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] BV1tw411X7Rr: Extracting videos in anthology</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] 319943893: Extracting chapters</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] Format(s) 1080P 高码率, 1080P 高清, 720P 高清, 4K 超清 are missing; you have to login or become premium member to download them. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [info] BV1tw411X7Rr: Downloading 1 format(s): 30280</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [download] Destination: music/安河桥北.m4a</span></span>
|
||||||
|
<span class="line"><span>[download] 0.3% of 5.61MiB at 6.24MiB/s ETA 00:0010.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 0.5% of 5.61MiB at 2.42MiB/s ETA 00:0210.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 1.1% of 5.61MiB at 1.50MiB/s ETA 00:0310.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 4.4% of 5.61MiB at 2.35MiB/s ETA 00:0210.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 8.9% of 5.61MiB at 3.59MiB/s ETA 00:0110.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 100% of 5.61MiB in 00:00:00 at 10.83MiB/s </span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [ExtractAudio] Destination: music/安河桥北.mp3</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | Deleting original file music/安河桥北.m4a (pass -k to keep)</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [download] Finished downloading playlist: 安河桥北</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [02/21/24 15:29:29] INFO 播放 xiaomusic.py:461</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | http://10.0.0.4:8090/music/%E5%AE% </span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 89%E6%B2%B3%E6%A1%A5%E5%8C%97.mp3 </span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 已经开始播放了 xiaomusic.py:464</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 歌曲music/安河桥北.mp3的时长251秒 xiaomusic.py:371</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 251秒后将会播放下一首 xiaomusic.py:385</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 匹配到指令. opkey:set_volume# xiaomusic.py:441</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | opvalue:set_volume oparg:24</span></span></code></pre></div><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" 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>environment:</span></span>
|
||||||
|
<span class="line"><span> XIAOMUSIC_PORT:80</span></span>
|
||||||
|
<span class="line"><span>ports:</span></span>
|
||||||
|
<span class="line"><span> - 80:80</span></span></code></pre></div><hr><h3 id="评论-2-newrookie001" tabindex="-1">评论 2 - newrookie001 <a class="header-anchor" href="#评论-2-newrookie001" aria-label="Permalink to "评论 2 - newrookie001"" target="_self"></a></h3><blockquote><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>environment:</span></span>
|
||||||
|
<span class="line"><span> XIAOMUSIC_PORT:80</span></span>
|
||||||
|
<span class="line"><span>ports:</span></span>
|
||||||
|
<span class="line"><span> - 80:80</span></span></code></pre></div></blockquote><p>自己走了点弯路,半天才搞明白。补充说明:</p><blockquote><p>environment: XIAOMUSIC_PORT: 5678 #就是“5678”可以根据自己要求设置,但要求上下的5678都设置成一个 ports: - 5678:5678</p></blockquote><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><p>如果换端口,需要3个数字一致,比如</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>environment:</span></span>
|
||||||
|
<span class="line"><span> XIAOMUSIC_PORT:6874</span></span>
|
||||||
|
<span class="line"><span>ports:</span></span>
|
||||||
|
<span class="line"><span> - 6874:6874</span></span></code></pre></div><hr><h3 id="评论-4-hanxi" tabindex="-1">评论 4 - hanxi <a class="header-anchor" href="#评论-4-hanxi" aria-label="Permalink to "评论 4 - hanxi"" target="_self"></a></h3><p>文档类型的我都打开下,方便其他人看到。</p><hr><h3 id="评论-5-flymin" tabindex="-1">评论 5 - flymin <a class="header-anchor" href="#评论-5-flymin" aria-label="Permalink to "评论 5 - flymin"" target="_self"></a></h3><p>docker-compose 中对应关系应该是</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;">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;">aaaa:bbbb</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:#032F62;--shiki-dark:#9ECBFF;">bbbb</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 配置文件中的 port,后台:监听端口(修改后需要重启)</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:#032F62;--shiki-dark:#9ECBFF;">aaaa</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 配置文件中的 public_port,后台:外网访问端口(0表示跟监听端口一致)</span></span></code></pre></div><p>以上,docker 环境中基本不存在需要修改 bbbb 的情况,也就是不用设置 XIAOMUSIC_PORT。如果需要修改端口,只需要修改两处 aaaa 如果使用反向代理,则转发 localhost:aaaa,XIAOMUSIC_PUBLIC_PORT 设置成代理的监听端口 cccc</p><p>另外,setting 文件存在会覆盖环境变量。启动过之后需要直接修改 settings.json 或者在后台修改</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/19" target="_self">链接到 GitHub Issue</a></p>`,31)]))}const m=a(e,[["render",t]]);export{u as __pageData,m as default};
|
50
docs/.vitepress/dist/assets/issues_19.md.DB81ml38.lean.js
vendored
Normal file
50
docs/.vitepress/dist/assets/issues_19.md.DB81ml38.lean.js
vendored
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import{_ as a,c as n,a0 as i,o as p}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"如何修改默认的8090端口","description":"","frontmatter":{"title":"如何修改默认的8090端口"},"headers":[],"relativePath":"issues/19.md","filePath":"issues/19.md","lastUpdated":null}'),e={name:"issues/19.md"};function t(l,s,o,c,h,d){return p(),n("div",null,s[0]||(s[0]=[i(`<h1 id="如何修改默认的8090端口" tabindex="-1">如何修改默认的8090端口 <a class="header-anchor" href="#如何修改默认的8090端口" aria-label="Permalink to "如何修改默认的8090端口"" target="_self"></a></h1><p>docker-compose 修改映射端口会播放失败</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>ports:</span></span>
|
||||||
|
<span class="line"><span> - 80:8090</span></span></code></pre></div><p>从日志看继续调用了 <a href="http://10.0.0.4:8090" target="_self">http://10.0.0.4:8090</a> 而不是修改映射的80,还原成</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>ports:</span></span>
|
||||||
|
<span class="line"><span> - 8090:8090</span></span></code></pre></div><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>xiaomusic | [BiliBiliSearch] Playlist 安河桥北: Downloading 1 items of 1</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [download] Downloading item 1 of 1</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] Extracting URL: http://www.bilibili.com/video/av319943893</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] 319943893: Downloading webpage</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] BV1tw411X7Rr: Extracting videos in anthology</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] 319943893: Extracting chapters</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [BiliBili] Format(s) 1080P 高码率, 1080P 高清, 720P 高清, 4K 超清 are missing; you have to login or become premium member to download them. Use --cookies-from-browser or --cookies for the authentication. See https://github.com/yt-dlp/yt-dlp/wiki/FAQ#how-do-i-pass-cookies-to-yt-dlp for how to manually pass cookies</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [info] BV1tw411X7Rr: Downloading 1 format(s): 30280</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 10.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [download] Destination: music/安河桥北.m4a</span></span>
|
||||||
|
<span class="line"><span>[download] 0.3% of 5.61MiB at 6.24MiB/s ETA 00:0010.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 0.5% of 5.61MiB at 2.42MiB/s ETA 00:0210.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 1.1% of 5.61MiB at 1.50MiB/s ETA 00:0310.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 4.4% of 5.61MiB at 2.35MiB/s ETA 00:0210.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 8.9% of 5.61MiB at 3.59MiB/s ETA 00:0110.0.0.118 - - [21/Feb/2024 15:29:24] "POST /cmd HTTP/1.1" 200 -</span></span>
|
||||||
|
<span class="line"><span>[download] 100% of 5.61MiB in 00:00:00 at 10.83MiB/s </span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [ExtractAudio] Destination: music/安河桥北.mp3</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | Deleting original file music/安河桥北.m4a (pass -k to keep)</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [download] Finished downloading playlist: 安河桥北</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | [02/21/24 15:29:29] INFO 播放 xiaomusic.py:461</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | http://10.0.0.4:8090/music/%E5%AE% </span></span>
|
||||||
|
<span class="line"><span>xiaomusic | 89%E6%B2%B3%E6%A1%A5%E5%8C%97.mp3 </span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 已经开始播放了 xiaomusic.py:464</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 歌曲music/安河桥北.mp3的时长251秒 xiaomusic.py:371</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 251秒后将会播放下一首 xiaomusic.py:385</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | INFO 匹配到指令. opkey:set_volume# xiaomusic.py:441</span></span>
|
||||||
|
<span class="line"><span>xiaomusic | opvalue:set_volume oparg:24</span></span></code></pre></div><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" 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>environment:</span></span>
|
||||||
|
<span class="line"><span> XIAOMUSIC_PORT:80</span></span>
|
||||||
|
<span class="line"><span>ports:</span></span>
|
||||||
|
<span class="line"><span> - 80:80</span></span></code></pre></div><hr><h3 id="评论-2-newrookie001" tabindex="-1">评论 2 - newrookie001 <a class="header-anchor" href="#评论-2-newrookie001" aria-label="Permalink to "评论 2 - newrookie001"" target="_self"></a></h3><blockquote><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>environment:</span></span>
|
||||||
|
<span class="line"><span> XIAOMUSIC_PORT:80</span></span>
|
||||||
|
<span class="line"><span>ports:</span></span>
|
||||||
|
<span class="line"><span> - 80:80</span></span></code></pre></div></blockquote><p>自己走了点弯路,半天才搞明白。补充说明:</p><blockquote><p>environment: XIAOMUSIC_PORT: 5678 #就是“5678”可以根据自己要求设置,但要求上下的5678都设置成一个 ports: - 5678:5678</p></blockquote><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><p>如果换端口,需要3个数字一致,比如</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>environment:</span></span>
|
||||||
|
<span class="line"><span> XIAOMUSIC_PORT:6874</span></span>
|
||||||
|
<span class="line"><span>ports:</span></span>
|
||||||
|
<span class="line"><span> - 6874:6874</span></span></code></pre></div><hr><h3 id="评论-4-hanxi" tabindex="-1">评论 4 - hanxi <a class="header-anchor" href="#评论-4-hanxi" aria-label="Permalink to "评论 4 - hanxi"" target="_self"></a></h3><p>文档类型的我都打开下,方便其他人看到。</p><hr><h3 id="评论-5-flymin" tabindex="-1">评论 5 - flymin <a class="header-anchor" href="#评论-5-flymin" aria-label="Permalink to "评论 5 - flymin"" target="_self"></a></h3><p>docker-compose 中对应关系应该是</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;">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;">aaaa:bbbb</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:#032F62;--shiki-dark:#9ECBFF;">bbbb</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 配置文件中的 port,后台:监听端口(修改后需要重启)</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:#032F62;--shiki-dark:#9ECBFF;">aaaa</span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 配置文件中的 public_port,后台:外网访问端口(0表示跟监听端口一致)</span></span></code></pre></div><p>以上,docker 环境中基本不存在需要修改 bbbb 的情况,也就是不用设置 XIAOMUSIC_PORT。如果需要修改端口,只需要修改两处 aaaa 如果使用反向代理,则转发 localhost:aaaa,XIAOMUSIC_PUBLIC_PORT 设置成代理的监听端口 cccc</p><p>另外,setting 文件存在会覆盖环境变量。启动过之后需要直接修改 settings.json 或者在后台修改</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/19" target="_self">链接到 GitHub Issue</a></p>`,31)]))}const m=a(e,[["render",t]]);export{u as __pageData,m as default};
|
2
docs/.vitepress/dist/assets/issues_210.md.C4LG69AC.js
vendored
Normal file
2
docs/.vitepress/dist/assets/issues_210.md.C4LG69AC.js
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
import{_ as e,c as a,a0 as o,o as i}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"yt-dlp cookies 文件上传功能","description":"","frontmatter":{"title":"yt-dlp cookies 文件上传功能"},"headers":[],"relativePath":"issues/210.md","filePath":"issues/210.md","lastUpdated":null}'),s={name:"issues/210.md"};function l(c,t,r,n,h,d){return i(),a("div",null,t[0]||(t[0]=[o(`<h1 id="yt-dlp-cookies-文件上传功能" tabindex="-1">yt-dlp cookies 文件上传功能 <a class="header-anchor" href="#yt-dlp-cookies-文件上传功能" aria-label="Permalink to "yt-dlp cookies 文件上传功能"" target="_self"></a></h1><p>此功能用于解决 yt-dlp 下载资源失败时使用,比如 ip 被 B站或者 youtube 加入黑名单后才需要使用。</p><p>上传的文件用于 yt-dlp 的 <code>--cookies</code> 参数。</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>--cookies FILE Netscape formatted file to read cookies from</span></span>
|
||||||
|
<span class="line"><span> and dump cookie jar in</span></span></code></pre></div><h2 id="获取-cookies-txt-文件" tabindex="-1">获取 cookies.txt 文件 <a class="header-anchor" href="#获取-cookies-txt-文件" aria-label="Permalink to "获取 cookies.txt 文件"" target="_self"></a></h2><ol><li>下载插件 <a href="https://chromewebstore.google.com/detail/cclelndahbckbenkjhflpdbgdldlbecc" target="_self">Get cookies.txt LOCALLY</a></li><li>给予插件访问权限和无痕模式允许使用 <img src="https://github.com/user-attachments/assets/89f6ce94-bb51-4805-8c16-a867ba41e5d2" alt="image"></li><li>打开无痕窗口</li><li>打开 youtube.com</li><li>登陆 youtube.com</li><li>打开新标签页</li><li>关闭 youtube.com 的标签页</li><li>保存 cookies.txt <img src="https://github.com/user-attachments/assets/64242595-7b5c-4159-a8bc-4fc922d5de9e" alt="image"></li></ol><p>原因见 <a href="https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies" target="_self">https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies</a></p><h2 id="上传-cookies-txt" tabindex="-1">上传 cookies.txt <a class="header-anchor" href="#上传-cookies-txt" aria-label="Permalink to "上传 cookies.txt"" target="_self"></a></h2><ol><li>打开设置页面</li><li>设置启用yt-dlp-cookies 选项为 true <img src="https://github.com/user-attachments/assets/49760905-475b-493c-9ff4-271c5e797b2f" alt="Screenshot_2024-09-29-22-31-40-134_com android chrome-edit"></li><li>点击保存</li><li>再点击选择文件,选择前面保存好的 cookies.txt 文件,点击上传。 <img src="https://github.com/user-attachments/assets/838bfd1c-f19f-4690-86b0-8208d596fbf1" alt="Screenshot_2024-09-29-22-33-21-361_com android chrome-edit"></li></ol><h2 id="后续用途" tabindex="-1">后续用途 <a class="header-anchor" href="#后续用途" aria-label="Permalink to "后续用途"" target="_self"></a></h2><ol><li>语音下载歌曲都会带上前面上传的 cookies.txt 文件去搜索下载歌曲。</li><li>歌曲批量下载工具下载歌曲或者歌单时也会带上 cookies.txt 文件。</li></ol><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-kingfly2016" tabindex="-1">评论 1 - kingfly2016 <a class="header-anchor" href="#评论-1-kingfly2016" aria-label="Permalink to "评论 1 - kingfly2016"" target="_self"></a></h3><p>0.3.37的版本并没有发现可以开启yt-dlp-cookies 并上传cookies文件的地方,尝试把导出的cookies.txt手工上传到conf目录下,没有生效. <img src="https://github.com/user-attachments/assets/9b8b9750-b616-4fd3-8a3c-216b2f99d02c" alt="屏幕截图_11-10-2024_183725_192 168 6 202"></p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>需要等38版本,或者用测试版本,镜像名后面加 :main</p><hr><h3 id="评论-3-kingfly2016" tabindex="-1">评论 3 - kingfly2016 <a class="header-anchor" href="#评论-3-kingfly2016" aria-label="Permalink to "评论 3 - kingfly2016"" target="_self"></a></h3><blockquote><p>需要等38版本,或者用测试版本,镜像名后面加 :main</p></blockquote><p>谢谢</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/210" target="_self">链接到 GitHub Issue</a></p>`,23)]))}const b=e(s,[["render",l]]);export{u as __pageData,b as default};
|
2
docs/.vitepress/dist/assets/issues_210.md.C4LG69AC.lean.js
vendored
Normal file
2
docs/.vitepress/dist/assets/issues_210.md.C4LG69AC.lean.js
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
import{_ as e,c as a,a0 as o,o as i}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"yt-dlp cookies 文件上传功能","description":"","frontmatter":{"title":"yt-dlp cookies 文件上传功能"},"headers":[],"relativePath":"issues/210.md","filePath":"issues/210.md","lastUpdated":null}'),s={name:"issues/210.md"};function l(c,t,r,n,h,d){return i(),a("div",null,t[0]||(t[0]=[o(`<h1 id="yt-dlp-cookies-文件上传功能" tabindex="-1">yt-dlp cookies 文件上传功能 <a class="header-anchor" href="#yt-dlp-cookies-文件上传功能" aria-label="Permalink to "yt-dlp cookies 文件上传功能"" target="_self"></a></h1><p>此功能用于解决 yt-dlp 下载资源失败时使用,比如 ip 被 B站或者 youtube 加入黑名单后才需要使用。</p><p>上传的文件用于 yt-dlp 的 <code>--cookies</code> 参数。</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>--cookies FILE Netscape formatted file to read cookies from</span></span>
|
||||||
|
<span class="line"><span> and dump cookie jar in</span></span></code></pre></div><h2 id="获取-cookies-txt-文件" tabindex="-1">获取 cookies.txt 文件 <a class="header-anchor" href="#获取-cookies-txt-文件" aria-label="Permalink to "获取 cookies.txt 文件"" target="_self"></a></h2><ol><li>下载插件 <a href="https://chromewebstore.google.com/detail/cclelndahbckbenkjhflpdbgdldlbecc" target="_self">Get cookies.txt LOCALLY</a></li><li>给予插件访问权限和无痕模式允许使用 <img src="https://github.com/user-attachments/assets/89f6ce94-bb51-4805-8c16-a867ba41e5d2" alt="image"></li><li>打开无痕窗口</li><li>打开 youtube.com</li><li>登陆 youtube.com</li><li>打开新标签页</li><li>关闭 youtube.com 的标签页</li><li>保存 cookies.txt <img src="https://github.com/user-attachments/assets/64242595-7b5c-4159-a8bc-4fc922d5de9e" alt="image"></li></ol><p>原因见 <a href="https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies" target="_self">https://github.com/yt-dlp/yt-dlp/wiki/Extractors#exporting-youtube-cookies</a></p><h2 id="上传-cookies-txt" tabindex="-1">上传 cookies.txt <a class="header-anchor" href="#上传-cookies-txt" aria-label="Permalink to "上传 cookies.txt"" target="_self"></a></h2><ol><li>打开设置页面</li><li>设置启用yt-dlp-cookies 选项为 true <img src="https://github.com/user-attachments/assets/49760905-475b-493c-9ff4-271c5e797b2f" alt="Screenshot_2024-09-29-22-31-40-134_com android chrome-edit"></li><li>点击保存</li><li>再点击选择文件,选择前面保存好的 cookies.txt 文件,点击上传。 <img src="https://github.com/user-attachments/assets/838bfd1c-f19f-4690-86b0-8208d596fbf1" alt="Screenshot_2024-09-29-22-33-21-361_com android chrome-edit"></li></ol><h2 id="后续用途" tabindex="-1">后续用途 <a class="header-anchor" href="#后续用途" aria-label="Permalink to "后续用途"" target="_self"></a></h2><ol><li>语音下载歌曲都会带上前面上传的 cookies.txt 文件去搜索下载歌曲。</li><li>歌曲批量下载工具下载歌曲或者歌单时也会带上 cookies.txt 文件。</li></ol><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-kingfly2016" tabindex="-1">评论 1 - kingfly2016 <a class="header-anchor" href="#评论-1-kingfly2016" aria-label="Permalink to "评论 1 - kingfly2016"" target="_self"></a></h3><p>0.3.37的版本并没有发现可以开启yt-dlp-cookies 并上传cookies文件的地方,尝试把导出的cookies.txt手工上传到conf目录下,没有生效. <img src="https://github.com/user-attachments/assets/9b8b9750-b616-4fd3-8a3c-216b2f99d02c" alt="屏幕截图_11-10-2024_183725_192 168 6 202"></p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>需要等38版本,或者用测试版本,镜像名后面加 :main</p><hr><h3 id="评论-3-kingfly2016" tabindex="-1">评论 3 - kingfly2016 <a class="header-anchor" href="#评论-3-kingfly2016" aria-label="Permalink to "评论 3 - kingfly2016"" target="_self"></a></h3><blockquote><p>需要等38版本,或者用测试版本,镜像名后面加 :main</p></blockquote><p>谢谢</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/210" target="_self">链接到 GitHub Issue</a></p>`,23)]))}const b=e(s,[["render",l]]);export{u as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/issues_211.md.DUZAr3Vg.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_211.md.DUZAr3Vg.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/issues_211.md.DUZAr3Vg.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_211.md.DUZAr3Vg.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/issues_212.md.j95HTJwO.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_212.md.j95HTJwO.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as a,c as e,a0 as s,o as i}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"如何批量下载歌曲","description":"","frontmatter":{"title":"如何批量下载歌曲"},"headers":[],"relativePath":"issues/212.md","filePath":"issues/212.md","lastUpdated":null}'),o={name:"issues/212.md"};function r(p,t,l,h,c,n){return i(),e("div",null,t[0]||(t[0]=[s('<h1 id="如何批量下载歌曲" tabindex="-1">如何批量下载歌曲 <a class="header-anchor" href="#如何批量下载歌曲" aria-label="Permalink to "如何批量下载歌曲"" target="_self"></a></h1><p>批量下载歌曲依赖的是 yt-dlp 批量下载播放列表里的视频并转为 mp3 实现的。</p><p>先进入到歌曲下载工具页面:</p><blockquote><p>默认主题 => 设置 => 歌曲下载工具</p></blockquote><p><img src="https://github.com/user-attachments/assets/ddd2af00-cd9e-4938-9450-56503453807c" alt="Screenshot_2024-09-29-22-36-12-178_com android chrome-edit"></p><p>已经测试过 B 站和 youtube 两种播放列表,播放列表的链接是有要求,不能有其他多余参数。</p><p>比如 B 站的是这样的</p><p><a href="https://m.bilibili.com/video/BV1WUsDezE88" target="_self">https://m.bilibili.com/video/BV1WUsDezE88</a></p><p>youtube 的是这样的</p><p><a href="https://m.youtube.com/playlist?list=PLUD2d-pqyvT6_ztf31hx-5SsUUvY5UsQn" target="_self">https://m.youtube.com/playlist?list=PLUD2d-pqyvT6_ztf31hx-5SsUUvY5UsQn</a></p><p>输入歌单名字是用于保存的文件夹名字,最好不是已经存在的名字,每次下载歌单都取个新名字比较合适。</p><p>已知 youtube 需要上传无痕模式下的 cookies.txt 文件才能正常下载。具体步骤见 /issues/210.html 。</p><p>也支持单独下载一个链接只有一首歌曲的。</p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-lazybabyz" tabindex="-1">评论 1 - lazybabyz <a class="header-anchor" href="#评论-1-lazybabyz" aria-label="Permalink to "评论 1 - lazybabyz"" target="_self"></a></h3><p>默认主题 => 设置 =>没有显示找到 歌曲下载工具, 有一个 歌单地址 歌单内容: 输入B站测试地址显示返回无效</p><p><img src="https://github.com/user-attachments/assets/31e224cb-fcbd-4841-b545-bfbd2496061b" alt="aaa"></p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>等0.3.38版本。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/212" target="_self">链接到 GitHub Issue</a></p>',22)]))}const b=a(o,[["render",r]]);export{u as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/issues_212.md.j95HTJwO.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_212.md.j95HTJwO.lean.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as a,c as e,a0 as s,o as i}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"如何批量下载歌曲","description":"","frontmatter":{"title":"如何批量下载歌曲"},"headers":[],"relativePath":"issues/212.md","filePath":"issues/212.md","lastUpdated":null}'),o={name:"issues/212.md"};function r(p,t,l,h,c,n){return i(),e("div",null,t[0]||(t[0]=[s('<h1 id="如何批量下载歌曲" tabindex="-1">如何批量下载歌曲 <a class="header-anchor" href="#如何批量下载歌曲" aria-label="Permalink to "如何批量下载歌曲"" target="_self"></a></h1><p>批量下载歌曲依赖的是 yt-dlp 批量下载播放列表里的视频并转为 mp3 实现的。</p><p>先进入到歌曲下载工具页面:</p><blockquote><p>默认主题 => 设置 => 歌曲下载工具</p></blockquote><p><img src="https://github.com/user-attachments/assets/ddd2af00-cd9e-4938-9450-56503453807c" alt="Screenshot_2024-09-29-22-36-12-178_com android chrome-edit"></p><p>已经测试过 B 站和 youtube 两种播放列表,播放列表的链接是有要求,不能有其他多余参数。</p><p>比如 B 站的是这样的</p><p><a href="https://m.bilibili.com/video/BV1WUsDezE88" target="_self">https://m.bilibili.com/video/BV1WUsDezE88</a></p><p>youtube 的是这样的</p><p><a href="https://m.youtube.com/playlist?list=PLUD2d-pqyvT6_ztf31hx-5SsUUvY5UsQn" target="_self">https://m.youtube.com/playlist?list=PLUD2d-pqyvT6_ztf31hx-5SsUUvY5UsQn</a></p><p>输入歌单名字是用于保存的文件夹名字,最好不是已经存在的名字,每次下载歌单都取个新名字比较合适。</p><p>已知 youtube 需要上传无痕模式下的 cookies.txt 文件才能正常下载。具体步骤见 /issues/210.html 。</p><p>也支持单独下载一个链接只有一首歌曲的。</p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-lazybabyz" tabindex="-1">评论 1 - lazybabyz <a class="header-anchor" href="#评论-1-lazybabyz" aria-label="Permalink to "评论 1 - lazybabyz"" target="_self"></a></h3><p>默认主题 => 设置 =>没有显示找到 歌曲下载工具, 有一个 歌单地址 歌单内容: 输入B站测试地址显示返回无效</p><p><img src="https://github.com/user-attachments/assets/31e224cb-fcbd-4841-b545-bfbd2496061b" alt="aaa"></p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>等0.3.38版本。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/212" target="_self">链接到 GitHub Issue</a></p>',22)]))}const b=a(o,[["render",r]]);export{u as __pageData,b as default};
|
347
docs/.vitepress/dist/assets/issues_269.md.CwdSqsHN.js
vendored
Normal file
347
docs/.vitepress/dist/assets/issues_269.md.CwdSqsHN.js
vendored
Normal file
@ -0,0 +1,347 @@
|
|||||||
|
import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const o=JSON.parse('{"title":"如何添加 网易云音乐playlist","description":"","frontmatter":{"title":"如何添加 网易云音乐playlist"},"headers":[],"relativePath":"issues/269.md","filePath":"issues/269.md","lastUpdated":null}'),p={name:"issues/269.md"};function l(h,s,k,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="如何添加-网易云音乐playlist" tabindex="-1">如何添加 网易云音乐playlist <a class="header-anchor" href="#如何添加-网易云音乐playlist" aria-label="Permalink to "如何添加 网易云音乐playlist"" target="_self"></a></h1><p>利用 NeteaseCloudMusicApi 获取歌单和播放地址 我在你基础上改了一下,但是我的逻辑不合理 <a href="https://github.com/dissipator/xiaomusic" target="_self">https://github.com/dissipator/xiaomusic</a></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" target="_self"></a></h3><p>建议通过插件实现或者新增一个页面工具把歌单导出 json 。 歌单的 json 格式见 /issues/78.html</p><hr><h3 id="评论-2-qiujie8092916" tabindex="-1">评论 2 - qiujie8092916 <a class="header-anchor" href="#评论-2-qiujie8092916" aria-label="Permalink to "评论 2 - qiujie8092916"" target="_self"></a></h3><blockquote><p>利用 NeteaseCloudMusicApi 获取歌单和播放地址 我在你基础上改了一下,但是我的逻辑不合理 <a href="https://github.com/dissipator/xiaomusic" target="_self">dissipator/xiaomusic</a></p></blockquote><p>老哥在实现插件了吗?我也急需播放歌单 我诉求是:我用网易云音乐单独新建了一个歌单,我往里面扔歌曲,以更新歌单。希望创建一个自定义的语音命令,让小爱同学随机播放这个歌单里的音乐。然后我通过在米家里执行,比如触发了「我回来了」的智能场景时,就让小爱音箱执行这个自定义的语音命令,就会自动播放我新建的这个歌单里的音乐了。 现在的小爱音箱虽然能勉强实现,但是很垃圾。随机播放的随机性有问题,并且只能选择歌单里的 30 首歌。 (老哥如果没实现的话,我可以尝试搞搞)</p><hr><h3 id="评论-3-dissipator" tabindex="-1">评论 3 - dissipator <a class="header-anchor" href="#评论-3-dissipator" aria-label="Permalink to "评论 3 - dissipator"" target="_self"></a></h3><p>我都能直接利用这个直接播放NeteaseCloudMusicApi这上的歌了。在配合unblk,无敌。我就是没设备,还在路上 通过插件实现,非常好,就是不知道怎么开发,有文档我可以尝试一下。</p><hr><h3 id="评论-4-dissipator" tabindex="-1">评论 4 - dissipator <a class="header-anchor" href="#评论-4-dissipator" aria-label="Permalink to "评论 4 - dissipator"" target="_self"></a></h3><blockquote><p>建议通过插件实现或者新增一个页面工具把歌单导出 json 。 歌单的 json 格式见 #78</p></blockquote><p>配置处直接填了api的接口 <a href="http://127.0.0.1:3000/playlist/detail?id=12758992226" target="_self">http://127.0.0.1:3000/playlist/detail?id=12758992226</a> 我是直接再你歌单保存上强改的。</p><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</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;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> downloadjson</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(data: UrlInfo, Verifcation</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Depends(verification)):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.info(data)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data.url</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "[{"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> host </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">url.split(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">//</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">url.split(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ret </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "OK"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> downloadfile(url,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # print(jsons)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> list_name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '"name":"'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'","musics":['</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> song </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'tracks'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{{\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">name</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">song[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">url</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/song/url?br=999000&proxy=http:%2F%2F127.0.0.1:8080&realIP=211.161.244.70&id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">song[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\\"}}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> except</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Exception</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> e:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.exception(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Execption </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">e</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ret </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Download JSON file failed."</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content[:</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "]}]"</span></span></code></pre></div><p>照着你的说明。而且能成功播发</p><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</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;">@app.get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/musicinfo"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> musicinfo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, musictag: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bool</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, Verifcation</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Depends(verification)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.get_music_url(name)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"song/url"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> downloadfile(url,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'data'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'url'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>播放处加了一个判断</p><hr><h3 id="评论-5-hanxi" tabindex="-1">评论 5 - hanxi <a class="header-anchor" href="#评论-5-hanxi" aria-label="Permalink to "评论 5 - hanxi"" target="_self"></a></h3><blockquote><blockquote><p>建议通过插件实现或者新增一个页面工具把歌单导出 json 。 歌单的 json 格式见 #78</p></blockquote></blockquote><p>你的修改我看了,不太通用。生成json,再用现有的接口提交json更通用。</p><hr><h3 id="评论-6-dissipator" tabindex="-1">评论 6 - dissipator <a class="header-anchor" href="#评论-6-dissipator" aria-label="Permalink to "评论 6 - dissipator"" target="_self"></a></h3><p>是的,不通用。最好是用插件实现。</p><ol><li>就是不知道你插件的逻辑。</li><li>如果用插件就考虑直接读取网易账号下所有歌单。然后选择一个导入,或者全部导入。</li><li>等你完善文档后我可以尝试写一个。同理,qq等其他平台的歌单也就都可以弄了</li></ol><hr><h3 id="评论-7-hanxi" tabindex="-1">评论 7 - hanxi <a class="header-anchor" href="#评论-7-hanxi" aria-label="Permalink to "评论 7 - hanxi"" target="_self"></a></h3><p>等有空我写个修改歌单内容的插件示例吧。</p><hr><h3 id="评论-8-dissipator" tabindex="-1">评论 8 - dissipator <a class="header-anchor" href="#评论-8-dissipator" aria-label="Permalink to "评论 8 - dissipator"" target="_self"></a></h3><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>import requests</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span>def getmy_playlist(type="netease",api_host="http://127.0.0.1/api", playlist_id=None,uid=None):</span></span>
|
||||||
|
<span class="line"><span> """</span></span>
|
||||||
|
<span class="line"><span> Purpose: </span></span>
|
||||||
|
<span class="line"><span> """</span></span>
|
||||||
|
<span class="line"><span> global log, xiaomusic</span></span>
|
||||||
|
<span class="line"><span> if type == "netease":</span></span>
|
||||||
|
<span class="line"><span> if uid:</span></span>
|
||||||
|
<span class="line"><span> api_url = f"{api_host}/user/playlist?uid={uid}"</span></span>
|
||||||
|
<span class="line"><span> # 发起请求</span></span>
|
||||||
|
<span class="line"><span> response = requests.get(api_url, timeout=5) # 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span> response.raise_for_status() # 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> music_list = response.json()</span></span>
|
||||||
|
<span class="line"><span> for item in music_list['playlist']:</span></span>
|
||||||
|
<span class="line"><span> list_name = item.get("name")</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> log.info(f"getmy_playlist name:{list_name}")</span></span>
|
||||||
|
<span class="line"><span> # if item.get("id") in [12709941656,]:</span></span>
|
||||||
|
<span class="line"><span> songs_url = f"{api_host}/playlist/detail?id={item['id']}"</span></span>
|
||||||
|
<span class="line"><span> # 发起请求</span></span>
|
||||||
|
<span class="line"><span> response = requests.get(songs_url, timeout=5) # 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span> response.raise_for_status() # 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span> musics = response.json()</span></span>
|
||||||
|
<span class="line"><span> one_music_list = []</span></span>
|
||||||
|
<span class="line"><span> for music in musics['playlist']['tracks']:</span></span>
|
||||||
|
<span class="line"><span> if (not music):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> # try:</span></span>
|
||||||
|
<span class="line"><span> name = music['name']</span></span>
|
||||||
|
<span class="line"><span> picUrl = music['al']['picUrl']</span></span>
|
||||||
|
<span class="line"><span> artist = music['ar'][0]['name']</span></span>
|
||||||
|
<span class="line"><span> album = music['al']['name']</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> name = music.get("name")</span></span>
|
||||||
|
<span class="line"><span> url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span> if (not name) or (not url):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music[name] = url</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music_tags[name] = {</span></span>
|
||||||
|
<span class="line"><span> "title": name,</span></span>
|
||||||
|
<span class="line"><span> "artist": artist,</span></span>
|
||||||
|
<span class="line"><span> "album": album,</span></span>
|
||||||
|
<span class="line"><span> "year": "",</span></span>
|
||||||
|
<span class="line"><span> "genre": "",</span></span>
|
||||||
|
<span class="line"><span> "picture": picUrl,</span></span>
|
||||||
|
<span class="line"><span> "lyrics": ""</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span> </span></span>
|
||||||
|
<span class="line"><span> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span> log.debug(f"getmy_playlist name:{list_name}")</span></span>
|
||||||
|
<span class="line"><span> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.music_list[list_name] = one_music_list</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.all_music)</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.music_list)</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> return</span></span>
|
||||||
|
<span class="line"><span> if playlist_id:</span></span>
|
||||||
|
<span class="line"><span> songs_url = f"{api_host}/playlist/detail?id={playlist_id}"</span></span>
|
||||||
|
<span class="line"><span> # 发起请求</span></span>
|
||||||
|
<span class="line"><span> response = requests.get(songs_url, timeout=5) # 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span> response.raise_for_status() # 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span> musics = response.json()</span></span>
|
||||||
|
<span class="line"><span> list_name = musics['playlist']['name']</span></span>
|
||||||
|
<span class="line"><span> one_music_list = []</span></span>
|
||||||
|
<span class="line"><span> for music in musics['playlist']['tracks']:</span></span>
|
||||||
|
<span class="line"><span> if (not music):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> # try:</span></span>
|
||||||
|
<span class="line"><span> name = music['name']</span></span>
|
||||||
|
<span class="line"><span> picUrl = music['al']['picUrl']</span></span>
|
||||||
|
<span class="line"><span> artist = music['ar'][0]['name']</span></span>
|
||||||
|
<span class="line"><span> album = music['al']['name']</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> name = music.get("name")</span></span>
|
||||||
|
<span class="line"><span> url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span> if (not name) or (not url):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music[name] = url</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music_tags[name] = {</span></span>
|
||||||
|
<span class="line"><span> "title": name,</span></span>
|
||||||
|
<span class="line"><span> "artist": artist,</span></span>
|
||||||
|
<span class="line"><span> "album": album,</span></span>
|
||||||
|
<span class="line"><span> "year": "",</span></span>
|
||||||
|
<span class="line"><span> "genre": "",</span></span>
|
||||||
|
<span class="line"><span> "picture": picUrl,</span></span>
|
||||||
|
<span class="line"><span> "lyrics": ""</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span> log.debug(f"getmy_playlist name:{list_name}")</span></span>
|
||||||
|
<span class="line"><span> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.music_list[list_name] = one_music_list</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.all_music)</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.music_list)</span></span>
|
||||||
|
<span class="line"><span> return</span></span>
|
||||||
|
<span class="line"><span> else:</span></span>
|
||||||
|
<span class="line"><span> log.error(f"getmy_playlist type:{type} not support")</span></span></code></pre></div><hr><h3 id="评论-9-dissipator" tabindex="-1">评论 9 - dissipator <a class="header-anchor" href="#评论-9-dissipator" aria-label="Permalink to "评论 9 - dissipator"" target="_self"></a></h3><blockquote><p>等有空我写个修改歌单内容的插件示例吧。</p></blockquote><p>不用拉,插件我已经写出来了 <img src="https://github.com/user-attachments/assets/53e593e7-1439-4968-9549-8c84b2fee42c" alt="image"></p><hr><h3 id="评论-10-hanxi" tabindex="-1">评论 10 - hanxi <a class="header-anchor" href="#评论-10-hanxi" aria-label="Permalink to "评论 10 - hanxi"" target="_self"></a></h3><p>发下你的 setting.json 配置吧,方便他人知道怎么配。</p><hr><h3 id="评论-11-dissipator" tabindex="-1">评论 11 - dissipator <a class="header-anchor" href="#评论-11-dissipator" aria-label="Permalink to "评论 11 - dissipator"" target="_self"></a></h3><p>我还在测试,设备到了能用了再发吧</p><hr><h3 id="评论-12-guitarbug" tabindex="-1">评论 12 - guitarbug <a class="header-anchor" href="#评论-12-guitarbug" aria-label="Permalink to "评论 12 - guitarbug"" target="_self"></a></h3><p>也需要网易歌单功能, 坐等教程</p><hr><h3 id="评论-13-dissipator" tabindex="-1">评论 13 - dissipator <a class="header-anchor" href="#评论-13-dissipator" aria-label="Permalink to "评论 13 - dissipator"" target="_self"></a></h3><h1 id="成功了" tabindex="-1">成功了 <a class="header-anchor" href="#成功了" aria-label="Permalink to "成功了"" target="_self"></a></h1><p><img src="https://github.com/user-attachments/assets/33e22665-b1cc-4069-9e8c-46e466679b30" alt="image"></p><h1 id="最好是在setting-json里去配置-我测试老是不匹配-在setting-json里去配置终于成功。可以直接调用-neteasecloudmusicapi-接口-甚至使用unblockneteasemusic-解锁灰色-但是代码需要小调整。" tabindex="-1">最好是在setting.json里去配置,我测试老是不匹配,在setting.json里去配置终于成功。可以直接调用 <a href="http://localhost:3000/docs/#/?id=neteasecloudmusicapi" target="_self">NeteaseCloudMusicApi</a> 接口,甚至使用UnblockNeteaseMusic 解锁灰色,但是代码需要小调整。 <a class="header-anchor" href="#最好是在setting-json里去配置-我测试老是不匹配-在setting-json里去配置终于成功。可以直接调用-neteasecloudmusicapi-接口-甚至使用unblockneteasemusic-解锁灰色-但是代码需要小调整。" aria-label="Permalink to "最好是在setting.json里去配置,我测试老是不匹配,在setting.json里去配置终于成功。可以直接调用 [NeteaseCloudMusicApi](http://localhost:3000/docs/#/?id=neteasecloudmusicapi) 接口,甚至使用UnblockNeteaseMusic 解锁灰色,但是代码需要小调整。"" target="_self"></a></h1><p>setting.json</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "account"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "mi_did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "miio_tts_command"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cookie"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "verbose"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"music"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "download_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"music/download"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "conf_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"conf"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "cache_dir"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"cache"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hostname"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"192.168.2.5"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "port"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">8090</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "public_port"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "proxy"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "search_prefix"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bilisearch:"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ffmpeg_location"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"./ffmpeg/bin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "active_cmd"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play,set_random_play,playlocal,play_music_list,play_music_list_index,stop_after_minute,stop,获取歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "exclude_dirs"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"@eaDir,tmp"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path_depth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "disable_httpauth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_username"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "music_list_url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "music_list_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "custom_play_list_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "disable_download"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "key_word_dict"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放本地歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"playlocal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "关机"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "下一首"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_next"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "上一首"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_prev"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "单曲循环"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_play_type_one"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "全部循环"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_play_type_all"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "随机播放"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_random_play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "分钟后关机"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop_after_minute"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放列表"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "刷新列表"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"gen_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "加入收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"add_to_favorites"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "收藏歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"add_to_favorites"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "取消收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"del_from_favorites"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放列表第"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list_index"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "本地播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"playlocal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "暂停"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "停止"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "停止播放"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试自定义口令"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#code1(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hello</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试链接"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#httpget(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://github.com/hanxi/xiaomusic</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "获取歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#getmy_playlist(playlist_id=12758992225)"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "key_match_order"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "上一首"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "全部循环"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "关机"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "播放列表第"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "加入收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "取消收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "本地播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "暂停"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "停止播放"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "测试自定义口令"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "获取歌单"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_api"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_audio_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"1582971365183456177"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"355454500"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "log_file"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/tmp/xiaomusic.txt"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "fuzzy_match_cutoff"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.6</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "enable_fuzzy_match"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "stop_tts_msg"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "enable_config_example"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "keywords_playlocal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "keywords_play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "keywords_stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "keywords_playlist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "user_key_word_dict"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试自定义口令"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#code1(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hello</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试链接"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#httpget(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://github.com/hanxi/xiaomusic</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "获取歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#getmy_playlist(playlist_id=12758992225)"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "enable_force_stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "devices"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> " "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "device_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">" -17c6-4204- - "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hardware"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"L05C"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "play_type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cur_music"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cur_playlist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "group_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "remove_id3tag"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "convert_to_mp3"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "delay_sec"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "continue_play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "pull_ask_sec"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "crontab_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "enable_yt_dlp_cookies"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "get_ask_by_mina"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>getmy_playlist.py</p><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</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;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> getmy_playlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(type</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"netease"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,api_host</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"http://127.0.0.1/api"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, playlist_id</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,uid</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Purpose: </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> global</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log, xiaomusic</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> type</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ==</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "netease"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> uid:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> api_url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/user/playlist?uid=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">uid</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 发起请求</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(api_url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.raise_for_status() </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music_list </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> item </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music_list[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> list_name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> item.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # if item.get("id") in [12709941656,]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> songs_url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/playlist/detail?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">item[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 发起请求</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(songs_url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.raise_for_status() </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> []</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'tracks'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # try:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> picUrl </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'picUrl'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> artist </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'ar'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> album </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/song/url?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">or</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music_tags[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "title"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: name,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "artist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: artist,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "album"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: album,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "year"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "genre"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "picture"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: picUrl,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "lyrics"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.music_list[list_name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(xiaomusic.all_music)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(xiaomusic.music_list)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> playlist_id:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> songs_url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/playlist/detail?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">playlist_id</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 发起请求</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(songs_url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.raise_for_status() </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> list_name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist list_name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> []</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'tracks'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # try:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> picUrl </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'picUrl'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> artist </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'ar'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> album </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/song/url?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&br=350000&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">or</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music_tags[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "title"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: name,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "artist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: artist,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "album"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: album,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "year"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "genre"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "picture"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: picUrl,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "lyrics"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.music_list[list_name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.error(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist type:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{type}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> not support"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div><hr><h3 id="评论-14-dissipator" tabindex="-1">评论 14 - dissipator <a class="header-anchor" href="#评论-14-dissipator" aria-label="Permalink to "评论 14 - dissipator"" target="_self"></a></h3><p><img src="https://github.com/user-attachments/assets/7412eec4-f7d3-4a86-b186-0118d6f331ff" alt="image"><img src="https://github.com/user-attachments/assets/2215e520-0d40-4c2c-8d46-d3106d65fc51" alt="image"></p><hr><h3 id="评论-15-dludream" tabindex="-1">评论 15 - dludream <a class="header-anchor" href="#评论-15-dludream" aria-label="Permalink to "评论 15 - dludream"" target="_self"></a></h3><p>NeteaseCloudMusicApi似乎获取不到播放地址?其他信息倒是有。</p><p><img src="https://github.com/user-attachments/assets/c7e7a748-aa82-47f0-8784-f6469cc3e99b" alt="2024-11-28_151952"></p><hr><h3 id="评论-16-hanxi" tabindex="-1">评论 16 - hanxi <a class="header-anchor" href="#评论-16-hanxi" aria-label="Permalink to "评论 16 - hanxi"" target="_self"></a></h3><p>看代码是另一个接口获取url的: <code>url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</code></p><hr><h3 id="评论-17-dludream" tabindex="-1">评论 17 - dludream <a class="header-anchor" href="#评论-17-dludream" aria-label="Permalink to "评论 17 - dludream"" target="_self"></a></h3><blockquote><p>看代码是另一个接口获取url的: <code>url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</code></p></blockquote><p>是的,我用的是这个接口,<a href="https://registry.hub.docker.com/r/gnehs/neteasecloudmusicapi-docker/" target="_self">https://registry.hub.docker.com/r/gnehs/neteasecloudmusicapi-docker/</a></p><p>可能网易修改了api,这些获取不了播放地址了。</p><p>我倒不是要这个功能,只是感兴趣看看。我不获取,我直接用yt把歌全下载下来播放。</p><hr><h3 id="评论-18-dissipator" tabindex="-1">评论 18 - dissipator <a class="header-anchor" href="#评论-18-dissipator" aria-label="Permalink to "评论 18 - dissipator"" target="_self"></a></h3><p>这个不是网易的接口,是<a href="http://localhost:3000/docs/#/?id=neteasecloudmusicapi" target="_self">NeteaseCloudMusicApi</a> 接口。proxy=HTTP:%2F%2F127.0.0.1:8080"是UnblockNeteaseMusic 解锁灰色; 完整的使用方式和docker 可以到 <a href="https://github.com/dissipator/xiaomusic/tree/dev" target="_self">https://github.com/dissipator/xiaomusic/tree/dev</a> 看README.md;目前没有教程。本人就在群2,有问题可以找我。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/269" target="_self">链接到 GitHub Issue</a></p>`,77)]))}const g=i(p,[["render",l]]);export{o as __pageData,g as default};
|
347
docs/.vitepress/dist/assets/issues_269.md.CwdSqsHN.lean.js
vendored
Normal file
347
docs/.vitepress/dist/assets/issues_269.md.CwdSqsHN.lean.js
vendored
Normal file
@ -0,0 +1,347 @@
|
|||||||
|
import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const o=JSON.parse('{"title":"如何添加 网易云音乐playlist","description":"","frontmatter":{"title":"如何添加 网易云音乐playlist"},"headers":[],"relativePath":"issues/269.md","filePath":"issues/269.md","lastUpdated":null}'),p={name:"issues/269.md"};function l(h,s,k,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="如何添加-网易云音乐playlist" tabindex="-1">如何添加 网易云音乐playlist <a class="header-anchor" href="#如何添加-网易云音乐playlist" aria-label="Permalink to "如何添加 网易云音乐playlist"" target="_self"></a></h1><p>利用 NeteaseCloudMusicApi 获取歌单和播放地址 我在你基础上改了一下,但是我的逻辑不合理 <a href="https://github.com/dissipator/xiaomusic" target="_self">https://github.com/dissipator/xiaomusic</a></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" target="_self"></a></h3><p>建议通过插件实现或者新增一个页面工具把歌单导出 json 。 歌单的 json 格式见 /issues/78.html</p><hr><h3 id="评论-2-qiujie8092916" tabindex="-1">评论 2 - qiujie8092916 <a class="header-anchor" href="#评论-2-qiujie8092916" aria-label="Permalink to "评论 2 - qiujie8092916"" target="_self"></a></h3><blockquote><p>利用 NeteaseCloudMusicApi 获取歌单和播放地址 我在你基础上改了一下,但是我的逻辑不合理 <a href="https://github.com/dissipator/xiaomusic" target="_self">dissipator/xiaomusic</a></p></blockquote><p>老哥在实现插件了吗?我也急需播放歌单 我诉求是:我用网易云音乐单独新建了一个歌单,我往里面扔歌曲,以更新歌单。希望创建一个自定义的语音命令,让小爱同学随机播放这个歌单里的音乐。然后我通过在米家里执行,比如触发了「我回来了」的智能场景时,就让小爱音箱执行这个自定义的语音命令,就会自动播放我新建的这个歌单里的音乐了。 现在的小爱音箱虽然能勉强实现,但是很垃圾。随机播放的随机性有问题,并且只能选择歌单里的 30 首歌。 (老哥如果没实现的话,我可以尝试搞搞)</p><hr><h3 id="评论-3-dissipator" tabindex="-1">评论 3 - dissipator <a class="header-anchor" href="#评论-3-dissipator" aria-label="Permalink to "评论 3 - dissipator"" target="_self"></a></h3><p>我都能直接利用这个直接播放NeteaseCloudMusicApi这上的歌了。在配合unblk,无敌。我就是没设备,还在路上 通过插件实现,非常好,就是不知道怎么开发,有文档我可以尝试一下。</p><hr><h3 id="评论-4-dissipator" tabindex="-1">评论 4 - dissipator <a class="header-anchor" href="#评论-4-dissipator" aria-label="Permalink to "评论 4 - dissipator"" target="_self"></a></h3><blockquote><p>建议通过插件实现或者新增一个页面工具把歌单导出 json 。 歌单的 json 格式见 #78</p></blockquote><p>配置处直接填了api的接口 <a href="http://127.0.0.1:3000/playlist/detail?id=12758992226" target="_self">http://127.0.0.1:3000/playlist/detail?id=12758992226</a> 我是直接再你歌单保存上强改的。</p><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</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;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> downloadjson</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(data: UrlInfo, Verifcation</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Depends(verification)):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.info(data)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data.url</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "[{"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> host </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">url.split(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">//</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">url.split(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)[</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> try</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ret </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "OK"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> downloadfile(url,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # print(jsons)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> list_name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> '"name":"'</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'","musics":['</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> song </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'tracks'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{{\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">name</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">song[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">,</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">url</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/song/url?br=999000&proxy=http:%2F%2F127.0.0.1:8080&realIP=211.161.244.70&id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">song[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}\\"}}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> except</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> Exception</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> as</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> e:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.exception(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"Execption </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">e</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ret </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "Download JSON file failed."</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> content[:</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "]}]"</span></span></code></pre></div><p>照着你的说明。而且能成功播发</p><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</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;">@app.get</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/musicinfo"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> musicinfo</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">str</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, musictag: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">bool</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> =</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> False</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, Verifcation</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">Depends(verification)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.get_music_url(name)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"song/url"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> await</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> downloadfile(url,</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> jsons[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'data'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'url'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>播放处加了一个判断</p><hr><h3 id="评论-5-hanxi" tabindex="-1">评论 5 - hanxi <a class="header-anchor" href="#评论-5-hanxi" aria-label="Permalink to "评论 5 - hanxi"" target="_self"></a></h3><blockquote><blockquote><p>建议通过插件实现或者新增一个页面工具把歌单导出 json 。 歌单的 json 格式见 #78</p></blockquote></blockquote><p>你的修改我看了,不太通用。生成json,再用现有的接口提交json更通用。</p><hr><h3 id="评论-6-dissipator" tabindex="-1">评论 6 - dissipator <a class="header-anchor" href="#评论-6-dissipator" aria-label="Permalink to "评论 6 - dissipator"" target="_self"></a></h3><p>是的,不通用。最好是用插件实现。</p><ol><li>就是不知道你插件的逻辑。</li><li>如果用插件就考虑直接读取网易账号下所有歌单。然后选择一个导入,或者全部导入。</li><li>等你完善文档后我可以尝试写一个。同理,qq等其他平台的歌单也就都可以弄了</li></ol><hr><h3 id="评论-7-hanxi" tabindex="-1">评论 7 - hanxi <a class="header-anchor" href="#评论-7-hanxi" aria-label="Permalink to "评论 7 - hanxi"" target="_self"></a></h3><p>等有空我写个修改歌单内容的插件示例吧。</p><hr><h3 id="评论-8-dissipator" tabindex="-1">评论 8 - dissipator <a class="header-anchor" href="#评论-8-dissipator" aria-label="Permalink to "评论 8 - dissipator"" target="_self"></a></h3><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>import requests</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span>def getmy_playlist(type="netease",api_host="http://127.0.0.1/api", playlist_id=None,uid=None):</span></span>
|
||||||
|
<span class="line"><span> """</span></span>
|
||||||
|
<span class="line"><span> Purpose: </span></span>
|
||||||
|
<span class="line"><span> """</span></span>
|
||||||
|
<span class="line"><span> global log, xiaomusic</span></span>
|
||||||
|
<span class="line"><span> if type == "netease":</span></span>
|
||||||
|
<span class="line"><span> if uid:</span></span>
|
||||||
|
<span class="line"><span> api_url = f"{api_host}/user/playlist?uid={uid}"</span></span>
|
||||||
|
<span class="line"><span> # 发起请求</span></span>
|
||||||
|
<span class="line"><span> response = requests.get(api_url, timeout=5) # 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span> response.raise_for_status() # 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> music_list = response.json()</span></span>
|
||||||
|
<span class="line"><span> for item in music_list['playlist']:</span></span>
|
||||||
|
<span class="line"><span> list_name = item.get("name")</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> log.info(f"getmy_playlist name:{list_name}")</span></span>
|
||||||
|
<span class="line"><span> # if item.get("id") in [12709941656,]:</span></span>
|
||||||
|
<span class="line"><span> songs_url = f"{api_host}/playlist/detail?id={item['id']}"</span></span>
|
||||||
|
<span class="line"><span> # 发起请求</span></span>
|
||||||
|
<span class="line"><span> response = requests.get(songs_url, timeout=5) # 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span> response.raise_for_status() # 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span> musics = response.json()</span></span>
|
||||||
|
<span class="line"><span> one_music_list = []</span></span>
|
||||||
|
<span class="line"><span> for music in musics['playlist']['tracks']:</span></span>
|
||||||
|
<span class="line"><span> if (not music):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> # try:</span></span>
|
||||||
|
<span class="line"><span> name = music['name']</span></span>
|
||||||
|
<span class="line"><span> picUrl = music['al']['picUrl']</span></span>
|
||||||
|
<span class="line"><span> artist = music['ar'][0]['name']</span></span>
|
||||||
|
<span class="line"><span> album = music['al']['name']</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> name = music.get("name")</span></span>
|
||||||
|
<span class="line"><span> url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span> if (not name) or (not url):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music[name] = url</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music_tags[name] = {</span></span>
|
||||||
|
<span class="line"><span> "title": name,</span></span>
|
||||||
|
<span class="line"><span> "artist": artist,</span></span>
|
||||||
|
<span class="line"><span> "album": album,</span></span>
|
||||||
|
<span class="line"><span> "year": "",</span></span>
|
||||||
|
<span class="line"><span> "genre": "",</span></span>
|
||||||
|
<span class="line"><span> "picture": picUrl,</span></span>
|
||||||
|
<span class="line"><span> "lyrics": ""</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span> </span></span>
|
||||||
|
<span class="line"><span> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span> log.debug(f"getmy_playlist name:{list_name}")</span></span>
|
||||||
|
<span class="line"><span> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.music_list[list_name] = one_music_list</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.all_music)</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.music_list)</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> return</span></span>
|
||||||
|
<span class="line"><span> if playlist_id:</span></span>
|
||||||
|
<span class="line"><span> songs_url = f"{api_host}/playlist/detail?id={playlist_id}"</span></span>
|
||||||
|
<span class="line"><span> # 发起请求</span></span>
|
||||||
|
<span class="line"><span> response = requests.get(songs_url, timeout=5) # 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span> response.raise_for_status() # 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span> musics = response.json()</span></span>
|
||||||
|
<span class="line"><span> list_name = musics['playlist']['name']</span></span>
|
||||||
|
<span class="line"><span> one_music_list = []</span></span>
|
||||||
|
<span class="line"><span> for music in musics['playlist']['tracks']:</span></span>
|
||||||
|
<span class="line"><span> if (not music):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> # try:</span></span>
|
||||||
|
<span class="line"><span> name = music['name']</span></span>
|
||||||
|
<span class="line"><span> picUrl = music['al']['picUrl']</span></span>
|
||||||
|
<span class="line"><span> artist = music['ar'][0]['name']</span></span>
|
||||||
|
<span class="line"><span> album = music['al']['name']</span></span>
|
||||||
|
<span class="line"><span></span></span>
|
||||||
|
<span class="line"><span> name = music.get("name")</span></span>
|
||||||
|
<span class="line"><span> url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span> if (not name) or (not url):</span></span>
|
||||||
|
<span class="line"><span> continue</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music[name] = url</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.all_music_tags[name] = {</span></span>
|
||||||
|
<span class="line"><span> "title": name,</span></span>
|
||||||
|
<span class="line"><span> "artist": artist,</span></span>
|
||||||
|
<span class="line"><span> "album": album,</span></span>
|
||||||
|
<span class="line"><span> "year": "",</span></span>
|
||||||
|
<span class="line"><span> "genre": "",</span></span>
|
||||||
|
<span class="line"><span> "picture": picUrl,</span></span>
|
||||||
|
<span class="line"><span> "lyrics": ""</span></span>
|
||||||
|
<span class="line"><span> }</span></span>
|
||||||
|
<span class="line"><span> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span> log.debug(f"getmy_playlist name:{list_name}")</span></span>
|
||||||
|
<span class="line"><span> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.music_list[list_name] = one_music_list</span></span>
|
||||||
|
<span class="line"><span> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.all_music)</span></span>
|
||||||
|
<span class="line"><span> log.debug(xiaomusic.music_list)</span></span>
|
||||||
|
<span class="line"><span> return</span></span>
|
||||||
|
<span class="line"><span> else:</span></span>
|
||||||
|
<span class="line"><span> log.error(f"getmy_playlist type:{type} not support")</span></span></code></pre></div><hr><h3 id="评论-9-dissipator" tabindex="-1">评论 9 - dissipator <a class="header-anchor" href="#评论-9-dissipator" aria-label="Permalink to "评论 9 - dissipator"" target="_self"></a></h3><blockquote><p>等有空我写个修改歌单内容的插件示例吧。</p></blockquote><p>不用拉,插件我已经写出来了 <img src="https://github.com/user-attachments/assets/53e593e7-1439-4968-9549-8c84b2fee42c" alt="image"></p><hr><h3 id="评论-10-hanxi" tabindex="-1">评论 10 - hanxi <a class="header-anchor" href="#评论-10-hanxi" aria-label="Permalink to "评论 10 - hanxi"" target="_self"></a></h3><p>发下你的 setting.json 配置吧,方便他人知道怎么配。</p><hr><h3 id="评论-11-dissipator" tabindex="-1">评论 11 - dissipator <a class="header-anchor" href="#评论-11-dissipator" aria-label="Permalink to "评论 11 - dissipator"" target="_self"></a></h3><p>我还在测试,设备到了能用了再发吧</p><hr><h3 id="评论-12-guitarbug" tabindex="-1">评论 12 - guitarbug <a class="header-anchor" href="#评论-12-guitarbug" aria-label="Permalink to "评论 12 - guitarbug"" target="_self"></a></h3><p>也需要网易歌单功能, 坐等教程</p><hr><h3 id="评论-13-dissipator" tabindex="-1">评论 13 - dissipator <a class="header-anchor" href="#评论-13-dissipator" aria-label="Permalink to "评论 13 - dissipator"" target="_self"></a></h3><h1 id="成功了" tabindex="-1">成功了 <a class="header-anchor" href="#成功了" aria-label="Permalink to "成功了"" target="_self"></a></h1><p><img src="https://github.com/user-attachments/assets/33e22665-b1cc-4069-9e8c-46e466679b30" alt="image"></p><h1 id="最好是在setting-json里去配置-我测试老是不匹配-在setting-json里去配置终于成功。可以直接调用-neteasecloudmusicapi-接口-甚至使用unblockneteasemusic-解锁灰色-但是代码需要小调整。" tabindex="-1">最好是在setting.json里去配置,我测试老是不匹配,在setting.json里去配置终于成功。可以直接调用 <a href="http://localhost:3000/docs/#/?id=neteasecloudmusicapi" target="_self">NeteaseCloudMusicApi</a> 接口,甚至使用UnblockNeteaseMusic 解锁灰色,但是代码需要小调整。 <a class="header-anchor" href="#最好是在setting-json里去配置-我测试老是不匹配-在setting-json里去配置终于成功。可以直接调用-neteasecloudmusicapi-接口-甚至使用unblockneteasemusic-解锁灰色-但是代码需要小调整。" aria-label="Permalink to "最好是在setting.json里去配置,我测试老是不匹配,在setting.json里去配置终于成功。可以直接调用 [NeteaseCloudMusicApi](http://localhost:3000/docs/#/?id=neteasecloudmusicapi) 接口,甚至使用UnblockNeteaseMusic 解锁灰色,但是代码需要小调整。"" target="_self"></a></h1><p>setting.json</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "account"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "mi_did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "miio_tts_command"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cookie"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "verbose"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"music"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "download_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"music/download"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "conf_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"conf"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "cache_dir"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"cache"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hostname"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"192.168.2.5"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "port"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">8090</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "public_port"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "proxy"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "search_prefix"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"bilisearch:"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ffmpeg_location"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"./ffmpeg/bin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "active_cmd"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play,set_random_play,playlocal,play_music_list,play_music_list_index,stop_after_minute,stop,获取歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "exclude_dirs"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"@eaDir,tmp"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path_depth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "disable_httpauth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_username"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "music_list_url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "music_list_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "custom_play_list_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "disable_download"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "key_word_dict"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放本地歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"playlocal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "关机"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "下一首"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_next"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "上一首"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_prev"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "单曲循环"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_play_type_one"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "全部循环"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_play_type_all"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "随机播放"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"set_random_play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "分钟后关机"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop_after_minute"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放列表"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "刷新列表"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"gen_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "加入收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"add_to_favorites"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "收藏歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"add_to_favorites"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "取消收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"del_from_favorites"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放列表第"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list_index"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "本地播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"playlocal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "暂停"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "停止"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "停止播放"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "播放歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play_music_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试自定义口令"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#code1(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hello</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试链接"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#httpget(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://github.com/hanxi/xiaomusic</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "获取歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#getmy_playlist(playlist_id=12758992225)"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "key_match_order"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "上一首"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "全部循环"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "关机"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "播放列表第"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "加入收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "取消收藏"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "本地播放歌曲"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "暂停"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "停止播放"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "测试自定义口令"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><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:#032F62;--shiki-dark:#9ECBFF;"> "获取歌单"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ],</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_api"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_audio_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"1582971365183456177"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"355454500"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "log_file"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/tmp/xiaomusic.txt"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "fuzzy_match_cutoff"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.6</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "enable_fuzzy_match"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "stop_tts_msg"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "enable_config_example"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "keywords_playlocal"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "keywords_play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "keywords_stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "keywords_playlist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "user_key_word_dict"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试自定义口令"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#code1(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">hello</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "测试链接"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#httpget(</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">\\"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">https://github.com/hanxi/xiaomusic</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "获取歌单"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"exec#getmy_playlist(playlist_id=12758992225)"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "enable_force_stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "devices"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> " "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "device_id"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">" -17c6-4204- - "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hardware"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"L05C"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "play_type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cur_music"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cur_playlist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "group_list"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "remove_id3tag"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "convert_to_mp3"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "delay_sec"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "continue_play"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "pull_ask_sec"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "crontab_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "enable_yt_dlp_cookies"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "get_ask_by_mina"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>getmy_playlist.py</p><div class="language-python vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">python</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;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">async</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> def</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> getmy_playlist</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">(type</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"netease"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,api_host</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"http://127.0.0.1/api"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, playlist_id</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,uid</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">None</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> Purpose: </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> """</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> global</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log, xiaomusic</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> type</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> ==</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "netease"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> uid:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> api_url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/user/playlist?uid=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">uid</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 发起请求</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(api_url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.raise_for_status() </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music_list </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> item </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music_list[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> list_name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> item.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # if item.get("id") in [12709941656,]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> songs_url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/playlist/detail?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">item[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 发起请求</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(songs_url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.raise_for_status() </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # log.info(f"getmy_playlist url:{api_url} response:{response.text}")</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> []</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'tracks'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # try:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> picUrl </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'picUrl'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> artist </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'ar'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> album </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/song/url?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">or</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music_tags[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "title"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: name,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "artist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: artist,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "album"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: album,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "year"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "genre"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "picture"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: picUrl,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "lyrics"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.music_list[list_name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(xiaomusic.all_music)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(xiaomusic.music_list)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> playlist_id:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> songs_url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/playlist/detail?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">playlist_id</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 发起请求</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> requests.get(songs_url, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;">timeout</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">) </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 增加超时以避免长时间挂起</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.raise_for_status() </span><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"># 如果响应不是200,引发HTTPError异常</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> </span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> response.json()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> list_name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.info(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist list_name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> []</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> for</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">in</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> musics[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'playlist'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'tracks'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # try:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> picUrl </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'picUrl'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> artist </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'ar'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> album </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'al'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">][</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'name'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> music.get(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">api_host</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">/song/url?id=</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">music[</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'id'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">&br=350000&proxy=HTTP:%2F%2F127.0.0.1:8080"</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> if</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> name) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">or</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">not</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url):</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> continue</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> url</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.all_music_tags[name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "title"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: name,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "artist"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: artist,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "album"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: album,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "year"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "genre"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#032F62;--shiki-dark:#9ECBFF;"> "picture"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: picUrl,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> "lyrics"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">""</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list.append(name)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist name:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">list_name</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>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.debug(one_music_list)</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> # 歌曲名字相同会覆盖</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.music_list[list_name] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> one_music_list</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> xiaomusic.try_save_tag_cache()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> else</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> log.error(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">f</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"getmy_playlist type:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">{type}</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> not support"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span></span></code></pre></div><hr><h3 id="评论-14-dissipator" tabindex="-1">评论 14 - dissipator <a class="header-anchor" href="#评论-14-dissipator" aria-label="Permalink to "评论 14 - dissipator"" target="_self"></a></h3><p><img src="https://github.com/user-attachments/assets/7412eec4-f7d3-4a86-b186-0118d6f331ff" alt="image"><img src="https://github.com/user-attachments/assets/2215e520-0d40-4c2c-8d46-d3106d65fc51" alt="image"></p><hr><h3 id="评论-15-dludream" tabindex="-1">评论 15 - dludream <a class="header-anchor" href="#评论-15-dludream" aria-label="Permalink to "评论 15 - dludream"" target="_self"></a></h3><p>NeteaseCloudMusicApi似乎获取不到播放地址?其他信息倒是有。</p><p><img src="https://github.com/user-attachments/assets/c7e7a748-aa82-47f0-8784-f6469cc3e99b" alt="2024-11-28_151952"></p><hr><h3 id="评论-16-hanxi" tabindex="-1">评论 16 - hanxi <a class="header-anchor" href="#评论-16-hanxi" aria-label="Permalink to "评论 16 - hanxi"" target="_self"></a></h3><p>看代码是另一个接口获取url的: <code>url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</code></p><hr><h3 id="评论-17-dludream" tabindex="-1">评论 17 - dludream <a class="header-anchor" href="#评论-17-dludream" aria-label="Permalink to "评论 17 - dludream"" target="_self"></a></h3><blockquote><p>看代码是另一个接口获取url的: <code>url = f"{api_host}/song/url?id={music['id']}&br=350000&realIP=211.161.244.70&proxy=HTTP:%2F%2F127.0.0.1:8080"</code></p></blockquote><p>是的,我用的是这个接口,<a href="https://registry.hub.docker.com/r/gnehs/neteasecloudmusicapi-docker/" target="_self">https://registry.hub.docker.com/r/gnehs/neteasecloudmusicapi-docker/</a></p><p>可能网易修改了api,这些获取不了播放地址了。</p><p>我倒不是要这个功能,只是感兴趣看看。我不获取,我直接用yt把歌全下载下来播放。</p><hr><h3 id="评论-18-dissipator" tabindex="-1">评论 18 - dissipator <a class="header-anchor" href="#评论-18-dissipator" aria-label="Permalink to "评论 18 - dissipator"" target="_self"></a></h3><p>这个不是网易的接口,是<a href="http://localhost:3000/docs/#/?id=neteasecloudmusicapi" target="_self">NeteaseCloudMusicApi</a> 接口。proxy=HTTP:%2F%2F127.0.0.1:8080"是UnblockNeteaseMusic 解锁灰色; 完整的使用方式和docker 可以到 <a href="https://github.com/dissipator/xiaomusic/tree/dev" target="_self">https://github.com/dissipator/xiaomusic/tree/dev</a> 看README.md;目前没有教程。本人就在群2,有问题可以找我。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/269" target="_self">链接到 GitHub Issue</a></p>`,77)]))}const g=i(p,[["render",l]]);export{o as __pageData,g as default};
|
1
docs/.vitepress/dist/assets/issues_285.md.0b7MF6MA.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_285.md.0b7MF6MA.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as t,c as e,a0 as s,o}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"相关工具推荐","description":"","frontmatter":{"title":"相关工具推荐"},"headers":[],"relativePath":"issues/285.md","filePath":"issues/285.md","lastUpdated":null}'),i={name:"issues/285.md"};function r(l,a,h,c,p,n){return o(),e("div",null,a[0]||(a[0]=[s('<h1 id="相关工具推荐" tabindex="-1">相关工具推荐 <a class="header-anchor" href="#相关工具推荐" aria-label="Permalink to "相关工具推荐"" target="_self"></a></h1><ul><li><a href="https://github.com/xhongc/music-tag-web" target="_self">xhongc/music-tag-web 刮削音乐歌词图片</a></li><li><a href="https://github.com/onlyLTY/dockerCopilot" target="_self">onlyLTY/dockerCopilot 一键更新容器</a></li></ul><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-f-loat" tabindex="-1">评论 1 - F-loat <a class="header-anchor" href="#评论-1-f-loat" aria-label="Permalink to "评论 1 - F-loat"" target="_self"></a></h3><p>借楼加个小程序的图 🥳 <a href="https://github.com/F-loat/xiaoplayer" target="_self">https://github.com/F-loat/xiaoplayer</a></p><h3 id="小程序码" tabindex="-1">小程序码 <a class="header-anchor" href="#小程序码" aria-label="Permalink to "小程序码"" target="_self"></a></h3><p><img alt="weapp" src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/weappcode.jpg" width="24%"></p><h3 id="截图" tabindex="-1">截图 <a class="header-anchor" href="#截图" aria-label="Permalink to "截图"" target="_self"></a></h3><p><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/1.jpg" width="24%"><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/2.jpg" width="24%"><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/4.jpg" width="24%"><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/3.jpg" width="24%"></p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>@F-loat 可以在欢迎页加个链接显示小程序码。</p><hr><h3 id="评论-3-f-loat" tabindex="-1">评论 3 - F-loat <a class="header-anchor" href="#评论-3-f-loat" aria-label="Permalink to "评论 3 - F-loat"" target="_self"></a></h3><p>@hanxi 可以的,这样还能自动把 ip 用参数带过来,我有空搞一下</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/285" target="_self">链接到 GitHub Issue</a></p>',17)]))}const m=t(i,[["render",r]]);export{u as __pageData,m as default};
|
1
docs/.vitepress/dist/assets/issues_285.md.0b7MF6MA.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_285.md.0b7MF6MA.lean.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as t,c as e,a0 as s,o}from"./chunks/framework.p2VkXzrt.js";const u=JSON.parse('{"title":"相关工具推荐","description":"","frontmatter":{"title":"相关工具推荐"},"headers":[],"relativePath":"issues/285.md","filePath":"issues/285.md","lastUpdated":null}'),i={name:"issues/285.md"};function r(l,a,h,c,p,n){return o(),e("div",null,a[0]||(a[0]=[s('<h1 id="相关工具推荐" tabindex="-1">相关工具推荐 <a class="header-anchor" href="#相关工具推荐" aria-label="Permalink to "相关工具推荐"" target="_self"></a></h1><ul><li><a href="https://github.com/xhongc/music-tag-web" target="_self">xhongc/music-tag-web 刮削音乐歌词图片</a></li><li><a href="https://github.com/onlyLTY/dockerCopilot" target="_self">onlyLTY/dockerCopilot 一键更新容器</a></li></ul><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-f-loat" tabindex="-1">评论 1 - F-loat <a class="header-anchor" href="#评论-1-f-loat" aria-label="Permalink to "评论 1 - F-loat"" target="_self"></a></h3><p>借楼加个小程序的图 🥳 <a href="https://github.com/F-loat/xiaoplayer" target="_self">https://github.com/F-loat/xiaoplayer</a></p><h3 id="小程序码" tabindex="-1">小程序码 <a class="header-anchor" href="#小程序码" aria-label="Permalink to "小程序码"" target="_self"></a></h3><p><img alt="weapp" src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/weappcode.jpg" width="24%"></p><h3 id="截图" tabindex="-1">截图 <a class="header-anchor" href="#截图" aria-label="Permalink to "截图"" target="_self"></a></h3><p><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/1.jpg" width="24%"><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/2.jpg" width="24%"><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/4.jpg" width="24%"><img src="https://assets-1251785959.cos.ap-beijing.myqcloud.com/xiaoplayer/screenshot/3.jpg" width="24%"></p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>@F-loat 可以在欢迎页加个链接显示小程序码。</p><hr><h3 id="评论-3-f-loat" tabindex="-1">评论 3 - F-loat <a class="header-anchor" href="#评论-3-f-loat" aria-label="Permalink to "评论 3 - F-loat"" target="_self"></a></h3><p>@hanxi 可以的,这样还能自动把 ip 用参数带过来,我有空搞一下</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/285" target="_self">链接到 GitHub Issue</a></p>',17)]))}const m=t(i,[["render",r]]);export{u as __pageData,m as default};
|
1
docs/.vitepress/dist/assets/issues_294.md.CrOAwh-t.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_294.md.CrOAwh-t.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as e,c as t,a0 as r,o}from"./chunks/framework.p2VkXzrt.js";const c=JSON.parse('{"title":"关于M01型号的注意事项","description":"","frontmatter":{"title":"关于M01型号的注意事项"},"headers":[],"relativePath":"issues/294.md","filePath":"issues/294.md","lastUpdated":null}'),s={name:"issues/294.md"};function i(h,a,l,n,u,p){return o(),t("div",null,a[0]||(a[0]=[r('<h1 id="关于m01型号的注意事项" tabindex="-1">关于M01型号的注意事项 <a class="header-anchor" href="#关于m01型号的注意事项" aria-label="Permalink to "关于M01型号的注意事项"" target="_self"></a></h1><p>M01:在0.3.55版本【型号兼容模式】与【特殊型号获取对话记录】都设为false或true,都可以语音了。 如果【型号兼容模式】为 true,默认UI显示播放中,但音箱没声音。</p><p>型号:S12A、LX04、S12 在米家APP可以联动,比如客厅有人自定义指令:播放歌曲、关机...等 而M01无论【型号兼容模式】与【特殊型号获取对话记录】设为false或true,都无法执行任何自定义指令…</p><p><img src="https://github.com/user-attachments/assets/0913e3fa-1f1a-47b0-b8b9-d308bd7793df" alt="IMG_6460"></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" target="_self"></a></h3><p>M01 保持默认设置应该是能语音和播放的吧。自定义指令的功能应该是 M01 本身就不支持,可能属于放弃维护的产品吧。</p><hr><h3 id="评论-2-bj803" tabindex="-1">评论 2 - bj803 <a class="header-anchor" href="#评论-2-bj803" aria-label="Permalink to "评论 2 - bj803"" target="_self"></a></h3><blockquote><p>M01 保持默认设置应该是能语音和播放的吧。自定义指令的功能应该是 M01 本身就不支持,可能属于放弃维护的产品吧。</p></blockquote><p>刚试了用:pause是可以暂停(不过只暂2分钟左右又自己播放了)</p><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><p>只能网页里点关机按钮,或者语音关机。所有型号都一样。</p><hr><h3 id="评论-4-bj803" tabindex="-1">评论 4 - bj803 <a class="header-anchor" href="#评论-4-bj803" aria-label="Permalink to "评论 4 - bj803"" target="_self"></a></h3><blockquote><p>型号:S12A、LX04、S12</p></blockquote><blockquote><p>只能网页里点关机按钮,或者语音关机。所有型号都一样。</p></blockquote><p>在型号:S12A、LX04、S12 除了能网页里点关机按钮或者语音开关机外,能在米家APP自定义指令进行播放与关机(例如当客厅客有人自定义指令"播放歌曲",无人自定义指令"关机"。M01自定义指令"pause"可以暂停,其他口令不行。</p><hr><h3 id="评论-5-bj803" tabindex="-1">评论 5 - bj803 <a class="header-anchor" href="#评论-5-bj803" aria-label="Permalink to "评论 5 - bj803"" target="_self"></a></h3><p>刚又试了一下,用自定义play stop、power off可以停止播放关机,用自定义play music可以播放音乐,可能M01不需要下划线</p><hr><h3 id="评论-6-hanxi" tabindex="-1">评论 6 - hanxi <a class="header-anchor" href="#评论-6-hanxi" aria-label="Permalink to "评论 6 - hanxi"" target="_self"></a></h3><p>感谢你的反馈。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/294" target="_self">链接到 GitHub Issue</a></p>',27)]))}const d=e(s,[["render",i]]);export{c as __pageData,d as default};
|
1
docs/.vitepress/dist/assets/issues_294.md.CrOAwh-t.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_294.md.CrOAwh-t.lean.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as e,c as t,a0 as r,o}from"./chunks/framework.p2VkXzrt.js";const c=JSON.parse('{"title":"关于M01型号的注意事项","description":"","frontmatter":{"title":"关于M01型号的注意事项"},"headers":[],"relativePath":"issues/294.md","filePath":"issues/294.md","lastUpdated":null}'),s={name:"issues/294.md"};function i(h,a,l,n,u,p){return o(),t("div",null,a[0]||(a[0]=[r('<h1 id="关于m01型号的注意事项" tabindex="-1">关于M01型号的注意事项 <a class="header-anchor" href="#关于m01型号的注意事项" aria-label="Permalink to "关于M01型号的注意事项"" target="_self"></a></h1><p>M01:在0.3.55版本【型号兼容模式】与【特殊型号获取对话记录】都设为false或true,都可以语音了。 如果【型号兼容模式】为 true,默认UI显示播放中,但音箱没声音。</p><p>型号:S12A、LX04、S12 在米家APP可以联动,比如客厅有人自定义指令:播放歌曲、关机...等 而M01无论【型号兼容模式】与【特殊型号获取对话记录】设为false或true,都无法执行任何自定义指令…</p><p><img src="https://github.com/user-attachments/assets/0913e3fa-1f1a-47b0-b8b9-d308bd7793df" alt="IMG_6460"></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-hanxi" tabindex="-1">评论 1 - hanxi <a class="header-anchor" href="#评论-1-hanxi" aria-label="Permalink to "评论 1 - hanxi"" target="_self"></a></h3><p>M01 保持默认设置应该是能语音和播放的吧。自定义指令的功能应该是 M01 本身就不支持,可能属于放弃维护的产品吧。</p><hr><h3 id="评论-2-bj803" tabindex="-1">评论 2 - bj803 <a class="header-anchor" href="#评论-2-bj803" aria-label="Permalink to "评论 2 - bj803"" target="_self"></a></h3><blockquote><p>M01 保持默认设置应该是能语音和播放的吧。自定义指令的功能应该是 M01 本身就不支持,可能属于放弃维护的产品吧。</p></blockquote><p>刚试了用:pause是可以暂停(不过只暂2分钟左右又自己播放了)</p><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><p>只能网页里点关机按钮,或者语音关机。所有型号都一样。</p><hr><h3 id="评论-4-bj803" tabindex="-1">评论 4 - bj803 <a class="header-anchor" href="#评论-4-bj803" aria-label="Permalink to "评论 4 - bj803"" target="_self"></a></h3><blockquote><p>型号:S12A、LX04、S12</p></blockquote><blockquote><p>只能网页里点关机按钮,或者语音关机。所有型号都一样。</p></blockquote><p>在型号:S12A、LX04、S12 除了能网页里点关机按钮或者语音开关机外,能在米家APP自定义指令进行播放与关机(例如当客厅客有人自定义指令"播放歌曲",无人自定义指令"关机"。M01自定义指令"pause"可以暂停,其他口令不行。</p><hr><h3 id="评论-5-bj803" tabindex="-1">评论 5 - bj803 <a class="header-anchor" href="#评论-5-bj803" aria-label="Permalink to "评论 5 - bj803"" target="_self"></a></h3><p>刚又试了一下,用自定义play stop、power off可以停止播放关机,用自定义play music可以播放音乐,可能M01不需要下划线</p><hr><h3 id="评论-6-hanxi" tabindex="-1">评论 6 - hanxi <a class="header-anchor" href="#评论-6-hanxi" aria-label="Permalink to "评论 6 - hanxi"" target="_self"></a></h3><p>感谢你的反馈。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/294" target="_self">链接到 GitHub Issue</a></p>',27)]))}const d=e(s,[["render",i]]);export{c as __pageData,d as default};
|
1
docs/.vitepress/dist/assets/issues_297.md.CtkkBK4R.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_297.md.CtkkBK4R.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/issues_297.md.CtkkBK4R.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_297.md.CtkkBK4R.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
29
docs/.vitepress/dist/assets/issues_78.md.CH6fxnfx.js
vendored
Normal file
29
docs/.vitepress/dist/assets/issues_78.md.CH6fxnfx.js
vendored
Normal file
File diff suppressed because one or more lines are too long
29
docs/.vitepress/dist/assets/issues_78.md.CH6fxnfx.lean.js
vendored
Normal file
29
docs/.vitepress/dist/assets/issues_78.md.CH6fxnfx.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/issues_88.md.VOyx9x2b.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_88.md.VOyx9x2b.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/issues_88.md.VOyx9x2b.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_88.md.VOyx9x2b.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
38
docs/.vitepress/dist/assets/issues_94.md.GErTTh9P.js
vendored
Normal file
38
docs/.vitepress/dist/assets/issues_94.md.GErTTh9P.js
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const d=JSON.parse('{"title":"采用config.json配置方式","description":"","frontmatter":{"title":"采用config.json配置方式"},"headers":[],"relativePath":"issues/94.md","filePath":"issues/94.md","lastUpdated":null}'),h={name:"issues/94.md"};function p(l,s,k,e,E,o){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="采用config-json配置方式" tabindex="-1">采用config.json配置方式 <a class="header-anchor" href="#采用config-json配置方式" aria-label="Permalink to "采用config.json配置方式"" target="_self"></a></h1><p>docker 方式部署默认推荐使用环境变量的方式来配置参数,如果是自己用命令行启动,目前支持的参数配置比较少,但是是支持 <code>--config</code> 参数。</p><p>使用 pip 安装 xiaomusic 【0.1.83版本才支持 pip 安装】</p><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;">pip</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> xiaomusic</span></span></code></pre></div><p>依赖的 ffmpeg 需要自己安装。</p><p><img src="https://github.com/hanxi/xiaomusic/assets/1185757/6912e3ec-c42f-42de-b027-a296f5a26ba1" alt="image"></p><p>仓库中有个 config-example.json 文件,可以把这个文件拷贝为 config.json 然后修改 config.json 里的配置,再用下面的命令启动。</p><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;">xiaomusic</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./config.json</span></span></code></pre></div><p>默认的 config.json 模板如下:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hardware"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"L07A"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "account"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "mi_did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cookie"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "verbose"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"music"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "conf_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hostname"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"192.168.2.5"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "port"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">8090</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "proxy"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "search_prefix"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"ytsearch:"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ffmpeg_location"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"./ffmpeg/bin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "active_cmd"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play,random_play,playlocal,play_music_list,stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "exclude_dirs"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"@eaDir"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path_depth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "disable_httpauth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_username"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"admin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"admin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_list_url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "music_list_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "disable_download"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_api"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "log_file"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/tmp/xiaomusic.txt"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "fuzzy_match_cutoff"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.6</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "enable_fuzzy_match"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>如果采用 docker compose 启动想用 config.json 的配置方式,可以这样配:</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;">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;">./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;">./config.json:/app/config.json</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> command</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'--config'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/app/config.json'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>主要就是把 config.json 文件映射进容器和传 <code>--config</code> 参数。</p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-alitime" tabindex="-1">评论 1 - alitime <a class="header-anchor" href="#评论-1-alitime" aria-label="Permalink to "评论 1 - alitime"" target="_self"></a></h3><p>正需要,有配置文件方便多了</p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>ffmpeg 如果是用 apt install 这类系统工具安装的,默认会在 /usr/bin 目录下,ffmpeg_location 这个参数就需要设置为 /usr/bin .</p><p>目前 armv7 cpu 的 docker 镜像里的 ffmpeg 有问题,最好是用 pip 方式安装运行。</p><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><blockquote><p>ffmpeg 如果是用 apt install 这类系统工具安装的,默认会在 /usr/bin 目录下,ffmpeg_location 这个参数就需要设置为 /usr/bin .</p><p>目前 armv7 cpu 的 docker 镜像里的 ffmpeg 有问题,最好是用 pip 方式安装运行。</p></blockquote><p>armv7 问题已经解决。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/94" target="_self">链接到 GitHub Issue</a></p>`,26)]))}const g=i(h,[["render",p]]);export{d as __pageData,g as default};
|
38
docs/.vitepress/dist/assets/issues_94.md.GErTTh9P.lean.js
vendored
Normal file
38
docs/.vitepress/dist/assets/issues_94.md.GErTTh9P.lean.js
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const d=JSON.parse('{"title":"采用config.json配置方式","description":"","frontmatter":{"title":"采用config.json配置方式"},"headers":[],"relativePath":"issues/94.md","filePath":"issues/94.md","lastUpdated":null}'),h={name:"issues/94.md"};function p(l,s,k,e,E,o){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="采用config-json配置方式" tabindex="-1">采用config.json配置方式 <a class="header-anchor" href="#采用config-json配置方式" aria-label="Permalink to "采用config.json配置方式"" target="_self"></a></h1><p>docker 方式部署默认推荐使用环境变量的方式来配置参数,如果是自己用命令行启动,目前支持的参数配置比较少,但是是支持 <code>--config</code> 参数。</p><p>使用 pip 安装 xiaomusic 【0.1.83版本才支持 pip 安装】</p><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;">pip</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> xiaomusic</span></span></code></pre></div><p>依赖的 ffmpeg 需要自己安装。</p><p><img src="https://github.com/hanxi/xiaomusic/assets/1185757/6912e3ec-c42f-42de-b027-a296f5a26ba1" alt="image"></p><p>仓库中有个 config-example.json 文件,可以把这个文件拷贝为 config.json 然后修改 config.json 里的配置,再用下面的命令启动。</p><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;">xiaomusic</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> --config</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> ./config.json</span></span></code></pre></div><p>默认的 config.json 模板如下:</p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hardware"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"L07A"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "account"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "mi_did"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "cookie"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "verbose"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"music"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "conf_path"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "hostname"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"192.168.2.5"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "port"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">8090</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "proxy"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">null</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "search_prefix"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"ytsearch:"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "ffmpeg_location"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"./ffmpeg/bin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "active_cmd"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"play,random_play,playlocal,play_music_list,stop"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "exclude_dirs"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"@eaDir"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_path_depth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">10</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "disable_httpauth"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_username"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"admin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "httpauth_password"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"admin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "music_list_url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "music_list_json"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </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:#005CC5;--shiki-dark:#79B8FF;"> "disable_download"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "use_music_api"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "log_file"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"/tmp/xiaomusic.txt"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "fuzzy_match_cutoff"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">0.6</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "enable_fuzzy_match"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">true</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><p>如果采用 docker compose 启动想用 config.json 的配置方式,可以这样配:</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;">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;">./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;">./config.json:/app/config.json</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#85E89D;"> command</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">: [</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'--config'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'/app/config.json'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>主要就是把 config.json 文件映射进容器和传 <code>--config</code> 参数。</p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><h3 id="评论-1-alitime" tabindex="-1">评论 1 - alitime <a class="header-anchor" href="#评论-1-alitime" aria-label="Permalink to "评论 1 - alitime"" target="_self"></a></h3><p>正需要,有配置文件方便多了</p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>ffmpeg 如果是用 apt install 这类系统工具安装的,默认会在 /usr/bin 目录下,ffmpeg_location 这个参数就需要设置为 /usr/bin .</p><p>目前 armv7 cpu 的 docker 镜像里的 ffmpeg 有问题,最好是用 pip 方式安装运行。</p><hr><h3 id="评论-3-hanxi" tabindex="-1">评论 3 - hanxi <a class="header-anchor" href="#评论-3-hanxi" aria-label="Permalink to "评论 3 - hanxi"" target="_self"></a></h3><blockquote><p>ffmpeg 如果是用 apt install 这类系统工具安装的,默认会在 /usr/bin 目录下,ffmpeg_location 这个参数就需要设置为 /usr/bin .</p><p>目前 armv7 cpu 的 docker 镜像里的 ffmpeg 有问题,最好是用 pip 方式安装运行。</p></blockquote><p>armv7 问题已经解决。</p><hr><p><a href="https://github.com/hanxi/xiaomusic/issues/94" target="_self">链接到 GitHub Issue</a></p>`,26)]))}const g=i(h,[["render",p]]);export{d as __pageData,g as default};
|
1
docs/.vitepress/dist/assets/issues_96.md.D6uW10Mi.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_96.md.D6uW10Mi.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as a,c as e,a0 as s,o as i}from"./chunks/framework.p2VkXzrt.js";const m=JSON.parse('{"title":"ios系统上的捷径配置","description":"","frontmatter":{"title":"ios系统上的捷径配置"},"headers":[],"relativePath":"issues/96.md","filePath":"issues/96.md","lastUpdated":null}'),o={name:"issues/96.md"};function r(c,t,d,l,n,p){return i(),e("div",null,t[0]||(t[0]=[s('<h1 id="ios系统上的捷径配置" tabindex="-1">ios系统上的捷径配置 <a class="header-anchor" href="#ios系统上的捷径配置" aria-label="Permalink to "ios系统上的捷径配置"" target="_self"></a></h1><p>下面是播放音乐和关机两个示例。只要在 web 页面上能看到的功能,都有对应的 http 请求接口,都可以用来配置捷径。</p><p><img src="https://github.com/hanxi/xiaomusic/assets/1185757/db0a1856-e1ed-47cb-972d-d997f71bf92b" alt="mmexport1719767452647"></p><p><img src="https://github.com/hanxi/xiaomusic/assets/1185757/92b7bc4b-9699-49cc-956a-4bddb6bd50fa" alt="mmexport1719767449742"></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><p>没有评论。 <a href="https://github.com/hanxi/xiaomusic/issues/96" target="_self">链接到 GitHub Issue</a></p>',6)]))}const u=a(o,[["render",r]]);export{m as __pageData,u as default};
|
1
docs/.vitepress/dist/assets/issues_96.md.D6uW10Mi.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/issues_96.md.D6uW10Mi.lean.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as a,c as e,a0 as s,o as i}from"./chunks/framework.p2VkXzrt.js";const m=JSON.parse('{"title":"ios系统上的捷径配置","description":"","frontmatter":{"title":"ios系统上的捷径配置"},"headers":[],"relativePath":"issues/96.md","filePath":"issues/96.md","lastUpdated":null}'),o={name:"issues/96.md"};function r(c,t,d,l,n,p){return i(),e("div",null,t[0]||(t[0]=[s('<h1 id="ios系统上的捷径配置" tabindex="-1">ios系统上的捷径配置 <a class="header-anchor" href="#ios系统上的捷径配置" aria-label="Permalink to "ios系统上的捷径配置"" target="_self"></a></h1><p>下面是播放音乐和关机两个示例。只要在 web 页面上能看到的功能,都有对应的 http 请求接口,都可以用来配置捷径。</p><p><img src="https://github.com/hanxi/xiaomusic/assets/1185757/db0a1856-e1ed-47cb-972d-d997f71bf92b" alt="mmexport1719767452647"></p><p><img src="https://github.com/hanxi/xiaomusic/assets/1185757/92b7bc4b-9699-49cc-956a-4bddb6bd50fa" alt="mmexport1719767449742"></p><h2 id="评论" tabindex="-1">评论 <a class="header-anchor" href="#评论" aria-label="Permalink to "评论"" target="_self"></a></h2><p>没有评论。 <a href="https://github.com/hanxi/xiaomusic/issues/96" target="_self">链接到 GitHub Issue</a></p>',6)]))}const u=a(o,[["render",r]]);export{m as __pageData,u as default};
|
73
docs/.vitepress/dist/assets/issues_99.md.amwtZpFn.js
vendored
Normal file
73
docs/.vitepress/dist/assets/issues_99.md.amwtZpFn.js
vendored
Normal file
File diff suppressed because one or more lines are too long
73
docs/.vitepress/dist/assets/issues_99.md.amwtZpFn.lean.js
vendored
Normal file
73
docs/.vitepress/dist/assets/issues_99.md.amwtZpFn.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
65
docs/.vitepress/dist/assets/issues_index.md.Do1eTGGf.js
vendored
Normal file
65
docs/.vitepress/dist/assets/issues_index.md.Do1eTGGf.js
vendored
Normal file
File diff suppressed because one or more lines are too long
65
docs/.vitepress/dist/assets/issues_index.md.Do1eTGGf.lean.js
vendored
Normal file
65
docs/.vitepress/dist/assets/issues_index.md.Do1eTGGf.lean.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/style.DKcHOilP.css
vendored
Normal file
1
docs/.vitepress/dist/assets/style.DKcHOilP.css
vendored
Normal file
File diff suppressed because one or more lines are too long
16
docs/.vitepress/dist/assets/test1_api-examples.md.LfndiNnB.js
vendored
Normal file
16
docs/.vitepress/dist/assets/test1_api-examples.md.LfndiNnB.js
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import{u as p,c as h,a0 as o,j as a,t,k as i,a as s,o as d}from"./chunks/framework.p2VkXzrt.js";const f=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"test1/api-examples.md","filePath":"test1/api-examples.md","lastUpdated":null}'),g={name:"test1/api-examples.md"},E=Object.assign(g,{setup(m){const{site:k,theme:n,page:l,frontmatter:r}=p();return(u,e)=>(d(),h("div",null,[e[0]||(e[0]=o(`<h1 id="runtime-api-examples" tabindex="-1">Runtime API Examples <a class="header-anchor" href="#runtime-api-examples" aria-label="Permalink to "Runtime API Examples"" target="_self"></a></h1><p>This page demonstrates usage of some of the runtime APIs provided by VitePress.</p><p>The main <code>useData()</code> API can be used to access site, theme, and page data for the current page. It works in both <code>.md</code> and <code>.vue</code> files:</p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><script setup></span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">import { useData } from 'vitepress'</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">const { theme, page, frontmatter } = useData()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></script></span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">## Results</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">### Theme Data</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><pre>{{ theme }}</pre></span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">### Page Data</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><pre>{{ page }}</pre></span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">### Page Frontmatter</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><pre>{{ frontmatter }}</pre></span></span></code></pre></div><h2 id="results" tabindex="-1">Results <a class="header-anchor" href="#results" aria-label="Permalink to "Results"" target="_self"></a></h2><h3 id="theme-data" tabindex="-1">Theme Data <a class="header-anchor" href="#theme-data" aria-label="Permalink to "Theme Data"" target="_self"></a></h3>`,6)),a("pre",null,t(i(n)),1),e[1]||(e[1]=a("h3",{id:"page-data",tabindex:"-1"},[s("Page Data "),a("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"',target:"_self"},"")],-1)),a("pre",null,t(i(l)),1),e[2]||(e[2]=a("h3",{id:"page-frontmatter",tabindex:"-1"},[s("Page Frontmatter "),a("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"',target:"_self"},"")],-1)),a("pre",null,t(i(r)),1),e[3]||(e[3]=a("h2",{id:"more",tabindex:"-1"},[s("More "),a("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"',target:"_self"},"")],-1)),e[4]||(e[4]=a("p",null,[s("Check out the documentation for the "),a("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_self"},"full list of runtime APIs"),s(".")],-1))]))}});export{f as __pageData,E as default};
|
16
docs/.vitepress/dist/assets/test1_api-examples.md.LfndiNnB.lean.js
vendored
Normal file
16
docs/.vitepress/dist/assets/test1_api-examples.md.LfndiNnB.lean.js
vendored
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import{u as p,c as h,a0 as o,j as a,t,k as i,a as s,o as d}from"./chunks/framework.p2VkXzrt.js";const f=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"test1/api-examples.md","filePath":"test1/api-examples.md","lastUpdated":null}'),g={name:"test1/api-examples.md"},E=Object.assign(g,{setup(m){const{site:k,theme:n,page:l,frontmatter:r}=p();return(u,e)=>(d(),h("div",null,[e[0]||(e[0]=o(`<h1 id="runtime-api-examples" tabindex="-1">Runtime API Examples <a class="header-anchor" href="#runtime-api-examples" aria-label="Permalink to "Runtime API Examples"" target="_self"></a></h1><p>This page demonstrates usage of some of the runtime APIs provided by VitePress.</p><p>The main <code>useData()</code> API can be used to access site, theme, and page data for the current page. It works in both <code>.md</code> and <code>.vue</code> files:</p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><script setup></span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">import { useData } from 'vitepress'</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">const { theme, page, frontmatter } = useData()</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"></script></span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">## Results</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">### Theme Data</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><pre>{{ theme }}</pre></span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">### Page Data</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><pre>{{ page }}</pre></span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-light-font-weight:bold;--shiki-dark:#79B8FF;--shiki-dark-font-weight:bold;">### Page Frontmatter</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"><pre>{{ frontmatter }}</pre></span></span></code></pre></div><h2 id="results" tabindex="-1">Results <a class="header-anchor" href="#results" aria-label="Permalink to "Results"" target="_self"></a></h2><h3 id="theme-data" tabindex="-1">Theme Data <a class="header-anchor" href="#theme-data" aria-label="Permalink to "Theme Data"" target="_self"></a></h3>`,6)),a("pre",null,t(i(n)),1),e[1]||(e[1]=a("h3",{id:"page-data",tabindex:"-1"},[s("Page Data "),a("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"',target:"_self"},"")],-1)),a("pre",null,t(i(l)),1),e[2]||(e[2]=a("h3",{id:"page-frontmatter",tabindex:"-1"},[s("Page Frontmatter "),a("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"',target:"_self"},"")],-1)),a("pre",null,t(i(r)),1),e[3]||(e[3]=a("h2",{id:"more",tabindex:"-1"},[s("More "),a("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"',target:"_self"},"")],-1)),e[4]||(e[4]=a("p",null,[s("Check out the documentation for the "),a("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_self"},"full list of runtime APIs"),s(".")],-1))]))}});export{f as __pageData,E as default};
|
1
docs/.vitepress/dist/assets/test1_index.md.Bma_WtEx.js
vendored
Normal file
1
docs/.vitepress/dist/assets/test1_index.md.Bma_WtEx.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as t,c as a,a0 as o,o as d}from"./chunks/framework.p2VkXzrt.js";const f=JSON.parse('{"title":"note","description":"","frontmatter":{},"headers":[],"relativePath":"test1/index.md","filePath":"test1/index.md","lastUpdated":null}'),n={name:"test1/index.md"};function r(s,e,c,i,l,p){return d(),a("div",null,e[0]||(e[0]=[o('<h1 id="note" tabindex="-1">note <a class="header-anchor" href="#note" aria-label="Permalink to "note"" target="_self"></a></h1><p>在<code>note</code>文件夹中创建/删除<code>md</code>文件,侧边栏数据会被自动更新。</p><p>Create / delete <code>md</code> file in the <code>note</code> folder, and the sidebar data will be updated automatically.</p>',3)]))}const u=t(n,[["render",r]]);export{f as __pageData,u as default};
|
1
docs/.vitepress/dist/assets/test1_index.md.Bma_WtEx.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/test1_index.md.Bma_WtEx.lean.js
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
import{_ as t,c as a,a0 as o,o as d}from"./chunks/framework.p2VkXzrt.js";const f=JSON.parse('{"title":"note","description":"","frontmatter":{},"headers":[],"relativePath":"test1/index.md","filePath":"test1/index.md","lastUpdated":null}'),n={name:"test1/index.md"};function r(s,e,c,i,l,p){return d(),a("div",null,e[0]||(e[0]=[o('<h1 id="note" tabindex="-1">note <a class="header-anchor" href="#note" aria-label="Permalink to "note"" target="_self"></a></h1><p>在<code>note</code>文件夹中创建/删除<code>md</code>文件,侧边栏数据会被自动更新。</p><p>Create / delete <code>md</code> file in the <code>note</code> folder, and the sidebar data will be updated automatically.</p>',3)]))}const u=t(n,[["render",r]]);export{f as __pageData,u as default};
|
33
docs/.vitepress/dist/assets/test1_markdown-examples.md.D-SZaDZl.js
vendored
Normal file
33
docs/.vitepress/dist/assets/test1_markdown-examples.md.D-SZaDZl.js
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import{_ as a,c as i,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const E=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"test1/markdown-examples.md","filePath":"test1/markdown-examples.md","lastUpdated":null}'),e={name:"test1/markdown-examples.md"};function l(p,s,h,k,r,o){return t(),i("div",null,s[0]||(s[0]=[n(`<h1 id="markdown-extension-examples" tabindex="-1">Markdown Extension Examples <a class="header-anchor" href="#markdown-extension-examples" aria-label="Permalink to "Markdown Extension Examples"" target="_self"></a></h1><p>This page demonstrates some of the built-in markdown extensions provided by VitePress.</p><h2 id="syntax-highlighting" tabindex="-1">Syntax Highlighting <a class="header-anchor" href="#syntax-highlighting" aria-label="Permalink to "Syntax Highlighting"" target="_self"></a></h2><p>VitePress provides Syntax Highlighting powered by <a href="https://github.com/shikijs/shiki" target="_self">Shiki</a>, with additional features like line-highlighting:</p><p><strong>Input</strong></p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\`\`\`js{4}</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">export default {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data () {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> return {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> msg: 'Highlighted!'</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\`\`\`</span></span></code></pre></div><p><strong>Output</strong></p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</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;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line highlighted"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> msg: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Highlighted!'</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="custom-containers" tabindex="-1">Custom Containers <a class="header-anchor" href="#custom-containers" aria-label="Permalink to "Custom Containers"" target="_self"></a></h2><p><strong>Input</strong></p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: info</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is an info box.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: tip</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a tip.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: warning</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a warning.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: danger</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a dangerous warning.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: details</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a details block.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span></code></pre></div><p><strong>Output</strong></p><div class="info custom-block"><p class="custom-block-title">INFO</p><p>This is an info box.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This is a tip.</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>This is a warning.</p></div><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>This is a dangerous warning.</p></div><details class="details custom-block"><summary>Details</summary><p>This is a details block.</p></details><h2 id="more" tabindex="-1">More <a class="header-anchor" href="#more" aria-label="Permalink to "More"" target="_self"></a></h2><p>Check out the documentation for the <a href="https://vitepress.dev/guide/markdown" target="_self">full list of markdown extensions</a>.</p>`,19)]))}const c=a(e,[["render",l]]);export{E as __pageData,c as default};
|
33
docs/.vitepress/dist/assets/test1_markdown-examples.md.D-SZaDZl.lean.js
vendored
Normal file
33
docs/.vitepress/dist/assets/test1_markdown-examples.md.D-SZaDZl.lean.js
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import{_ as a,c as i,a0 as n,o as t}from"./chunks/framework.p2VkXzrt.js";const E=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"test1/markdown-examples.md","filePath":"test1/markdown-examples.md","lastUpdated":null}'),e={name:"test1/markdown-examples.md"};function l(p,s,h,k,r,o){return t(),i("div",null,s[0]||(s[0]=[n(`<h1 id="markdown-extension-examples" tabindex="-1">Markdown Extension Examples <a class="header-anchor" href="#markdown-extension-examples" aria-label="Permalink to "Markdown Extension Examples"" target="_self"></a></h1><p>This page demonstrates some of the built-in markdown extensions provided by VitePress.</p><h2 id="syntax-highlighting" tabindex="-1">Syntax Highlighting <a class="header-anchor" href="#syntax-highlighting" aria-label="Permalink to "Syntax Highlighting"" target="_self"></a></h2><p>VitePress provides Syntax Highlighting powered by <a href="https://github.com/shikijs/shiki" target="_self">Shiki</a>, with additional features like line-highlighting:</p><p><strong>Input</strong></p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\`\`\`js{4}</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">export default {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> data () {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> return {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> msg: 'Highlighted!'</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">\`\`\`</span></span></code></pre></div><p><strong>Output</strong></p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</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;">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> default</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> data</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> () {</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
||||||
|
<span class="line highlighted"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> msg: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">'Highlighted!'</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="custom-containers" tabindex="-1">Custom Containers <a class="header-anchor" href="#custom-containers" aria-label="Permalink to "Custom Containers"" target="_self"></a></h2><p><strong>Input</strong></p><div class="language-md vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">md</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: info</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is an info box.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: tip</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a tip.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: warning</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a warning.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: danger</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a dangerous warning.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span>
|
||||||
|
<span class="line"></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">::: details</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">This is a details block.</span></span>
|
||||||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:::</span></span></code></pre></div><p><strong>Output</strong></p><div class="info custom-block"><p class="custom-block-title">INFO</p><p>This is an info box.</p></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>This is a tip.</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>This is a warning.</p></div><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>This is a dangerous warning.</p></div><details class="details custom-block"><summary>Details</summary><p>This is a details block.</p></details><h2 id="more" tabindex="-1">More <a class="header-anchor" href="#more" aria-label="Permalink to "More"" target="_self"></a></h2><p>Check out the documentation for the <a href="https://vitepress.dev/guide/markdown" target="_self">full list of markdown extensions</a>.</p>`,19)]))}const c=a(e,[["render",l]]);export{E as __pageData,c as default};
|
1
docs/.vitepress/dist/hashmap.json
vendored
Normal file
1
docs/.vitepress/dist/hashmap.json
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"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"}
|
25
docs/.vitepress/dist/index.html
vendored
Normal file
25
docs/.vitepress/dist/index.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
docs/.vitepress/dist/issues/101.html
vendored
Normal file
26
docs/.vitepress/dist/issues/101.html
vendored
Normal file
File diff suppressed because one or more lines are too long
213
docs/.vitepress/dist/issues/105.html
vendored
Normal file
213
docs/.vitepress/dist/issues/105.html
vendored
Normal file
File diff suppressed because one or more lines are too long
77
docs/.vitepress/dist/issues/182.html
vendored
Normal file
77
docs/.vitepress/dist/issues/182.html
vendored
Normal file
File diff suppressed because one or more lines are too long
74
docs/.vitepress/dist/issues/19.html
vendored
Normal file
74
docs/.vitepress/dist/issues/19.html
vendored
Normal file
File diff suppressed because one or more lines are too long
26
docs/.vitepress/dist/issues/210.html
vendored
Normal file
26
docs/.vitepress/dist/issues/210.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/issues/211.html
vendored
Normal file
25
docs/.vitepress/dist/issues/211.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/issues/212.html
vendored
Normal file
25
docs/.vitepress/dist/issues/212.html
vendored
Normal file
File diff suppressed because one or more lines are too long
371
docs/.vitepress/dist/issues/269.html
vendored
Normal file
371
docs/.vitepress/dist/issues/269.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/issues/285.html
vendored
Normal file
25
docs/.vitepress/dist/issues/285.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/issues/294.html
vendored
Normal file
25
docs/.vitepress/dist/issues/294.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/issues/297.html
vendored
Normal file
25
docs/.vitepress/dist/issues/297.html
vendored
Normal file
File diff suppressed because one or more lines are too long
53
docs/.vitepress/dist/issues/78.html
vendored
Normal file
53
docs/.vitepress/dist/issues/78.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/issues/88.html
vendored
Normal file
25
docs/.vitepress/dist/issues/88.html
vendored
Normal file
File diff suppressed because one or more lines are too long
62
docs/.vitepress/dist/issues/94.html
vendored
Normal file
62
docs/.vitepress/dist/issues/94.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/issues/96.html
vendored
Normal file
25
docs/.vitepress/dist/issues/96.html
vendored
Normal file
File diff suppressed because one or more lines are too long
97
docs/.vitepress/dist/issues/99.html
vendored
Normal file
97
docs/.vitepress/dist/issues/99.html
vendored
Normal file
File diff suppressed because one or more lines are too long
89
docs/.vitepress/dist/issues/index.html
vendored
Normal file
89
docs/.vitepress/dist/issues/index.html
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/sitemap.xml
vendored
Normal file
1
docs/.vitepress/dist/sitemap.xml
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://docs.x.hanxi.cc/</loc></url><url><loc>https://docs.x.hanxi.cc/issues/101.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/105.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/182.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/19.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/210.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/211.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/212.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/269.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/285.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/294.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/297.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/78.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/88.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/94.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/96.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/99.html</loc></url><url><loc>https://docs.x.hanxi.cc/issues/</loc></url><url><loc>https://docs.x.hanxi.cc/test1/api-examples.html</loc></url><url><loc>https://docs.x.hanxi.cc/test1/</loc></url><url><loc>https://docs.x.hanxi.cc/test1/markdown-examples.html</loc></url></urlset>
|
3095
docs/.vitepress/dist/test1/api-examples.html
vendored
Normal file
3095
docs/.vitepress/dist/test1/api-examples.html
vendored
Normal file
File diff suppressed because one or more lines are too long
25
docs/.vitepress/dist/test1/index.html
vendored
Normal file
25
docs/.vitepress/dist/test1/index.html
vendored
Normal file
File diff suppressed because one or more lines are too long
57
docs/.vitepress/dist/test1/markdown-examples.html
vendored
Normal file
57
docs/.vitepress/dist/test1/markdown-examples.html
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/vp-icons.css
vendored
Normal file
1
docs/.vitepress/dist/vp-icons.css
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.vpi-social-github{--icon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}
|
Loading…
Reference in New Issue
Block a user