const $ = new Env('网易云音乐') $.VAL_session = $.getdata('chavy_cookie_neteasemusic') $.CFG_retryCnt = ($.getdata('CFG_neteasemusic_retryCnt') || '10') * 1 $.CFG_retryInterval = ($.getdata('CFG_neteasemusic_retryInterval') || '500') * 1 !(async () => { $.log('', `🔔 ${$.name}, 开始!`, '') init() await signweb() await signapp() await getInfo() await showmsg() })() .catch((e) => { $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') }) .finally(() => { $.msg($.name, $.subt, $.desc), $.log('', `🔔 ${$.name}, 结束!`, ''), $.done() }) function init() { $.isNewCookie = /https:\/\/music.163.com\/weapi\/user\/level/.test($.VAL_session) $.Cookie = $.isNewCookie ? JSON.parse($.VAL_session).headers.Cookie : $.VAL_session } async function signweb() { for (let signIdx = 0; signIdx < $.CFG_retryCnt; signIdx++) { await new Promise((resove) => { const url = { url: `http://music.163.com/api/point/dailyTask?type=1`, headers: {} } url.headers['Cookie'] = $.Cookie url.headers['Host'] = 'music.163.com' url.headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15' $.get(url, (error, response, data) => { try { $.isWebSuc = JSON.parse(data).code === -2 $.log(`[Web] 第 ${signIdx + 1} 次: ${data}`) } catch (e) { $.isWebSuc = false $.log(`❗️ ${$.name}, 执行失败!`, ` error = ${error || e}`, `response = ${JSON.stringify(response)}`, '') } finally { resove() } }) }) await new Promise($.wait($.CFG_retryInterval)) if ($.isWebSuc) break } } async function signapp() { for (let signIdx = 0; signIdx < $.CFG_retryCnt; signIdx++) { await new Promise((resove) => { const url = { url: `http://music.163.com/api/point/dailyTask?type=0`, headers: {} } url.headers['Cookie'] = $.Cookie url.headers['Host'] = 'music.163.com' url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1' $.get(url, (error, response, data) => { try { $.isAppSuc = JSON.parse(data).code === -2 $.log(`[App] 第 ${signIdx + 1} 次: ${data}`) } catch (e) { $.isAppSuc = false $.log(`❗️ ${$.name}, 执行失败!`, ` error = ${error || e}`, `response = ${JSON.stringify(response)}`, '') } finally { resove() } }) }) await new Promise($.wait($.CFG_retryInterval)) if ($.isAppSuc) break } } function getInfo() { if (!$.isNewCookie) return return new Promise((resove) => { $.post(JSON.parse($.VAL_session), (error, response, data) => { try { $.userInfo = JSON.parse(data) } catch (e) { $.log(`❗️ ${$.name}, 执行失败!`, ` error = ${error || e}`, `response = ${JSON.stringify(response)}`, '') } finally { resove() } }) }) } function showmsg() { return new Promise((resove) => { $.subt = $.isWebSuc ? 'PC: 成功' : 'PC: 失败' $.subt += $.isAppSuc ? ', APP: 成功' : ', APP: 失败' if ($.isNewCookie && $.userInfo) { $.desc = `等级: ${$.userInfo.data.level}, 听歌: ${$.userInfo.data.nowPlayCount} => ${$.userInfo.data.nextPlayCount} 升级 (首)` $.desc = $.userInfo.data.level === 10 ? `等级: ${$.userInfo.data.level}, 你的等级已爆表!` : $.desc } resove() }) } // prettier-ignore function Env(s){this.name=s,this.data=null,this.logs=[],this.isSurge=(()=>"undefined"!=typeof $httpClient),this.isQuanX=(()=>"undefined"!=typeof $task),this.isNode=(()=>"undefined"!=typeof module&&!!module.exports),this.log=((...s)=>{this.logs=[...this.logs,...s],s?console.log(s.join("\n")):console.log(this.logs.join("\n"))}),this.msg=((s=this.name,t="",i="")=>{this.isSurge()&&$notification.post(s,t,i),this.isQuanX()&&$notify(s,t,i);const e=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];s&&e.push(s),t&&e.push(t),i&&e.push(i),console.log(e.join("\n"))}),this.getdata=(s=>{if(this.isSurge())return $persistentStore.read(s);if(this.isQuanX())return $prefs.valueForKey(s);if(this.isNode()){const t="box.dat";return this.fs=this.fs?this.fs:require("fs"),this.fs.existsSync(t)?(this.data=JSON.parse(this.fs.readFileSync(t)),this.data[s]):null}}),this.setdata=((s,t)=>{if(this.isSurge())return $persistentStore.write(s,t);if(this.isQuanX())return $prefs.setValueForKey(s,t);if(this.isNode()){const i="box.dat";return this.fs=this.fs?this.fs:require("fs"),!!this.fs.existsSync(i)&&(this.data=JSON.parse(this.fs.readFileSync(i)),this.data[t]=s,this.fs.writeFileSync(i,JSON.stringify(this.data)),!0)}}),this.wait=((s,t=s)=>i=>setTimeout(()=>i(),Math.floor(Math.random()*(t-s+1)+s))),this.get=((s,t)=>this.send(s,"GET",t)),this.post=((s,t)=>this.send(s,"POST",t)),this.send=((s,t,i)=>{if(this.isSurge()){const e="POST"==t?$httpClient.post:$httpClient.get;e(s,(s,t,e)=>{t&&(t.body=e,t.statusCode=t.status),i(s,t,e)})}this.isQuanX()&&(s.method=t,$task.fetch(s).then(s=>{s.status=s.statusCode,i(null,s,s.body)},s=>i(s.error,s,s))),this.isNode()&&(this.request=this.request?this.request:require("request"),s.method=t,s.gzip=!0,this.request(s,(s,t,e)=>{t&&(t.status=t.statusCode),i(null,t,e)}))}),this.done=((s={})=>this.isNode()?null:$done(s))}