Forwarded from Cool Scripts (zZPiglet)
Media is too big
VIEW IN TELEGRAM
#QX (推荐)
#Loon #Surge
豆瓣·电影日历
豆瓣电影日历每日通知。
现有功能:
获取同「豆瓣·电影日历」小组件同样甚至更多的内容。
可选择展示的多媒体:「电影海报」、「电影剧照」或「预告片」。
可选择点击跳转的客户端:「Safari」或「豆瓣」。
以上设置更改请在 BoxJs 中进行。
使用方法:
请先获取/填入豆瓣 API Key 至 BoxJs 再使用。
本脚本在 Quantumult X(build 316+) 中可做到显示第一个图片、文章封面、投票图标、GIF、Live Photo 或视频,并可点击通知跳转。
本脚本在 Loon(build 163+) 中可做到显示第一个多媒体链接,并可点击通知跳转。
本脚本在 Surge 中会提示多媒体链接及跳转链接,需长按通知再点击链接进行跳转。
脚本地址
Box订阅和仓库见置顶🔝
开发不易,点个✨吧~
如果发现有bug,欢迎反馈。
频道: Cool Scripts
作者: @zZPiglet
#Loon #Surge
豆瓣·电影日历
豆瓣电影日历每日通知。
现有功能:
获取同「豆瓣·电影日历」小组件同样甚至更多的内容。
可选择展示的多媒体:「电影海报」、「电影剧照」或「预告片」。
可选择点击跳转的客户端:「Safari」或「豆瓣」。
以上设置更改请在 BoxJs 中进行。
使用方法:
请先获取/填入豆瓣 API Key 至 BoxJs 再使用。
本脚本在 Quantumult X(build 316+) 中可做到显示第一个图片、文章封面、投票图标、GIF、Live Photo 或视频,并可点击通知跳转。
本脚本在 Loon(build 163+) 中可做到显示第一个多媒体链接,并可点击通知跳转。
本脚本在 Surge 中会提示多媒体链接及跳转链接,需长按通知再点击链接进行跳转。
脚本地址
Box订阅和仓库见置顶🔝
开发不易,点个✨吧~
如果发现有bug,欢迎反馈。
频道: Cool Scripts
作者: @zZPiglet
🔨 1 new commit to Task:master:
119050b: 增加「磁力离线」快捷指令,支持热更新。 by zZPiglet
version 1.0:
1. 迅雷(app、网页)
2. 115(app、脚本)
version 1.2:
新增:
3. 袋鼠下载
4. 闪电下载
119050b: 增加「磁力离线」快捷指令,支持热更新。 by zZPiglet
version 1.0:
1. 迅雷(app、网页)
2. 115(app、脚本)
version 1.2:
新增:
3. 袋鼠下载
4. 闪电下载
GitHub
Comparing 83ce23c34e28...119050b00dea · zZPiglet/Task
Some Scripts. Contribute to zZPiglet/Task development by creating an account on GitHub.
❤1
🔨 2 new commits to Task:master:
7e3244d: lite 版修改通知排版,感谢 @vopacct by zZPiglet
a336acf: "达美乐比萨"微信公众号-有奖游戏,半自动,测试。 by zZPiglet
7e3244d: lite 版修改通知排版,感谢 @vopacct by zZPiglet
a336acf: "达美乐比萨"微信公众号-有奖游戏,半自动,测试。 by zZPiglet
GitHub
Comparing 89bce8b317e0...45610e6900c9 · zZPiglet/Task
Some Scripts. Contribute to zZPiglet/Task development by creating an account on GitHub.
🔨 1 new commit to Task:master:
caa319b: "热更新示例"快捷指令,方便以后复制写新捷径。 by zZPiglet
注意更改:
1. 获取 URL 内容中的 URL,URL 内容应为 JSON 格式 {"version":"版本号","link":"workflow://shortcuts/捷径号"}
2. 通知标题
caa319b: "热更新示例"快捷指令,方便以后复制写新捷径。 by zZPiglet
注意更改:
1. 获取 URL 内容中的 URL,URL 内容应为 JSON 格式 {"version":"版本号","link":"workflow://shortcuts/捷径号"}
2. 通知标题
GitHub
Comparing 8fb14d14d057...caa319bb375d · zZPiglet/Task
Some Scripts. Contribute to zZPiglet/Task development by creating an account on GitHub.
Forwarded from Cool Scripts (zZPiglet)
This media is not supported in your browser
VIEW IN TELEGRAM
#QX #Loon #Surge
达美乐
"达美乐比萨" 微信公众号 "优惠|咨询" - "有奖游戏" 半自动获取奖励。(省略玩游戏一步)
使用方法:
1️⃣ 请先按脚本开头进行配置,进入微信公众号"达美乐比萨" - "优惠|咨询" - "有奖游戏",正常游戏一次并获取验证码,若弹出"首次写入 Domino RequestBody 成功"即可正常食用。
2️⃣ 运行前请先在 BoxJs 中设置自己使用的 BoxJs 地址,请勿填写后面"/"及之后内容,否则无法正确跳转。(如 https://boxjs.com 或 https://8.8.8.8 或 https://1.1.1.1 或 https://127.0.0.1:9999)
3️⃣ 到 cron 设定时间自动签到时,若弹出"达美乐 - 点击填写验证码"表示成功,请点击通知跳转至 BoxJs 填写验证码并保存设置,再手动执行「获取奖励」脚本即可。
4️⃣ 此奖励每日可获取 3 次。可设定 3 次 cron,亦可设置 1 次,进入 BoxJs 之后手动重复两轮。(请把握 3 轮之间间隔时间,过快请求会返回错误)
⚠️ 验证码有效期为 10 分钟,请设置 cron 时间为使用手机的时间,以免错过。
奖励可在 Domino_getGift.js 的 gift 参数中查看。测试阶段本人已获得一次二等奖一次四等奖以及若干次五等奖。五等奖为参与奖,人人有份。
脚本地址
Box订阅和仓库见置顶🔝
开发不易,点个✨吧~
如果发现有bug,欢迎反馈。
🔔频道: Cool Scripts
🧑🏻💻作者: @zZPiglet
达美乐
"达美乐比萨" 微信公众号 "优惠|咨询" - "有奖游戏" 半自动获取奖励。(省略玩游戏一步)
使用方法:
1️⃣ 请先按脚本开头进行配置,进入微信公众号"达美乐比萨" - "优惠|咨询" - "有奖游戏",正常游戏一次并获取验证码,若弹出"首次写入 Domino RequestBody 成功"即可正常食用。
2️⃣ 运行前请先在 BoxJs 中设置自己使用的 BoxJs 地址,请勿填写后面"/"及之后内容,否则无法正确跳转。(如 https://boxjs.com 或 https://8.8.8.8 或 https://1.1.1.1 或 https://127.0.0.1:9999)
3️⃣ 到 cron 设定时间自动签到时,若弹出"达美乐 - 点击填写验证码"表示成功,请点击通知跳转至 BoxJs 填写验证码并保存设置,再手动执行「获取奖励」脚本即可。
4️⃣ 此奖励每日可获取 3 次。可设定 3 次 cron,亦可设置 1 次,进入 BoxJs 之后手动重复两轮。(请把握 3 轮之间间隔时间,过快请求会返回错误)
⚠️ 验证码有效期为 10 分钟,请设置 cron 时间为使用手机的时间,以免错过。
奖励可在 Domino_getGift.js 的 gift 参数中查看。测试阶段本人已获得一次二等奖一次四等奖以及若干次五等奖。五等奖为参与奖,人人有份。
脚本地址
Box订阅和仓库见置顶🔝
开发不易,点个✨吧~
如果发现有bug,欢迎反馈。
🔔频道: Cool Scripts
🧑🏻💻作者: @zZPiglet
“豆瓣·电影日历”服务器端开始完全鉴权 _ts 及 _sig
https://frodo.douban.com/api/v2/calendar/today?apikey=这里是 BoxJs 里填写的 APIKey&_ts=这里是十位时间戳&_sig=路径及时间戳加密后的鉴权(注意要 URLencode)&date=这里是日期YYYY-MM-DD&alt=json
应该是个HmacSHA1,其中 _ts 是十位时间戳 _sig 是通过 HmacSHA1 加密后的数据
可参考项目:
1. https://github.com/zhanghai/Douya
2. https://zhuanlan.zhihu.com/p/57658056
最近有点忙 有时间研究一下加进去
有大佬解决了可以 pr,非常感谢!
https://frodo.douban.com/api/v2/calendar/today?apikey=这里是 BoxJs 里填写的 APIKey&_ts=这里是十位时间戳&_sig=路径及时间戳加密后的鉴权(注意要 URLencode)&date=这里是日期YYYY-MM-DD&alt=json
应该是个HmacSHA1,其中 _ts 是十位时间戳 _sig 是通过 HmacSHA1 加密后的数据
可参考项目:
1. https://github.com/zhanghai/Douya
2. https://zhuanlan.zhihu.com/p/57658056
最近有点忙 有时间研究一下加进去
有大佬解决了可以 pr,非常感谢!
GitHub
GitHub - zhanghai/Douya: 开源的 Material Design 豆瓣客户端(A Material Design app for douban.com)
开源的 Material Design 豆瓣客户端(A Material Design app for douban.com) - zhanghai/Douya
// 以下为 "一点万象" /member/sign/index 中参数加密得到 sign。希望 /member/sign 类似(区别:多一个 deviceParams, date 为 YYYY-MM-DD hh:mm:ss)。
let time = new Date().getTime()
let data = {
token: token,
date: YYYY-MM-DD,
t: time,
mallNo: 商场编号,
platform: 'iOS',
positionType: 4, //广告类型
}
let obj = {
imei: '6175619627',
platform:'h5',
appVersion:'3.12.0',
// mallNo: '0202A003',
osVersion:'11.4',
timestamp: time,
}
function combin(target,source){
for (var obj in source) {
target[obj] = source[obj];
}
return target;
}
let c = combin(data,obj)
function getObjectKeys(o){
return Object.keys(o).sort();
}
function paramsToStringAndAddkey(options,addKry){
var arr = getObjectKeys(options);
var str = '';
for(var i=0,len=arr.length;i<len;i++){
if( options[arr[i]] || options[arr[i]] == 0 || options[arr[i]] == ''){
str += arr[i] + '='+options[arr[i]]+'&';
}
}
if(addKry){
return str+'c5b3db571b4e449a8da0acc9' + '9e14fe4b'; //前者为 APP_ID 后者为 S_KEY
}else{
return str.replace(/&$/,'')
}
}
let p = paramsToStringAndAddkey(c,true)
//console.log(p)
let sign = hex_md5(p)
console.log(sign)
let time = new Date().getTime()
let data = {
token: token,
date: YYYY-MM-DD,
t: time,
mallNo: 商场编号,
platform: 'iOS',
positionType: 4, //广告类型
}
let obj = {
imei: '6175619627',
platform:'h5',
appVersion:'3.12.0',
// mallNo: '0202A003',
osVersion:'11.4',
timestamp: time,
}
function combin(target,source){
for (var obj in source) {
target[obj] = source[obj];
}
return target;
}
let c = combin(data,obj)
function getObjectKeys(o){
return Object.keys(o).sort();
}
function paramsToStringAndAddkey(options,addKry){
var arr = getObjectKeys(options);
var str = '';
for(var i=0,len=arr.length;i<len;i++){
if( options[arr[i]] || options[arr[i]] == 0 || options[arr[i]] == ''){
str += arr[i] + '='+options[arr[i]]+'&';
}
}
if(addKry){
return str+'c5b3db571b4e449a8da0acc9' + '9e14fe4b'; //前者为 APP_ID 后者为 S_KEY
}else{
return str.replace(/&$/,'')
}
}
let p = paramsToStringAndAddkey(c,true)
//console.log(p)
let sign = hex_md5(p)
console.log(sign)
#todo_zZPiglet
1. 小黑盒新加密(1.3.121)及 qx 、surge 发出请求自带参数的问题(自带参数可以加hint、false)
2. 豆瓣·电影日历的_sig
3. 万象城app带deviceParams请求的sign加密
4. 欧可林每日免费一次抽奖
5. 达美乐里的记录域名换为 BoxJs 自带的记录域名提升无感无错体验(#boxjs_host)
6. 借用彭于晏的gist做共享aff
7. BoxJs 首页壁纸相关 task (@chavy_boxjs_userCfgs.bgimg)
8. 微博通知出错时不记录时间戳
9. chavy库rrtv增加随机观看以开启金宝箱、每周达标抽奖
10. 给 Sub-Store 增加 SSD 解析
最近较忙 可能要深度🐦一段时间 留以上内容防止遗忘 期间若有大佬修改或pr将非常感激!
3. 万象城app带deviceParams请求的sign加密
5. 达美乐里的记录域名换为 BoxJs 自带的记录域名提升无感无错体验(
6. 借用彭于晏的gist做共享aff
7. BoxJs 首页壁纸相关 task (@chavy_boxjs_userCfgs.bgimg)
最近较忙 可能要深度🐦一段时间 留以上内容防止遗忘 期间若有大佬修改或pr将非常感激!
❤1
Media is too big
VIEW IN TELEGRAM
摸🐟:
感谢 @chavyleung 及各位大佬开发的 BoxJs 项目!
感谢 @Orz_3 及 @xinian_x 等大佬的图标!
实在是太帅了!
动态背景来源:https://www.apple.com/jobs/global/media/acvideo/2020-index/us/2020USHero-HD-cc-us-2020_1280x720.mp4
频道:https://t.iss.one/chavyscripts
感谢 @chavyleung 及各位大佬开发的 BoxJs 项目!
感谢 @Orz_3 及 @xinian_x 等大佬的图标!
实在是太帅了!
动态背景来源:https://www.apple.com/jobs/global/media/acvideo/2020-index/us/2020USHero-HD-cc-us-2020_1280x720.mp4
频道:https://t.iss.one/chavyscripts
达美乐:
如正常使用脚本一段时间后出现报错 error {}
请重新进入“达美乐比萨”公众号,点击菜单“优惠|咨询”中的“有奖游戏”,进入界面后直接关闭再运行脚本即可。
看活动介绍此活动 9 月 13 日结束,这段时间较忙,之后如为新活动需重新适配的话请等待脚本更新。
如正常使用脚本一段时间后出现报错 error {}
请重新进入“达美乐比萨”公众号,点击菜单“优惠|咨询”中的“有奖游戏”,进入界面后直接关闭再运行脚本即可。
看活动介绍此活动 9 月 13 日结束,这段时间较忙,之后如为新活动需重新适配的话请等待脚本更新。
🔨 1 new commit to Task:master:
3bba9c3: 达美乐比萨更新为 0915 活动,请参考 README.md 使用。 by zZPiglet
- 2020 / 09 / 15
此版本活动无需每次输入验证码,首次活动绑定后即可。故此次为自动版本,请对 Domino_getGift.js 设置定时任务。
注意:此次更新需要更改定时任务脚本,且更改 hostname 及 rewrite 正则,重写脚本无需更改,理论上无需重新获取信息。
## 配置 (0915 活动,全自动)
### Quantumult X:
[task_local]
0 15 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getGift.js, tag=达美乐
[rewrite_local]
^https?:\/\/dominos\d{4}\.shjimang\.com\/Ajax\/GetSmsCode url script-request-body https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getSMS.js
### Surge 4.0+ & Loon:
[Script]
cron "0 15 * * *" script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getGift.js
http-request ^https?:\/\/dominos\d{4}\.shjimang\.com\/Ajax\/GetSmsCode requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getSMS.js
### All apps:
[mitm]
hostname = dominos*.shjimang.com
3bba9c3: 达美乐比萨更新为 0915 活动,请参考 README.md 使用。 by zZPiglet
- 2020 / 09 / 15
此版本活动无需每次输入验证码,首次活动绑定后即可。故此次为自动版本,请对 Domino_getGift.js 设置定时任务。
注意:此次更新需要更改定时任务脚本,且更改 hostname 及 rewrite 正则,重写脚本无需更改,理论上无需重新获取信息。
## 配置 (0915 活动,全自动)
### Quantumult X:
[task_local]
0 15 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getGift.js, tag=达美乐
[rewrite_local]
^https?:\/\/dominos\d{4}\.shjimang\.com\/Ajax\/GetSmsCode url script-request-body https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getSMS.js
### Surge 4.0+ & Loon:
[Script]
cron "0 15 * * *" script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getGift.js
http-request ^https?:\/\/dominos\d{4}\.shjimang\.com\/Ajax\/GetSmsCode requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Domino/Domino_getSMS.js
### All apps:
[mitm]
hostname = dominos*.shjimang.com
GitHub
Comparing 253d3c13e187...3bba9c3d2ab4 · zZPiglet/Task
Some Scripts. Contribute to zZPiglet/Task development by creating an account on GitHub.
🔨 1 new commit to Task:master:
b383ed7: 自用 Q-Search 新增指令 zgd,通过 https://zhao.pp.ua/ 查找 Google Drive 内容。 by zZPiglet
zhao PP 项目地址:https://github.com/gdtool/zhaopp
# 贡献资源
将
或者将共享链接更改为知道链接的任何人(不推荐)
然后告知作者(tg:@haopian 群组:@zhaopp)
最好在这里记录一下,方便大家查找 issues
b383ed7: 自用 Q-Search 新增指令 zgd,通过 https://zhao.pp.ua/ 查找 Google Drive 内容。 by zZPiglet
zhao PP 项目地址:https://github.com/gdtool/zhaopp
# 贡献资源
将
[email protected]加入你的团队盘;或者将共享链接更改为知道链接的任何人(不推荐)
然后告知作者(tg:@haopian 群组:@zhaopp)
最好在这里记录一下,方便大家查找 issues
GitHub
Comparing ee1f75132b42...b383ed7b2515 · zZPiglet/Task
Some Scripts. Contribute to zZPiglet/Task development by creating an account on GitHub.
zZPiglet
#todo_zZPiglet 1. 小黑盒新加密(1.3.121)及 qx 、surge 发出请求自带参数的问题(自带参数可以加hint、false) 2. 豆瓣·电影日历的_sig 3. 万象城app带deviceParams请求的sign加密 4. 欧可林每日免费一次抽奖 5. 达美乐里的记录域名换为 BoxJs 自带的记录域名提升无感无错体验(#boxjs_host) 6. 借用彭于晏的gist做共享aff 7. BoxJs 首页壁纸相关 task (@chavy_boxjs_userCfgs.bgimg)…
#todo_zZPiglet
1. 小黑盒新加密(1.3.125)
2. 豆瓣·电影日历的_sig
3. 万象城app带deviceParams请求的sign加密
4. 借用彭于晏的gist做共享aff
5. BoxJs 首页壁纸相关 task (@chavy_boxjs_userCfgs.bgimg)
6. 10010 重写(关键信息 ecs_token)
7. 115 新签到(有新加密)
1. 小黑盒新加密(1.3.125)
2. 豆瓣·电影日历的_sig
3. 万象城app带deviceParams请求的sign加密
4. 借用彭于晏的gist做共享aff
5. BoxJs 首页壁纸相关 task (@chavy_boxjs_userCfgs.bgimg)
6. 10010 重写(关键信息 ecs_token)
7. 115 新签到(有新加密)
115 新签到:
接口:https://proapi.115.com/ios/2.0/user/points_sign
post
body token=加密token&token_time=十位时间戳
cookie和以前一样
token=eh.a(new StringBuilder()+a.g()+"-Points_Sign@#115-"+v3)
v3 十位时间戳
a.g() 我猜是 115 号
(老版本是日期+115号+"space_token"最后md5)
外面一层eh.a还没细看,反编译出来的套了好几层
等一个有缘人
www.gda.wiki:9090
可下载一个好上手的反编译器,拖入安卓版 apk 即可。
enjoy yourself~
接口:https://proapi.115.com/ios/2.0/user/points_sign
post
body token=加密token&token_time=十位时间戳
cookie和以前一样
token=eh.a(new StringBuilder()+a.g()+"-Points_Sign@#115-"+v3)
v3 十位时间戳
a.g() 我猜是 115 号
(老版本是日期+115号+"space_token"最后md5)
外面一层eh.a还没细看,反编译出来的套了好几层
等一个有缘人
www.gda.wiki:9090
可下载一个好上手的反编译器,拖入安卓版 apk 即可。
enjoy yourself~
摸🐟:
在较早的时候脚本中捕获抛出错误时,直接输出 err,导致很多人问错误信息中的 [object Object] 是什么。之后更改为输出 JSON.stringify(err),确实解决了部分错误输出显示为 [object Object] 的问题,但造成了错误信息显示为 {} 的问题。
在 @evilbutcher 大佬最近一次 PR 及与大佬讨论中得知,部分错误信息改回输出 err 之后,即可正常显示(如:TypeError: null / undefined is not an object)。
于是转向 MDN 文档求助 JSON.stringify() 具体使用及注意事项,得到如下描述:
• 转换值如果有 toJSON() 方法,该方法定义什么值将被序列化。
• 非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。
• 布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。
• 对包含循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误。
• 所有以 symbol 为属性键的属性都会被完全忽略掉,即便
• Date 日期调用了 toJSON() 将其转换为了 string 字符串(同Date.toISOString()),因此会被当做字符串处理。
• NaN 和 Infinity 格式的数值及 null 都会被当做 null。
• 其他类型的对象,包括 Map/Set/WeakMap/WeakSet,仅会序列化可枚举的属性。
由此意识到是内置对象在序列化时会出现问题,因此需要单独解决。
最先想到的解决方式为:err = JSON.stringify(err) == "{}" ? err : JSON.stringify(err)
但此写法仅是表面解决问题,且不确定是否真的能涵盖所有可能的情况,故通过 Google 搜索关键字“内置错误 stringify”,得到一篇感觉可以解决此问题的文章:https://juejin.im/post/6844903944792047623
关键:
或:Error.prototype.toJSON = function(){return {message:this.message, stack:this.stack}}(但不建议,因为此方法在原型上作了修改)
由于本人没有系统学习,亦没认真学习 JavaScript,且看文档不仔细导致的此问题影响了脚本使用体验及脚本错误的快速定位,对此感到抱歉,同时感谢 @evilbutcher 大佬的点醒。后续会陆续修改脚本中此问题。
最后想说的是,写脚本的门槛其实很低,像我一样从完全没接触过到写下第一个很简陋的脚本,其实不会花费很多精力,所以大家完全可以自己尝试一下。基本就是看看已有的脚本是怎么写的,然后类似写一个最简单的脚本进行尝试,在此过程中遇到问题就去查文档或者问 Google。当然通过此方法写脚本很有可能就出现一些奇奇怪怪的错误,但是不用担心呀,总会有大佬帮你改正或和你探讨的,有精力的时候去学一些新东西又有什么不好呢。
(其实是最近太忙了想当一个愉快的鸽子🐦,所以催脚本的其实可以尝试一下自己写呀)
在较早的时候脚本中捕获抛出错误时,直接输出 err,导致很多人问错误信息中的 [object Object] 是什么。之后更改为输出 JSON.stringify(err),确实解决了部分错误输出显示为 [object Object] 的问题,但造成了错误信息显示为 {} 的问题。
在 @evilbutcher 大佬最近一次 PR 及与大佬讨论中得知,部分错误信息改回输出 err 之后,即可正常显示(如:TypeError: null / undefined is not an object)。
于是转向 MDN 文档求助 JSON.stringify() 具体使用及注意事项,得到如下描述:
JSON.stringify()将值转换为相应的JSON格式:• 转换值如果有 toJSON() 方法,该方法定义什么值将被序列化。
• 非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。
• 布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。
• undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。函数、undefined 被单独转换时,会返回 undefined,如JSON.stringify(function(){}) or JSON.stringify(undefined).• 对包含循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误。
• 所有以 symbol 为属性键的属性都会被完全忽略掉,即便
replacer 参数中强制指定包含了它们。• Date 日期调用了 toJSON() 将其转换为了 string 字符串(同Date.toISOString()),因此会被当做字符串处理。
• NaN 和 Infinity 格式的数值及 null 都会被当做 null。
• 其他类型的对象,包括 Map/Set/WeakMap/WeakSet,仅会序列化可枚举的属性。
由此意识到是内置对象在序列化时会出现问题,因此需要单独解决。
最先想到的解决方式为:err = JSON.stringify(err) == "{}" ? err : JSON.stringify(err)
但此写法仅是表面解决问题,且不确定是否真的能涵盖所有可能的情况,故通过 Google 搜索关键字“内置错误 stringify”,得到一篇感觉可以解决此问题的文章:https://juejin.im/post/6844903944792047623
关键:
JSON.stringify(err, Object.getOwnPropertyNames(err), 2)或:Error.prototype.toJSON = function(){return {message:this.message, stack:this.stack}}(但不建议,因为此方法在原型上作了修改)
由于本人没有系统学习,亦没认真学习 JavaScript,且看文档不仔细导致的此问题影响了脚本使用体验及脚本错误的快速定位,对此感到抱歉,同时感谢 @evilbutcher 大佬的点醒。后续会陆续修改脚本中此问题。
最后想说的是,写脚本的门槛其实很低,像我一样从完全没接触过到写下第一个很简陋的脚本,其实不会花费很多精力,所以大家完全可以自己尝试一下。基本就是看看已有的脚本是怎么写的,然后类似写一个最简单的脚本进行尝试,在此过程中遇到问题就去查文档或者问 Google。当然通过此方法写脚本很有可能就出现一些奇奇怪怪的错误,但是不用担心呀,总会有大佬帮你改正或和你探讨的,有精力的时候去学一些新东西又有什么不好呢。
(其实是最近太忙了想当一个愉快的鸽子🐦,所以催脚本的其实可以尝试一下自己写呀)
🔨 1 new commit to Task:master:
506da10: 饿了么遗忘的吃货豆自动领取。 by zZPiglet
(直接改了改滴滴出行遗忘的福利金,几乎无工作量)
(之前的 todo 依旧在🐦)
506da10: 饿了么遗忘的吃货豆自动领取。 by zZPiglet
(直接改了改滴滴出行遗忘的福利金,几乎无工作量)
(之前的 todo 依旧在🐦)
GitHub
Comparing 24fecf4f0178...506da10ca2c3 · zZPiglet/Task
Some Scripts. Contribute to zZPiglet/Task development by creating an account on GitHub.
🔨 1 new commit to Task:master:
17f21d3: 滴滴出行金融服务天天有奖 by zZPiglet
鉴于投票结果整合/独立不相上下,先放出独立版,整合版还在🐦
遇报错请在评论区反馈
17f21d3: 滴滴出行金融服务天天有奖 by zZPiglet
鉴于投票结果整合/独立不相上下,先放出独立版,整合版还在🐦
遇报错请在评论区反馈
GitHub
Comparing 506da10ca2c3...17f21d3a2dd0 · zZPiglet/Task
Some Scripts. Contribute to zZPiglet/Task development by creating an account on GitHub.