Files
FixIt/assets/lib/meting/Meting.min.js
T
2026-05-17 13:58:46 +08:00

2 lines
2.8 KiB
JavaScript
Vendored

!function(){"use strict";class t extends HTMLElement{connectedCallback(){window.APlayer&&window.fetch&&(this._init(),this._parse())}disconnectedCallback(){this.lock||this.aplayer.destroy()}_camelize(t){return t.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(t,e)=>e.toUpperCase())}_init(){let t={};for(let e=0;e<this.attributes.length;e+=1)t[this._camelize(this.attributes[e].name)]=this.attributes[e].value;let e=["server","type","id","api","auth","auto","lock","name","title","artist","author","url","cover","pic","lyric","lrc"];this.meta={};for(let i of e)this.meta[i]=t[i],delete t[i];this.config=t,this.api=this.meta.api||window.meting_api||"https://api.i-meto.com/meting/api?server=:server&type=:type&id=:id&r=:r",this.meta.auto&&this._parse_link()}_parse_link(){let t=[["music.163.com.*song.*id=(\\d+)","netease","song"],["music.163.com.*album.*id=(\\d+)","netease","album"],["music.163.com.*artist.*id=(\\d+)","netease","artist"],["music.163.com.*playlist.*id=(\\d+)","netease","playlist"],["music.163.com.*discover/toplist.*id=(\\d+)","netease","playlist"],["y.qq.com.*song/(\\w+).html","tencent","song"],["y.qq.com.*album/(\\w+).html","tencent","album"],["y.qq.com.*singer/(\\w+).html","tencent","artist"],["y.qq.com.*playsquare/(\\w+).html","tencent","playlist"],["y.qq.com.*playlist/(\\w+).html","tencent","playlist"],["xiami.com.*song/(\\w+)","xiami","song"],["xiami.com.*album/(\\w+)","xiami","album"],["xiami.com.*artist/(\\w+)","xiami","artist"],["xiami.com.*collect/(\\w+)","xiami","playlist"]];for(let e of t){let t=new RegExp(e[0]).exec(this.meta.auto);if(null!==t)return this.meta.server=e[1],this.meta.type=e[2],void(this.meta.id=t[1])}}_parse(){if(this.meta.url){let t={name:this.meta.name||this.meta.title||"Audio name",artist:this.meta.artist||this.meta.author||"Audio artist",url:this.meta.url,cover:this.meta.cover||this.meta.pic,lrc:this.meta.lrc||this.meta.lyric||"",type:this.meta.type||"auto"};return t.lrc||(this.meta.lrcType=0),this.innerText&&(t.lrc=this.innerText,this.meta.lrcType=2),void this._loadPlayer([t])}let t=this.api.replace(":server",this.meta.server).replace(":type",this.meta.type).replace(":id",this.meta.id).replace(":auth",this.meta.auth).replace(":r",Math.random());fetch(t).then(t=>t.json()).then(t=>this._loadPlayer(t))}_loadPlayer(t){let e={audio:t,mutex:!0,lrcType:this.meta.lrcType||3,storageName:"metingjs"};if(!t.length)return;let i={...e,...this.config};for(let t in i)"true"!==i[t]&&"false"!==i[t]||(i[t]="true"===i[t]);let a=document.createElement("div");i.container=a,this.appendChild(a),this.aplayer=new APlayer(i)}}console.log("\n %c MetingJS v2.0.2 %c https://github.com/metowolf/MetingJS \n","color: #fadfa3; background: #030307; padding:5px 0;","background: #fadfa3; padding:5px 0;"),window.customElements&&!window.customElements.get("meting-js")&&(window.MetingJSElement=t,window.customElements.define("meting-js",t))}();