diff --git a/Scripts/js/evui-dou.js b/Scripts/js/evui-dou.js deleted file mode 100644 index b94ec58..0000000 --- a/Scripts/js/evui-dou.js +++ /dev/null @@ -1,314 +0,0 @@ -// (!!测试脚本)该脚本用于在前端网页显示近几天的京豆变化。适用环境: elecV2P -// 参考修改自:https://github.com/dompling/Scriptable/blob/master/Scripts/JDDouK.js -// 首次运行时耗时较长,请耐心等待 -// 脚本地址:https://raw.githubusercontent.com/elecV2/elecV2P-dei/master/examples/JSTEST/evui-dou.js - -class Widget { - constructor() { - this.name = "京东豆收支"; - this.JDCookie = { - cookie: $store.get('CookieJD'), - userName: '', // 设置显示的用户名,如果为空将使用京东默认昵称代替 - }; - this.rangeDay = 5; // 天数范围配置 - this.cache = true; // true: 只在每天首次运行时请求新的数据。 false: 每次运行都获取最新数据 - this.notify = true; // 是否发送通知 - } - - rangeTimer = {}; - timerKeys = []; - beanCount = 0; - beanChange = []; - - chartConfig = (labels = [], datas = [], datas2 = []) => { - const color = `#003153`; - let template = ` -{ - 'type': 'bar', - 'data': { - 'labels': __LABELS__, - 'datasets': [ - { - type: 'line', - backgroundColor: '#fff', - borderColor: getGradientFillHelper('vertical', ['#c8e3fa', '#e62490']), - 'borderWidth': 2, - pointRadius: 5, - 'fill': false, - 'data': __DATAS__, - }, - { - type: 'line', - backgroundColor: '#88f', - borderColor: getGradientFillHelper('vertical', ['#c8e3fa', '#0624e9']), - 'borderWidth': 2, - pointRadius: 5, - 'fill': false, - 'data': __DATAS2__, - }, - ], - }, - 'options': { - plugins: { - datalabels: { - display: true, - align: 'top', - color: __COLOR__, - font: { - size: '16' - } - }, - }, - layout: { - padding: { - left: 0, - right: 0, - top: 30, - bottom: 5 - } - }, - responsive: true, - maintainAspectRatio: true, - 'legend': { - 'display': false, - }, - 'title': { - 'display': false, - }, - scales: { - xAxes: [ - { - gridLines: { - display: false, - color: __COLOR__, - }, - ticks: { - display: true, - fontColor: __COLOR__, - fontSize: '16', - }, - }, - ], - yAxes: [ - { - ticks: { - display: false, - beginAtZero: true, - fontColor: __COLOR__, - }, - gridLines: { - borderDash: [7, 5], - display: false, - color: __COLOR__, - }, - }, - ], - }, - }, - }`; - - template = template.replaceAll("__COLOR__", `'${color}'`); - template = template.replace("__LABELS__", `${JSON.stringify(labels)}`); - template = template.replace("__DATAS__", `${JSON.stringify(datas)}`); - template = template.replace("__DATAS2__", `${JSON.stringify(datas2)}`); - return template; - }; - - init = async () => { - try { - if (!this.JDCookie.cookie) return; - this.rangeTimer = this.getDay(this.rangeDay); - this.rangeTimerd = this.getDay(this.rangeDay); - this.timerKeys = Object.keys(this.rangeTimer); - await this.getAmountData(); - await this.TotalBean(); - } catch (e) { - console.log(e); - } - }; - - getAmountData = async () => { - let i = 0, - page = 1; - do { - let response = await this.getJingBeanBalanceDetail(page); - // console.debug(response.data) - response = response.data - const result = response.code === "0"; - console.log(`正在获取京豆收支明细,第${page}页:${result ? "请求成功" : "请求失败"}`); - if (response.code === "3") { - i = 1; - console.log(response); - } - if (response && result) { - page++; - let detailList = response.jingDetailList; - if (detailList && detailList.length > 0) { - for (let item of detailList) { - const dates = item.date.split(" "); - if (this.timerKeys.indexOf(dates[0]) > -1) { - const amount = Number(item.amount); - if (amount > 0) this.rangeTimer[dates[0]] += amount; - else this.rangeTimerd[dates[0]] += amount - } else { - i = 1; - break; - } - } - } - } - } while (i === 0); - }; - - getDay(dayNumber) { - let data = {}; - let i = dayNumber; - do { - const today = new Date(); - const year = today.getFullYear(); - const targetday_milliseconds = today.getTime() - 1000 * 60 * 60 * 24 * i; - today.setTime(targetday_milliseconds); //注意,这行是关键代码 - let month = today.getMonth() + 1; - month = month >= 10 ? month : `0${month}`; - let day = today.getDate(); - day = day >= 10 ? day : `0${day}`; - data[`${year}-${month}-${day}`] = 0; - i--; - } while (i >= 0); - return data; - } - - getJingBeanBalanceDetail = async (page) => { - try { - const options = { - url: `https://bean.m.jd.com/beanDetail/detail.json`, - body: `page=${page}`, - headers: { - Accept: "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - Connection: "keep-alive", - Cookie: this.JDCookie.cookie, - Referer: "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1", - }, - method: 'post' - }; - return await $axios(options); - } catch (e) { - console.log(e); - } - }; - - TotalBean = async () => { - const options = { - "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, - "headers": { - "Accept": "application/json,text/plain, */*", - "Content-Type": "application/x-www-form-urlencoded", - "Accept-Encoding": "gzip, deflate, br", - "Accept-Language": "zh-cn", - "Connection": "keep-alive", - "Cookie": this.JDCookie.cookie, - "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", - "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1" - } - } - let res = await $axios(options) - if (res && res.data) { - let data = res.data - if (data.retcode === 0 && data.base) { - this.JDCookie.userName = this.JDCookie.userName || data.base.nickname - this.beanCount = data.base.jdNum - } - } - } - - createChart = async () => { - let labels = [], - data = [], data2 = []; - Object.keys(this.rangeTimer).forEach((month) => { - const value = this.rangeTimer[month]; - const arrMonth = month.split("-"); - labels.push(`${arrMonth[1]}.${arrMonth[2]}`); - data.push(value); - data2.push(this.rangeTimerd[month]) - }); - this.beanChange.push(data) - this.beanChange.push(data2) - const chartStr = this.chartConfig(labels, data, data2); - console.debug(chartStr); - - return await this.chartUrl(chartStr) - }; - - chartUrl = async (data) => { - const req = { - url: 'https://quickchart.io/chart/create', - headers: { - 'Content-Type': 'application/json' - }, - method: 'post', - data: { - "backgroundColor": "transparent", - "width": 580, - "height": 320, - "format": "png", - "chart": data - } - } - return await $axios(req) - } -} - -!(async ()=>{ - let evdou = $store.get('evdou'), - today = new Date().getDay() - const eDou = new Widget() - if (eDou.cache && evdou && evdou.day === today && evdou.imgurl) { - console.log('使用 cache 数据显示', eDou.name) - } else { - await eDou.init() - let res = await eDou.createChart() - let data = res.data - if (data && data.success) { - evdou = { - day: today, - userName: eDou.JDCookie.userName, - total: eDou.beanCount, - change: eDou.beanChange, - imgurl: data.url, - } - $store.put(evdou, 'evdou') - } else { - console.log(data) - } - } - - if (evdou.imgurl) { - showChart(evdou.imgurl, evdou.userName, evdou.total, eDou.name) - if (eDou.notify) { - let body = evdou.userName + ': ' + evdou.total - if (evdou.change) { - body += '\n' + '近期收入:' + evdou.change[0].join(', ') - body += '\n' + '近期支出:' + evdou.change[1].join(', ') - } - $feed.push(eDou.name, evdou.userName + ': ' + evdou.total, evdou.imgurl) - } - } -})().catch(e=>console.log(e)) - -function showChart(imgurl, userName, total, title) { - $evui({ - title, - width: 640, - height: 389, - content: `