Merge branch 'master' into patch-1
This commit is contained in:
@@ -51,9 +51,11 @@ const USER_AGENTS = [
|
||||
"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.14 (KHTML, like Gecko) Chrome/24.0.1292.0 Safari/537.14",
|
||||
"JD4iPhone/167490 (iPhone; iOS 14.3; Scale/2.00)",
|
||||
"JD4iPhone/9.3.5 CFNetwork/1209 Darwin/20.2.0",
|
||||
"JD4iPhone/167515 (iPhone; iOS 14.3; Scale/3.00)",
|
||||
"jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0",
|
||||
"jdapp;android;9.3.5;10;2346663656561603-4353564623932316;network/wifi;model/ONEPLUS A5010;addressid/138709979;aid/2dfceea045ed292a;oaid/;osVer/29;appBuild/86390;partner/jingdong;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36",
|
||||
"jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1",
|
||||
"jdapp;iPhone;9.3.5;14.2.1;5675c7df49de13aeca1e98def1d789a3cf4c84a6;network/4g;ADID/D859DCC0-BC84-43ED-BD00-8062B9EE7EA6;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone13,3;addressid/10567892;supportBestPay/0;appBuild/167515;jdSupportDarkMode/0;pv/2783.6;apprpd/CollectCash_Main;ref/JDCashRewardHomeViewController;psq/0;ads/;psn/5675c7df49de13aeca1e98def1d789a3cf4c84a6|5166;jdv/0|iosapp|t_335139774|appshare|Wxfriends|1610942682431|1610942686;adk/;app_device/IOS;pap/JA2015_311210|9.3.5|IOS 14.2.1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/",
|
||||
]
|
||||
/**
|
||||
* 生成随机数字
|
||||
|
@@ -1,3 +1,4 @@
|
||||

|
||||
### Usage
|
||||
```diff
|
||||
+ 2021-01-03更新 增加 CUSTOM_SHELL_FILE 参数配置执行自定义shell脚本
|
||||
|
@@ -11,7 +11,7 @@ fi
|
||||
mergedListFile="/scripts/docker/merged_list_file.sh"
|
||||
echo "合并后定时任务文件路径为 ${mergedListFile}"
|
||||
|
||||
echo "第3步将默认定时任务列表添加到并后定时任务文件..."
|
||||
echo "第1步将默认定时任务列表添加到并后定时任务文件..."
|
||||
cat $defaultListFile >$mergedListFile
|
||||
|
||||
echo "第2步判断是否存在自定义任务任务列表并追加..."
|
||||
@@ -35,18 +35,19 @@ else
|
||||
echo "当前只使用了默认定时任务文件 $DEFAULT_LIST_FILE ..."
|
||||
fi
|
||||
|
||||
##可能存在旧版crontab里面有default_task.sh任务有就直接删除,否则可能会任务重复
|
||||
sed -i "/default_task.sh/d" $mergedListFile
|
||||
|
||||
echo "第3步判断是否配置了默认脚本更新任务..."
|
||||
if [ $(grep -c "default_task.sh" $mergedListFile) -eq '0' ]; then
|
||||
if [ $(grep -c "docker_entrypoint.sh" $mergedListFile) -eq '0' ]; then
|
||||
echo "合并后的定时任务文件,未包含必须的默认定时任务,增加默认定时任务..."
|
||||
echo -e >>$mergedListFile
|
||||
echo "52 */1 * * * docker_entrypoint.sh >> /scripts/logs/default_task.log 2>&1" >>$mergedListFile
|
||||
else
|
||||
sed -i "/default_task.sh/d" $mergedListFile
|
||||
echo "#脚本追加默认定时任务" >>$mergedListFile
|
||||
echo "52 */1 * * * docker_entrypoint.sh >> /scripts/logs/default_task.log 2>&1" >>$mergedListFile
|
||||
echo "已配置默认脚本更新任务。"
|
||||
fi
|
||||
|
||||
echo "第5步判断是否配置了随即延迟参数..."
|
||||
echo "第4步判断是否配置了随即延迟参数..."
|
||||
if [ $RANDOM_DELAY_MAX ]; then
|
||||
if [ $RANDOM_DELAY_MAX -ge 1 ]; then
|
||||
echo "已设置随机延迟为 $RANDOM_DELAY_MAX , 设置延迟任务中..."
|
||||
@@ -56,7 +57,7 @@ else
|
||||
echo "未配置随即延迟对应的环境变量,故不设置延迟任务..."
|
||||
fi
|
||||
|
||||
echo "第6步判断是否配置自定义shell执行脚本..."
|
||||
echo "第5步判断是否配置自定义shell执行脚本..."
|
||||
if [ 0"$CUSTOM_SHELL_FILE" = "0" ]; then
|
||||
echo "未配置自定shell脚本文件,跳过执行。"
|
||||
else
|
||||
@@ -79,14 +80,14 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "第7步增加 |ts 任务日志输出时间戳..."
|
||||
echo "第6步增加 |ts 任务日志输出时间戳..."
|
||||
sed -i "/\( ts\| |ts\|| ts\)/!s/>>/\|ts >>/g" $mergedListFile
|
||||
|
||||
echo "第8步执行proc_file.sh脚本任务..."
|
||||
echo "第7步执行proc_file.sh脚本任务..."
|
||||
sh -x /scripts/docker/proc_file.sh
|
||||
|
||||
echo "第9步加载最新的定时任务文件..."
|
||||
echo "第8步加载最新的定时任务文件..."
|
||||
crontab $mergedListFile
|
||||
|
||||
echo "第10步将仓库的docker_entrypoint.sh脚本更新至系统/usr/local/bin/docker_entrypoint.sh内..."
|
||||
echo "第9步将仓库的docker_entrypoint.sh脚本更新至系统/usr/local/bin/docker_entrypoint.sh内..."
|
||||
cat /scripts/docker/docker_entrypoint.sh >/usr/local/bin/docker_entrypoint.sh
|
||||
|
@@ -11,7 +11,7 @@ cd /scripts
|
||||
git remote set-url origin $REPO_URL
|
||||
git reset --hard
|
||||
echo "git pull拉取最新代码..."
|
||||
git -C /scripts pull
|
||||
git -C /scripts pull --rebase
|
||||
echo "npm install 安装最新依赖"
|
||||
npm install --prefix /scripts
|
||||
|
||||
|
@@ -8,10 +8,10 @@
|
||||
|
||||
##### 京东隐私安全 环境变量
|
||||
|
||||
| Name | 归属 | 属性 | 说明 |
|
||||
| :---------------------: | :----------: | --------- | ------------------------------------------------------------ |
|
||||
| `JD_DEBUG` | 脚本打印log | 非必须 | 运行脚本时,是否显示log,默认显示。改成false表示不显示,注重隐私的人可以在设置secret -> `Name:JD_DEBUG,Value:false` |
|
||||
| `JD_USER_AGENT` | 京东 | 非必须 | 自定义此库里京东系列脚本的UserAgent,不懂不知不会UserAgent的请不要随意填写内容。如需使用此功能建议填写京东APP的UA |
|
||||
| Name | 归属 | 属性 | 默认值 | 说明 |
|
||||
| :---------------------: | :----------: | --------- | ------ | ------------------------------------------------------------ |
|
||||
| `JD_DEBUG` | 脚本打印log | 非必须 | true | 运行脚本时,是否显示log,默认显示。改成false表示不显示,注重隐私的人可以在设置secret -> `Name:JD_DEBUG,Value:false` |
|
||||
| `JD_USER_AGENT` | 京东 | 非必须 | | 自定义此库里京东系列脚本的UserAgent,不懂不知不会UserAgent的请不要随意填写内容。如需使用此功能建议填写京东APP的UA |
|
||||
|
||||
##### 推送通知环境变量(目前提供`微信server酱`、`pushplus(推送加)`、`iOS Bark APP`、`telegram机器人`、`钉钉机器人`、`企业微信机器人`、`iGot`、`QQ酷推`等通知方式)
|
||||
|
||||
@@ -35,52 +35,52 @@
|
||||
|
||||
##### 互助码类环境变量
|
||||
|
||||
| Name | 归属 | 属性 | 说明 |
|
||||
| --------------------------- | ------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `FRUITSHARECODES` | 东东农场互助码 | 非必须 | 填写规则请看[jdFruitShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdFruitShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `PETSHARECODES` | 东东萌宠互助码 | 非必须 | 填写规则请看[jdPetShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdPetShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `PLANT_BEAN_SHARECODES` | 种豆得豆互助码 | 非必须 | 填写规则请看[jdPlantBeanShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdPlantBeanShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `SUPERMARKET_SHARECODES` | 东东超市商圈互助码 | 非必须 | 填写规则请看[jdSuperMarketShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdSuperMarketShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `DDFACTORY_SHARECODES` | 东东工厂互助码 | 非必须 | 填写规则请看[jdFactoryShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdFactoryShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `DREAM_FACTORY_SHARE_CODES` | 京喜工厂互助码 | 非必须 | 填写规则请看[jdDreamFactoryShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdDreamFactoryShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JDZZ_SHARECODES` | 京东赚赚互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JDJOY_SHARECODES` | 疯狂的JOY互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `BOOKSHOP_SHARECODES` | 京东书店互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JD_CASH_SHARECODES` | 签到领现金互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JXNC_SHARECODES` | 京喜农场互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JDNIAN_SHARECODES` | 炸年兽互助码 | 非必须 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| Name | 归属 | 属性 | 需要助力次数/提供助力次数 | 说明 |
|
||||
| --------------------------- | ------------------ | ------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `FRUITSHARECODES` | 东东农场互助码 | 非必须 | 5/4 | 填写规则请看[jdFruitShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdFruitShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `PETSHARECODES` | 东东萌宠互助码 | 非必须 | 5/5 | 填写规则请看[jdPetShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdPetShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `PLANT_BEAN_SHARECODES` | 种豆得豆互助码 | 非必须 | 9/3 | 填写规则请看[jdPlantBeanShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdPlantBeanShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `SUPERMARKET_SHARECODES` | 东东超市商圈互助码 | 非必须 | / | 填写规则请看[jdSuperMarketShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdSuperMarketShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `DDFACTORY_SHARECODES` | 东东工厂互助码 | 非必须 | 5/3 | 填写规则请看[jdFactoryShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdFactoryShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `DREAM_FACTORY_SHARE_CODES` | 京喜工厂互助码 | 非必须 | 不固定/3 | 填写规则请看[jdDreamFactoryShareCodes.js](https://github.com/LXK9301/jd_scripts/blob/master/jdDreamFactoryShareCodes.js)或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JDZZ_SHARECODES` | 京东赚赚互助码 | 非必须 | 5/2 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JDJOY_SHARECODES` | 疯狂的JOY互助码 | 非必须 | 6/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `BOOKSHOP_SHARECODES` | 京东书店互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JD_CASH_SHARECODES` | 签到领现金互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JXNC_SHARECODES` | 京喜农场互助码 | 非必须 | / | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
| `JDNIAN_SHARECODES` | 炸年兽互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
|
||||
|
||||
##### 控制脚本功能环境变量
|
||||
|
||||
| Name | 归属 | 属性 | 说明 |
|
||||
| ---------------------------- | --------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `JD_BEAN_STOP` | 京东 | 非必须 | `jd_bean_sign.js`自定义延迟签到,单位毫秒.默认分批并发无延迟.延迟作用于每个签到接口,如填入延迟则切换顺序签到(耗时较长),如需填写建议输入数字`1`,详见[此处说明](https://github.com/NobyDa/Script/blob/master/JD-DailyBonus/JD_DailyBonus.js#L93) |
|
||||
| `JD_BEAN_SIGN_STOP_NOTIFY` | 京东 | 非必须 | `jd_bean_sign.js`脚本运行后不推送签到结果通知,默认推送,填`true`表示不发送通知 |
|
||||
| `JD_BEAN_SIGN_NOTIFY_SIMPLE` | 京东 | 非必须 | `jd_bean_sign.js`脚本运行后推送签到结果简洁版通知,默认推送全部签到结果,填`true`表示推送简洁通知,[效果图](./icon/bean_sign_simple.jpg) |
|
||||
| `PET_NOTIFY_CONTROL` | 东东萌宠推送开关 | 非必须 | 控制京东萌宠是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `FRUIT_NOTIFY_CONTROL` | 东东农场推送开关 | 非必须 | 控制京东农场是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `JD_JOY_REWARD_NOTIFY` | 宠汪汪兑换京豆推送开关 | 非必须 | 控制`jd_joy_reward.js`脚本是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `JD_818_SHAREID_NOTIFY` | 京东818互助码通知开关 | 非必须 | 控制`jd_818.js`脚本是否在获取互助码后通知,`true`为是(发送推送通知消息),`false`为否(即:不发送推送通知消息) |
|
||||
| `JOY_FEED_COUNT` | 宠汪汪喂食数量 | 非必须 | 控制`jd_joy_feedPets.js`脚本喂食数量,可以填的数字10,20,40,80,其他数字不可. |
|
||||
| `JOY_HELP_FEED` | 宠汪汪帮好友喂食 | 非必须 | 控制`jd_joy_steal.js`脚本是否给好友喂食,`false`为否,`true`为是(给好友喂食) |
|
||||
| `JOY_RUN_FLAG` | 宠汪汪是否赛跑 | 非必须 | 控制`jd_joy.js`脚本是否参加赛跑(默认参加双人赛跑),`false`为否,`true`为是,脚本默认是`true` |
|
||||
| `JOY_TEAM_LEVEL` | 宠汪汪参加什么级别的赛跑 | 非必须 | 控制`jd_joy.js`脚本参加几人的赛跑,可选数字为`2`,`10`,`50`,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛(注:此项功能在`JOY_RUN_FLAG`为true的时候才生效),如若想设置不同账号参加不同类别的比赛则用&区分即可(如下三个账号:`2&10&50`) |
|
||||
| `JD_JOY_REWARD_NAME` | 宠汪汪积分兑换多少京豆 | 非必须 | 目前可填值为`20`或者`500`,脚本默认`20`,`0`表示不兑换京豆 |
|
||||
| `MARKET_COIN_TO_BEANS` | 京小超兑换京豆数量 | 非必须 | 控制`jd_blueCoin.js`兑换京豆数量,可输入值为`20`或者`1000`的数字或者其他商品的名称,例如`碧浪洗衣凝珠` |
|
||||
| `MARKET_REWARD_NOTIFY` | 京小超兑换奖品推送开关 | 非必须 | 控制`jd_blueCoin.js`兑换奖品成功后是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `SUPERMARKET_UPGRADE` | 京小超自动升级 | 非必须 | 自动升级,顺序:解锁升级商品、升级货架,`true`表示自动升级,`false`表示关闭自动升级 |
|
||||
| `BUSINESS_CIRCLE_JUMP` | 京小超自动更换商圈 | 非必须 | 小于对方300热力值自动更换商圈队伍,`true`表示运行,`false`表示禁止 |
|
||||
| `SUPERMARKET_LOTTERY` | 京小超抽奖 | 非必须 | 每天运行脚本是否使用金币去抽奖,`true`表示抽奖,`false`表示不抽奖 |
|
||||
| `FRUIT_BEAN_CARD` | 农场使用水滴换豆卡 | 非必须 | 农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),`true`表示换豆(不浇水),`false`表示不换豆(继续浇水),脚本默认是浇水 |
|
||||
| `UN_SUBSCRIBES` | jd_unsubscribe.js | 非必须 | 共四个参数,换行隔开.四个参数分别表示`取关商品数量`,`取关店铺数量`,`遇到此商品不再进行取关`,`遇到此店铺不再进行取关`,[具体使用往下看](#取关店铺secret的说明) |
|
||||
| `UN_BIND_CARD_NUM` | jd_unbind.js | 非必须 | 注销京东已开的店铺会员,不是注销京东plus会员,个别店铺无法注销。此参数控制每次运行脚本时注销多少个店铺会员,默认200。 |
|
||||
| `UN_BIND_STOP_CARD` | jd_unbind.js | 非必须 | 注销京东已开的店铺会员,不是注销京东plus会员,个别店铺无法注销。遇到此参数设定的会员卡则跳过不注销,多个会员卡之间以`&`分隔,默认值"京东PLUS会员"。 |
|
||||
| `JDJOY_HELPSELF` | 疯狂的JOY | 非必须 | 疯狂的JOY循环助力,`true`表示循环助力,`false`表示不循环助力,默认不开启循环助力。 |
|
||||
| `JDJOY_APPLYJDBEAN` | 疯狂的JOY | 非必须 | 疯狂的JOY京豆兑换,目前最小值为2000京豆(详情请查看活动页面-提现京豆),默认数字`0`不开启京豆兑换。 |
|
||||
| `BUY_JOY_LEVEL` | 疯狂的JOY | 非必须 | 疯狂的JOY自动购买什么等级的JOY |
|
||||
| `MONEY_TREE_SELL_FRUIT` | 摇钱树是否卖出金果 | 非必须 | 控制摇钱树脚本是否自动卖出金果兑换成金币,`true`卖出,`false`不卖出,默认`false` |
|
||||
| `FACTORAY_WANTPRODUCT_NAME` | 东东工厂心仪商品 | 非必须 | 提供心仪商品名称(请尽量填写完整和别的商品有区分度),达到条件后兑换,如不提供则会兑换当前所选商品 |
|
||||
| `JXNCTOKENS` | 京喜农场TOKEN | 非必须 | 每个账号 token 是一个 json,示例:{"farm_jstoken":"749a90f871adsfads8ffda7bf3b1576760","timestamp":"1610165423873","phoneid":"42c7e3dadfadsfdsaac-18f0e4f4a0cf"},多账单间使用`&`或换行分开。 |
|
||||
| Name | 归属 | 属性 | 默认值 | 说明 |
|
||||
| ---------------------------- | --------------------------- | ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `JD_BEAN_STOP` | 京东 | 非必须 | 0 | `jd_bean_sign.js`自定义延迟签到,单位毫秒.默认分批并发无延迟.延迟作用于每个签到接口,如填入延迟则切换顺序签到(耗时较长),如需填写建议输入数字`1`,详见[此处说明](https://github.com/NobyDa/Script/blob/master/JD-DailyBonus/JD_DailyBonus.js#L93) |
|
||||
| `JD_BEAN_SIGN_STOP_NOTIFY` | 京东 | 非必须 | false | `jd_bean_sign.js`脚本运行后不推送签到结果通知,默认推送,填`true`表示不发送通知 |
|
||||
| `JD_BEAN_SIGN_NOTIFY_SIMPLE` | 京东 | 非必须 | false | `jd_bean_sign.js`脚本运行后推送签到结果简洁版通知,默认推送全部签到结果,填`true`表示推送简洁通知,[效果图](./icon/bean_sign_simple.jpg) |
|
||||
| `PET_NOTIFY_CONTROL` | 东东萌宠推送开关 | 非必须 | false | 控制京东萌宠是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `FRUIT_NOTIFY_CONTROL` | 东东农场推送开关 | 非必须 | false | 控制京东农场是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `JD_JOY_REWARD_NOTIFY` | 宠汪汪兑换京豆推送开关 | 非必须 | false | 控制`jd_joy_reward.js`脚本是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `JD_818_SHAREID_NOTIFY` | 京东818互助码通知开关 | 非必须 | | 控制`jd_818.js`脚本是否在获取互助码后通知,`true`为是(发送推送通知消息),`false`为否(即:不发送推送通知消息) |
|
||||
| `JOY_FEED_COUNT` | 宠汪汪喂食数量 | 非必须 | 10 | 控制`jd_joy_feedPets.js`脚本喂食数量,可以填的数字10,20,40,80,其他数字不可. |
|
||||
| `JOY_HELP_FEED` | 宠汪汪帮好友喂食 | 非必须 | false | 控制`jd_joy_steal.js`脚本是否给好友喂食,`false`为否,`true`为是(给好友喂食) |
|
||||
| `JOY_RUN_FLAG` | 宠汪汪是否赛跑 | 非必须 | true | 控制`jd_joy.js`脚本是否参加赛跑(默认参加双人赛跑),`false`为否,`true`为是,脚本默认是`true` |
|
||||
| `JOY_TEAM_LEVEL` | 宠汪汪参加什么级别的赛跑 | 非必须 | 2 | 控制`jd_joy.js`脚本参加几人的赛跑,可选数字为`2`,`10`,`50`,其中2代表参加双人PK赛,10代表参加10人突围赛,50代表参加50人挑战赛(注:此项功能在`JOY_RUN_FLAG`为true的时候才生效),如若想设置不同账号参加不同类别的比赛则用&区分即可(如下三个账号:`2&10&50`) |
|
||||
| `JD_JOY_REWARD_NAME` | 宠汪汪积分兑换多少京豆 | 非必须 | 20 | 目前可填值为`20`或者`500`,脚本默认`20`,`0`表示不兑换京豆 |
|
||||
| `MARKET_COIN_TO_BEANS` | 京小超兑换京豆数量 | 非必须 | 20 | 控制`jd_blueCoin.js`兑换京豆数量,可输入值为`20`或者`1000`的数字或者其他商品的名称,例如`碧浪洗衣凝珠` |
|
||||
| `MARKET_REWARD_NOTIFY` | 京小超兑换奖品推送开关 | 非必须 | false | 控制`jd_blueCoin.js`兑换奖品成功后是否静默运行,`false`为否(发送推送通知消息),`true`为是(即:不发送推送通知消息) |
|
||||
| `SUPERMARKET_UPGRADE` | 京小超自动升级 | 非必须 | true | 自动升级,顺序:解锁升级商品、升级货架,`true`表示自动升级,`false`表示关闭自动升级 |
|
||||
| `BUSINESS_CIRCLE_JUMP` | 京小超自动更换商圈 | 非必须 | true | 小于对方300热力值自动更换商圈队伍,`true`表示运行,`false`表示禁止 |
|
||||
| `SUPERMARKET_LOTTERY` | 京小超抽奖 | 非必须 | false | 每天运行脚本是否使用金币去抽奖,`true`表示抽奖,`false`表示不抽奖 |
|
||||
| `FRUIT_BEAN_CARD` | 农场使用水滴换豆卡 | 非必须 | false | 农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),`true`表示换豆(不浇水),`false`表示不换豆(继续浇水),脚本默认是浇水 |
|
||||
| `UN_SUBSCRIBES` | jd_unsubscribe.js | 非必须 | | 共四个参数,换行隔开.四个参数分别表示`取关商品数量`,`取关店铺数量`,`遇到此商品不再进行取关`,`遇到此店铺不再进行取关`,[具体使用往下看](#取关店铺secret的说明) |
|
||||
| `UN_BIND_CARD_NUM` | jd_unbind.js | 非必须 | 200 | 注销京东已开的店铺会员,不是注销京东plus会员,个别店铺无法注销。此参数控制每次运行脚本时注销多少个店铺会员,默认200。 |
|
||||
| `UN_BIND_STOP_CARD` | jd_unbind.js | 非必须 | 京东PLUS会员 | 注销京东已开的店铺会员,不是注销京东plus会员,个别店铺无法注销。遇到此参数设定的会员卡则跳过不注销,多个会员卡之间以`&`分隔,默认值"京东PLUS会员"。 |
|
||||
| `JDJOY_HELPSELF` | 疯狂的JOY | 非必须 | false | 疯狂的JOY循环助力,`true`表示循环助力,`false`表示不循环助力,默认不开启循环助力。 |
|
||||
| `JDJOY_APPLYJDBEAN` | 疯狂的JOY | 非必须 | 0 | 疯狂的JOY京豆兑换,目前最小值为2000京豆(详情请查看活动页面-提现京豆),默认数字`0`不开启京豆兑换。 |
|
||||
| `BUY_JOY_LEVEL` | 疯狂的JOY | 非必须 | | 疯狂的JOY自动购买什么等级的JOY |
|
||||
| `MONEY_TREE_SELL_FRUIT` | 摇钱树是否卖出金果 | 非必须 | false | 控制摇钱树脚本是否自动卖出金果兑换成金币,`true`卖出,`false`不卖出,默认`false` |
|
||||
| `FACTORAY_WANTPRODUCT_NAME` | 东东工厂心仪商品 | 非必须 | | 提供心仪商品名称(请尽量填写完整和别的商品有区分度),达到条件后兑换,如不提供则会兑换当前所选商品 |
|
||||
| `JXNCTOKENS` | 京喜农场TOKEN | 非必须 | | 每个账号 token 是一个 json,示例:{"farm_jstoken":"749a90f871adsfads8ffda7bf3b1576760","timestamp":"1610165423873","phoneid":"42c7e3dadfadsfdsaac-18f0e4f4a0cf"},多账单间使用`&`或换行分开。 |
|
||||
|
||||
##### 互助码的填写规则
|
||||
|
||||
|
@@ -253,7 +253,7 @@ async function helpFriendsFeed() {
|
||||
function getFriends(currentPage = '1') {
|
||||
return new Promise(resolve => {
|
||||
const options = {
|
||||
url: `${JD_API_HOST}/getFriends?itemsPerPage=20¤tPage=${currentPage}`,
|
||||
url: `${JD_API_HOST}/getFriends?itemsPerPage=20¤tPage=${currentPage * 1}&reqSource=h5`,
|
||||
headers: {
|
||||
'Cookie': cookie,
|
||||
'reqSource': 'h5',
|
||||
@@ -264,7 +264,8 @@ function getFriends(currentPage = '1') {
|
||||
'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"),
|
||||
'Accept-Language': 'zh-cn',
|
||||
'Accept-Encoding': 'gzip, deflate, br',
|
||||
}
|
||||
},
|
||||
timeout: 10000
|
||||
}
|
||||
$.get(options, (err, resp, data) => {
|
||||
try {
|
||||
|
320
jd_nian.js
320
jd_nian.js
@@ -87,6 +87,8 @@ const inviteCodes = [
|
||||
async function jdNian() {
|
||||
await getHomeData()
|
||||
if(!$.secretp) return
|
||||
await map()
|
||||
await queryMaterials()
|
||||
await getTaskList()
|
||||
await $.wait(1000)
|
||||
await doTask()
|
||||
@@ -262,6 +264,11 @@ function getHomeData(info=false) {
|
||||
await raise()
|
||||
}
|
||||
}
|
||||
else{
|
||||
$.secretp = null
|
||||
console.log(`账号被风控,无法参与活动`)
|
||||
message += `账号被风控,无法参与活动\n`
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp);
|
||||
@@ -308,7 +315,7 @@ function collectProduceScore(taskId= "collectProducedCoin") {
|
||||
})
|
||||
})
|
||||
}
|
||||
function collectScore(taskId,itemId,actionType,inviteId) {
|
||||
function collectScore(taskId,itemId,actionType=null,inviteId=null,shopSign=null) {
|
||||
let temp = {
|
||||
"taskId": taskId,
|
||||
"rnd": getRnd(),
|
||||
@@ -318,6 +325,7 @@ function collectScore(taskId,itemId,actionType,inviteId) {
|
||||
if(itemId) temp['itemId'] = itemId
|
||||
if(actionType) temp['actionType'] = actionType
|
||||
if(inviteId) temp['inviteId'] = inviteId
|
||||
if(shopSign) temp['shopSign'] = shopSign
|
||||
const extraData = {
|
||||
"jj": 6,
|
||||
"buttonid": "jmdd-react-smash_0",
|
||||
@@ -331,6 +339,7 @@ function collectScore(taskId,itemId,actionType,inviteId) {
|
||||
}
|
||||
if(actionType) body['actionType'] = actionType
|
||||
if(inviteId) body['inviteId'] = inviteId
|
||||
if(shopSign) body['shopSign'] = shopSign
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_collectScore", body, "nian_collectScore"), async (err, resp, data) => {
|
||||
try {
|
||||
@@ -342,7 +351,7 @@ function collectScore(taskId,itemId,actionType,inviteId) {
|
||||
data = JSON.parse(data);
|
||||
if (data.data.bizCode === 0) {
|
||||
if(data.data.result.score)
|
||||
console.log(`任务完成,获得${data.data.result.score}爆竹`)
|
||||
console.log(`任务完成,获得${data.data.result.score}爆竹🧨`)
|
||||
else if(data.data.result.maxAssistTimes) {
|
||||
console.log(`助力好友成功`)
|
||||
} else{
|
||||
@@ -482,6 +491,311 @@ function getFriendData(inviteId) {
|
||||
})
|
||||
})
|
||||
}
|
||||
function map() {
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_myMap", {}, "nian_myMap"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
if (data.data.bizCode === 0) {
|
||||
let msg = '当前已开启的地图:'
|
||||
for(let vo of data.data.result.monsterInfoList){
|
||||
if(vo.curLevel) msg+= vo.name +' '
|
||||
}
|
||||
console.log(msg)
|
||||
// $.userInfo = data.data.result.userInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function queryMaterials() {
|
||||
let body = {"qryParam":"[{\"type\":\"advertGroup\",\"mapTo\":\"viewLogo\",\"id\":\"05149412\"},{\"type\":\"advertGroup\",\"mapTo\":\"bottomLogo\",\"id\":\"05149413\"}]","activityId":"2cKMj86srRdhgWcKonfExzK4ZMBy","pageId":"","reqSrc":"","applyKey":"21beast"}
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("qryCompositeMaterials", body, "qryCompositeMaterials"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
if(data.code==='0') {
|
||||
for(let vo of data.data.viewLogo.list){
|
||||
console.log(`去做${vo.name}店铺任务`)
|
||||
await shopLotteryInfo(vo.desc)
|
||||
await $.wait(2000)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function shopLotteryInfo(shopSign) {
|
||||
let body = {"shopSign":shopSign}
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_shopLotteryInfo", body, "nian_shopLotteryInfo"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
if(data.code===0) {
|
||||
for(let vo of data.data.result.taskVos){
|
||||
if(vo.status===1){
|
||||
if(vo.taskType===12){
|
||||
console.log(`去做${vo.taskName}任务`)
|
||||
await $.wait(2000)
|
||||
await collectScore(vo.taskId,vo.simpleRecordInfoVo.itemId,null,null,shopSign)
|
||||
}
|
||||
else if (vo.taskType === 3 || vo.taskType === 26) {
|
||||
if(vo.shoppingActivityVos) {
|
||||
if (vo.status === 1) {
|
||||
console.log(`准备做此任务:${vo.taskName}`)
|
||||
for (let task of vo.shoppingActivityVos) {
|
||||
if (task.status === 1) {
|
||||
await $.wait(2000)
|
||||
await collectScore(vo.taskId, task.advId,null,null,shopSign);
|
||||
}
|
||||
}
|
||||
} else if (vo.status === 2) {
|
||||
console.log(`${vo.taskName}已做完`)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(let i=0;i<data.data.result.lotteryNum;++i){
|
||||
console.log(`去抽奖:${i+1}/${data.data.result.lotteryNum}`)
|
||||
await $.wait(2000)
|
||||
await doShopLottery(shopSign)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function doShopLottery(shopSign) {
|
||||
let body = {"shopSign":shopSign}
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_doShopLottery", body, "nian_doShopLottery"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
if(data.code===0 && data.data && data.data.result) {
|
||||
let result = data.data.result
|
||||
if(result.awardType===4)
|
||||
console.log(`抽奖成功,获得${result.score}爆竹🧨`)
|
||||
else if(result.awardType===2 || result.awardType===3)
|
||||
console.log(`抽奖成功,获得优惠卷`)
|
||||
else
|
||||
console.log(`抽奖成功,获得${JSON.stringify(result)}`)
|
||||
}else{
|
||||
console.log(`抽奖失败`)
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function signInRead(shopSign) {
|
||||
let body = {"shopSign":shopSign}
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_shopSignInRead", body, "nian_shopSignInRead"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
if(data.code===0 && data.data && data.data.result && data.data.result.signInTag) {
|
||||
await signInWrite(shopSign)
|
||||
} else{
|
||||
console.log(`店铺已签到过`)
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function signInWrite(shopSign) {
|
||||
let temp = {
|
||||
"shopSign": shopSign,
|
||||
}
|
||||
const extraData = {
|
||||
"jj": 6,
|
||||
"buttonid": "jmdd-react-smash_0",
|
||||
"sceneid": "homePageh5",
|
||||
"appid": '50073'
|
||||
}
|
||||
let body = {
|
||||
...encode(temp, $.secretp, extraData),
|
||||
shopSign:shopSign
|
||||
}
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_shopSignInWrite", body, "nian_shopSignInWrite"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
if (data.data.bizCode === 0) {
|
||||
if(data.data.result.score)
|
||||
console.log(`签到成功,获得${data.data.result.score}爆竹🧨`)
|
||||
}
|
||||
else{
|
||||
console.log(data.data.bizMsg)
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function pkInfo() {
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_pk_getHomeData", {}, "nian_pk_getHomeData"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
console.log(data)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function pkCollectScore() {
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_pk_collectScore", {}, "nian_pk_collectScore"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
console.log(data)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function pkTaskDetail() {
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_pk_getTaskDetail", {}, "nian_pk_getTaskDetail"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
console.log(data)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function pkAssignGroup(inviteId) {
|
||||
let temp = {
|
||||
"confirmFlag": 1,
|
||||
"inviteId": inviteId,
|
||||
}
|
||||
const extraData = {
|
||||
"jj": 6,
|
||||
"buttonid": "jmdd-react-smash_0",
|
||||
"sceneid": "homePageh5",
|
||||
"appid": '50073'
|
||||
}
|
||||
let body = {
|
||||
...encode(temp, $.secretp, extraData),
|
||||
inviteId:inviteId
|
||||
}
|
||||
return new Promise(resolve => {
|
||||
$.post(taskPostUrl("nian_pk_assistGroup", body, "nian_pk_assistGroup"), async (err, resp, data) => {
|
||||
try {
|
||||
if (err) {
|
||||
console.log(`${JSON.stringify(err)}`)
|
||||
console.log(`${$.name} API请求失败,请检查网路重试`)
|
||||
} else {
|
||||
if (safeGet(data)) {
|
||||
data = JSON.parse(data);
|
||||
console.log(data)
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
$.logErr(e, resp)
|
||||
} finally {
|
||||
resolve();
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
function readShareCode() {
|
||||
console.log(`开始`)
|
||||
return new Promise(async resolve => {
|
||||
@@ -565,7 +879,7 @@ function taskPostUrl(function_id, body = {}, function_id2) {
|
||||
"origin": "https://h5.m.jd.com",
|
||||
"referer": "https://h5.m.jd.com/",
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
"User-Agent": "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0",
|
||||
"User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user