"use strict"; function _objectSpread(a) { for (var b = 1; b < arguments.length; b++) { var c = null == arguments[b] ? {} : arguments[b], d = Object.keys(c); "function" == typeof Object.getOwnPropertySymbols && (d = d.concat(Object.getOwnPropertySymbols(c).filter(function (a) { return Object.getOwnPropertyDescriptor(c, a).enumerable }))), d.forEach(function (b) { _defineProperty(a, b, c[b]) }) } return a } function _defineProperty(a, b, c) { return b in a ? Object.defineProperty(a, b, { value: c, enumerable: !0, configurable: !0, writable: !0 }) : a[b] = c, a } class MetingJSElement extends HTMLElement { connectedCallback() { window.APlayer && window.fetch && (this._init(), this._parse()) } disconnectedCallback() { this.lock || this.aplayer.destroy() } _camelize(a) { return a.replace(/^[_.\- ]+/, "").toLowerCase().replace(/[_.\- ]+(\w|$)/g, (a, b) => b.toUpperCase()) } _init() { let a = {}; for (let b = 0; b < this.attributes.length; b += 1) a[this._camelize(this.attributes[b].name)] = this.attributes[b].value; let b = ["server", "type", "id", "api", "auth", "auto", "lock", "name", "title", "artist", "author", "url", "cover", "pic", "lyric", "lrc"]; this.meta = {}; for (var c = 0; c < b.length; c++) { let d = b[c]; this.meta[d] = a[d], delete a[d] } this.config = a, 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 a = [["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 (var b = 0; b < a.length; b++) { let c = a[b], d = new RegExp(c[0]), e = d.exec(this.meta.auto); if (null !== e) return this.meta.server = c[1], this.meta.type = c[2], void (this.meta.id = e[1]) } } _parse() { if (this.meta.url) { let a = { 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 a.lrc || (this.meta.lrcType = 0), this.innerText && (a.lrc = this.innerText, this.meta.lrcType = 2), void this._loadPlayer([a]) } let a = 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(a).then(a => a.json()).then(a => this._loadPlayer(a)) } _loadPlayer(a) { let b = {audio: a, mutex: !0, lrcType: this.meta.lrcType || 3, storageName: "metingjs"}; if (a.length) { let a = _objectSpread({}, b, this.config); for (let b in a) ("true" === a[b] || "false" === a[b]) && (a[b] = "true" === a[b]); let c = document.createElement("div"); a.container = c, this.appendChild(c), this.aplayer = new APlayer(a) } } } console.log("\n %c MetingJS v2.0.1 %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 = MetingJSElement, window.customElements.define("meting-js", MetingJSElement));