371 lines
166 KiB
HTML
371 lines
166 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US" dir="ltr">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
<title>如何添加 网易云音乐playlist | XiaoMusic</title>
|
||
<meta name="description" content="XiaoMusic doc">
|
||
<meta name="generator" content="VitePress v1.5.0">
|
||
<link rel="preload stylesheet" href="/assets/style.DKcHOilP.css" as="style">
|
||
<link rel="preload stylesheet" href="/vp-icons.css" as="style">
|
||
|
||
<script type="module" src="/assets/app.BW3PQTBv.js"></script>
|
||
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
|
||
<link rel="modulepreload" href="/assets/chunks/theme.CHcreDy7.js">
|
||
<link rel="modulepreload" href="/assets/chunks/framework.p2VkXzrt.js">
|
||
<link rel="modulepreload" href="/assets/issues_269.md.CwdSqsHN.lean.js">
|
||
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
||
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
||
</head>
|
||
<body>
|
||
<div id="app"><div class="Layout" data-v-d8b57b2d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-d8b57b2d data-v-7ad780c2><div class="VPNavBar" data-v-7ad780c2 data-v-9fd4d1dd><div class="wrapper" data-v-9fd4d1dd><div class="container" data-v-9fd4d1dd><div class="title" data-v-9fd4d1dd><div class="VPNavBarTitle has-sidebar" data-v-9fd4d1dd data-v-9f43907a><a class="title" href="/" data-v-9f43907a><!--[--><!--]--><!----><span data-v-9f43907a>XiaoMusic</span><!--[--><!--]--></a></div></div><div class="content" data-v-9fd4d1dd><div class="content-body" data-v-9fd4d1dd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-9fd4d1dd><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-9fd4d1dd data-v-afb2845e><span id="main-nav-aria-label" class="visually-hidden" data-v-afb2845e> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/markdown-examples.html" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>Examples</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-9fd4d1dd data-v-3f90c1a5><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-3f90c1a5 data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-9fd4d1dd data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/hanxi/xiaomusic" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-9fd4d1dd data-v-f953d92f data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-bfe7971f><span class="vpi-more-horizontal icon" data-v-bfe7971f></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><!----><!--[--><!--[--><!----><div class="group" data-v-f953d92f><div class="item appearance" data-v-f953d92f><p class="label" data-v-f953d92f>Appearance</p><div class="appearance-action" data-v-f953d92f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f953d92f data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div></div></div><div class="group" data-v-f953d92f><div class="item social-links" data-v-f953d92f><div class="VPSocialLinks social-links-list" data-v-f953d92f data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/hanxi/xiaomusic" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-9fd4d1dd data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><div class="divider" data-v-9fd4d1dd><div class="divider-line" data-v-9fd4d1dd></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-d8b57b2d data-v-2488c25a><div class="container" data-v-2488c25a><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-2488c25a><span class="vpi-align-left menu-icon" data-v-2488c25a></span><span class="menu-text" data-v-2488c25a>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-2488c25a data-v-883964e0><button data-v-883964e0>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-d8b57b2d data-v-42c4c606><div class="curtain" data-v-42c4c606></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-42c4c606><span class="visually-hidden" id="sidebar-aria-label" data-v-42c4c606> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-51288d80><section class="VPSidebarItem level-0 has-active" data-v-51288d80 data-v-edd2eed8><!----><div class="items" data-v-edd2eed8><!--[--><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/101.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>群晖docker安装 xiaomusic</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/105.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>【插件】自定义口令功能</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/182.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>定时任务配置格式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/19.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>如何修改默认的8090端口</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/210.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>yt-dlp cookies 文件上传功能</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/211.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>📝 文档汇总</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/212.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>如何批量下载歌曲</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/269.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>如何添加 网易云音乐playlist</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/285.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>相关工具推荐</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/294.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>关于M01型号的注意事项</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/297.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>xiaomusic极空间安装教程(2024-12-4更新)</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/78.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>已支持配置自定义网络歌单,在这里分享你的歌单</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/88.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>如何添加m3u格式文件的电台</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/94.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>采用config.json配置方式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/96.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>ios系统上的捷径配置</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/99.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>💬 FAQ问题集合</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-edd2eed8 data-v-edd2eed8><div class="item" data-v-edd2eed8><div class="indicator" data-v-edd2eed8></div><a class="VPLink link link" href="/issues/index.html" data-v-edd2eed8><!--[--><p class="text" data-v-edd2eed8>XiaoMusic: 无限听歌,解放小爱音箱</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-d8b57b2d data-v-9a6c75ad><div class="VPDoc has-sidebar has-aside" data-v-9a6c75ad data-v-e6f2a212><!--[--><!--]--><div class="container" data-v-e6f2a212><div class="aside" data-v-e6f2a212><div class="aside-curtain" data-v-e6f2a212></div><div class="aside-container" data-v-e6f2a212><div class="aside-content" data-v-e6f2a212><div class="VPDocAside" data-v-e6f2a212 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-cb998dce data-v-f610f197><div class="content" data-v-f610f197><div class="outline-marker" data-v-f610f197></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-f610f197>On this page</div><ul class="VPDocOutlineItem root" data-v-f610f197 data-v-53c99d69><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-e6f2a212><div class="content-container" data-v-e6f2a212><!--[--><!--]--><main class="main" data-v-e6f2a212><div style="position:relative;" class="vp-doc _issues_269" data-v-e6f2a212><div><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></div></div></main><footer class="VPDocFooter" data-v-e6f2a212 data-v-1bcd8184><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-1bcd8184><span class="visually-hidden" id="doc-footer-aria-label" data-v-1bcd8184>Pager</span><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link prev" href="/issues/212.html" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>Previous page</span><span class="title" data-v-1bcd8184>如何批量下载歌曲</span><!--]--></a></div><div class="pager" data-v-1bcd8184><a class="VPLink link pager-link next" href="/issues/285.html" data-v-1bcd8184><!--[--><span class="desc" data-v-1bcd8184>Next page</span><span class="title" data-v-1bcd8184>相关工具推荐</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
|
||
<script>window.__VP_HASH_MAP__=JSON.parse("{\"index.md\":\"ByDiiWcV\",\"issues_101.md\":\"DBQG9jJP\",\"issues_105.md\":\"8_yuCS-D\",\"issues_182.md\":\"CpqPtztd\",\"issues_19.md\":\"DB81ml38\",\"issues_210.md\":\"C4LG69AC\",\"issues_211.md\":\"DUZAr3Vg\",\"issues_212.md\":\"j95HTJwO\",\"issues_269.md\":\"CwdSqsHN\",\"issues_285.md\":\"0b7MF6MA\",\"issues_294.md\":\"CrOAwh-t\",\"issues_297.md\":\"CtkkBK4R\",\"issues_78.md\":\"CH6fxnfx\",\"issues_88.md\":\"VOyx9x2b\",\"issues_94.md\":\"GErTTh9P\",\"issues_96.md\":\"D6uW10Mi\",\"issues_99.md\":\"amwtZpFn\",\"issues_index.md\":\"Do1eTGGf\",\"test1_api-examples.md\":\"LfndiNnB\",\"test1_index.md\":\"Bma_WtEx\",\"test1_markdown-examples.md\":\"D-SZaDZl\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"XiaoMusic\",\"description\":\"XiaoMusic doc\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Examples\",\"link\":\"/markdown-examples\"}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/hanxi/xiaomusic\"}],\"sidebar\":{\"/issues/\":[{\"items\":[{\"text\":\"群晖docker安装 xiaomusic\",\"link\":\"/issues/101.html\"},{\"text\":\"【插件】自定义口令功能\",\"link\":\"/issues/105.html\"},{\"text\":\"定时任务配置格式\",\"link\":\"/issues/182.html\"},{\"text\":\"如何修改默认的8090端口\",\"link\":\"/issues/19.html\"},{\"text\":\"yt-dlp cookies 文件上传功能\",\"link\":\"/issues/210.html\"},{\"text\":\"📝 文档汇总\",\"link\":\"/issues/211.html\"},{\"text\":\"如何批量下载歌曲\",\"link\":\"/issues/212.html\"},{\"text\":\"如何添加 网易云音乐playlist\",\"link\":\"/issues/269.html\"},{\"text\":\"相关工具推荐\",\"link\":\"/issues/285.html\"},{\"text\":\"关于M01型号的注意事项\",\"link\":\"/issues/294.html\"},{\"text\":\"xiaomusic极空间安装教程(2024-12-4更新)\",\"link\":\"/issues/297.html\"},{\"text\":\"已支持配置自定义网络歌单,在这里分享你的歌单\",\"link\":\"/issues/78.html\"},{\"text\":\"如何添加m3u格式文件的电台\",\"link\":\"/issues/88.html\"},{\"text\":\"采用config.json配置方式\",\"link\":\"/issues/94.html\"},{\"text\":\"ios系统上的捷径配置\",\"link\":\"/issues/96.html\"},{\"text\":\"💬 FAQ问题集合\",\"link\":\"/issues/99.html\"},{\"text\":\"XiaoMusic: 无限听歌,解放小爱音箱\",\"link\":\"/issues/index.html\"}]}],\"/node_modules/\":[{\"items\":[{\"text\":\"@algolia\",\"items\":[{\"text\":\"autocomplete-core\",\"items\":[{\"text\":\"@algolia/autocomplete-core\",\"link\":\"/node_modules/@algolia/autocomplete-core/README.html\"}],\"collapsed\":true},{\"text\":\"autocomplete-plugin-algolia-insights\",\"items\":[{\"text\":\"@algolia/autocomplete-plugin-algolia-insights\",\"link\":\"/node_modules/@algolia/autocomplete-plugin-algolia-insights/README.html\"}],\"collapsed\":true},{\"text\":\"autocomplete-preset-algolia\",\"items\":[{\"text\":\"@algolia/autocomplete-preset-algolia\",\"link\":\"/node_modules/@algolia/autocomplete-preset-algolia/README.html\"}],\"collapsed\":true},{\"text\":\"client-abtesting\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-abtesting/README.html\"}],\"collapsed\":true},{\"text\":\"client-analytics\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-analytics/README.html\"}],\"collapsed\":true},{\"text\":\"client-insights\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-insights/README.html\"}],\"collapsed\":true},{\"text\":\"client-personalization\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-personalization/README.html\"}],\"collapsed\":true},{\"text\":\"client-query-suggestions\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-query-suggestions/README.html\"}],\"collapsed\":true},{\"text\":\"client-search\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/client-search/README.html\"}],\"collapsed\":true},{\"text\":\"ingestion\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/ingestion/README.html\"}],\"collapsed\":true},{\"text\":\"monitoring\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/monitoring/README.html\"}],\"collapsed\":true},{\"text\":\"recommend\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@algolia/recommend/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@babel\",\"items\":[{\"text\":\"helper-string-parser\",\"items\":[{\"text\":\"@babel/helper-string-parser\",\"link\":\"/node_modules/@babel/helper-string-parser/README.html\"}],\"collapsed\":true},{\"text\":\"helper-validator-identifier\",\"items\":[{\"text\":\"@babel/helper-validator-identifier\",\"link\":\"/node_modules/@babel/helper-validator-identifier/README.html\"}],\"collapsed\":true},{\"text\":\"parser\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/@babel/parser/CHANGELOG.html\"},{\"text\":\"@babel/parser\",\"link\":\"/node_modules/@babel/parser/README.html\"}],\"collapsed\":true},{\"text\":\"types\",\"items\":[{\"text\":\"@babel/types\",\"link\":\"/node_modules/@babel/types/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@docsearch\",\"items\":[{\"text\":\"css\",\"items\":[{\"text\":\"@docsearch/css\",\"link\":\"/node_modules/@docsearch/css/README.html\"}],\"collapsed\":true},{\"text\":\"js\",\"items\":[{\"text\":\"@docsearch/js\",\"link\":\"/node_modules/@docsearch/js/README.html\"}],\"collapsed\":true},{\"text\":\"react\",\"items\":[{\"text\":\"@docsearch/react\",\"link\":\"/node_modules/@docsearch/react/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@esbuild\",\"items\":[{\"text\":\"linux-x64\",\"items\":[{\"text\":\"esbuild\",\"link\":\"/node_modules/@esbuild/linux-x64/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@eslint\",\"items\":[{\"text\":\"eslintrc\",\"items\":[{\"text\":\"ESLintRC Library\",\"link\":\"/node_modules/@eslint/eslintrc/README.html\"}],\"collapsed\":true},{\"text\":\"js\",\"items\":[{\"text\":\"ESLint JavaScript Plugin\",\"link\":\"/node_modules/@eslint/js/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@eslint-community\",\"items\":[{\"text\":\"eslint-utils\",\"items\":[{\"text\":\"@eslint-community/eslint-utils\",\"link\":\"/node_modules/@eslint-community/eslint-utils/README.html\"}],\"collapsed\":true},{\"text\":\"regexpp\",\"items\":[{\"text\":\"@eslint-community/regexpp\",\"link\":\"/node_modules/@eslint-community/regexpp/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@humanwhocodes\",\"items\":[{\"text\":\"config-array\",\"items\":[{\"text\":\"Config Array\",\"link\":\"/node_modules/@humanwhocodes/config-array/README.html\"}],\"collapsed\":true},{\"text\":\"module-importer\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/@humanwhocodes/module-importer/CHANGELOG.html\"},{\"text\":\"ModuleImporter\",\"link\":\"/node_modules/@humanwhocodes/module-importer/README.html\"}],\"collapsed\":true},{\"text\":\"object-schema\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/@humanwhocodes/object-schema/CHANGELOG.html\"},{\"text\":\"JavaScript ObjectSchema Package\",\"link\":\"/node_modules/@humanwhocodes/object-schema/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@iconify\",\"items\":[{\"text\":\"types\",\"items\":[{\"text\":\"Iconify Types\",\"link\":\"/node_modules/@iconify/types/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@iconify-json\",\"items\":[{\"text\":\"simple-icons\",\"items\":[{\"text\":\"Simple Icons\",\"link\":\"/node_modules/@iconify-json/simple-icons/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@jridgewell\",\"items\":[{\"text\":\"sourcemap-codec\",\"items\":[{\"text\":\"@jridgewell/sourcemap-codec\",\"link\":\"/node_modules/@jridgewell/sourcemap-codec/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@nodelib\",\"items\":[{\"text\":\"fs.scandir\",\"items\":[{\"text\":\"@nodelib/fs.scandir\",\"link\":\"/node_modules/@nodelib/fs.scandir/README.html\"}],\"collapsed\":true},{\"text\":\"fs.stat\",\"items\":[{\"text\":\"@nodelib/fs.stat\",\"link\":\"/node_modules/@nodelib/fs.stat/README.html\"}],\"collapsed\":true},{\"text\":\"fs.walk\",\"items\":[{\"text\":\"@nodelib/fs.walk\",\"link\":\"/node_modules/@nodelib/fs.walk/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@rollup\",\"items\":[{\"text\":\"rollup-linux-x64-gnu\",\"items\":[{\"text\":\"`@rollup/rollup-linux-x64-gnu`\",\"link\":\"/node_modules/@rollup/rollup-linux-x64-gnu/README.html\"}],\"collapsed\":true},{\"text\":\"rollup-linux-x64-musl\",\"items\":[{\"text\":\"`@rollup/rollup-linux-x64-musl`\",\"link\":\"/node_modules/@rollup/rollup-linux-x64-musl/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@shikijs\",\"items\":[{\"text\":\"core\",\"items\":[{\"text\":\"@shikijs/core\",\"link\":\"/node_modules/@shikijs/core/README.html\"}],\"collapsed\":true},{\"text\":\"engine-javascript\",\"items\":[{\"text\":\"@shikijs/engine-javascript\",\"link\":\"/node_modules/@shikijs/engine-javascript/README.html\"}],\"collapsed\":true},{\"text\":\"engine-oniguruma\",\"items\":[{\"text\":\"@shikijs/engine-oniguruma\",\"link\":\"/node_modules/@shikijs/engine-oniguruma/README.html\"}],\"collapsed\":true},{\"text\":\"transformers\",\"items\":[{\"text\":\"@shikijs/transformers\",\"link\":\"/node_modules/@shikijs/transformers/README.html\"}],\"collapsed\":true},{\"text\":\"types\",\"items\":[{\"text\":\"@shikijs/types\",\"link\":\"/node_modules/@shikijs/types/README.html\"}],\"collapsed\":true},{\"text\":\"vscode-textmate\",\"items\":[{\"text\":\"LICENSE\",\"link\":\"/node_modules/@shikijs/vscode-textmate/LICENSE.html\"},{\"text\":\"README\",\"link\":\"/node_modules/@shikijs/vscode-textmate/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@types\",\"items\":[{\"text\":\"estree\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/estree/README.html\"}],\"collapsed\":true},{\"text\":\"hast\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/hast/README.html\"}],\"collapsed\":true},{\"text\":\"linkify-it\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/linkify-it/README.html\"}],\"collapsed\":true},{\"text\":\"markdown-it\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/markdown-it/README.html\"}],\"collapsed\":true},{\"text\":\"mdast\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/mdast/README.html\"}],\"collapsed\":true},{\"text\":\"mdurl\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/mdurl/README.html\"}],\"collapsed\":true},{\"text\":\"unist\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/unist/README.html\"}],\"collapsed\":true},{\"text\":\"web-bluetooth\",\"items\":[{\"text\":\"Installation\",\"link\":\"/node_modules/@types/web-bluetooth/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@typescript-eslint\",\"items\":[{\"text\":\"parser\",\"items\":[{\"text\":\"`@typescript-eslint/parser`\",\"link\":\"/node_modules/@typescript-eslint/parser/README.html\"}],\"collapsed\":true},{\"text\":\"scope-manager\",\"items\":[{\"text\":\"`@typescript-eslint/scope-manager`\",\"link\":\"/node_modules/@typescript-eslint/scope-manager/README.html\"}],\"collapsed\":true},{\"text\":\"types\",\"items\":[{\"text\":\"`@typescript-eslint/types`\",\"link\":\"/node_modules/@typescript-eslint/types/README.html\"}],\"collapsed\":true},{\"text\":\"typescript-estree\",\"items\":[{\"text\":\"`@typescript-eslint/typescript-estree`\",\"link\":\"/node_modules/@typescript-eslint/typescript-estree/README.html\"}],\"collapsed\":true},{\"text\":\"visitor-keys\",\"items\":[{\"text\":\"`@typescript-eslint/visitor-keys`\",\"link\":\"/node_modules/@typescript-eslint/visitor-keys/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@ungap\",\"items\":[{\"text\":\"structured-clone\",\"items\":[{\"text\":\"structuredClone polyfill\",\"link\":\"/node_modules/@ungap/structured-clone/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@vitejs\",\"items\":[{\"text\":\"plugin-vue\",\"items\":[{\"text\":\"@vitejs/plugin-vue [](https://npmjs.com/package/@vitejs/plugin-vue)\",\"link\":\"/node_modules/@vitejs/plugin-vue/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@vue\",\"items\":[{\"text\":\"compiler-core\",\"items\":[{\"text\":\"@vue/compiler-core\",\"link\":\"/node_modules/@vue/compiler-core/README.html\"}],\"collapsed\":true},{\"text\":\"compiler-dom\",\"items\":[{\"text\":\"@vue/compiler-dom\",\"link\":\"/node_modules/@vue/compiler-dom/README.html\"}],\"collapsed\":true},{\"text\":\"compiler-sfc\",\"items\":[{\"text\":\"@vue/compiler-sfc\",\"link\":\"/node_modules/@vue/compiler-sfc/README.html\"}],\"collapsed\":true},{\"text\":\"compiler-ssr\",\"items\":[{\"text\":\"@vue/compiler-ssr\",\"link\":\"/node_modules/@vue/compiler-ssr/README.html\"}],\"collapsed\":true},{\"text\":\"devtools-api\",\"items\":[{\"text\":\"@vue/devtools-api\",\"link\":\"/node_modules/@vue/devtools-api/README.html\"}],\"collapsed\":true},{\"text\":\"devtools-kit\",\"items\":[{\"text\":\"@vue/devtools-kit\",\"link\":\"/node_modules/@vue/devtools-kit/README.html\"}],\"collapsed\":true},{\"text\":\"devtools-shared\",\"items\":[{\"text\":\"@vue/devtools-shared\",\"link\":\"/node_modules/@vue/devtools-shared/README.html\"}],\"collapsed\":true},{\"text\":\"reactivity\",\"items\":[{\"text\":\"@vue/reactivity\",\"link\":\"/node_modules/@vue/reactivity/README.html\"}],\"collapsed\":true},{\"text\":\"runtime-core\",\"items\":[{\"text\":\"@vue/runtime-core\",\"link\":\"/node_modules/@vue/runtime-core/README.html\"}],\"collapsed\":true},{\"text\":\"runtime-dom\",\"items\":[{\"text\":\"@vue/runtime-dom\",\"link\":\"/node_modules/@vue/runtime-dom/README.html\"}],\"collapsed\":true},{\"text\":\"server-renderer\",\"items\":[{\"text\":\"@vue/server-renderer\",\"link\":\"/node_modules/@vue/server-renderer/README.html\"}],\"collapsed\":true},{\"text\":\"shared\",\"items\":[{\"text\":\"@vue/shared\",\"link\":\"/node_modules/@vue/shared/README.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"@vueuse\",\"items\":[{\"text\":\"core\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/@vueuse/core/README.html\"},{\"text\":\"node_modules\",\"items\":[{\"text\":\"vue-demi\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@vueuse/core/node_modules/vue-demi/README.html\"}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"integrations\",\"items\":[{\"text\":\"@vueuse/integrations\",\"link\":\"/node_modules/@vueuse/integrations/README.html\"},{\"text\":\"node_modules\",\"items\":[{\"text\":\"vue-demi\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@vueuse/integrations/node_modules/vue-demi/README.html\"}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"shared\",\"items\":[{\"text\":\"node_modules\",\"items\":[{\"text\":\"vue-demi\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/@vueuse/shared/node_modules/vue-demi/README.html\"}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"acorn\",\"items\":[{\"text\":\"CHANGELOG\",\"link\":\"/node_modules/acorn/CHANGELOG.html\"},{\"text\":\"Acorn\",\"link\":\"/node_modules/acorn/README.html\"}],\"collapsed\":true},{\"text\":\"acorn-jsx\",\"items\":[{\"text\":\"Acorn-JSX\",\"link\":\"/node_modules/acorn-jsx/README.html\"}],\"collapsed\":true},{\"text\":\"ajv\",\"items\":[{\"text\":\"Ajv: Another JSON Schema Validator\",\"link\":\"/node_modules/ajv/README.html\"},{\"text\":\"lib\",\"items\":[{\"text\":\"dotjs\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/ajv/lib/dotjs/README.html\"}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"algoliasearch\",\"items\":[{\"text\":\"or\",\"link\":\"/node_modules/algoliasearch/README.html\"}],\"collapsed\":true},{\"text\":\"ansi-regex\",\"items\":[{\"text\":\"ansi-regex\",\"link\":\"/node_modules/ansi-regex/readme.html\"}],\"collapsed\":true},{\"text\":\"ansi-styles\",\"items\":[{\"text\":\"ansi-styles [](https://travis-ci.org/chalk/ansi-styles)\",\"link\":\"/node_modules/ansi-styles/readme.html\"}],\"collapsed\":true},{\"text\":\"argparse\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/argparse/CHANGELOG.html\"},{\"text\":\"README\",\"link\":\"/node_modules/argparse/README.html\"}],\"collapsed\":true},{\"text\":\"array-union\",\"items\":[{\"text\":\"array-union [](https://travis-ci.org/sindresorhus/array-union)\",\"link\":\"/node_modules/array-union/readme.html\"}],\"collapsed\":true},{\"text\":\"asynckit\",\"items\":[{\"text\":\"asynckit [](https://www.npmjs.com/package/asynckit)\",\"link\":\"/node_modules/asynckit/README.html\"}],\"collapsed\":true},{\"text\":\"axios\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/axios/CHANGELOG.html\"},{\"text\":\"Migration Guide\",\"link\":\"/node_modules/axios/MIGRATION_GUIDE.html\"},{\"text\":\"README\",\"link\":\"/node_modules/axios/README.html\"},{\"text\":\"Reporting a Vulnerability\",\"link\":\"/node_modules/axios/SECURITY.html\"},{\"text\":\"lib\",\"items\":[{\"text\":\"adapters\",\"items\":[{\"text\":\"axios // adapters\",\"link\":\"/node_modules/axios/lib/adapters/README.html\"}],\"collapsed\":true},{\"text\":\"core\",\"items\":[{\"text\":\"axios // core\",\"link\":\"/node_modules/axios/lib/core/README.html\"}],\"collapsed\":true},{\"text\":\"env\",\"items\":[{\"text\":\"axios // env\",\"link\":\"/node_modules/axios/lib/env/README.html\"}],\"collapsed\":true},{\"text\":\"helpers\",\"items\":[{\"text\":\"axios // helpers\",\"link\":\"/node_modules/axios/lib/helpers/README.html\"}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"balanced-match\",\"items\":[{\"text\":\"LICENSE\",\"link\":\"/node_modules/balanced-match/LICENSE.html\"},{\"text\":\"balanced-match\",\"link\":\"/node_modules/balanced-match/README.html\"}],\"collapsed\":true},{\"text\":\"birpc\",\"items\":[{\"text\":\"birpc\",\"link\":\"/node_modules/birpc/README.html\"}],\"collapsed\":true},{\"text\":\"brace-expansion\",\"items\":[{\"text\":\"brace-expansion\",\"link\":\"/node_modules/brace-expansion/README.html\"}],\"collapsed\":true},{\"text\":\"braces\",\"items\":[{\"text\":\"braces [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [](https://www.npmjs.com/package/braces) [](https://npmjs.org/package/braces) [](https://npmjs.org/package/braces) [](https://travis-ci.org/micromatch/braces)\",\"link\":\"/node_modules/braces/README.html\"}],\"collapsed\":true},{\"text\":\"callsites\",\"items\":[{\"text\":\"callsites [](https://travis-ci.org/sindresorhus/callsites)\",\"link\":\"/node_modules/callsites/readme.html\"}],\"collapsed\":true},{\"text\":\"ccount\",\"items\":[{\"text\":\"ccount\",\"link\":\"/node_modules/ccount/readme.html\"}],\"collapsed\":true},{\"text\":\"chalk\",\"items\":[{\"text\":\"readme\",\"link\":\"/node_modules/chalk/readme.html\"}],\"collapsed\":true},{\"text\":\"character-entities-html4\",\"items\":[{\"text\":\"character-entities-html4\",\"link\":\"/node_modules/character-entities-html4/readme.html\"}],\"collapsed\":true},{\"text\":\"character-entities-legacy\",\"items\":[{\"text\":\"character-entities-legacy\",\"link\":\"/node_modules/character-entities-legacy/readme.html\"}],\"collapsed\":true},{\"text\":\"color-convert\",\"items\":[{\"text\":\"1.0.0 - 2016-01-07\",\"link\":\"/node_modules/color-convert/CHANGELOG.html\"},{\"text\":\"color-convert\",\"link\":\"/node_modules/color-convert/README.html\"}],\"collapsed\":true},{\"text\":\"color-name\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/color-name/README.html\"}],\"collapsed\":true},{\"text\":\"combined-stream\",\"items\":[{\"text\":\"combined-stream\",\"link\":\"/node_modules/combined-stream/Readme.html\"}],\"collapsed\":true},{\"text\":\"comma-separated-tokens\",\"items\":[{\"text\":\"comma-separated-tokens\",\"link\":\"/node_modules/comma-separated-tokens/readme.html\"}],\"collapsed\":true},{\"text\":\"copy-anything\",\"items\":[{\"text\":\"Copy anything 🎭\",\"link\":\"/node_modules/copy-anything/README.html\"}],\"collapsed\":true},{\"text\":\"cross-spawn\",\"items\":[{\"text\":\"cross-spawn\",\"link\":\"/node_modules/cross-spawn/README.html\"}],\"collapsed\":true},{\"text\":\"csstype\",\"items\":[{\"text\":\"CSSType\",\"link\":\"/node_modules/csstype/README.html\"}],\"collapsed\":true},{\"text\":\"debug\",\"items\":[{\"text\":\"debug\",\"link\":\"/node_modules/debug/README.html\"}],\"collapsed\":true},{\"text\":\"delayed-stream\",\"items\":[{\"text\":\"delayed-stream\",\"link\":\"/node_modules/delayed-stream/Readme.html\"}],\"collapsed\":true},{\"text\":\"dequal\",\"items\":[{\"text\":\"dequal [](https://github.com/lukeed/dequal/actions)\",\"link\":\"/node_modules/dequal/readme.html\"}],\"collapsed\":true},{\"text\":\"devlop\",\"items\":[{\"text\":\"devlop\",\"link\":\"/node_modules/devlop/readme.html\"}],\"collapsed\":true},{\"text\":\"dir-glob\",\"items\":[{\"text\":\"dir-glob [](https://travis-ci.org/kevva/dir-glob)\",\"link\":\"/node_modules/dir-glob/readme.html\"}],\"collapsed\":true},{\"text\":\"doctrine\",\"items\":[{\"text\":\"CHANGELOG\",\"link\":\"/node_modules/doctrine/CHANGELOG.html\"},{\"text\":\"Doctrine\",\"link\":\"/node_modules/doctrine/README.html\"}],\"collapsed\":true},{\"text\":\"emoji-regex-xs\",\"items\":[{\"text\":\"emoji-regex-xs\",\"link\":\"/node_modules/emoji-regex-xs/README.html\"}],\"collapsed\":true},{\"text\":\"entities\",\"items\":[{\"text\":\"entities [](https://npmjs.org/package/entities) [](https://npmjs.org/package/entities) [](https://github.com/fb55/entities/actions/workflows/nodejs-test.yml)\",\"link\":\"/node_modules/entities/readme.html\"}],\"collapsed\":true},{\"text\":\"esbuild\",\"items\":[{\"text\":\"LICENSE\",\"link\":\"/node_modules/esbuild/LICENSE.html\"},{\"text\":\"esbuild\",\"link\":\"/node_modules/esbuild/README.html\"}],\"collapsed\":true},{\"text\":\"escape-string-regexp\",\"items\":[{\"text\":\"escape-string-regexp [](https://travis-ci.org/sindresorhus/escape-string-regexp)\",\"link\":\"/node_modules/escape-string-regexp/readme.html\"}],\"collapsed\":true},{\"text\":\"eslint\",\"items\":[{\"text\":\"ESLint\",\"link\":\"/node_modules/eslint/README.html\"}],\"collapsed\":true},{\"text\":\"eslint-scope\",\"items\":[{\"text\":\"ESLint Scope\",\"link\":\"/node_modules/eslint-scope/README.html\"}],\"collapsed\":true},{\"text\":\"eslint-visitor-keys\",\"items\":[{\"text\":\"eslint-visitor-keys\",\"link\":\"/node_modules/eslint-visitor-keys/README.html\"}],\"collapsed\":true},{\"text\":\"espree\",\"items\":[{\"text\":\"Espree\",\"link\":\"/node_modules/espree/README.html\"}],\"collapsed\":true},{\"text\":\"esprima\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/esprima/README.html\"}],\"collapsed\":true},{\"text\":\"esquery\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/esquery/README.html\"}],\"collapsed\":true},{\"text\":\"esrecurse\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/esrecurse/README.html\"}],\"collapsed\":true},{\"text\":\"estraverse\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/estraverse/README.html\"}],\"collapsed\":true},{\"text\":\"estree-walker\",\"items\":[{\"text\":\"changelog\",\"link\":\"/node_modules/estree-walker/CHANGELOG.html\"},{\"text\":\"estree-walker\",\"link\":\"/node_modules/estree-walker/README.html\"}],\"collapsed\":true},{\"text\":\"esutils\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/esutils/README.html\"}],\"collapsed\":true},{\"text\":\"fast-deep-equal\",\"items\":[{\"text\":\"fast-deep-equal\",\"link\":\"/node_modules/fast-deep-equal/README.html\"}],\"collapsed\":true},{\"text\":\"fast-glob\",\"items\":[{\"text\":\"fast-glob\",\"link\":\"/node_modules/fast-glob/README.html\"},{\"text\":\"node_modules\",\"items\":[{\"text\":\"glob-parent\",\"items\":[{\"text\":\"CHANGELOG\",\"link\":\"/node_modules/fast-glob/node_modules/glob-parent/CHANGELOG.html\"},{\"text\":\"glob-parent\",\"link\":\"/node_modules/fast-glob/node_modules/glob-parent/README.html\"}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"fast-json-stable-stringify\",\"items\":[{\"text\":\"fast-json-stable-stringify\",\"link\":\"/node_modules/fast-json-stable-stringify/README.html\"}],\"collapsed\":true},{\"text\":\"fast-levenshtein\",\"items\":[{\"text\":\"LICENSE\",\"link\":\"/node_modules/fast-levenshtein/LICENSE.html\"},{\"text\":\"fast-levenshtein - Levenshtein algorithm in Javascript\",\"link\":\"/node_modules/fast-levenshtein/README.html\"}],\"collapsed\":true},{\"text\":\"fastq\",\"items\":[{\"text\":\"fastq\",\"link\":\"/node_modules/fastq/README.html\"}],\"collapsed\":true},{\"text\":\"file-entry-cache\",\"items\":[{\"text\":\"file-entry-cache\",\"link\":\"/node_modules/file-entry-cache/README.html\"},{\"text\":\"file-entry-cache - Changelog\",\"link\":\"/node_modules/file-entry-cache/changelog.html\"}],\"collapsed\":true},{\"text\":\"fill-range\",\"items\":[{\"text\":\"fill-range [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [](https://www.npmjs.com/package/fill-range) [](https://npmjs.org/package/fill-range) [](https://npmjs.org/package/fill-range) [](https://travis-ci.org/jonschlinkert/fill-range)\",\"link\":\"/node_modules/fill-range/README.html\"}],\"collapsed\":true},{\"text\":\"find-up\",\"items\":[{\"text\":\"find-up [](https://travis-ci.com/github/sindresorhus/find-up)\",\"link\":\"/node_modules/find-up/readme.html\"}],\"collapsed\":true},{\"text\":\"flat-cache\",\"items\":[{\"text\":\"flat-cache\",\"link\":\"/node_modules/flat-cache/README.html\"},{\"text\":\"flat-cache - Changelog\",\"link\":\"/node_modules/flat-cache/changelog.html\"}],\"collapsed\":true},{\"text\":\"flatted\",\"items\":[{\"text\":\"flatted\",\"link\":\"/node_modules/flatted/README.html\"}],\"collapsed\":true},{\"text\":\"focus-trap\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/focus-trap/CHANGELOG.html\"},{\"text\":\"focus-trap [](https://github.com/focus-trap/focus-trap/actions?query=workflow:CI+branch:master) [](./LICENSE)\",\"link\":\"/node_modules/focus-trap/README.html\"},{\"text\":\"Security Policy\",\"link\":\"/node_modules/focus-trap/SECURITY.html\"}],\"collapsed\":true},{\"text\":\"follow-redirects\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/follow-redirects/README.html\"}],\"collapsed\":true},{\"text\":\"form-data\",\"items\":[{\"text\":\"Form-Data [](https://www.npmjs.com/package/form-data) [](https://gitter.im/form-data/form-data)\",\"link\":\"/node_modules/form-data/Readme.html\"}],\"collapsed\":true},{\"text\":\"front-matter\",\"items\":[{\"text\":\"front-matter\",\"link\":\"/node_modules/front-matter/README.html\"},{\"text\":\"node_modules\",\"items\":[{\"text\":\"argparse\",\"items\":[{\"text\":\"CHANGELOG\",\"link\":\"/node_modules/front-matter/node_modules/argparse/CHANGELOG.html\"},{\"text\":\"README\",\"link\":\"/node_modules/front-matter/node_modules/argparse/README.html\"}],\"collapsed\":true},{\"text\":\"js-yaml\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/front-matter/node_modules/js-yaml/CHANGELOG.html\"},{\"text\":\"README\",\"link\":\"/node_modules/front-matter/node_modules/js-yaml/README.html\"}],\"collapsed\":true}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"fs.realpath\",\"items\":[{\"text\":\"fs.realpath\",\"link\":\"/node_modules/fs.realpath/README.html\"}],\"collapsed\":true},{\"text\":\"glob\",\"items\":[{\"text\":\"Glob\",\"link\":\"/node_modules/glob/README.html\"}],\"collapsed\":true},{\"text\":\"glob-parent\",\"items\":[{\"text\":\"glob-parent\",\"link\":\"/node_modules/glob-parent/README.html\"}],\"collapsed\":true},{\"text\":\"globals\",\"items\":[{\"text\":\"globals\",\"link\":\"/node_modules/globals/readme.html\"}],\"collapsed\":true},{\"text\":\"globby\",\"items\":[{\"text\":\"globby\",\"link\":\"/node_modules/globby/readme.html\"}],\"collapsed\":true},{\"text\":\"graphemer\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/graphemer/CHANGELOG.html\"},{\"text\":\"Graphemer: Unicode Character Splitter 🪓\",\"link\":\"/node_modules/graphemer/README.html\"}],\"collapsed\":true},{\"text\":\"has-flag\",\"items\":[{\"text\":\"has-flag [](https://travis-ci.org/sindresorhus/has-flag)\",\"link\":\"/node_modules/has-flag/readme.html\"}],\"collapsed\":true},{\"text\":\"hast-util-to-html\",\"items\":[{\"text\":\"hast-util-to-html\",\"link\":\"/node_modules/hast-util-to-html/readme.html\"}],\"collapsed\":true},{\"text\":\"hast-util-whitespace\",\"items\":[{\"text\":\"hast-util-whitespace\",\"link\":\"/node_modules/hast-util-whitespace/readme.html\"}],\"collapsed\":true},{\"text\":\"hookable\",\"items\":[{\"text\":\"LICENSE\",\"link\":\"/node_modules/hookable/LICENSE.html\"},{\"text\":\"Hookable\",\"link\":\"/node_modules/hookable/README.html\"}],\"collapsed\":true},{\"text\":\"html-void-elements\",\"items\":[{\"text\":\"html-void-elements\",\"link\":\"/node_modules/html-void-elements/readme.html\"}],\"collapsed\":true},{\"text\":\"ignore\",\"items\":[{\"text\":\"ignore\",\"link\":\"/node_modules/ignore/README.html\"}],\"collapsed\":true},{\"text\":\"import-fresh\",\"items\":[{\"text\":\"import-fresh\",\"link\":\"/node_modules/import-fresh/readme.html\"}],\"collapsed\":true},{\"text\":\"imurmurhash\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/imurmurhash/README.html\"}],\"collapsed\":true},{\"text\":\"inflight\",\"items\":[{\"text\":\"inflight\",\"link\":\"/node_modules/inflight/README.html\"}],\"collapsed\":true},{\"text\":\"inherits\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/inherits/README.html\"}],\"collapsed\":true},{\"text\":\"is-extglob\",\"items\":[{\"text\":\"is-extglob [](https://www.npmjs.com/package/is-extglob) [](https://npmjs.org/package/is-extglob) [](https://travis-ci.org/jonschlinkert/is-extglob)\",\"link\":\"/node_modules/is-extglob/README.html\"}],\"collapsed\":true},{\"text\":\"is-glob\",\"items\":[{\"text\":\"is-glob [](https://www.npmjs.com/package/is-glob) [](https://npmjs.org/package/is-glob) [](https://npmjs.org/package/is-glob) [](https://github.com/micromatch/is-glob/actions)\",\"link\":\"/node_modules/is-glob/README.html\"}],\"collapsed\":true},{\"text\":\"is-number\",\"items\":[{\"text\":\"is-number [](https://www.npmjs.com/package/is-number) [](https://npmjs.org/package/is-number) [](https://npmjs.org/package/is-number) [](https://travis-ci.org/jonschlinkert/is-number)\",\"link\":\"/node_modules/is-number/README.html\"}],\"collapsed\":true},{\"text\":\"is-path-inside\",\"items\":[{\"text\":\"is-path-inside\",\"link\":\"/node_modules/is-path-inside/readme.html\"}],\"collapsed\":true},{\"text\":\"is-what\",\"items\":[{\"text\":\"is What? 🙉\",\"link\":\"/node_modules/is-what/README.html\"}],\"collapsed\":true},{\"text\":\"isexe\",\"items\":[{\"text\":\"isexe\",\"link\":\"/node_modules/isexe/README.html\"}],\"collapsed\":true},{\"text\":\"js-yaml\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/js-yaml/CHANGELOG.html\"},{\"text\":\"README\",\"link\":\"/node_modules/js-yaml/README.html\"}],\"collapsed\":true},{\"text\":\"json-buffer\",\"items\":[{\"text\":\"json-buffer\",\"link\":\"/node_modules/json-buffer/README.html\"}],\"collapsed\":true},{\"text\":\"json-schema-traverse\",\"items\":[{\"text\":\"json-schema-traverse\",\"link\":\"/node_modules/json-schema-traverse/README.html\"}],\"collapsed\":true},{\"text\":\"keyv\",\"items\":[{\"text\":\"How to Contribute\",\"link\":\"/node_modules/keyv/README.html\"}],\"collapsed\":true},{\"text\":\"levn\",\"items\":[{\"text\":\"levn [](https://travis-ci.org/gkz/levn) <a name=\\\"levn\\\" />\",\"link\":\"/node_modules/levn/README.html\"}],\"collapsed\":true},{\"text\":\"locate-path\",\"items\":[{\"text\":\"locate-path [](https://travis-ci.com/github/sindresorhus/locate-path)\",\"link\":\"/node_modules/locate-path/readme.html\"}],\"collapsed\":true},{\"text\":\"lodash.merge\",\"items\":[{\"text\":\"lodash.merge v4.6.2\",\"link\":\"/node_modules/lodash.merge/README.html\"}],\"collapsed\":true},{\"text\":\"magic-string\",\"items\":[{\"text\":\"magic-string\",\"link\":\"/node_modules/magic-string/README.html\"}],\"collapsed\":true},{\"text\":\"mark.js\",\"items\":[{\"text\":\"Contributing to mark.js\",\"link\":\"/node_modules/mark.js/CONTRIBUTING.html\"},{\"text\":\"ISSUE_TEMPLATE\",\"link\":\"/node_modules/mark.js/ISSUE_TEMPLATE.html\"},{\"text\":\"mark.js\",\"link\":\"/node_modules/mark.js/README.html\"}],\"collapsed\":true},{\"text\":\"mdast-util-to-hast\",\"items\":[{\"text\":\"mdast-util-to-hast\",\"link\":\"/node_modules/mdast-util-to-hast/readme.html\"}],\"collapsed\":true},{\"text\":\"merge2\",\"items\":[{\"text\":\"merge2\",\"link\":\"/node_modules/merge2/README.html\"}],\"collapsed\":true},{\"text\":\"micromark-util-character\",\"items\":[{\"text\":\"micromark-util-character\",\"link\":\"/node_modules/micromark-util-character/readme.html\"}],\"collapsed\":true},{\"text\":\"micromark-util-encode\",\"items\":[{\"text\":\"micromark-util-encode\",\"link\":\"/node_modules/micromark-util-encode/readme.html\"}],\"collapsed\":true},{\"text\":\"micromark-util-sanitize-uri\",\"items\":[{\"text\":\"micromark-util-sanitize-uri\",\"link\":\"/node_modules/micromark-util-sanitize-uri/readme.html\"}],\"collapsed\":true},{\"text\":\"micromark-util-symbol\",\"items\":[{\"text\":\"micromark-util-symbol\",\"link\":\"/node_modules/micromark-util-symbol/readme.html\"}],\"collapsed\":true},{\"text\":\"micromark-util-types\",\"items\":[{\"text\":\"micromark-util-types\",\"link\":\"/node_modules/micromark-util-types/readme.html\"}],\"collapsed\":true},{\"text\":\"micromatch\",\"items\":[{\"text\":\"micromatch [](https://www.npmjs.com/package/micromatch) [](https://npmjs.org/package/micromatch) [](https://npmjs.org/package/micromatch) [](https://github.com/micromatch/micromatch/actions/workflows/test.yml)\",\"link\":\"/node_modules/micromatch/README.html\"}],\"collapsed\":true},{\"text\":\"mime-db\",\"items\":[{\"text\":\"HISTORY\",\"link\":\"/node_modules/mime-db/HISTORY.html\"},{\"text\":\"mime-db\",\"link\":\"/node_modules/mime-db/README.html\"}],\"collapsed\":true},{\"text\":\"mime-types\",\"items\":[{\"text\":\"HISTORY\",\"link\":\"/node_modules/mime-types/HISTORY.html\"},{\"text\":\"mime-types\",\"link\":\"/node_modules/mime-types/README.html\"}],\"collapsed\":true},{\"text\":\"minimatch\",\"items\":[{\"text\":\"minimatch\",\"link\":\"/node_modules/minimatch/README.html\"}],\"collapsed\":true},{\"text\":\"minisearch\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/minisearch/CHANGELOG.html\"},{\"text\":\"MiniSearch\",\"link\":\"/node_modules/minisearch/README.html\"}],\"collapsed\":true},{\"text\":\"mitt\",\"items\":[{\"text\":\"Mitt\",\"link\":\"/node_modules/mitt/README.html\"}],\"collapsed\":true},{\"text\":\"ms\",\"items\":[{\"text\":\"license\",\"link\":\"/node_modules/ms/license.html\"},{\"text\":\"ms\",\"link\":\"/node_modules/ms/readme.html\"}],\"collapsed\":true},{\"text\":\"nanoid\",\"items\":[{\"text\":\"Nano ID\",\"link\":\"/node_modules/nanoid/README.html\"}],\"collapsed\":true},{\"text\":\"natural-compare\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/natural-compare/README.html\"}],\"collapsed\":true},{\"text\":\"once\",\"items\":[{\"text\":\"once\",\"link\":\"/node_modules/once/README.html\"}],\"collapsed\":true},{\"text\":\"oniguruma-to-es\",\"items\":[{\"text\":\"Oniguruma-To-ES\",\"link\":\"/node_modules/oniguruma-to-es/README.html\"}],\"collapsed\":true},{\"text\":\"optionator\",\"items\":[{\"text\":\"0.9.0\",\"link\":\"/node_modules/optionator/CHANGELOG.html\"},{\"text\":\"Optionator\",\"link\":\"/node_modules/optionator/README.html\"}],\"collapsed\":true},{\"text\":\"p-limit\",\"items\":[{\"text\":\"p-limit\",\"link\":\"/node_modules/p-limit/readme.html\"}],\"collapsed\":true},{\"text\":\"p-locate\",\"items\":[{\"text\":\"p-locate [](https://travis-ci.com/github/sindresorhus/p-locate)\",\"link\":\"/node_modules/p-locate/readme.html\"}],\"collapsed\":true},{\"text\":\"parent-module\",\"items\":[{\"text\":\"parent-module [](https://travis-ci.org/sindresorhus/parent-module)\",\"link\":\"/node_modules/parent-module/readme.html\"}],\"collapsed\":true},{\"text\":\"path-exists\",\"items\":[{\"text\":\"path-exists [](https://travis-ci.org/sindresorhus/path-exists)\",\"link\":\"/node_modules/path-exists/readme.html\"}],\"collapsed\":true},{\"text\":\"path-is-absolute\",\"items\":[{\"text\":\"path-is-absolute [](https://travis-ci.org/sindresorhus/path-is-absolute)\",\"link\":\"/node_modules/path-is-absolute/readme.html\"}],\"collapsed\":true},{\"text\":\"path-key\",\"items\":[{\"text\":\"path-key [](https://travis-ci.org/sindresorhus/path-key)\",\"link\":\"/node_modules/path-key/readme.html\"}],\"collapsed\":true},{\"text\":\"path-type\",\"items\":[{\"text\":\"path-type [](https://travis-ci.org/sindresorhus/path-type)\",\"link\":\"/node_modules/path-type/readme.html\"}],\"collapsed\":true},{\"text\":\"perfect-debounce\",\"items\":[{\"text\":\"perfect-debounce\",\"link\":\"/node_modules/perfect-debounce/README.html\"}],\"collapsed\":true},{\"text\":\"picocolors\",\"items\":[{\"text\":\"picocolors\",\"link\":\"/node_modules/picocolors/README.html\"}],\"collapsed\":true},{\"text\":\"picomatch\",\"items\":[{\"text\":\"Release history\",\"link\":\"/node_modules/picomatch/CHANGELOG.html\"},{\"text\":\".makeRe star\",\"link\":\"/node_modules/picomatch/README.html\"}],\"collapsed\":true},{\"text\":\"postcss\",\"items\":[{\"text\":\"PostCSS\",\"link\":\"/node_modules/postcss/README.html\"}],\"collapsed\":true},{\"text\":\"preact\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/preact/README.html\"}],\"collapsed\":true},{\"text\":\"prelude-ls\",\"items\":[{\"text\":\"1.2.1\",\"link\":\"/node_modules/prelude-ls/CHANGELOG.html\"},{\"text\":\"prelude.ls [](https://travis-ci.org/gkz/prelude-ls)\",\"link\":\"/node_modules/prelude-ls/README.html\"}],\"collapsed\":true},{\"text\":\"property-information\",\"items\":[{\"text\":\"property-information\",\"link\":\"/node_modules/property-information/readme.html\"}],\"collapsed\":true},{\"text\":\"proxy-from-env\",\"items\":[{\"text\":\"proxy-from-env\",\"link\":\"/node_modules/proxy-from-env/README.html\"}],\"collapsed\":true},{\"text\":\"punycode\",\"items\":[{\"text\":\"Punycode.js [](https://www.npmjs.com/package/punycode) [](https://www.jsdelivr.com/package/npm/punycode)\",\"link\":\"/node_modules/punycode/README.html\"}],\"collapsed\":true},{\"text\":\"queue-microtask\",\"items\":[{\"text\":\"queue-microtask [![ci][ci-image]][ci-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]\",\"link\":\"/node_modules/queue-microtask/README.html\"}],\"collapsed\":true},{\"text\":\"regex\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/regex/README.html\"}],\"collapsed\":true},{\"text\":\"regex-recursion\",\"items\":[{\"text\":\"regex-recursion\",\"link\":\"/node_modules/regex-recursion/README.html\"}],\"collapsed\":true},{\"text\":\"regex-utilities\",\"items\":[{\"text\":\"regex-utilities\",\"link\":\"/node_modules/regex-utilities/README.html\"}],\"collapsed\":true},{\"text\":\"resolve-from\",\"items\":[{\"text\":\"resolve-from [](https://travis-ci.org/sindresorhus/resolve-from)\",\"link\":\"/node_modules/resolve-from/readme.html\"}],\"collapsed\":true},{\"text\":\"reusify\",\"items\":[{\"text\":\"reusify\",\"link\":\"/node_modules/reusify/README.html\"}],\"collapsed\":true},{\"text\":\"rfdc\",\"items\":[{\"text\":\"rfdc\",\"link\":\"/node_modules/rfdc/readme.html\"}],\"collapsed\":true},{\"text\":\"rimraf\",\"items\":[{\"text\":\"v3.0\",\"link\":\"/node_modules/rimraf/CHANGELOG.html\"},{\"text\":\"README\",\"link\":\"/node_modules/rimraf/README.html\"}],\"collapsed\":true},{\"text\":\"rollup\",\"items\":[{\"text\":\"Rollup core license\",\"link\":\"/node_modules/rollup/LICENSE.html\"},{\"text\":\"compile to a <script> containing a self-executing function\",\"link\":\"/node_modules/rollup/README.html\"}],\"collapsed\":true},{\"text\":\"run-parallel\",\"items\":[{\"text\":\"run-parallel [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]\",\"link\":\"/node_modules/run-parallel/README.html\"}],\"collapsed\":true},{\"text\":\"search-insights\",\"items\":[{\"text\":\"LICENSE\",\"link\":\"/node_modules/search-insights/LICENSE.html\"},{\"text\":\"Search Insights\",\"link\":\"/node_modules/search-insights/README.html\"}],\"collapsed\":true},{\"text\":\"semver\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/semver/README.html\"}],\"collapsed\":true},{\"text\":\"shebang-command\",\"items\":[{\"text\":\"shebang-command [](https://travis-ci.org/kevva/shebang-command)\",\"link\":\"/node_modules/shebang-command/readme.html\"}],\"collapsed\":true},{\"text\":\"shebang-regex\",\"items\":[{\"text\":\"shebang-regex [](https://travis-ci.org/sindresorhus/shebang-regex)\",\"link\":\"/node_modules/shebang-regex/readme.html\"}],\"collapsed\":true},{\"text\":\"shiki\",\"items\":[{\"text\":\"Shiki 式\",\"link\":\"/node_modules/shiki/README.html\"}],\"collapsed\":true},{\"text\":\"slash\",\"items\":[{\"text\":\"slash [](https://travis-ci.org/sindresorhus/slash)\",\"link\":\"/node_modules/slash/readme.html\"}],\"collapsed\":true},{\"text\":\"source-map-js\",\"items\":[{\"text\":\"Source Map JS\",\"link\":\"/node_modules/source-map-js/README.html\"}],\"collapsed\":true},{\"text\":\"space-separated-tokens\",\"items\":[{\"text\":\"space-separated-tokens\",\"link\":\"/node_modules/space-separated-tokens/readme.html\"}],\"collapsed\":true},{\"text\":\"speakingurl\",\"items\":[{\"text\":\"CHANGELOG\",\"link\":\"/node_modules/speakingurl/CHANGELOG.html\"},{\"text\":\"Add to Gemfile\",\"link\":\"/node_modules/speakingurl/README.html\"}],\"collapsed\":true},{\"text\":\"sprintf-js\",\"items\":[{\"text\":\"sprintf.js\",\"link\":\"/node_modules/sprintf-js/README.html\"}],\"collapsed\":true},{\"text\":\"stringify-entities\",\"items\":[{\"text\":\"stringify-entities\",\"link\":\"/node_modules/stringify-entities/readme.html\"}],\"collapsed\":true},{\"text\":\"strip-ansi\",\"items\":[{\"text\":\"strip-ansi [](https://travis-ci.org/chalk/strip-ansi)\",\"link\":\"/node_modules/strip-ansi/readme.html\"}],\"collapsed\":true},{\"text\":\"strip-json-comments\",\"items\":[{\"text\":\"strip-json-comments [](https://travis-ci.com/github/sindresorhus/strip-json-comments)\",\"link\":\"/node_modules/strip-json-comments/readme.html\"}],\"collapsed\":true},{\"text\":\"superjson\",\"items\":[{\"text\":\"README\",\"link\":\"/node_modules/superjson/README.html\"}],\"collapsed\":true},{\"text\":\"supports-color\",\"items\":[{\"text\":\"supports-color [](https://travis-ci.org/chalk/supports-color)\",\"link\":\"/node_modules/supports-color/readme.html\"}],\"collapsed\":true},{\"text\":\"tabbable\",\"items\":[{\"text\":\"Changelog\",\"link\":\"/node_modules/tabbable/CHANGELOG.html\"},{\"text\":\"tabbable [](https://github.com/focus-trap/tabbable/actions?query=workflow:CI+branch:master) [](https://codecov.io/gh/focus-trap/tabbable) [](./LICENSE)\",\"link\":\"/node_modules/tabbable/README.html\"},{\"text\":\"Security Policy\",\"link\":\"/node_modules/tabbable/SECURITY.html\"}],\"collapsed\":true},{\"text\":\"to-regex-range\",\"items\":[{\"text\":\"to-regex-range [](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W8YFZ425KND68) [](https://www.npmjs.com/package/to-regex-range) [](https://npmjs.org/package/to-regex-range) [](https://npmjs.org/package/to-regex-range) [](https://travis-ci.org/micromatch/to-regex-range)\",\"link\":\"/node_modules/to-regex-range/README.html\"}],\"collapsed\":true},{\"text\":\"trim-lines\",\"items\":[{\"text\":\"trim-lines\",\"link\":\"/node_modules/trim-lines/readme.html\"}],\"collapsed\":true},{\"text\":\"tslib\",\"items\":[{\"text\":\"tslib\",\"link\":\"/node_modules/tslib/README.html\"}],\"collapsed\":true},{\"text\":\"tsutils\",\"items\":[{\"text\":\"3.21.0\",\"link\":\"/node_modules/tsutils/CHANGELOG.html\"},{\"text\":\"Utility functions for working with typescript's AST\",\"link\":\"/node_modules/tsutils/README.html\"}],\"collapsed\":true},{\"text\":\"type-check\",\"items\":[{\"text\":\"type-check [](https://travis-ci.org/gkz/type-check)\",\"link\":\"/node_modules/type-check/README.html\"}],\"collapsed\":true},{\"text\":\"type-fest\",\"items\":[{\"text\":\"readme\",\"link\":\"/node_modules/type-fest/readme.html\"}],\"collapsed\":true},{\"text\":\"typescript\",\"items\":[{\"text\":\"TypeScript\",\"link\":\"/node_modules/typescript/README.html\"},{\"text\":\"SECURITY\",\"link\":\"/node_modules/typescript/SECURITY.html\"}],\"collapsed\":true},{\"text\":\"unist-util-is\",\"items\":[{\"text\":\"unist-util-is\",\"link\":\"/node_modules/unist-util-is/readme.html\"}],\"collapsed\":true},{\"text\":\"unist-util-position\",\"items\":[{\"text\":\"unist-util-position\",\"link\":\"/node_modules/unist-util-position/readme.html\"}],\"collapsed\":true},{\"text\":\"unist-util-stringify-position\",\"items\":[{\"text\":\"unist-util-stringify-position\",\"link\":\"/node_modules/unist-util-stringify-position/readme.html\"}],\"collapsed\":true},{\"text\":\"unist-util-visit\",\"items\":[{\"text\":\"unist-util-visit\",\"link\":\"/node_modules/unist-util-visit/readme.html\"}],\"collapsed\":true},{\"text\":\"unist-util-visit-parents\",\"items\":[{\"text\":\"unist-util-visit-parents\",\"link\":\"/node_modules/unist-util-visit-parents/readme.html\"}],\"collapsed\":true},{\"text\":\"uri-js\",\"items\":[{\"text\":\"URI.js\",\"link\":\"/node_modules/uri-js/README.html\"}],\"collapsed\":true},{\"text\":\"vfile\",\"items\":[{\"text\":\"readme\",\"link\":\"/node_modules/vfile/readme.html\"}],\"collapsed\":true},{\"text\":\"vfile-message\",\"items\":[{\"text\":\"vfile-message\",\"link\":\"/node_modules/vfile-message/readme.html\"}],\"collapsed\":true},{\"text\":\"vite\",\"items\":[{\"text\":\"Vite core license\",\"link\":\"/node_modules/vite/LICENSE.html\"},{\"text\":\"vite ⚡\",\"link\":\"/node_modules/vite/README.html\"}],\"collapsed\":true},{\"text\":\"vite-plugin-vitepress-auto-sidebar\",\"items\":[{\"text\":\"vite-plugin-vitepress-auto-sidebar\",\"link\":\"/node_modules/vite-plugin-vitepress-auto-sidebar/README.html\"}],\"collapsed\":true},{\"text\":\"vitepress\",\"items\":[{\"text\":\"VitePress 📝💨\",\"link\":\"/node_modules/vitepress/README.html\"},{\"text\":\"https://vitepress.dev/reference/default-theme-home-page\",\"items\":[{\"text\":\"Runtime API Examples\",\"link\":\"/node_modules/vitepress/template/api-examples.html\"},{\"text\":\"https://vitepress.dev/reference/default-theme-home-page\",\"link\":\"/node_modules/vitepress/template/index.html\"},{\"text\":\"Markdown Extension Examples\",\"link\":\"/node_modules/vitepress/template/markdown-examples.html\"}],\"collapsed\":true}],\"collapsed\":true},{\"text\":\"vue\",\"items\":[{\"text\":\"vue\",\"link\":\"/node_modules/vue/README.html\"}],\"collapsed\":true},{\"text\":\"which\",\"items\":[{\"text\":\"Changes\",\"link\":\"/node_modules/which/CHANGELOG.html\"},{\"text\":\"which\",\"link\":\"/node_modules/which/README.html\"}],\"collapsed\":true},{\"text\":\"word-wrap\",\"items\":[{\"text\":\"word-wrap [](https://www.npmjs.com/package/word-wrap) [](https://npmjs.org/package/word-wrap) [](https://npmjs.org/package/word-wrap) [](https://travis-ci.org/jonschlinkert/word-wrap)\",\"link\":\"/node_modules/word-wrap/README.html\"}],\"collapsed\":true},{\"text\":\"wrappy\",\"items\":[{\"text\":\"wrappy\",\"link\":\"/node_modules/wrappy/README.html\"}],\"collapsed\":true},{\"text\":\"yocto-queue\",\"items\":[{\"text\":\"yocto-queue [](https://bundlephobia.com/result?p=yocto-queue)\",\"link\":\"/node_modules/yocto-queue/readme.html\"}],\"collapsed\":true},{\"text\":\"zwitch\",\"items\":[{\"text\":\"zwitch\",\"link\":\"/node_modules/zwitch/readme.html\"}],\"collapsed\":true}]}],\"/test1/\":[{\"items\":[{\"text\":\"Runtime API Examples\",\"link\":\"/test1/api-examples.html\"},{\"text\":\"note\",\"link\":\"/test1/index.html\"},{\"text\":\"Markdown Extension Examples\",\"link\":\"/test1/markdown-examples.html\"}]}]}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
|
||
|
||
</body>
|
||
</html> |