mirror of
https://github.com/hanxi/xiaomusic.git
synced 2026-04-22 22:00:04 +08:00
feat:pure和xplayer更新 (#552)
* feat: pure主题适配最新版,移动端适配,页面渲染优化 * feat:xplayer适配电脑端、平板设备
This commit is contained in:
1
xiaomusic/static/pure/assets/DownloadTool-BWMSO0_N.css
vendored
Normal file
1
xiaomusic/static/pure/assets/DownloadTool-BWMSO0_N.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.download-tool-container[data-v-37ff9a55]{max-width:800px;margin:0 auto;padding:20px}.download-card[data-v-37ff9a55]{margin-bottom:20px}.card-header[data-v-37ff9a55]{display:flex;justify-content:space-between;align-items:center}.download-form[data-v-37ff9a55]{width:100%}
|
||||
1
xiaomusic/static/pure/assets/DownloadTool-bty5M9I6.js
vendored
Normal file
1
xiaomusic/static/pure/assets/DownloadTool-bty5M9I6.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{k as C,l as P,m as E,u as T,n as k,o as y,c as _,p as V,q as c,s as q,v as R,x as z,y as B,z as F,_ as L,A as f,b as m,a as e,w as a,E as $,d as h,t as S,e as u,i as x,h as I,f as j,j as O}from"./index-BAPaOAUA.js";const A=C({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:P(String),default:"solid"}}),H=E({name:"ElDivider"}),J=E({...H,props:A,setup(g){const s=g,o=T("divider"),t=k(()=>o.cssVar({"border-style":s.borderStyle}));return(n,v)=>(y(),_("div",{class:V([c(o).b(),c(o).m(n.direction)]),style:z(c(t)),role:"separator"},[n.$slots.default&&n.direction!=="vertical"?(y(),_("div",{key:0,class:V([c(o).e("text"),c(o).is(n.contentPosition)])},[q(n.$slots,"default")],2)):R("v-if",!0)],6))}});var M=B(J,[["__file","divider.vue"]]);const W=F(M),G={class:"download-tool-container"},K={__name:"DownloadTool",setup(g){const s=f({playlistUrl:"https://m.bilibili.com/video/BV1WUsDezE88",dirname:""}),o=f({songUrl:"https://m.bilibili.com/video/BV1qD4y1U7fs",songName:""}),t=f({playlist:!1,song:!1}),n=async(d,l)=>{try{const r=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(l)});if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);return await r.json()}catch(r){throw console.error("请求失败:",r),r}},v=async()=>{if(!s.playlistUrl||!s.dirname){u.error("请填写完整的歌单 URL 和歌单名字");return}t.playlist=!0;try{const d=await n("/downloadplaylist",{dirname:s.dirname,url:s.playlistUrl});u.success("歌单下载请求已发送!")}catch{u.error("歌单下载请求失败,请重试。")}finally{t.playlist=!1}},N=async()=>{if(!o.songUrl||!o.songName){u.error("请填写完整的歌曲 URL 和歌曲名字");return}t.song=!0;try{const d=await n("/downloadonemusic",{name:o.songName,url:o.songUrl});u.success("单曲下载请求已发送!")}catch{u.error("单曲下载请求失败,请重试。")}finally{t.song=!1}};return(d,l)=>{const r=x,i=I,U=j,w=O,b=$,D=W;return y(),_("div",G,[l[6]||(l[6]=m("h1",null,"歌曲下载工具",-1)),e(b,{class:"download-card"},{header:a(()=>l[4]||(l[4]=[m("div",{class:"card-header"},[m("span",null,"歌单下载")],-1)])),default:a(()=>[e(w,{ref:"playlistForm",model:s,class:"download-form"},{default:a(()=>[e(i,{label:"歌单 URL",prop:"playlistUrl",required:""},{default:a(()=>[e(r,{modelValue:s.playlistUrl,"onUpdate:modelValue":l[0]||(l[0]=p=>s.playlistUrl=p),placeholder:"请输入歌单URL",clearable:""},null,8,["modelValue"])]),_:1}),e(i,{label:"歌单名字",prop:"dirname",required:""},{default:a(()=>[e(r,{modelValue:s.dirname,"onUpdate:modelValue":l[1]||(l[1]=p=>s.dirname=p),placeholder:"请输入歌单名字",clearable:""},null,8,["modelValue"])]),_:1}),e(i,null,{default:a(()=>[e(U,{type:"primary",onClick:v,loading:t.playlist},{default:a(()=>[h(S(t.playlist?"下载中...":"下载歌单"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1}),e(D),e(b,{class:"download-card"},{header:a(()=>l[5]||(l[5]=[m("div",{class:"card-header"},[m("span",null,"单曲下载")],-1)])),default:a(()=>[e(w,{ref:"songForm",model:o,class:"download-form"},{default:a(()=>[e(i,{label:"歌曲 URL",prop:"songUrl",required:""},{default:a(()=>[e(r,{modelValue:o.songUrl,"onUpdate:modelValue":l[2]||(l[2]=p=>o.songUrl=p),placeholder:"请输入歌曲URL",clearable:""},null,8,["modelValue"])]),_:1}),e(i,{label:"歌曲名字",prop:"songName",required:""},{default:a(()=>[e(r,{modelValue:o.songName,"onUpdate:modelValue":l[3]||(l[3]=p=>o.songName=p),placeholder:"请输入歌曲名字",clearable:""},null,8,["modelValue"])]),_:1}),e(i,null,{default:a(()=>[e(U,{type:"primary",onClick:N,loading:t.song},{default:a(()=>[h(S(t.song?"下载中...":"下载单曲"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])]),_:1})])}}},X=L(K,[["__scopeId","data-v-37ff9a55"]]);export{X as default};
|
||||
1
xiaomusic/static/pure/assets/M3u2Json-ButJ7G_D.css
vendored
Normal file
1
xiaomusic/static/pure/assets/M3u2Json-ButJ7G_D.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.converter-container[data-v-ae3a051e]{display:flex;flex-direction:column;align-items:center;padding:0 20px}.converter-card[data-v-ae3a051e]{width:100%;max-width:800px}.card-header[data-v-ae3a051e]{display:flex;justify-content:space-between;align-items:center}.convert-button[data-v-ae3a051e]{width:100%}.result-actions[data-v-ae3a051e]{margin-top:10px;display:flex;justify-content:flex-end;gap:10px}@media (max-width: 768px){.converter-container[data-v-ae3a051e]{padding:10px}.converter-card[data-v-ae3a051e]{width:100%}.result-actions[data-v-ae3a051e]{flex-direction:column}.result-actions el-button[data-v-ae3a051e]{width:100%}}
|
||||
2
xiaomusic/static/pure/assets/M3u2Json-DeAtFyPF.js
vendored
Normal file
2
xiaomusic/static/pure/assets/M3u2Json-DeAtFyPF.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import{_ as U,r as i,c as w,a as o,w as l,E as O,o as J,b as _,d as p,t as x,e as r,f as C,g as M,h as S,i as V,j as k}from"./index-BAPaOAUA.js";const T={class:"converter-container"},j={class:"result-actions"},F={__name:"M3u2Json",setup(B){const d=i(""),n=i(""),c=i(!1),v=i(null),b=s=>{const e=new FileReader;return e.onload=t=>{d.value=t.target.result,r.success("文件加载成功")},e.onerror=()=>{r.error("文件加载失败")},e.readAsText(s),!1},y=()=>{if(!d.value.trim()){r.warning("请输入或上传 M3U 内容");return}c.value=!0;try{const s=d.value.split(`
|
||||
`),e=[];let t="";s.forEach(a=>{if(a=a.trim(),a.startsWith("#EXTINF:")){const u=a.match(/#EXTINF:.*,(.+)/);u&&u[1]&&(t=u[1])}else a&&a.startsWith("http")&&t&&(e.push({name:t,type:"radio",url:a}),t="")});const m=[{name:"m3u电台",musics:e}];n.value=JSON.stringify(m,null,2),r.success(`成功转换 ${e.length} 个电台`)}catch(s){r.error("转换失败:"+s.message),console.error("转换错误:",s)}finally{c.value=!1}},h=async()=>{try{await navigator.clipboard.writeText(n.value),r.success("结果已复制到剪贴板")}catch(s){r.error("复制失败,请手动复制"),console.error("复制错误:",s)}},N=()=>{const s=new Blob([n.value],{type:"application/json"}),e=URL.createObjectURL(s),t=document.createElement("a");t.href=e,t.download="m3u_converted.json",document.body.appendChild(t),t.click(),document.body.removeChild(t),URL.revokeObjectURL(e),r.success("JSON 文件已下载")};return(s,e)=>{const t=C,m=M,a=S,u=V,g=k,E=O;return J(),w("div",T,[o(E,{class:"converter-card"},{header:l(()=>e[2]||(e[2]=[_("div",{class:"card-header"},[_("span",null,"M3U 到 JSON 转换器")],-1)])),default:l(()=>[o(g,{size:"large"},{default:l(()=>[o(a,{label:"文件上传"},{default:l(()=>[o(m,{ref_key:"upload",ref:v,class:"upload-demo",accept:".m3u","show-file-list":!1,"before-upload":b,"auto-upload":!0},{default:l(()=>[o(t,{type:"primary"},{default:l(()=>e[3]||(e[3]=[p("选择 M3U 文件")])),_:1})]),_:1},512)]),_:1}),o(a,{label:"M3U 内容"},{default:l(()=>[o(u,{modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=f=>d.value=f),type:"textarea",rows:6,placeholder:"粘贴 M3U 内容或上传文件...",resize:"both"},null,8,["modelValue"])]),_:1}),o(a,null,{default:l(()=>[o(t,{type:"primary",class:"convert-button",onClick:y,loading:c.value},{default:l(()=>[p(x(c.value?"转换中...":"转换"),1)]),_:1},8,["loading"])]),_:1}),o(a,{label:"JSON 结果"},{default:l(()=>[o(u,{modelValue:n.value,"onUpdate:modelValue":e[1]||(e[1]=f=>n.value=f),type:"textarea",rows:6,placeholder:"转换后的 JSON 将显示在这里...",resize:"both"},null,8,["modelValue"]),_("div",j,[o(t,{type:"default",onClick:h,disabled:!n.value},{default:l(()=>e[4]||(e[4]=[p(" 复制结果 ")])),_:1},8,["disabled"]),o(t,{type:"default",onClick:N,disabled:!n.value},{default:l(()=>e[5]||(e[5]=[p(" 下载 JSON 文件 ")])),_:1},8,["disabled"])])]),_:1})]),_:1})]),_:1})])}}},R=U(F,[["__scopeId","data-v-ae3a051e"]]);export{R as default};
|
||||
47
xiaomusic/static/pure/assets/index-BAPaOAUA.js
vendored
Normal file
47
xiaomusic/static/pure/assets/index-BAPaOAUA.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
41
xiaomusic/static/pure/assets/index-CaDINhtr.js
vendored
41
xiaomusic/static/pure/assets/index-CaDINhtr.js
vendored
File diff suppressed because one or more lines are too long
1
xiaomusic/static/pure/assets/index-CfMOqlRg.css
vendored
Normal file
1
xiaomusic/static/pure/assets/index-CfMOqlRg.css
vendored
Normal file
File diff suppressed because one or more lines are too long
9
xiaomusic/static/pure/index.html
vendored
9
xiaomusic/static/pure/index.html
vendored
@@ -6,8 +6,8 @@
|
||||
<link rel="icon" href="/static/pure/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>小爱音箱操控面板</title>
|
||||
<script type="module" crossorigin src="/static/pure/assets/index-CaDINhtr.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/pure/assets/index-Btj9QAkL.css">
|
||||
<script type="module" crossorigin src="/static/pure/assets/index-BAPaOAUA.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/pure/assets/index-CfMOqlRg.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -21,9 +21,6 @@
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-Z09NC1K7ZW');
|
||||
</script>
|
||||
|
||||
<!-- umami -->
|
||||
<script async defer src="https://umami.hanxi.cc/script.js" data-website-id="7bfb0890-4115-4260-8892-b391513e7e99"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
1
xiaomusic/static/xplayer/assets/index-2Kb1oK2G.css
vendored
Normal file
1
xiaomusic/static/xplayer/assets/index-2Kb1oK2G.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
30
xiaomusic/static/xplayer/assets/index-ESKkJcHu.js
vendored
Normal file
30
xiaomusic/static/xplayer/assets/index-ESKkJcHu.js
vendored
Normal file
File diff suppressed because one or more lines are too long
18
xiaomusic/static/xplayer/index.html
vendored
18
xiaomusic/static/xplayer/index.html
vendored
@@ -5,22 +5,8 @@
|
||||
<link rel="icon" href="/static/xplayer/favicon.ico">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>XMusicPlayer</title>
|
||||
<script type="module" crossorigin src="/static/xplayer/assets/index-C1eAAj9j.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/xplayer/assets/index-BBmHnUeL.css">
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-Z09NC1K7ZW"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag() {
|
||||
dataLayer.push(arguments);
|
||||
}
|
||||
gtag("js", new Date());
|
||||
gtag("config", "G-Z09NC1K7ZW");
|
||||
</script>
|
||||
|
||||
<!-- umami -->
|
||||
<script async defer src="https://umami.hanxi.cc/script.js" data-website-id="7bfb0890-4115-4260-8892-b391513e7e99"></script>
|
||||
<script type="module" crossorigin src="/static/xplayer/assets/index-ESKkJcHu.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/static/xplayer/assets/index-2Kb1oK2G.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
Reference in New Issue
Block a user