53 lines
100 KiB
HTML
53 lines
100 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>已支持配置自定义网络歌单,在这里分享你的歌单 | 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_78.md.CH6fxnfx.lean.js">
|
|||
|
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
|
|||
|
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
|
|||
|
</head>
|
|||
|
<body>
|
|||
|
<div id="app"><div class="Layout" data-v-d8b57b2d><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-d8b57b2d data-v-7ad780c2><div class="VPNavBar" data-v-7ad780c2 data-v-9fd4d1dd><div class="wrapper" data-v-9fd4d1dd><div class="container" data-v-9fd4d1dd><div class="title" data-v-9fd4d1dd><div class="VPNavBarTitle has-sidebar" data-v-9fd4d1dd data-v-9f43907a><a class="title" href="/" data-v-9f43907a><!--[--><!--]--><!----><span data-v-9f43907a>XiaoMusic</span><!--[--><!--]--></a></div></div><div class="content" data-v-9fd4d1dd><div class="content-body" data-v-9fd4d1dd><!--[--><!--]--><div class="VPNavBarSearch search" data-v-9fd4d1dd><!----></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-9fd4d1dd data-v-afb2845e><span id="main-nav-aria-label" class="visually-hidden" data-v-afb2845e> Main Navigation </span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/markdown-examples.html" tabindex="0" data-v-afb2845e data-v-815115f5><!--[--><span data-v-815115f5>Examples</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-9fd4d1dd data-v-3f90c1a5><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-3f90c1a5 data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-9fd4d1dd data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/hanxi/xiaomusic" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-9fd4d1dd data-v-f953d92f data-v-bfe7971f><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-bfe7971f><span class="vpi-more-horizontal icon" data-v-bfe7971f></span></button><div class="menu" data-v-bfe7971f><div class="VPMenu" data-v-bfe7971f data-v-20ed86d6><!----><!--[--><!--[--><!----><div class="group" data-v-f953d92f><div class="item appearance" data-v-f953d92f><p class="label" data-v-f953d92f>Appearance</p><div class="appearance-action" data-v-f953d92f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-f953d92f data-v-be9742d9 data-v-b4ccac88><span class="check" data-v-b4ccac88><span class="icon" data-v-b4ccac88><!--[--><span class="vpi-sun sun" data-v-be9742d9></span><span class="vpi-moon moon" data-v-be9742d9></span><!--]--></span></span></button></div></div></div><div class="group" data-v-f953d92f><div class="item social-links" data-v-f953d92f><div class="VPSocialLinks social-links-list" data-v-f953d92f data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/hanxi/xiaomusic" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-60a9a2d3><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-9fd4d1dd data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><div class="divider" data-v-9fd4d1dd><div class="divider-line" data-v-9fd4d1dd></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-
|
|||
|
<span class="line"><span style="--shiki-light:#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;">"歌单1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "musics"</span><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;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"歌名1"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"http://ngcdn001.cnr.cn/live/zgzs/index.m3u8"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "type"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"radio"</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;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"歌名2"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"https://lhttp.qtfm.cn/live/4915/64k.mp3"</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> {</span></span>
|
|||
|
<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;">"歌单2"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "musics"</span><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;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"歌名3"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"https://lhttp.qtfm.cn/live/4915/64k.mp3"</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;"> "name"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"歌名4"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> "url"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">:</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;">"https://lhttp.qtfm.cn/live/4915/64k.mp3"</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> ]</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> }</span></span>
|
|||
|
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span></code></pre></div><p>这里分享一个让 chatgpt 写 python 脚本来生成歌单的例子 <a href="https://chatgpt.com/share/6751c019-74c0-800a-a978-a20c636d4464" target="_self">https://chatgpt.com/share/6751c019-74c0-800a-a978-a20c636d4464</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>可以使用 gist 来配置和分享 json 文件,比如 <a href="https://gist.github.com/hanxi/dda82d964a28f8110f8fba81c3ff8314" target="_self">https://gist.github.com/hanxi/dda82d964a28f8110f8fba81c3ff8314</a></p><p>点击 raw 得到 json 文件的链接 <a href="https://gist.githubusercontent.com/hanxi/dda82d964a28f8110f8fba81c3ff8314/raw/8787844d81c39dbfaad4e37954dd449d8bba5728/example.json" target="_self">https://gist.githubusercontent.com/hanxi/dda82d964a28f8110f8fba81c3ff8314/raw/8787844d81c39dbfaad4e37954dd449d8bba5728/example.json</a></p><p>当然还可以用其他工具分享json文件,比如 github 和国内的 gitee 。</p><hr><h3 id="评论-2-hanxi" tabindex="-1">评论 2 - hanxi <a class="header-anchor" href="#评论-2-hanxi" aria-label="Permalink to "评论 2 - hanxi"" target="_self"></a></h3><p>已经有工具支持将 m3u 格式的电台文件转为网络歌单格式,见 /issues/88.html</p><p>欢迎有兴趣的朋友制作其他格式转换工具,比如网易歌单那一类的。</p><hr><h3 id="评论-3-lazybabyz" tabindex="-1">评论 3 - lazybabyz <a class="header-anchor" href="#评论-3-lazybabyz" aria-label="Permalink to "评论 3 - lazybabyz"" target="_self"></a></h3><p>按照教程设置后 播放列表选择m3u电台 再选择播放列表 歌曲,结果显示播放中 不断在转台 stdout: [08:58:02] [0.3.37] [INFO] 10.0.80.191:24020 - "GET /playingmusic?did=566731712 HTTP/1.1" 200 stdout: [08:58:04] [0.3.37] [INFO] 10.0.80.191:24020 - "GET /playingmusic?did=566731712 HTTP/1.1" 200 stdout: [08:58:04] [0.3.37] [INFO] 10.0.80.191:24020 - "GET /static/default/index.html HTTP/1.1" 304 stdout: [08:58:04] [0.3.37] [INFO] 10.0.80.191:24020 - "GET /getsetting HTTP/1.1" 200 stdout: [08:58:04] [0.3.37] [INFO] 10.0.80.191:24022 - "GET /getversion HTTP/1.1" 200 stdout: [08:58:04] [0.3.37] [INFO] 10.0.80.191:24020 - "GET /musiclist HTTP/1.1" 200 stdout: [08:58:04] [0.3.37] [INFO] 10.0.80.191:24021 - "GET /playingmusic?did=566731712 HTTP/1.1" 200 stdout: [08:58:04] [0.3.37] [INFO] 10.0.80.191:24020 - "GET /static/default/curplaylist?did=566731712 HTTP/1.1" 404 stdout: [08:58:05] [0.3.37] [INFO] 10.0.80.191:24022 - "GET /getvolume?did=566731712 HTTP/1.1" 500 stderr: [08:58:05] [0.3.37] [ERROR] Exception in ASGI application stderr: Traceback (most recent call last): stderr: File "/app/.venv/lib/python3.10/site-packages/uvicorn/protocols/http/h11_impl.py", line 406, in run_asgi stderr: result = await app( # type: ignore[func-returns-value] stderr: File "/app/.venv/lib/python3.10/site-packages/uvicorn/middleware/proxy_headers.py", line 70, in <strong>call</strong> stderr: return await self.app(scope, receive, send) stderr: File "/app/.venv/lib/python3.10/site-packages/fastapi/applications.py", line 1054, in <strong>call</strong> stderr: await super().<strong>call</strong>(scope, receive, send) stderr: File "/app/.venv/lib/python3.10/site-packages/starlette/applications.py", line 113, in <strong>call</strong> stderr: await self.middleware_stack(scope, receive, send) stderr: File "/app/.venv/lib/python3.10/site-packages/starlette/middleware/errors.py", line 187, in <strong>call</strong> stderr: raise exc stderr: File "/app/.venv/lib/python3.10/site-packages/starlette/
|
|||
|
<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\",\"ite
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|