From 2f0626f4648761fdee86f1da858b81f021af8162 Mon Sep 17 00:00:00 2001 From: 1335344215 <33363399+1335344215@users.noreply.github.com> Date: Sun, 29 May 2022 09:04:38 +0800 Subject: [PATCH 1/4] Update code.sh --- Scripts/sh/Helpcode2.8/code.sh | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/Scripts/sh/Helpcode2.8/code.sh b/Scripts/sh/Helpcode2.8/code.sh index 549b3e3..dc377e5 100644 --- a/Scripts/sh/Helpcode2.8/code.sh +++ b/Scripts/sh/Helpcode2.8/code.sh @@ -1,18 +1,20 @@ #!/usr/bin/env bash -## Build 20220525-001-test - +## Build 20220528-001-test + ## 导入通用变量与函数 #dir_shell=/ql/shell #. $dir_shell/share.sh ## 目录 -dir_root=/ql +dir_root=/ql/data #新版青龙(新版青龙文件在data文件夹下) +#dir_root=/ql/data #老板青龙 dir_config=$dir_root/config dir_scripts=$dir_root/scripts dir_log=$dir_root/log dir_db=$dir_root/db -dir_code=$dir_log/code - +dir_code=$dir_log/config_code #新版青龙(需修改运行命令为task /ql/data/config/code.sh) +#dir_code=$dir_log/code #老板青龙 +# 413行 442 行 507行 546行修改为互助码按cookie数量生成,防止生成大于cookie总数的互助规则 ## 预设的仓库及默认调用仓库设置 ## 将"repo=$repo4"改成repo=$repo4"或其他,以默认调用其他仓库脚本日志 ## 也可自行搜索本脚本内的"name_js=("和"name_js_only",将"repo"改成"repo2"或其他,用以自由组合调用仓库的脚本日志 @@ -26,13 +28,13 @@ repo7='smiek2221_scripts' #预设的 smiek2221 仓库 repo="" #空值,表示遍历所有仓库脚本日志 ## 调试模式开关,默认是0,表示关闭;设置为1,表示开启 -DEBUG="1" +DEBUG="0" ## 本脚本限制的最大线程数量 proc_num="10" ## 备份配置文件开关,默认是1,表示开启;设置为0,表示关闭。备份路径 /ql/config/bak/ -BACKUP="0" +BACKUP="1" ## 是否删除指定天数以前的备份文件开关,默认是1,表示开启;设置为0,表示关闭。删除路径 /ql/config/bak/ CLEANBAK="1" ## 定义删除指定天数以前的备份文件 @@ -415,7 +417,7 @@ export_codes_sub() { for ((m = 0; m < ${#pt_pin[*]}; m++)); do tmp_for_other="" j=$((m + 1)) - for ((n = 0; n < $user_sum; n++)); do + for ((n = 0; n < ${#pt_pin[*]}; n++)); do [[ $m -eq $n ]] && continue k=$((n + 1)) if [[ $BreakHelpType = "1" ]]; then @@ -508,8 +510,8 @@ local i j k if [ ! -f $ShareCode_log ] || [ -z "$(cat $ShareCode_log | grep "^$config_name_my\d")" ]; then echo -e "\n## $chinese_name\n${config_name_my}1=''\n" >> $ShareCode_log fi -echo -e "\n#【`date +%X`】 正在更新 $chinese_name 的互助码..." -for ((i=1; i<=200; i++)); do +echo -e "\n#【`date +%X`】 正在更新 $chinese_name 的互助1码..." +for ((i=1; i<=${#pt_pin[*]}; i++)); do local new_code="$(cat $latest_log_path | grep "^$config_name_my$i=.\+'$" | sed "s/\S\+'\([^']*\)'$/\1/")" local old_code="$(cat $ShareCode_log | grep "^$config_name_my$i=.\+'$" | sed "s/\S\+'\([^']*\)'$/\1/")" if [[ $i -le $user_sum ]]; then @@ -544,11 +546,11 @@ local ShareCode_log="$ShareCode_dir/$config_name.log" local i j k #更新配置文件中的互助规则 -echo -e "\n#【`date +%X`】 正在更新 $chinese_name 的互助规则..." +echo -e "\n#【`date +%X`】 正在更新 $chinese_name 的互助1规则..." if [ -z "$(cat $ShareCode_log | grep "^$config_name_for_other\d")" ]; then echo -e "${config_name_for_other}1=\"\"" >> $ShareCode_log fi -for ((j=1; j<=200; j++)); do +for ((j=1; j<=${#pt_pin[*]}; j++)); do local new_rule="$(cat $latest_log_path | grep "^$config_name_for_other$j=.\+\"$" | sed "s/\S\+\"\([^\"]*\)\"$/\1/")" local old_rule="$(cat $ShareCode_log | grep "^$config_name_for_other$j=.\+\"$" | sed "s/\S\+\"\([^\"]*\)\"$/\1/")" if [[ $j -le $user_sum ]]; then @@ -596,7 +598,7 @@ export_codes_sub_only(){ for ((m = 0; m < ${#pt_pin[*]}; m++)); do tmp_my_code="" j=$((m + 1)) - for ((n = 0; n < ${#code[*]}; n++)); do + for ((n = 0; n < ${#pt_pin[*]}; n++)); do if [[ ${pt_pin[m]} == ${pt_pin_in_log[n]} ]]; then tmp_my_code=${code[n]} break @@ -614,6 +616,7 @@ export_codes_sub_only(){ #更新互助码和互助规则 update_help(){ + gen_pt_pin_array case $UpdateType in 1) if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then @@ -850,4 +853,4 @@ update_help ## 修改curtinlv入会领豆配置文件的参数 [[ -f /ql/repo/curtinlv_JD-Script/OpenCard/OpenCardConfig.ini ]] && sed -i "4c JD_COOKIE = '$(echo $JD_COOKIE | sed "s/&/ /g; s/\S*\(pt_key=\S\+;\)\S*\(pt_pin=\S\+;\)\S*/\1\2/g;" | perl -pe "s| |&|g")'" /ql/repo/curtinlv_JD-Script/OpenCard/OpenCardConfig.ini -exit \ No newline at end of file +exit From 7cf45e681c82ca58db1d3d1b281766b961518b88 Mon Sep 17 00:00:00 2001 From: 1335344215 <33363399+1335344215@users.noreply.github.com> Date: Sun, 29 May 2022 09:09:10 +0800 Subject: [PATCH 2/4] Update config.sample.sh --- Conf/Qinglong/config.sample.sh | 871 +++++++++++++++++++++++++-------- 1 file changed, 674 insertions(+), 197 deletions(-) diff --git a/Conf/Qinglong/config.sample.sh b/Conf/Qinglong/config.sample.sh index c4ba641..c47868c 100644 --- a/Conf/Qinglong/config.sample.sh +++ b/Conf/Qinglong/config.sample.sh @@ -1,6 +1,6 @@ -## Version: v3.0.0 -## Date: 2021-11-12 -## Mod: Build20211112-002 Faker Repository config +## Version: v2.8.0 +## Date: 2021-06-20 +## Mod: Build 20220313-001-test ## Update Content: 可持续发展纲要\n1. session管理破坏性修改\n2. 配置管理可编辑config下文件\n3. 自定义脚本改为查看脚本\n4. 移除互助相关 ## 上面版本号中,如果第2位数字有变化,那么代表增加了新的参数,如果只有第3位数字有变化,仅代表更新了注释,没有增加新的参数,可更新可不更新 @@ -11,11 +11,14 @@ AutoDelCron="true" ## 在运行 ql repo 命令时,是否自动增加新的本地定时任务 AutoAddCron="true" +## 拉取脚本时默认的定时规则,当匹配不到定时规则时使用,例如: 0 9 * * * +DefaultCronRule="37 0 * * *" + ## ql repo命令拉取脚本时需要拉取的文件后缀,直接写文件后缀名即可 -RepoFileExtensions="js py ts" +RepoFileExtensions="js py sh ts" ## 由于github仓库拉取较慢,所以会默认添加代理前缀,如不需要请移除 -GithubProxyUrl="https://git.metauniverse-cn.com/" +GithubProxyUrl="https://ghproxy.com/" ## 设置定时任务执行的超时时间,默认1h,后缀"s"代表秒(默认值), "m"代表分, "h"代表小时, "d"代表天 CommandTimeoutTime="3h" @@ -50,7 +53,7 @@ export BARK_SOUND="" ## 下方填写推送消息分组,默认为"QingLong" export BARK_GROUP="QingLong" -## 3. Telegram +## 3. Telegram ## 下方填写自己申请@BotFather的Token,如10xxx4:AAFcqxxxxgER5uw export TG_BOT_TOKEN="" ## 下方填写 @getuseridbot 中获取到的纯数字ID @@ -71,7 +74,7 @@ export TG_PROXY_AUTH="" ## 如需使用,请赋值代理地址链接,并自行解除下一行的注释 export TG_API_HOST="" -## 4. 钉钉 +## 4. 钉钉 ## 官方文档:https://developers.dingtalk.com/document/app/custom-robot-access ## 下方填写token后面的内容,只需 https://oapi.dingtalk.com/robot/send?access_token=XXX 等于=符号后面的XXX即可 export DD_BOT_TOKEN="" @@ -101,120 +104,313 @@ export PUSH_PLUS_TOKEN="" ## 1. 需订阅者扫描二维码 2、如果您是创建群组所属人,也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送 export PUSH_PLUS_USER="" +## 仅指定的脚本采用 pushplus 推送 +## case $1 in +## ccwav_QLScript2_jd_bean_change* | ccwav_QLScript2_jd_CheckCK* | *jd_scripts_jd_dreamFactory* | *jd_jxgc* | *jd_pigPet* ) +## export PUSH_PLUS_TOKEN="" ##填写 pushplus 的 token +## export PUSH_PLUS_USER="" #填写 pushplus 的群组名称,不填的话只推送到 pushplus 的个人消息 +## ;; +## *) +## export PUSH_PLUS_TOKEN="" ##必填项。默认为空,表示其他脚本不推送 pushplus。 +## export PUSH_PLUS_USER="" ##必填项。默认为空,表示其他脚本不推送 pushplus 群组。 +## ;; +## esac + ## 9. go-cqhttp -## gobot_url 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg +## gobot_url 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg ## gobot_token 填写在go-cqhttp文件设置的访问密钥 -## gobot_qq 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 +## gobot_qq 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 ## go-cqhttp相关API https://docs.go-cqhttp.org/api export GOBOT_URL="" export GOBOT_TOKEN="" export GOBOT_QQ="" -## 10. 临时屏蔽某个Cookie -## 如果某些 Cookie 已经失效了,但暂时还没法更新,可以使用此功能在不删除该Cookie和重新修改Cookie编号的前提下,临时屏蔽掉某些编号的Cookie -## 多个Cookie编号以半角的空格分隔,两侧一对半角双引号,使用此功能后,在运行js脚本时账户编号将发生变化 -## 举例1:TempBlockCookie="2" 临时屏蔽掉 Cookie2 -## 举例2:TempBlockCookie="2 4" 临时屏蔽掉 Cookie2 和 Cookie4 +## 10 临时禁止Cookie +### 分为 按 Cookie 序号、按 pt_pin(用户名) 2 种模式禁止将 Cookie 提交活动脚本: +### 其他说明:①全局模式和局部模式可同时生效; +### ②支持黑名单模式(即不使用该模式,详见 局部模式环境变量 recombin_ck_envs 说明); -## 如果只是想要屏蔽某个 Cookie 不参加某些活动,可以参考下面 case 这个命令的例子来控制 -## case $1 in -## *jd_fruit*) # 东东农场活动脚本关键词 -## TempBlockCookie="5" # Cookie5 不玩东东农场 -## ;; -## *jd_dreamFactory* | *jd_jdfactory*) # 京喜工厂和东东工厂的活动脚本关键词 -## TempBlockCookie="2" # Cookie2 不玩京喜工厂和东东工厂 -## ;; -## *jd_jdzz* | *jd_joy*) # 京喜赚赚和宠汪汪的活动脚本关键词 -## TempBlockCookie="3 7_8 9-10 12~13" # Cookie3 、Cookie7至8、Cookie9至10、Cookie12至13 不玩京东赚赚和宠汪汪 -## ;; -## *) # 必选项。其他活动 -## TempBlockCookie="" # 必选项。默认为空值,表示其他帐号参加全部活动。填写帐号序号表示指定的 Cookie 只能参加之前 case 选项的活动 -## ;; -## esac -case $1 in - *jd_fruit*) - TempBlockCookie="" - ;; - *jd_dreamFactory* | *jd_jdfactory*) - TempBlockCookie="" - ;; - *jd_jdzz* | *jd_joy*) - TempBlockCookie="" - ;; - *) - TempBlockCookie="" - ;; -esac +## 10.1 全局模式选项 +### 赋值要求:①TempBlockCookie 只能填数字或者区间,表示按 Cookie 序号禁止账号; +### ②TempBlockPin 只能填写 pt_pin 值 或者 用户名(支持中文),表示按 pt_pin 或者 用户名(支持中文) 禁止账号。 +### ③TempDesiPin 只能填写 pt_pin 值 或者 用户名(支持中文),表示按 pt_pin 或者 用户名(支持中文) 只允许设定的账号参加活动。 +### ④对全部脚本有效(除非 recombin_ck_envs 另有设定); +### ⑤例如:TempBlockCookie="1,2,5_8,12~19 20",表示第 1、2、5至8、12至19、20位账号均被禁止参加活动。数字与数字,数字与区间之间可用 ~、_、空格隔开; +### ⑥例如:TempBlockPin="张三 jd_13134567890,%E7%95%AA%E8%8C%84%E5%8A%A0%E4%B8%AA%E8%9B%8B",表示 张三、jd_13134567890、番茄加个蛋、这几个账号均被禁止参加活动。各账号间可用 , 或空格隔开; +### ⑦例如:TempDesiPin="张三 jd_13134567890,%E7%95%AA%E8%8C%84%E5%8A%A0%E4%B8%AA%E8%9B%8B",表示只允许 张三、jd_13134567890、番茄加个蛋、这几个账号参加活动。各账号间可用 , 或空格隔开; +TempBlockCookie="" +TempBlockPin="" +TempDesiPin="" -## 11. 随机Cookie -## Cookie 按随机顺序参加活动。取消 # 注释后,填 1 表示开启功能。 -# RandomMode="" -## 从原 Cookie 中随机提取指定数量的 Cookie 参加活动,当 RandomMode="1" 时生效。取消 # 注释后,赋值后生效。 -### 赋值要求:"空值"、"非数字"、"小于2或大于 Cookie 总数的数值",均自动调整为全部 Cookie 按随机顺序参加活动; -### "大于或等于2,且小于或等于 Cookie 总数的数值",抽取指定数值的 Cookie 按随机顺序参数活动。 -# ran_num="" -## 如果想指定活动进行随机模式,可以参考下面 case 这个命令的例子来控制 -## case $1 in -## *jd_fruit*) # 东东农场活动脚本关键词 -## RandomMode="1" # 东东农场开启随机模式 -## ran_num="" # 东东农场全部 Cookie 按随机顺序参加活动 -## ;; -## *jd_dreamFactory* | *jd_jdfactory*) # 京喜工厂和东东工厂的活动脚本关键词 -## RandomMode="1" # 京喜工厂和东东工厂开启随机模式 -## ran_num="5" # 京喜工厂和东东工厂抽取指定 5 个 Cookie 按随机顺序参数活动。 -## ;; -## *) # 必选项。其他活动 -## RandomMode="" # 必选项。默认为空值,表示其他帐号均不开启随机模式。 -## ran_num="" # 必选项。默认为空值。若 RandomMode="1" 且此处赋值,表示其他活动均抽取指定数值的 Cookie 按随机顺序参数活动。 -## ;; -## esac -case $1 in - *jd_fruit*) - RandomMode="" - ran_num="" - ;; - *jd_dreamFactory* | *jd_jdfactory*) - RandomMode="" - ran_num="" - ;; - *) - RandomMode="" - ran_num="" - ;; -esac +## 10.2 局部模式环境变量 +### 释义:①单脚本规则单元:脚本1文件名关键词@参数1@参数2; +### ②两个及以上脚本共享一套规则单元:脚本1文件名关键词|脚本2文件名关键词@参数1@参数2。多脚本共用一套规则单元时,脚本文件名关键词之间采用 | 分隔符。 +### 赋值要求:①脚本文件名关键词,例如,东东农场的活动脚本关键词 jd_fruit;多个脚本关键词采用 | 符号分隔。例如:jd_fruit|jd_dreamFactory; +### ②脚本文件名关键词与各参数采用 @ 连接。释义附后。如果不设定参数1,表示该脚本所有账号参加活动(即:黑名单); +### ③参数1。表示 TempBlockCookie。不能有空格,建议序号与序号、序号与区间采用 , 分隔; +### ④参数2。表示 TempBlockPin。不能有空格,各 pt_pin(或用户名) 采用 , 分隔; +### ⑤参数3。表示 TempDesiPin。不能有空格,各 pt_pin(或用户名) 采用 , 分隔; +### ⑥各个规则单元之间采用 & 连接,例如:jd_fruit|jd_dreamFactory@1,3-4,7~9&jd_plantBean@2,4-6,8@张三&jd_pigPet@-@张三&jd_plantBean; +### jd_fruit|jd_dreamFactory@1,3-5,7~9 使用模式:按序号,1、3至5、7至9不参加活动 +### jd_plantBean@2,4-6,8@张三 使用模式:按序号,2、4至6、8不参加活动,且张三也不参加活动 +### jd_pigPet@-@张三,赵四 使用模式:按pt_pin或用户名,张三和赵四不参加活动。注意,参数1位置需要 - 作为占位符 +### jd_pigPet@-@-@张三,赵四 使用模式:按pt_pin或用户名,仅张三和赵四参加活动。注意,参数1、参数2填任意非空值,都只允许参数3位置的账号参加活动 +### jd_plantBean 使用模式:所有账号参加活动 -## 12. 组队环境变量 -### 环境变量填写要求较高,建议群组内确认填写结果 -scr_name="$1" ## 不可删除 -case $1 in - *jd_sendBean* | *jd_sddd*) ## 送豆得豆活动脚本关键词 - teamer_num="11" ## 单个队伍中的总账号数为 11 个 - team_num="1" ## 每个账号发起组队的最大队伍数为 1 个 - ;; - *xmGame*) ## 小米-星空大冒险活动脚本关键词 - teamer_num="11" ## 单个队伍中的总账号数为 11 个 - team_num="1" ## 每个账号发起组队的最大队伍数为 1 个 - ;; - *jd_zdjr*) ## 组队瓜分京豆活动脚本关键词 - teamer_num="5 5 5 5" ## 对应各个活动中单个队伍中的总账号数分别为 5 5 5 5 个 - team_num="2 3 3 5" ## 对应各个活动中每个账号发起组队的最大队伍数为 2 3 3 5 个 - activityId=( ## 活动 activityId;需手动抓包。按数组分行填写至括号内 - 54f071f4eb794092a872392696be7d8d - 0582063f78434ed599becfc8f812c2ee - bbda11ba7a9644148d65c8b0b78f0bd2 - 92c03af2ce744f6f94de181ccee15e4f - ) - activityUrl=( ## 活动 activityUrl;需手动抓包。按数组分行填写至括号内 - https://cjhydz-isv.isvjcloud.com - https://lzkjdz-isv.isvjcloud.com - https://lzkjdz-isv.isvjcloud.com - https://cjhydz-isv.isvjcloud.com - ) - ;; - *) ## 不可删除 - scr_name="" ## 不可删除 - ;; ## 不可删除 -esac +## 10.2.1 局部模式环境变量的启用数量 +### 释义:顾名思义; +### 赋值要求:①正整数。如果填写 3 ,表示 tempblock_ck_envs1 ~ tempblock_ck_envs3 生效; +tempblock_ck_envs_num="" +## 10.2.2 多组环境变量 +### 释义:可以自由定义多组局部模式环境变量,如果多组变量中针对同一个脚本设置了多次变量,第一次变量有效,其他变量无效; +### 赋值要求:详见“局部模式环境变量”赋值要求; +# tempblock_ck_envs1="jd_fruit@1,3-4,7~9&jd_plantBean@2,4-6,8@张三&jd_pigPet@-@张三&jd_plantBean" +# tempblock_ck_envs2="Check|jd_islogin_xh@3-5@法外狂徒" +# tempblock_ck_envs3="jd_joy_reward@-@-@郭靖,名侦探" +tempblock_ck_envs1="" +tempblock_ck_envs2="" +tempblock_ck_envs3="" + +## 11 重组Cookie +### 分为 随机、优先、轮换、组队和分段 5 种模式: +### 1、随机模式:支持自定义从所有 Cookie 中随机抽取若干数量的账号按随机顺序参加活动; +### 2、优先模式:支持自定义前若干数量的账号固定按照正常顺序参加活动,其余账号按随机顺序参加活动; +### 3、轮换模式:支持自定义前若干数量的账号固定按照正常顺序参加活动,其余账号按轮换模式参加活动。所谓轮换就是指若干数量的账号每过一天挪动到 Cookie 队伍末尾; +### 4、组队模式:只支持 js 脚本。根据游戏规则每支队伍的成员数量、每个账号能发起的组队次数上限自动按顺序参加活动。 +### 5、分段模式:只支持 js 脚本。支持自定义按若干数量拆分账号,按分段顺序参加活动。支持各段启动活动脚本的延隔时间。 +### 其他说明:①全局模式和局部模式可同时生效; +### ②支持黑名单模式(即不使用该模式,详见 局部模式环境变量 recombin_ck_envs 说明); + +## 11.1 全局模式选项 +### 模式 +### 赋值要求:①只能填 1 2 3 4 5,分别表示随机、优先、轮换、组队、分段 5 种模式,对全部脚本有效(除非 recombin_ck_envs 另有设定); +### ②若填写为其他内容,则所有账号按正常顺序参加活动(除非 recombin_ck_envs 另有设定); +Recombin_CK_Mode="" + +### 参数 1 +### 释义:①在随机模式下:表示随意抽取 N 个账号随机顺序参加活动; +### ②在优先模式和轮换模式下:表示前 N 个账号固定按正常顺序参加活动; +### ③在组队模式下:表示每支队伍的成员数量; +### ④在分段模式下:表示前 N 个账号固定按正常顺序参加活动; +### 赋值要求:①填写不大于 Cookie 总数的 0 或正整数,对全部脚本有效(除非 recombin_ck_envs 另有设定); +### ②随机模式下:若赋空值或非数字字符,则所有账号随机顺序参加活动;若填写数值为 0 或大于等于 Cookie 总数,则所有账号按正常顺序参加活动; +### ③优先模式下:若填写数值为 0 或大于等于 Cookie 总数,则所有账号切换回正常顺序参加活动; +### ④轮换模式下:若填写数值为 0 ,表示所有账号参加轮换;若填写数值为大于等于 Cookie 总数,则所有账号切换回正常顺序参加活动; +### ⑤组队模式下:若填写数值为 0 或其他内容,则所有账号切换回正常顺序参加活动。 +### ⑥分段模式下:若填写数值为 0 ,表示所有账号参与分段;若填写数值为大于等于 Cookie 总数,则所有账号切换回正常顺序参加活动; +Recombin_CK_ARG1="" + +### 参数 2 +### 释义:①随机模式和优先模式下:无意义; +### ②轮换模式下:表示自定义轮换频次,即单日参加轮换的账号数量; +### ③在组队模式下:表示每个账号发起组队的次数; +### ④在分段模式下:表示每个分段的账号数量; +### 赋值要求:①轮换模式下:只能填不大于参与轮换账号数量(即:总Cookie数量-固定Cookie数量)的正整数; +### ②轮换模式下:若填写为其他内容或留空,则自动调整为按天计算轮换频次(即:参与轮换账号数量÷当月总天数的商值,取上整数); +### ③组队模式下:若填写为其他内容或留空,则所有账号切换回正常顺序参加活动。 +### ④分段模式下:只能填大于固定账号数量且不大于 Cookie 总数的数值。若填写为其他内容或留空,则所有账号切换回正常顺序参加活动。 +Recombin_CK_ARG2="" + +## 重组Cookie前是否剔除失效Cookie +### 释义:①如果开启,会在模式参数已设定的情况下,执行任务前进行 Cookie 有效性验证并剔除失效的 Cookie。受 Cookie 总数量影响任务启动的即时性; +### 赋值要求:①填 1 表示开启,填其他内容或空值表示关闭; +Remove_Void_CK="" + +## 始终放置在末尾的Cookie +### 赋值要求:①只能填写 pt_pin 值 或者 用户名(支持中文),表示按 pt_pin 或者 用户名(支持中文) 禁止账号。 +### ②例如:Bottom_CK="张三 jd_13134567890,%E7%95%AA%E8%8C%84%E5%8A%A0%E4%B8%AA%E8%9B%8B",表示 张三、jd_13134567890、番茄加个蛋、这几个账号始终排在账号队列末尾。各账号间可用 , 或空格隔开。这三个账号之间的顺序同变量中的顺序; +Bottom_CK="" + +## 11.2 局部模式环境变量 +### 释义:①单脚本规则单元:脚本1文件名关键词@模式@参数1@参数2@参数3@参数4@参数5; +### ②两个及以上脚本共享一套规则单元:脚本1文件名关键词|脚本2文件名关键词@模式@参数1@参数2@参数3@参数4@参数5。多脚本共用一套规则单元时,脚本文件名关键词之间采用|分隔符。 +### 赋值要求:①脚本文件名关键词,例如,东东农场的活动脚本关键词 jd_fruit,支持某个作者的脚本通配符模糊匹配,例如:ccwav*jd_fruit表示只对ccwav的jd_fruit脚本生效。多个脚本关键词采用 | 符号分隔。例如:jd_fruit|jd_dreamFactory; +### ②脚本文件名关键词与各参数采用 @ 连接。释义附后。如果不设定参数1,表示该脚本按正常账号顺序参加活动(即:黑名单); +### ③模式。表示 Recombin_CK_Mode; +### ④参数1。表示 Recombin_CK_ARG1; +### ⑤参数2。表示 Recombin_CK_ARG2; +### ⑥参数3。表示 Recombin_CK_ARG3;组队模式、分段模式:表示各分段启动活动脚本的延隔时间。当该参数填写 0 的时候,表示各分段/组并发参加活动。支持 d(天)、h(小时)、m(分钟)、s(秒可略写)。如 1d2h3m4s 表示 1天2小时3分钟4秒; +### ⑦参数4。表示 Recombin_CK_ARG4;组队模式、分段模式:表示各分段启动活动脚本的间隔时间。需参数3为 - 占位符时生效。支持 d(天)、h(小时)、m(分钟)、s(秒可略写)。如 1d2h3m4s 表示 1天2小时3分钟4秒; +### ⑧参数5。表示 Recombin_CK_ARG5;组队瓜分京豆脚本 (jd_zdjr) :表示调用 activity_env 变量组(用法附后)的指定环境变量。例如,填 0,表示所有变量执行一次,填 1 表示只调用第 1 组变量。需参数3、参数4已赋值或为 - 占位符时生效; +### ⑨各个规则单元之间采用 & 连接。可以针对同一脚本设置多个规则单元,以实现模式迭代组合。当多次变量遇到组队或分段模式时,终止迭代,即:随机、优先、轮换三者间可以无限迭代;这三者与组队、分段其中之一实现单轮迭代; +### ⑩例如:jd_cfd&jd_fruit|jd_dreamFactory@1@5&jd_pet@2@6&jd_pigPet@3@5&jd_plantBean@3@7@4&jd_jxlhb@4@80@1&jd_islogin_xh@5@4@8&jd_islogin_xh@5@4@8@15&ccwav*speed_sign@5@0@20@-@5400&iroyway*zdjr@3@5&iroyway*zdjr@4@5@4@-@-@1; +### jd_cfd 脚本按正常账号顺序参加活动 +### jd_fruit|jd_dreamFactory@1@5 共用模式:1随机,抽5个CK顺序随机 +### jd_pet@2@6 使用模式:2优先,前6个CK顺序优先,其余CK顺序随机 +### jd_pigPet@3@5 使用模式:3轮换,前5个CK顺序固定,根据CK总数和当月天数自动计算每天轮换CK数量 +### jd_plantBean@3@7@4 使用模式:3轮换,前7个CK顺序固定,每天轮换4个CK +### jd_jxlhb@4@80@1 使用模式:4组队,队伍成员数量80,每个账号组队1次 +### jd_islogin_xh@5@4@8 使用模式:5分段,前4个CK顺序固定,每段成员数量8,各分段依次启动脚本 +### jd_islogin_xh@5@4@8@0 使用模式:5分段,前4个CK顺序固定,每段成员数量8,各分段并发启动脚本 +### jd_islogin_xh@5@4@8@15 使用模式:5分段,前4个CK顺序固定,每段成员数量8,每段启动脚本的延隔时间为15秒,即本段开始启动脚本后 15 秒,下一段启动脚本。第 4 个参数表示每个分段启动活动脚本的延隔时间,单位:秒; +### ccwav*speed_sign@5@0@20@-@5400 ccwav 的 speed_sign 脚本。使用模式:5分段,所有账号参与分段,每段成员数量20,每段启动脚本的间隔时间为 5400 秒即本段脚本执行完成后,等待 5400 秒,下一段启动脚本。当第 4 个参数使用 - 占位符时,第 5 个参数表示每个分段启动活动脚本的间隔时间,单位:秒。 +### iroyway*zdjr@3@5&iroyway*zdjr@4@5@4@-@-@1 iroyway*zdjr 脚本。使用模式:先3轮换再4组队。 + +## 11.2.1 局部模式环境变量的启用数量 +### 释义:顾名思义; +### 赋值要求:①正整数。如果填写 3 ,表示 recombin_ck_envs1 ~ recombin_ck_envs3 生效; +recombin_ck_envs_num="7" +## 11.2.2 多组环境变量 +### 释义:可以自由定义多组局部模式环境变量; +### 赋值要求:详见“局部模式环境变量”赋值要求。如果多组变量中针对同一个脚本设置了多次模式及参数变量,实现迭代组合,等同于局部模式环境变量的赋值要求 ⑨ ; +recombin_ck_envs1="jd_fruit|jd_pet|jd_plantBean|jd_dreamFactory|jd_jdfactory|jd_crazy_joy|jd_jdzz|jd_jxnc|jd_bookshop|jd_cash|jd_sgmh|jd_cfd|jd_health|jd_carnivalcity|jd_city|jd_moneyTree_heip@3@5" ## 强制轮换 +recombin_ck_envs2="iroyway*zdjr@4@-@-@0@-@0" # 组队瓜分京豆。参数1、参数2,使用 - 占位符,表示引用 组队瓜分京豆活动变量组 的前两个参数,作为几人成队和发起几次组队 +recombin_ck_envs3="jd_jxlhb|jd_88hb@4@78@1" # 领88元红包 +recombin_ck_envs4="CheckCK|checkCookie|cookieCheck|checkCookie|bean_change|wskey&jd_islogin_xh" # 强制黑名单 +recombin_ck_envs5="ccwav*speed_sign|jd_speed_signfaker@5@0@20@-@1h" # ccwav 防黑号京东极速版任务分段 +recombin_ck_envs6="jd_joy_reward@5@0@10@0" # 宠汪汪兑换分段并发 +recombin_ck_envs7="jd_jfcz@5@0@10@0" + +## 11.2.3 组队瓜分京豆环境变量组 +### 释义:用于自定义多组 activityId 和 activityUrl; +### 赋值要求:详见示例: +activity_env=( + 5@3@48a4106275f24bb7871e396fcf39d767@https://lzkjdz-isv.isvjcloud.com # 第 1 组环境变量。前两个参数表示 5 人成队,每个账号最多发起 3 次组队 + 5@2@a64e40b100b44e2d9213712fa3fdcd67@https://cjhydz-isv.isvjcloud.com # 第 2 组环境变量。前两个参数表示 5 人成队,每个账号最多发起 2 次组队 + 5@3@e56a4af7b2e940ec9270f24dd67a20d3@https://lzkjdz-isv.isvjcloud.com # 第 3 组环境变量。前两个参数表示 5 人成队,每个账号最多发起 3 次组队 + 5@3@c68f8d3d24464740a5ed9dbc1e99857f@https://cjhydz-isv.isvjcloud.com # 第 4 组环境变量。前两个参数表示 5 人成队,每个账号最多发起 3 次组队 + 5@3@00d5cde9d98547f4befa225c0e4bb087@https://cjhydz-isv.isvjcloud.com + 5@3@6757db2bea4748ae9168a8e5b4d050c4@https://cjhydz-isv.isvjcloud.com + 5@3@402541a7b196403c8781171a0c27967c@https://lzkjdz-isv.isvjcloud.com + 5@3@776e7e159a2b4b04bd3fc72791b50c17@https://cjhydz-isv.isvjcloud.com + 5@3@8dd125c39ede43b8882ef5b9d82b8e2d@https://lzkjdz-isv.isvjcloud.com + teamer_num@team_num@activityId9@activityUrl9 # 第 10 组环境变量。前两个参数表示 teamer_num 人成队,每个账号最多发起 team_num 次组队 +) + +## 12 自定义小工具 extra2.sh 环境变量 +## 12.1 定义是否自动安装或修复缺失或损坏的 node 依赖 +### 赋值要求:填 1 表示启用该功能;空值或填其他内容表示不启用该功能。 +FixDependType="" +## 12.2 定义是否自动安装或修复缺失或损坏的 node 依赖名称 +package_name="canvas png-js date-fns axios crypto-js ts-md5 tslib @types/node dotenv got md5 requests typescript fs require jsdom download js-base64 tough-cookie tunnel ws jieba prettytable form-data json5 global-agent" +## 12.3 基础 js 依赖文件的预先下载 +### 释义:目前仅支持将 ql.js、sendNotify.js、JD_DailyBonus.js、JS_USER_AGENTS.js、USER_AGENTS.js 5 个文件下载至 /ql/config 路径 +### 赋值要求:填 1 表示启用该功能;空值或填其他内容表示不启用该功能。 +DOWNLOAD_BASIC_JS="" +## 12.4 基础 js 依赖文件的预先替换 +### 释义:目前仅支持将 /ql/config 路径下的 ql.js、sendNotify.js、JD_DailyBonus.js、JS_USER_AGENTS.js、USER_AGENTS.js 5 个文件,在 task 命令启动时会自动替换到当前运行的脚本所在的文件夹。 +### 赋值要求:例如:ql|JD_DailyBonus&sendNotify@JDHelloWorld_jd_scripts|ccwav_QLScript2。各个定义单元之间采用 & 连接。 +### ql|JD_DailyBonus 两个脚本均不屏蔽仓库文件夹复制替换 +### sendNotify@JDHelloWorld_jd_scripts|ccwav_QLScript2 sendNotify.js 不复制到 /ql/scripts/路径下的 JDHelloWorld 和 ccwav 的仓库文件夹。文件夹名称必须精确完整写出,不支持模糊匹配。 +js_deps_replace_envs="ql|JD_DailyBonus&sendNotify|JS_USER_AGENTS|USER_AGENTS@JDHelloWorld_jd_scripts" +## 12.4 解析活动口令 +### 赋值要求:例如:单口令,例如 JD_CODE="29:/(M2wIg7AVEn),10" +### 多口令:例如 JD_CODE="'29:/(M2wIg7AVEn),10' '29:/(M2wIg7AVEn),10'" +JD_CODE="" +## 12.5 调用组队活动的脚本文件名的关键词 +ZDJR_SCR="smiek_jd_zdjr.js" + +## 13 Shell 版 Cookie 检测工具 ckck2 环境变量 +## 13.1 推送失效账号、有效账号 +### 赋值要求:填 1 表示只推送失效账号; +### 填 2 表示推送失效账号、有效账号; +### 空值或填其他内容表示不启用该功能。 +NOTIFY_VALID_CK_TYPE="" +## 13.2 如果本次检测的失效、有效账号与上次结果一致,则不通知 +### 赋值要求:填 1 表示如果失效账号未变化,则不通知。空值或填其他内容表示不启用该功能。 +NOTIFY_SKIP_SAME_CONTENT="" +## 13.3 预测和通知账号剩余有效期 +## 13.3.1 预测和通知账号剩余有效期的检测和通知类型 +### 赋值要求:填 1 表示预测和通知账号剩余有效期; +### 填 2 表示只预测不通知账号剩余有效期; +### 空值或填其他内容表示不启用该功能。 +NOTIFY_VALID_TIME="" +## 13.3.2 临期通知 +### 自定义账号有效期不足N天时发出一对一通知 +### 赋值要求:正整数数字,(单位:天); +### 空值表示不启用该功能。 +NOTIFY_VALID_DAY="" +## 13.4 JD_WSCK(wskey)相关 +## 13.4.1 (失效)检测到失效账号后是否搜索并运行 WSKEY 转换 Cookie 的脚本(需要 /ql/scripts 或其子路径已存在 wskey 转换脚本) +### 赋值要求:填 1 表示启用 WSKEY 转换 Cookie 功能。空值或其他值表示不启用该功能。 +### WSKEY_TO_CK="" +## 13.4.2 (失效)自定义调用的 wskey 转换脚本 +### 赋值要求:例如 wskey_scr="hyzaw_scripts/ql_refreshCK.py"。空值或其他值表示自动搜索文件名中包含 wskey 的 py 文件。 +### diy_wskey_scr="" +## 13.4.3 (失效)当未搜索到 wskey 脚本时下载 wskey 转换脚本,下载路径 /ql/scripts/ +### 赋值要求:填 1 表示启用下载 wskey 转换脚本功能。空值或其他值表示不启用该功能。 +### DOWNLOAD_WSKEY_SCR="" +## 13.4.4 (失效)下载 wskey 转换脚本的 URL 链接 +### 赋值要求:空值,则默认下载 ZL143L 的脚本。非必要留空即可。也可自定义其他链接。 +### WSKEY_SCR_URL="" +## 13.4.5 (失效)当检索到下载路径 /ql/scripts/ 存在 wskey 转换脚本时,先行检测更新脚本后再进行 wskey 转换 +### 赋值要求:填 1 表示启用功能。空值或其他值表示不启用该功能。 +### CHECK_UPDATE_WSKEY_SCR="" +## 13.4.6 JD_WSCK(wskey) 未录入情况的检测和通知类型 +### 赋值要求:填 1 表示检测和通知 JD_WSCK(wskey) 未录入情况; +### 填 2 表示只检测不通知 JD_WSCK(wskey) 未录入情况; +### 空值或填其他内容表示不启用该功能。 +NOTIFY_WSKEY_NO_EXIST="" +## 13.4.7 JD_WSCK(wskey) 提前转换 JD_COOKIE +### 当 JD_COOKIE 剩余有效期不足 N 小时,强制 JD_WSCK(wskey) 转换 JD_COOKIE +### 赋值要求:正整数数字,(单位:小时); +### 空值表示检测到 JD_COOKIE 过期失效后才启动转换。 +WSKEY_UPDATE_VALIDITY_HOUR="" +### 13.5 是否自动重启生效 Cookie/是否自动禁用失效 Cookie +### 13.5.1 是否禁用失效 Cookie +### 赋值要求:任意赋值表示不自动禁用,空值表示自动禁用 +export WSKEY_AUTO_DISABLE="" +### 13.5.2 是否重启生效 Cookie +### 赋值要求:任意赋值表示不自动重启,空值表示自动重启 +export WSKEY_AUTO_ENABLE="" +## 13.6 将 JD_COOKIE 的 pt_pin 值的备注名同步 至 JD_WSCK(wskey) 的同 pin 值的备注名 +### 赋值要求:填 1 表示同步; +### 空值或填其他内容表示不启用该功能。 +WSKEY_REMARK_SYNC="" +## 13.7 WxPusher相关 +## 说明:默认在 /ql/scripts/ 生成、更新 CK_WxPusherUid.json 文件,如果账号存在 UID ,可配合 ccwav 的 sendNotify.js 实现一对一推送 +### 13.7.1 未录入 WxPusher UID 的账号。 +### 赋值要求:填 1 表示检测并通知未录入 WxPusher UID 的账号; +### 填 2 表示只预测不通知未录入 WxPusher UID 的账号; +### 空值或填其他内容表示不启用该功能。 +CK_WxPusherUid="2" +### 13.7.2 自动补全备注中的时间戳和UID +## 说明:当 CK_WxPusherUid.json 文件,中存在账号的 UID 且面板环境变量备注中缺少时间戳或 UID 时生效 +### 赋值要求:填 1 表示补全; +### 空值或填其他内容表示不启用该功能。 +SCANF_WXPusher_Remarks="" +### 13.7.3 WxPusher App Token,用于一对一推送账号失效通知(同 ccwav 一对一通知环境变量,只可保留一个)。 +### 格式为 AT_xxxx;查看地址:https://wxpusher.zjiecode.com/admin/main/app/appToken +export WP_APP_TOKEN_ONE="" +### 13.7.4 WxPusher 主 UID,主 UID 账号可以接收失效的第三者账号及其是否录入JD_WSCK(wskey)的信息。 +### 格式为 UID_xxxx;查看地址:https://wxpusher.zjiecode.com/admin/main/wxuser/list +MainWP_UID="" +### 13.7.5 禁止通知 MainWP_UID 的模式 +### 赋值要求:填 0 表示状态变化及有效期临期均不通知 MainWP_UID; +### 填 1 表示状态变化通知 MainWP_UID,有效期临期不通知 MainWP_UID; +### 填 2 表示有效期临期通知 MainWP_UID,状态变化不通知 MainWP_UID; +### 空值或填其他内容表示状态变化及有效期临期均通知 MainWP_UID。 +NOTIFY_DISABLE_MainWP_UID="" +### 13.7.6 指定时间段推送失效账号信息 +### 当账号失效后,每天在指定的时间段运行脚本,一次或多次推送 WxPusher 一对一通知; +### 赋值要求:填 0 至 23 的单个正整数。例如:NOTIFY_WxPusher_TIME="10"; +### 填 0 至 23 的多个正整数。例如:NOTIFY_WxPusher_TIME="10 15 20"; +### 填 0 至 23 的数段。例如:NOTIFY_WxPusher_TIME="8~10"或NOTIFY_WxPusher_TIME="8_10"或NOTIFY_WxPusher_TIME="8-10"; +### 填以上模式的混合内容。例如:NOTIFY_WxPusher_TIME="6 8~10 12-14 16_18"; +### 空值或填其他内容表示不启用该功能。 +NOTIFY_WxPusher_TIME="" +## 13.8 扩展通知 +### 通知内容出现在正文顶部或末尾。支持 HTML 语言代码,仅支持 pushplus 、WxPusher 这些 HTML 代码通知的渠道 +### 例如:ExNotify_Top_Content='' +### ExNotify_Bot_Content='NoLan服务器:点击访问' +ExNotify_Top_Content='' +ExNotify_Bot_Content='' + +## 14 Shell 版公告 notify2 环境变量(WxPusher、企业微信应用、pushplus、hxtrip pushplus) +## 14.1 读取 WxPusher UID 的方式 +### 赋值要求:填 1 表示读取青龙面板环境变量中未被禁用的 JD_COOKIE 备注中的 UID; +### 填 2 表示读取 /ql/scripts/CK_WxPusherUid.json。必须是 ckck2 生成的带有 status 键值的版本。 +WxPusher_UID_src='' +## 14.2 过滤已被禁用的环境变量 +### 赋值要求:填 true 表示不发送给已被禁用的环境变量; +### 填 false 表示发送给所有环境变量。 +Filter_Disabled_Variable="true" +## 14.3 推送通知的标题 +NOTICE_TITLE='' +## 14.4 推送通知的摘要内容 +NOTICE_SUMMARY='' +## 14.5 推送通知的正文内容。支持 HTML 语言代码 +NOTICE_CONTENT='' ## 其他需要的变量,脚本中需要的变量使用 export 变量名= 声明即可 @@ -287,7 +483,7 @@ export FRUIT_BEAN_CARD="true" ## 12、是否取关商品。环境变量内容的意思依次是是否取关全部商品(0表示一个都不),是否取关全部店铺数(0表示一个都不),遇到此商品不再进行取关,遇到此店铺不再进行取关 export UN_SUBSCRIBES="300,300,," ## 12、jd_unsubscribe这个任务是用来取关每天做任务关注的商品和店铺,默认在每次运行时取关20个商品和20个店铺 -### 如果取关数量不够,可以根据情况增加,还可以设置 jdUnsubscribeStopGoods 和 jdUnsubscribeStopShop +### 如果取关数量不够,可以根据情况增加,还可以设置 jdUnsubscribeStopGoods 和 jdUnsubscribeStopShop ### 商品取关数量 export goodPageSize="30" ### 店铺取关数量 @@ -316,100 +512,381 @@ export PURCHASE_SHOPS="true" export TUAN_ACTIVEID="" ## 22、京东UA。点点券脚本运行环境变量 export JD_USER_AGENT="" -## 23、京东试用jd_try相关环境变量 -### 控制每次获取商品数量,默认12 -export JD_TRY_PAGE_SIZE="" -### 商品分类,以 @ 隔开,示例:家用电器@手机数码@电脑办公@家居家装 -export JD_TRY_CIDS_KEYS="" -### 试用类型,以 @ 隔开,示例:免费试用@闪电试 -export JD_TRY_TYPE_KEYS="" -### 过滤试用商品关键字,以 @ 隔开(默认内置了很多关键字,建议使用默认) -export JD_TRY_GOOD_FILTERS="" -### 试用商品最低价格 -export JD_TRY_MIN_PRICE="" -### 试用商品最多提供数量(过滤垃圾商品) -export JD_TRY_MAX_SUPPLY_COUNT="" -# 龙猪猪环境变量 -## 京豆雨通知,填写true为不关闭推送,false为关闭推送 -export RAIN_NOTIFY_CONTROL="false" -## 整点京豆雨RRA -export SUPER_RAIN_RRA="" -## 半点京豆雨RRA -export HALF_RAIN_RRA="" +# curtinlv 环境变量 +## 1、赚京豆 +### 助力账号,填写pt_pin或用户名的值,如 zlzh = ['aaaa','xxxx','yyyy'] ,支持ENV +### export zlzh="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|'\1',|g; s| ||g; s|^|[|; s|$\|,$|]|}" | awk 'BEGIN{for(i=0;i<10;i++)hex[i]=i;hex["A"]=hex["a"]=10;hex["B"]=hex["b"]=11;hex["C"]=hex["c"]=12;hex["D"]=hex["d"]=13;hex["E"]=hex["e"]=14;hex["F"]=hex["f"]=15;}{gsub(/\+/," ");i=$0;while(match(i,/%../)){;if(RSTART>1);printf"%s",substr(i,1,RSTART-1);printf"%c",hex[substr(i,RSTART+1,1)]*16+hex[substr(i,RSTART+2,1)];i=substr(i,RSTART+RLENGTH);}print i;}')" ## 支持中文用户名 +export zlzh="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|'\1',|g; s| ||g; s|^|[|; s|$\|,$|]|}")" +## 2、全民抢京豆 +### export qjd_zlzh="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|'\1',|g; s| ||g; s|^|[|; s|$\|,$|]|}" | awk 'BEGIN{for(i=0;i<10;i++)hex[i]=i;hex["A"]=hex["a"]=10;hex["B"]=hex["b"]=11;hex["C"]=hex["c"]=12;hex["D"]=hex["d"]=13;hex["E"]=hex["e"]=14;hex["F"]=hex["f"]=15;}{gsub(/\+/," ");i=$0;while(match(i,/%../)){;if(RSTART>1);printf"%s",substr(i,1,RSTART-1);printf"%c",hex[substr(i,RSTART+1,1)]*16+hex[substr(i,RSTART+2,1)];i=substr(i,RSTART+RLENGTH);}print i;}')" ## 支持中文用户名 +export qjd_zlzh="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|'\1',|g; s| ||g; s|^|[|; s|$\|,$|]|}")" +## 3、签到领现金助力 +### export cash_zlzh="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|'\1',|g; s|^|[|; s|$\|,$|]|}" | awk 'BEGIN{for(i=0;i<10;i++)hex[i]=i;hex["A"]=hex["a"]=10;hex["B"]=hex["b"]=11;hex["C"]=hex["c"]=12;hex["D"]=hex["d"]=13;hex["E"]=hex["e"]=14;hex["F"]=hex["f"]=15;}{gsub(/\+/," ");i=$0;while(match(i,/%../)){;if(RSTART>1);printf"%s",substr(i,1,RSTART-1);printf"%c",hex[substr(i,RSTART+1,1)]*16+hex[substr(i,RSTART+2,1)];i=substr(i,RSTART+RLENGTH);}print i;}')" ## 支持中文用户名 +export cash_zlzh="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|'\1',|g; s|^|[|; s|$\|,$|]|}")" +## 4、京喜工厂开团助力 for Python +### 支持指定账号开团,跑1次脚本默认开3次团,如未指定账号默认给账号一开团。 +### 变量ENV 指定开团账号。可填用户名 或 pt_pin 的值。示例:export jxgc_kaituan="用户1&用户2" +export jxgc_kaituan="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|\1|g; s| |&|g;}" | awk 'BEGIN{for(i=0;i<10;i++)hex[i]=i;hex["A"]=hex["a"]=10;hex["B"]=hex["b"]=11;hex["C"]=hex["c"]=12;hex["D"]=hex["d"]=13;hex["E"]=hex["e"]=14;hex["F"]=hex["f"]=15;}{gsub(/\+/," ");i=$0;while(match(i,/%../)){;if(RSTART>1);printf"%s",substr(i,1,RSTART-1);printf"%c",hex[substr(i,RSTART+1,1)]*16+hex[substr(i,RSTART+2,1)];i=substr(i,RSTART+RLENGTH);}print i;}')" ## 支持中文用户名 +## 5、城城分现金内部助力 +### 指定助力账号,默认按ck顺序助力 +export ccfxj_isOrder="true" +### 助力账号pin名称 +export ccfxj_help="$(echo $JD_COOKIE | perl -pe "{s|&| |g; s|\S*pt_pin=([^; ]+)(?=;?)\S*|\1|g; s| |&|g;}" | awk 'BEGIN{for(i=0;i<10;i++)hex[i]=i;hex["A"]=hex["a"]=10;hex["B"]=hex["b"]=11;hex["C"]=hex["c"]=12;hex["D"]=hex["d"]=13;hex["E"]=hex["e"]=14;hex["F"]=hex["f"]=15;}{gsub(/\+/," ");i=$0;while(match(i,/%../)){;if(RSTART>1);printf"%s",substr(i,1,RSTART-1);printf"%c",hex[substr(i,RSTART+1,1)]*16+hex[substr(i,RSTART+2,1)];i=substr(i,RSTART+RLENGTH);}print i;}')" ## 支持中文用户名 +## 6、入会开卡 +### int,入会送豆满足此值,否则不入会 +export openCardBean="30" +### 布尔值,是否记录符合条件的shopid(默认True) +export record="true" +### 布尔值, True:仅记录,不入会(默认False) +export onlyrecord="false" +### 布尔值,开启记忆功能,接力上一次异常中断位置继续。(默认yes) +export memory="false" +### 布尔值,True:只打印部分日志 False:打印所有日志 +export printlog="true" +### Float,限制速度,单位秒,如果请求过快报错适当调整0.5秒以上 +export sleepNum="0.5" +### 布尔值,True:使用作者远程仓库更新的id,False:使用本地shopid.txt的id +export isRemoteSid="true" +## 6、东东超市商品兑换 +### 填写商品名字,兼容模糊关键词 +export coinToBeans='京豆包' +### 多账号并发,默认开启 True,关闭 False +export blueCoin_Cc='True' +### 轮次 +export startMaxNum="30" +### 多线程并发,相当于每秒点击兑换次数...适当调整,手机会发烫 +export dd_thread="30" +### 开始抢兑时间 +export starttime="23:59:59.00000000" +### 结束时间 +export endtime="00:00:30.00000000" -# 柠檬(胖虎部分环境变量) -## 1、京喜工厂抢茅台 -### 自定义商品变量 -export shopid="1598" ##你要商品ID 冰箱 -export shopid1="1607" ##你要商品ID 茅台 -## 2、推一推 -### 入口:极速版-赚金币 -### 分享到QQ查看邀请码,packetId就是 -### 自定义变量 -export tytpacketId="" -## 3、拆红包 -export chbpacketId="" -## 4、是兄弟就砍我 -### 是兄弟就来砍我脚本要参加砍价的商品ID -export actId="" -export actId1="" -export actId2="" -export actId3="" -export actId4="" -### 是兄弟就来砍我脚本要要参加砍价的邀请码 -export packetId="" -## 5、是兄弟就砍我2 -### 惊喜欢乐砍 自定义变量 入口:京喜APP-我的-惊喜欢乐砍 -export launchid="" ##你的邀请码 -### 第一次参加变量设置为true查看商品ID,填写商品ID后自动获取邀请码邀请;如果只助力,变量设置为false -export first="false" -export active="" ##商品ID -## 6、赚金币 -### 入口:极速版-百元生活费-赚金币-邀请好友 -### 第一次运行可不填写邀请码,运行一次查看自己的邀请码 -export InviterPin="" ##你的邀请码 -## 7、0元砍价,入口:京东-我的-0元砍价 -### 使用教程: -### 第一步,运行脚本一次日志查看商品ID -### 获取你要砍价的商品ID后变量填写 -export skuId="" ##这里填获取的商品ID -### 第二步,再运行一次日志查看商品activityId变量填写 -export activity="" ##这里填获取的商品activityId -## 8、邀请有礼 -### 自定义邀请码环境变量 -export yqm="" ##你的邀请码 -## 9、全民挖现金 -### 入口:京东-我的-全民挖现金 -### 运行一次查看邀请码 变量你的邀请码 -export shareCode="" -## 10、省钱大赢家本期活动ID -export redEnvelopeId="" -## 11、省钱大赢家邀请码 -export inviter="" -## 12、签到领现金添加变量方式 -## 自行添加变量设置邀请码 格式如下 默认10个 -export cashinviteCode="" -export cashinviteCode2="" -export cashinviteCode3="" -## 13、大老板农场 新增自定义变量通知开关。true通知打开,false为关闭 -export dlbtz="true" -## 14、零食街自动兑换变量 -### 自行取消注释和注释 -##export lsjdh="jdAward1" ##兑换5豆 -##export lsjdh="jdAward2" ##兑换10豆 -export lsjdh="jdAward3" ##兑换100豆 -##export lsjdh="jdAward4" ##兑换牛奶 +# smiek2221 环境变量 +## 1、京东签到图形验证修改火爆问题 +### 如果 read ECONNRESET 错误 可以试试 +### 环境变量 JOY_HOST 修改域名 https://jdjoy.jd.com 可以改成ip https://49.7.27.236 +### 如果上面ip不行就自己去ping下域名对应的ip cmd窗口输入—>ping jdjoy.jd.com 再改 +### 不要频繁请求 请过个半小时 1小时在执行 +export JOY_HOST="" +## 2、图形验证文件 JDJRValidator_Pure.js 验证次数 +### 新增验证次数上限 默认25次 验证可能无法成功 +export JDJR_validator_Count="25" +## 3、财富大陆热气球接客次数 +### 新增热气球接客 默认每次运行执行10次 +export gua_wealth_island_serviceNum="500" +## 4、修复点点券 +### 新增显示有多少个非法请求 可以开通知 +export DDQ_NOTIFY_CONTROL="" ##不填或false为通知,true为不通知 +## 5、24 及之后的开卡变量 +export guaopencard_All="true" +export guaopencard_addSku_All="true" +export guaopencardRun_All="true" +export guaopencard_draw="true" +export guaunknownTask_addSku_All="true" +export guaunknownTask_card_All="true" +export gua_carnivalcity_draw="true" +export guaopenwait_All="true" +export guaopencard_draw45="3" +export guaopencard_compositeCard="true" +for ((s = 0; s <= 200; s++)); do + export guaopencard$s="3" + export guaopencard_draw$s="3" + export guaopencard_addSku$s="true" +done +## 5.1、京豆奖励判断 | 1=邀请 2=开卡 3=关注 | 填1,2,3 +export guaopencard_rewardBean="1,2,3" +## 6、开卡新增变量(69之后适配) +# 京豆奖励判断 | 1=邀请 2=开卡 3=关注 | 填1,2,3 +export guaopencard_rewardBean="1,2,3" +## 7、城城领现金自动抽奖 +export jdJxdExchange="true" +export JD_CITY_HELPSHARE="false" # false 优先内部助力 | true 优先助力池 +# cdle 环境变量 +## 1、签到领现金兑换 +### 填写 pt_pin@金额,pt_pin为用户名,可以在 COOKIES 中提取;金额为 2 或 10,例如 LiLei@2 或 HanMeimei@10。多值用 & 连接,例如 LiLei@2&HanMeimei@10 +export exchangeAccounts="$(echo $JD_COOKIE | sed "s/&/\n/g; s/\S*pt_pin=\([^;]\+\);\S*/\1@10/g; s/\n/\&/g;")" ##兑10元现金,比较难兑 +### export exchangeAccounts="$(echo $JD_COOKIE | sed "s/&/ /g; s/\S*pt_pin=\([^;]\+\);\S*/\1@2/g; s/ /&/g;")" ##兑2元现金 +## 2、愤怒的现金 +### 极速助力,打击黑产盗取现金的犯罪行为。默认向前助力9个账号,若要指定被助力账号,需cashHelpPins环境变量中填入需要助力的pt_pin,有多个请用@符号连接。 +export cashHelpPins="$(echo $JD_COOKIE | sed "s/&/\n/g; s/\S*pt_pin=\([^;]\+\);\S*/\1/g; s/\n/@/g;")" +## 3、愤怒的锦鲤 +### 助力账号,填写pt_pin或用户名的值。多个 pt_pin 值用 @ 连接 +export kois="$(echo $JD_COOKIE | sed "s/&/\n/g; s/\S*pt_pin=\([^;]\+\);\S*/\1/g; s/\n/@/g;")" +## 4、发财大赢家助力 +### 需要设置环境变量dyjHelpPins来指定要助力的账号 +export dyjHelpPins="$(echo $JD_COOKIE | sed "s/&/\n/g; s/\S*pt_pin=\([^;]\+\);\S*/\1/g; s/\n/@/g;")" +## 5、早起赢现金 +### 入口:京东汽车-瓜分万元 +### 备注:支付一元才能参与活动,填写环境变量morningScPins给指定账号打卡 +export morningScPins="$(echo $JD_COOKIE | sed "s/&/\n/g; s/\S*pt_pin=\([^;]\+\);\S*/\1/g; s/\n/@/g;")" +## 6、赚30元 +### 备注:赚30元每日签到红包、天降红包助力,在earn30Pins环境变量中填入需要签到和接受助力的账号。 +### 技巧:每月可以提现100元,但需要邀请一个新人下首单。可以用已注册手机号重新注册为新人账号,切换ip可以提高成功率。 +export earn30Pins="$(echo $JD_COOKIE | sed "s/&/\n/g; s/\S*pt_pin=\([^;]\+\);\S*/\1/g; s/\n/@/g;")" +## 7、真·抢京豆 +### 高速并发抢京豆,专治偷助力。设置环境变量angryBeanPins为指定账号助力,默认不助力。 +### 环境变量angryBeanMode可选值priority或speed或smart,默认smart模式。 +### 默认推送通知,如要屏蔽通知需将环境变量enableAngryBeanNotify的值设为false。 +export angryBeanPins="$(echo $JD_COOKIE | sed "s/&/ /g; s/\S*pt_pin=\([^;]\+\);\S*/\1/g; s/ /@/g;")" +export angryBeanMode="priority" +export enableAngryBeanNotify="true" +# star261 环境变量 +## 1、京喜工厂开团 +### 默认第一个CK开团,例:若OPEN_DREAMFACTORY_TUAN="2,3",则第2,第3个CK开团,其他账号参加第2,第3个CK开的团。每执行一次,会领取上一次成团的奖励和新开一次团,每天执行4次能开完3次团和领取3次团的奖励。一个账号能参团一次,一个账号一天能开三次团,请根据自己的情况设置需要开团的CK,一般至少5个CK能成团 +### 助力规则:开团账号开团,其他账号自动参团。 例:有A,B,C账号,A,B账号开团,则B,C会参加A的团,A会参加B的团。账号内互助之后,开团账号若有剩下参团次数,会尝试加入作者团 +### 成团条件:成团所需人数根据活动所需人数变化,一般为5-7人,若5人成团,则5个CK能成团一次,9个CK能成团两次,13个CK能成团三次 +export OPEN_DREAMFACTORY_TUAN="" +# JDHelloWorld 环境变量 +## 1、宠汪汪二代目 +### 默认80,10、20、40、80可选 +export feedNum="80" +### 默认双人跑 +export JD_JOY_teamLevel="2" +## 2、新版京喜财富岛提现 +### 提现金额,可选0.1 0.5 1 2 10 +export CFD_CASHOUT_MONEY=10 +### token,顺序、数量必须与cookie一致。抓包地址:https://m.jingxi.com/jxbfd/user/ExchangePrize +### export CFD_CASH_TOKEN='[{"strPgtimestamp":"你的值","strPhoneID":"你的值","strPgUUNum":"你的值"},{"strPgtimestamp":"你的值","strPhoneID":"你的值","strPgUUNum":"你的值"}]' +export CFD_CASH_TOKEN='[{"strPgtimestamp":"1626623544085","strPhoneID":"878e21db65d2d606","strPgUUNum":"56eaaf98f7d7a69c59e50c6bb40e79c1"}]' +## 3、宠汪汪等提示预存验证码数量不足 +export validate_num="" ##你需要的数值 + +# Aaron-lv 环境变量 +## 1、京东健康社区京豆兑换 +export JD_HEALTH_REWARD_NAME="20" ##只能兑换京豆,填写纯数字20 10 5 3 +## 1、京东金融签到 +### 添加京东签到 金融签到body兼容,body抓包获取 不同账号不通用 +### 变量名: JD_BEAN_SIGN_BODY +### 格式: 演示为两个账号,多账号以此类推 +### export JD_BEAN_SIGN_BODY="{\"pin\":\"ck1的pt_pin\",\"body\":\"reqData=xxxx一大串字符\"}&{\"pin\":\"ck2的pt_pin\",\"body\":\"reqData=xxx一大串字符\"}" +export JD_BEAN_SIGN_BODY="" # Ninja 环境变量 ## 1、通知黑名单 ### 使用 & 分隔,例如 东东乐园&东东萌宠 export NOTIFY_SKIP_LIST="" -# Faker2库环境变量 +# 不知名大佬环境变量 ## 1、清空购物车 -export JD_CART_REMOVE="" -export JD_CART_REMOVESIZE="" +### 将需要跳过清理的账号(cookie中的pt_pin)放到变量CleanUsers中,多个用@隔开 +export CleanUsers="" + +# ccwav 环境变量 +## [1] jd_bean_change.js (已添加支持一对一推送) +### 京东资产变动 + 白嫖榜 + 京东月资产变动,注意事项:如果你遇到TG Bark报错,那是因为报文过长,请使用分段通知功能. +### 1. BEANCHANGE_PERSENT 分段通知 +### 例:export BEANCHANGE_PERSENT="10"总共有22个账号,结果会分成3条推送通知,1~10为第一条推送,11~20为第二条推送,剩余的为第三条推送 +export BEANCHANGE_PERSENT="" ##10合1 +### 2. BEANCHANGE_USERGP2 BEANCHANGE_USERGP3 BEANCHANGE_USERGP4 根据Pt_Pin的值进行分组通知 +### 注意:分组通知会强制禁用BEANCHANGE_PERSENT变量! +### 分组通知的通知标题为 脚本名+"#"+分组数值 +### 主要用于搭配通知脚本的分组通知使用. +### 3.BEANCHANGE_ALLNOTIFY +### 设置推送置顶公告,&表示换行,公告会出现在资产通知中(包括一对一). +### 例子 : export BEANCHANGE_ALLNOTIFY="你好&今天天气不错...&&哥斯拉大战金刚...." +### 显示: +### +### 【✨✨✨✨公告✨✨✨✨】 +### 你好 +### 今天天气不错... +### +### 哥斯拉大战金刚.... +export BEANCHANGE_ALLNOTIFY='因为加了购物车抽奖脚本,所有人早上8点半会自动清理购物车。 +活动1:京东会员权益 +活动2:晚上12点下拉页面签到得20豆 +活动3:连续签到瓜分大奖 +活动4:京东APP->我的->会员店->天天领京豆->幸福小店 +' +### 4. BEANCHANGE_ExJxBeans +### 当设定BEANCHANGE_ExJxBeans="true"且时间在17点之后,会自动将临期京豆兑换成喜豆续命. +export BEANCHANGE_ExJxBeans="true" +### 5. BEANCHANGE_CheckJxBeans +### 当设定BEANCHANGE_CheckJxBeans="true" 将启用喜豆查询功能. +export BEANCHANGE_CheckJxBeans="true" +## [2] jd_CheckCK.js +### 京东CK检测,不正常的自动禁用,正常的如果是禁用状态则自动启用。 +### 配合通知脚本CK触发使用,也可以直接task。 +### 兼容jd_bean_change的BEANCHANGE_USERGP2 BEANCHANGE_USERGP3 BEANCHANGE_USERGP4变量。 +### BEANCHANGE_USERGP2 BEANCHANGE_USERGP3 BEANCHANGE_USERGP4 根据Pt_Pin的值进行分组通知 +### 分组通知的通知标题为 脚本名+"#"+分组数值 +### 主要用于搭配通知脚本的分组通知使用. +### 2021-11-14增加CHECKCK_ALLNOTIFY设置温馨提示,&表示换行,推送时在内容末尾添加显示 +### 一对一推送只有推送账户失效时才会添加.用法参考BEANCHANGE_ALLNOTIFY. +export CHECKCK_SHOWSUCCESSCK="true" ##true表示显示正常CK;false表示不显示正常CK状态; +export CHECKCK_CKALWAYSNOTIFY="false" ##true为永远通知CK状态;false表示关闭通知CK状态 +export CHECKCK_CKAUTOENABLE="false" ##true表示自动启用CK;false表示停用自动启用CK; +export CHECKCK_CKNOWARNERROR="true" ##true表示服务器空数据等错误不触发通知,false表示通知。 + +## [3] sendNotify.js +### 1. NOTIFY_SKIP_LIST 通知黑名单 +### 如果通知标题在此变量里面存在(&隔开),则用屏蔽不发送通知.(PS: Ningjia 作者写的功能,继承过来)。例:export NOTIFY_SKIP_LIST="京东CK检测&京东资产变动" +export NOTIFY_SKIP_NAMETYPELIST="" +### 2. 多套通知。NOTIFY_GROUP2_LIST NOTIFY_GROUP3_LIST NOTIFY_GROUP4_LIST NOTIFY_GROUP5_LIST NOTIFY_GROUP6_LIST +### 如果通知标题在此变量里面存在(&隔开),则用第2/3/4/5/6套推送变量进行配置. +##分组2推送 +## export PUSH_PLUS_TOKEN_hxtrip2="" +## export PUSH_PLUS_USER_hxtrip2="" +export PUSH_PLUS_TOKEN2="" +export PUSH_PLUS_USER2="" +export TG_BOT_TOKEN2="" +export TG_USER_ID2="" +### export NOTIFY_GROUP2_LIST="京东白嫖榜&京东月资产变动&省钱大赢家之翻翻乐&京东CK检测&京喜工厂&金融养猪" + +### 3. NOTIFY_SHOWNAMETYPE 通知显示的账号类型 +### 例:账号名:ccwav 别名:ccwav的别名 Remark:代码玩家 +#export NOTIFY_SHOWNAMETYPE="1" ##效果: 账号名称:代码玩家 +export NOTIFY_SHOWNAMETYPE="2" ##效果: 账号名称:ccwav的别名(代码玩家) +#export NOTIFY_SHOWNAMETYPE="3" ##不做处理,效果: 账号名称:ccwav +#export NOTIFY_SHOWNAMETYPE="4" ##不做处理,效果: 账号名称:ccwav(代码玩家) +### 4. NOTIFY_SKIP_NAMETYPELIST +### 单独指定某些脚本不做NOTIFY_SHOWNAMETYPE变量处理。例:export NOTIFY_SKIP_NAMETYPELIST="东东农场&东东工厂" +export NOTIFY_SKIP_NAMETYPELIST="" +### 5. NOTIFY_NOREMIND +### 对 东东农场领取 东东萌宠领取 京喜工厂领取 汪汪乐园养joy领取 脚本任务更新的通知进行屏蔽,可自行删减. +### export NOTIFY_NOREMIND="京喜工厂&汪汪乐园养joy" +### 6. NOTIFY_NOCKFALSE 屏蔽ck失效通知 +### 执行所有脚本时,如果有单独推送CK失效的请求也不会推送失效通知 +export NOTIFY_NOCKFALSE="true" +### 7. NOTIFY_AUTHOR +### 通知底部显示:本通知 By 测试人 +#export NOTIFY_AUTHOR="测试人" +### 8. NOTIFY_NOLOGINSUCCESS +### 屏蔽青龙登陆成功通知,登陆失败不屏蔽(新版貌似可以直接设定了) +export NOTIFY_NOLOGINSUCCESS="true" +### 9. NOTIFY_CUSTOMNOTIFY +### 强大的自定义通知,格式为 脚本名称&推送组别&推送类型 (推送组别总共5组) +### 推送类型: Server酱&pushplus&Bark&TG机器人&钉钉&企业微信机器人&企业微信应用消息&iGotNotify&gobotNotify +### export NOTIFY_CUSTOMNOTIFY=["京东资产变动&组1&Server酱&Bark&企业微信应用消息&TG机器人&iGotNotify","京东白嫖榜&组1&TG机器人&pushplus&iGotNotify","京东CK检测&组1&TG机器人&pushplus&iGotNotify"] +export NOTIFY_CUSTOMNOTIFY="" +### 10. NOTIFY_CKTASK +### 当接收到发送CK失效通知和Ninja 运行通知时候执行子线程任务,支持js py ts +### export NOTIFY_CKTASK="jd_CheckCK.js" +### 11. PUSH_PLUS_TOKEN_hxtrip 和 PUSH_PLUS_USER_hxtrip +### 增加pushplus.hxtrip.com的推送加接口,貌似更稳定 +export PUSH_PLUS_TOKEN_hxtrip="" +export PUSH_PLUS_USER_hxtrip="" +### 12. 用 WxPusher 进行一对一推送 +### 新方案: +### 填写变量 WP_APP_TOKEN_ONE,按照备注内容@@WxPusherUid的格式修改备注,例子 萌新cc@@UID_AASDADASDQWEQWDADASDADASDASDSA +### 旧方案: +### 详细教程有人写了,不知道是幸运还是不幸: https://www.kejiwanjia.com/jiaocheng/27909.html +### 填写变量 WP_APP_TOKEN_ONE,可在管理台查看: https://wxpusher.zjiecode.com/admin/main/app/appToken +### 手动建立CK_WxPusherUid.json,可以参考CKName_cache.json,只是nickName改成Uid, +### 每个用户的uid可在管理台查看: https://wxpusher.zjiecode.com/admin/main/wxuser/list +### 另外: export WP_APP_ONE_TEXTSHOWREMARK="true",启用一对一推送标题显示备注信息,默认不启用. +#export WP_APP_TOKEN_ONE="" +export WP_APP_ONE_TEXTSHOWREMARK="" +### CK_WxPusherUid.json 内容(pt_pin 如果是汉字需要填写转码后的!): +### [ +### { +### "pt_pin": "ccwav", +### "Uid": "UID_AAAAAAAA" +### }, +### { +### "pt_pin": "中文名", +### "Uid": "BBBBBBBBBB" +### } +### ] +### 15. NOTIFY_SKIP_TEXT +### 如果此变量(&隔开)的关键字在通知内容里面存在,则屏蔽不发送通知. +### 例子 : export NOTIFY_SKIP_TEXT="忘了种植&异常" +### 16. NOTIFY_AUTHOR_BLANK (tcbaby提交) +### 控制不显示推送通知的底部信息 +### 例子 : export NOTIFY_AUTHOR_BLANK="随便填只要非空即可" +## [4] jd_joy_reward_Mod.js 宠汪汪积分兑换有就换版 +export JOY_GET20WHEN16="true" ##控制16点才触发20京豆兑换. + +# X1a0He 环境变量 +## 1、简化版京东日资产变动通知 +### 支持环境变量控制每次发送的账号个数,默认为2 +export JD_BEAN_CHANGE_SENDNUM="10" +## 2、清空购物车 +### 使用前请认真看对应注释:https://raw.githubusercontent.com/X1a0He/jd_scripts_fixed/main/jd_cart_remove.js +### 当环境变量中存在JD_CART并设置为true时才会执行删除购物车 +export JD_CART="true" +### 运行一次取消多全部已关注的商品。数字0表示不取关任何商品,默认20 +export JD_CART_REMOVESIZE="20" +### 是否清空,如果为false,则上面设置了多少就只删除多少条 +export JD_CART_REMOVEALL="true" +### 关键词,用@分隔 +export JD_CART_KEYWORDS="" +## 3、京东试用 +### 由ZCY01二次修改:脚本默认不运行,由X1a0He修复:依然保持脚本默认不运行。true为运行 +### 使用前请认真看对应注释:https://raw.githubusercontent.com/X1a0He/jd_scripts_fixed/main/jd_try_xh.js +export JD_TRY="true" +export JD_TRY_PRICE="0" +export JD_TRY_TABID="1@2@3@4@5@6@7@8@9@10" +export JD_TRY_TITLEFILTERS="保护套@擦杯布@打底裤@档案袋@电商@吊带@俄语@儿童@辅导@妇女@肛门@钢化膜@钢圈@宫颈@狗@和田玉@黑丝@狐臭@互动课@脚气@教程@解酒@戒烟@卷尺@课@老太太@流量卡@六级@美少女@糜烂@棉签@女纯棉@女孩@女内裤@女内衣@女性内裤@女性内衣@培训@培训@屏风底座@驱蚊@祛痘@软件@三角裤@少女@少女内衣@生殖器@手机壳@手机膜@刷头@私处@四级@四六级@童装@娃娃@玩具@网课@网络课程@网校@卫生巾@卫生条@文胸@小靓美@卸妆@胸罩@癣@洋娃娃@衣架@益智@阴道@阴道炎@英语@英语@婴儿@幼儿@鱼@孕妇@在线@在线网络@纸尿裤@中年@种子" +export JD_TRY_TRIALPRICE="0" +export JD_TRY_MINSUPPLYNUM="1" +export JD_TRY_APPLYNUMFILTER="10000" +export JD_TRY_APPLYINTERVAL="5000" +export JD_TRY_MAXLENGTH="100" +export JD_TRY_PASSZC="true" +export JD_TRY_PLOG="true" +export JD_TRY_WHITELIST="false" +export JD_TRY_WHITELISTKEYWORDS="" +## 4、批量取关店铺和商品 +### 是否执行取消关注,默认true +### 使用前请认真看对应注释:https://raw.githubusercontent.com/X1a0He/jd_scripts_fixed/main/jd_unsubscribe_xh.js +export JD_UNSUB="true" +export JD_UNSEB_NOTIFY="false" +export JD_UNSUB_GPAGESIZE="20" +export JD_UNSUB_SPAGESIZE="20" +export JD_UNSUB_GKEYWORDS="" +export JD_UNSUB_SKEYWORDS="" +export JD_UNSUB_INTERVAL="3000" +export JD_UNSUB_PLOG="true" + +# jiulan 环境变量 +export JOYPARK_JOY_START="120" # 只做前几个CK +export JOY_COIN_MAXIMIZE="1" # 最大化硬币收益,如果合成后全部挖土后还有空位,则开启此模式(默认关闭) 0关闭 1开启 + +# ddo +export JD_CITY_HELPPOOL="true" +# shufflewzc +## 1、禁用重复脚本 +### 变量内容为任务关键词,各变量用 & 分隔”。 +### 例:export RES_SUB="Aaron-lv_sync&smiek2121_scripts& /ql/scripts/jd_zjd.py"有三个变量 +export RES_SUB="ccwav_QLScript2&shufflewzc_faker2&Aaron-lv_sync&smiek2121_scripts&chianPLA_xiaoshou&star261_jd_main&gys619" +## 2、京东自动评价 +### true为开启,false为关闭 +export JD_Evaluation="true" + +# 小埋 +export XFXD="true" +export plant_cookie="$JD_COOKIE" +export ACTIVITY_ID="" +export WXGAME_ACT_ID="" + +## Zy143L wskey 转换脚本相关 +### 1、是否检查 Cookie 有效性 +### 赋值要求:任意赋值表示不检查 Cookie 有效性直接进行 wskey 转换,空值表示 Cookie 失效才进行 wskey 转换 +export WSKEY_DISCHECK="" +### 2、各个 wskey 转换 Cookie 的间隔时间 +### 赋值要求:正整数数字,(单位:秒) +### 空值表示默认值 10 秒。 +export WSKEY_SLEEP="0" +### 3、wskey 转换 Cookie 的周期 +### 赋值要求:正整数数字,(单位:小时) +### 空值表示默认值 23 小时。 +export WSKEY_UPDATE_HOUR="" +### 4、自动重试的次数 +### 赋值要求:正整数数字,(单位:次); +### 空值表示默认值 1 次。 +export WSKEY_TRY_COUNT="" +### 4、调试模式 +### 赋值要求:任意赋值开启调试模式,空值表示不启用该功能 +export WSKEY_DEBUG="" + +# passerby-b +## 1、滴滴橙心果园 +### 变量内容为抓包token,多账号用换行或者应为逗号(,)隔开。 +export DD_TOKEN="" +## 2、美团买菜果园 +### 抓cookie:进果园点浇水,在抓包记录里搜water,在请求头里找属性t: thKFxxxxxxxxxxxxxxxxxxx_w,复制冒号后面的值 +export MTMC_COOKIE="" From 45bb272b465081c345c33f35af12e21ea216b6a9 Mon Sep 17 00:00:00 2001 From: 1335344215 <33363399+1335344215@users.noreply.github.com> Date: Sun, 29 May 2022 10:00:40 +0800 Subject: [PATCH 3/4] Update extra.sh --- Tasks/qlrepo/extra.sh | 399 ++++++++++++++++++++++++++++-------------- 1 file changed, 264 insertions(+), 135 deletions(-) diff --git a/Tasks/qlrepo/extra.sh b/Tasks/qlrepo/extra.sh index 7d4b1bf..14dc381 100644 --- a/Tasks/qlrepo/extra.sh +++ b/Tasks/qlrepo/extra.sh @@ -1,9 +1,8 @@ #!/usr/bin/env bash -## Mod: Build20210825V2 +## Mod: Build20220529V1 ## 添加你需要重启自动执行的任意命令,比如 ql repo ## 安装node依赖使用 pnpm install -g xxx xxx(Build 20210728-002 及以上版本的 code.sh,可忽略) -## 安装python依赖使用 pip3 install xxx(Build 20210728-002 及以上版本的 code.sh,可忽略) - +## 安装python依赖使用 pip3 install xxx(Build2021125V1 及以上版本的 extra.sh,可忽略) #------ 说明区 ------# ## 1. 拉取仓库 @@ -11,34 +10,41 @@ ### (2)若运行过 1custom 一键脚本,点击运行即可 ### (3)推荐配置:如下。自行在设置区填写编号 ## 2. 安装依赖 -### (1)默认不安装,因为 Build 20210728-002 及以上版本的 code.sh 自动检查修复依赖 +### (1)默认不安装nodejs依赖,因为 Build 20210728-002 及以上版本的 code.sh 自动检查修复依赖 ### (2)若需要在此处使用,请在设置区设置 ## 3. Ninja ### (1)默认启动并自动更新 ### (2)⚠未修改容器映射的请勿运行,否则会出现青龙打不开或者设备死机等不良后果,映射参考 https://github.com/MoonBegonia/ninja#%E5%AE%B9%E5%99%A8%E5%86%85 - #------ 设置区 ------# -## 1. 拉取仓库编号设置,默认 Faker2 仓库 -CollectedRepo=() ##示例:CollectedRepo=(2 4 6) -OtherRepo=() ##示例:OtherRepo=(1 3) +# shellcheck disable=SC2005 +## 1. 拉取仓库或脚本编号设置,默认 shufflewzc 仓库 +CollectedRepo=(2 5 10) ##示例:CollectedRepo=(2 6) +OtherRepo=(3) ##示例:OtherRepo=(1 3 0) +RawScript=(2) ##示例:RawScript=(1 2) ## 2. 是否安装依赖和安装依赖包的名称设置 -dependencies="no" ##yes为安装,no为不安装 -package_name="canvas png-js date-fns axios crypto-js ts-md5 tslib @types/node dotenv typescript fs require tslib" +dependencies="yes" ##yes为全部安装,no为不安装,al为安装alpine依赖,py为安装python依赖,js为安装nodejs依赖,pl为安装perl依赖 +alpine_pkgs="bash curl gcc git jq libffi-dev make musl-dev openssl-dev perl perl-app-cpanminus perl-dev py3-pip python3 python3-dev wget" +py_reqs="bs4 cryptography pyaes requests rsa tomli " +js_pkgs="@iarna/toml axios crypto-js got" +pl_mods="File::Slurp JSON5 TOML::Dumper" ## 3. Ninja 是否需要启动和更新设置 Ninja="down" ##up为更新,on为启动,down为不运行 - #------ 编号区 ------# -:<<\EOF +: <<\EOF 一、集成仓库(Collected Repositories) 2-JDHelloWorld 3-he1pu 4-Faker2 5-Faker3 -6-yuannian1112 +6-Aaron-lv +7-yuannian1112 +8-zero205 +9-yyds +10-KingRan +11-gys619 二、其他仓库(Other Repositories) -1-passerby-b 2-curtinlv 3-smiek2221 4-cdle @@ -48,112 +54,171 @@ Ninja="down" ##up为更新,on为启动,down为不运行 8-Ariszy (Zhiyi-N) 9-photonmang 10-jiulan -12-star261 -13-Wenmoux -14-Tsukasa007 +11-star261 +13-Tsukasa007 +14-mmnvnmm +15-X1a0He +16-chianPLA +17-hyzaw +18-Zy143L/wskey +19-Mashiro2000/HeyTapTask +20-ccwav +三、单拉脚本(Raw Scripts) +1-禁用重复任务 by Oreomeow +2-修复脚本依赖文件 by spiritLHL +3-互助研究院 extra2.sh +4-互助研究院 ckck2.sh +5-互助研究院 notify2.sh EOF - #------ 代码区 ------# -# 🌱拉取仓库 -CR2(){ - ql repo https://github.com/shufflewzc/faker3.git "jd_|jx_|gua_|jddj_|getJDCookie" "activity|backUp|Coupon|update" "^jd[^_]|USER|utils|^JS|^TS|^JDJRValidator_|^ZooFaker|^sign|ql|sentNotify|JDSignValidator|magic" "main" +# 🌱拉取仓库或脚本 +CR2() { + ql repo https://gh.fakev.cn/JDHelloWorld/jd_scripts.git ""jd_|jx_|getJDCookie"" ""backUp"" ""^jd[^_]|USER|utils|sendNotify|^TS|JD_"" } -CR3(){ - ql repo https://github.com/he1pu/JDHelp.git "jd_|jx_|getJDCookie" "Coupon|update" "^jd[^_]|USER|^sign|^ZooFaker|utils" +CR3() { + ql repo https://gh.fakev.cn/he1pu/JDHelp.git ""jd_|jx_|getJDCookie"" ""activity|backUp|Coupon"" ""^jd[^_]|USER|utils|sendNotify|ZooFaker|JDJRValidator_|^sign"" } -CR4(){ - ql repo https://github.com/shufflewzc/faker2.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator|magic" "main" +CR4() { + ql repo https://gh.fakev.cn/shufflewzc/faker2.git ""jd_|jx_|gua_|jddj_|jdCookie"" ""activity|backUp"" ""^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate| ql|JDSignValidator|magic"" ""main"" } -CR5(){ - ql repo https://github.com/shufflewzc/faker3.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator|magic" "main" +CR5() { + ql repo https://gh.fakev.cn/shufflewzc/faker3.git ""jd_|jx_|gua_|jddj_|getJDCookie"" ""activity|backUp|Coupon|update"" ""^jd[^_]|USER|utils|^JS|^TS|^JDJRValidator_|^ZooFaker|^sign| ql|sentNotify|JDSignValidator|magic"" ""main"" } -CR6(){ - ql repo https://github.com/yuannian1112/jd_scripts.git "jd_|jx_|getJDCookie" "activity|backUp" "^jd[^_]|USER|utils" +CR6() { + ql repo https://gh.fakev.cn/Aaron-lv/sync.git ""jd_|jx_|getJDCookie"" ""activity|backUp|Coupon"" ""^jd[^_]|USER|utils|sendNotify|JD_"" ""jd_scripts"" } -for i in ${CollectedRepo[@]}; do - CR$i +CR7() { + ql repo https://gh.fakev.cn/yuannian1112/jd_scripts.git ""jd_|jx_|getJDCookie"" ""activity|backUp"" ""^jd[^_]|USER|utils"" +} +CR8() { + ql repo https://gh.fakev.cn/zero205/JD_tencent_scf.git ""jd_|jx_|getJDCookie"" ""backUp|icon"" ""^jd[^_]|USER|sendNotify|sign_graphics_validate|JDJR|JDSign"" ""main"" +} +CR9() { + ql repo https://gh.fakev.cn/okyyds/yyds.git ""jd_|jx_|gua_|jddj_|jdCookie"" ""activity|backUp"" ""^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate| ql|JDSignValidator"" ""master"" +} +CR10() { + ql repo https://gh.fakev.cn/KingRan/KR.git ""jd_|jx_|jdCookie"" ""activity|backUp"" ""^jd[^_]|USER|utils|function|sign|sendNotify| ql|JDJR"" +} +CR11() { + ql repo https://gh.fakev.cn/gys619/jdd.git ""jd_|jx_|jddj_|gua_|jddj_|getJDCookie|wskey"" ""activity|backUp"" ""^jd[^_]|USER|utils|ZooFaker_Necklace|JDJRValidator_Pure|sign_graphics_validate|jddj_cookie|function| ql"" +} + + +for i in "${CollectedRepo[@]}"; do + CR"$i" sleep 10 done -OR1(){ - ql repo https://github.com/passerby-b/JDDJ.git "jddj_" "scf_test_event|jddj_fruit_code.js|jddj_getck.js|jd_|jddj_cookie" + +OR2() { +ql repo https://gh.fakev.cn/curtinlv/JD-Script.git ""jd_"" ""jd_cookie"" ""^jd[^_]|sendNotify|OpenCard|getFollowGifts|getJDCookie"" } -OR2(){ - ql repo https://github.com/curtinlv/JD-Script.git "jd_" +OR3() { +ql repo https://gh.fakev.cn/smiek2121/scripts.git ""jd_|gua_"" """" ""^jd[^_]|USER|utils|sendNotify|ZooFaker|JDJRValidator_|^sign|cleancart_"" } -OR3(){ - ql repo https://github.com/smiek2221/scripts.git "jd_|gua_" "" "^MovementFaker|^JDJRValidator|^ZooFaker|^sign" +OR4() { +ql repo https://gh.fakev.cn/cdle/xdd.git ""jd_"" ""disposable|expired|jdc"" } -OR4(){ - ql repo https://github.com/cdle/xdd.git "jd_" "disposable|expired|jdc" +OR5() { +ql repo https://gh.fakev.cn/ZCY01/daily_scripts.git ""jd_"" } -OR5(){ - ql repo https://github.com/ZCY01/daily_scripts.git "jd_" +OR6() { +ql repo https://gh.fakev.cn/whyour/hundun.git ""quanx"" ""tokens|caiyun|didi|donate|fold|Env"" } -OR6(){ - ql repo https://github.com/whyour/hundun.git "quanx" "tokens|caiyun|didi|donate|fold|Env" +OR7() { +ql repo https://gh.fakev.cn/moposmall/Script.git ""Me"" } -OR7(){ - ql repo https://github.com/moposmall/Script.git "Me" +OR8() { +ql repo https://gh.fakev.cn/Ariszy/Private-Script.git ""JD"" } -OR8(){ - ql repo https://github.com/Ariszy/Private-Script.git "JD" +OR9() { +ql repo https://gh.fakev.cn/photonmang/quantumultX.git ""JDscripts"" } -OR9(){ - ql repo https://github.com/photonmang/quantumultX.git "JDscripts" +OR10() { +ql repo https://gh.fakev.cn/jiulan/platypus.git ""jd_|jx_"" """" "Overdue"" ""main"" } -OR10(){ - ql repo https://github.com/jiulan/platypus.git "jd_|jx_" "" "overdue" "main" +OR11() { +ql repo https://gh.fakev.cn/star261/jd.git ""jd_|star"" """" ""code"" ""main"" } -OR11(){ - ql repo https://github.com/panghu999/panghu.git "jd_" +OR13() { +ql repo https://gh.fakev.cn/Tsukasa007/my_script.git ""jd_|jx_"" ""jdCookie|USER_AGENTS|sendNotify|backup"" """" ""master"" } -OR12(){ - ql repo https://github.com/star261/jd.git "jd_|star" "" "code" "main" +OR14() { +ql repo https://gh.fakev.cn/mmnvnmm/omo.git ""jd_|rush_|bean_"" } -OR13(){ - ql repo https://github.com/Wenmoux/scripts.git "other|jd" "" "" "wen" +OR15() { +ql repo https://gh.fakev.cn/X1a0He/jd_scripts_fixed.git ""jd_"" """" ""^jd[^_]"" } -OR14(){ - ql repo https://github.com/Tsukasa007/my_script.git "jd_|jx_" "jdCookie|USER_AGENTS|sendNotify|backup" "" "master" +OR16() { +ql repo https://gh.fakev.cn/chianPLA/xiaoshou.git } -for i in ${OtherRepo[@]}; do - OR$i +OR17() { +ql repo https://gh.fakev.cn/hyzaw/scripts.git ""jd_|ql_"" +} +OR18() { +ql repo https://gh.fakev.cn/Zy143L/wskey.git ""wskey"" +} +OR19() { +ql repo https://gh.fakev.cn/Mashiro2000/HeyTapTask.git """" ""Backup|index|HT.*|sendNotify"" ""HT_config|sendNotify"" +} +OR20() { +ql repo https://gh.fakev.cn/ccwav/QLScript2.git ""jd_"" ""NoUsed"" ""ql|sendNotify|utils|USER|jdCookie"" +} + +for i in "${OtherRepo[@]}"; do + OR"$i" sleep 5 done +RS1() { + ql raw https://raw.githubusercontent.com/Oreomeow/VIP/main/Scripts/py/disable.py +} +RS2() { + ql raw https://raw.githubusercontent.com/spiritLHL/qinglong_auto_tools/master/scripts_check_dependence.py +} +RS3() { + ql raw https://raw.githubusercontent.com/Oreomeow/VIP/main/Scripts/sh/Helpcode2.8/extra2.sh +} +RS4() { + ql raw https://raw.githubusercontent.com/Oreomeow/VIP/main/Scripts/sh/Helpcode2.8/ckck2.sh +} +RS5() { + ql raw https://raw.githubusercontent.com/Oreomeow/VIP/main/Scripts/sh/Helpcode2.8/notify2.sh +} +for i in "${RawScript[@]}"; do + RS"$i" + sleep 2 +done # 🍪Ninja -update_Ninja_normal(){ +update_Ninja_normal() { cd /ql/ninja/backend && git checkout . && git pull pnpm install && pm2 start cp sendNotify.js /ql/scripts/sendNotify.js } -check_Ninja_normal(){ +check_Ninja_normal() { NOWTIME=$(date +%Y-%m-%d-%H-%M-%S) i=0 - while ((i<=0)); do + while ((i <= 0)); do echo "扫描 Ninja 是否在线" - ps -fe|grep ninja|grep -v grep - if [ $? -ne 0 ]; then + if [ -z "$(pgrep -f ninja)" ]; then i=0 - echo $NOWTIME" 扫描结束!Ninja 掉线了不用担心马上重启!" - cd /ql - ps -ef|grep ninja|grep -v grep|awk '{print $1}'|xargs kill -9 - cd /ql/ninja/backend + echo "$NOWTIME"" 扫描结束!Ninja 掉线了不用担心马上重启!" + cd /ql || exit + pgrep -f ninja | xargs kill -9 + cd /ql/ninja/backend || exit pnpm install pm2 start - ps -fe|grep Daemon |grep -v grep - if [ $? -ne 1 ]; then + if [ -n "$(pgrep -f Daemon)" ]; then i=1 - echo $NOWTIME" Ninja 重启完成!" + echo "$NOWTIME"" Ninja 重启完成!" curl "https://api.telegram.org/bot$TG_BOT_TOKEN/sendMessage?chat_id=$TG_USER_ID&text=Ninja 已重启完成" fi else i=1 - echo $NOWTIME" 扫描结束!Ninja 还在!" + echo "$NOWTIME"" 扫描结束!Ninja 还在!" fi done } @@ -164,74 +229,138 @@ elif [ "$Ninja" = "on" ]; then check_Ninja_normal fi - # 📦依赖 -install_dependencies_normal(){ - for i in $@; do - case $i in - canvas) - cd /ql/scripts - if [[ "$(echo $(npm ls $i) | grep ERR)" != "" ]]; then - npm uninstall $i - fi - if [[ "$(npm ls $i)" =~ (empty) ]]; then - apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && npm i $i --prefix /ql/scripts --build-from-source - fi - ;; - *) - if [[ "$(npm ls $i)" =~ $i ]]; then - npm uninstall $i - elif [[ "$(echo $(npm ls $i -g) | grep ERR)" != "" ]]; then - npm uninstall $i -g - fi - if [[ "$(npm ls $i -g)" =~ (empty) ]]; then - [[ $i = "typescript" ]] && npm i $i -g --force || npm i $i -g - fi - ;; - esac +# shellcheck disable=SC2015 +install() { + count=0 + flag=$1 + while true; do + echo ".......... $2 begin .........." + result=$3 + if [ "$result" -gt 0 ]; then + flag=0 + else + flag=1 + fi + if [ $flag -eq "$1" ]; then + echo "---------- $2 succeed ----------" + break + else + count=$((count + 1)) + if [ $count -eq 6 ]; then + echo "!! 自动安装失败,请尝试进入容器后执行 $2 !!" + break + fi + echo ".......... retry in 5 seconds .........." + sleep 5 + fi done } -install_dependencies_force(){ - for i in $@; do - case $i in - canvas) - cd /ql/scripts - if [[ "$(npm ls $i)" =~ $i && "$(echo $(npm ls $i) | grep ERR)" != "" ]]; then - npm uninstall $i - rm -rf /ql/scripts/node_modules/$i - rm -rf /usr/local/lib/node_modules/lodash/* - fi - if [[ "$(npm ls $i)" =~ (empty) ]]; then - apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && npm i $i --prefix /ql/scripts --build-from-source --force - fi - ;; - *) - cd /ql/scripts - if [[ "$(npm ls $i)" =~ $i ]]; then - npm uninstall $i - rm -rf /ql/scripts/node_modules/$i - rm -rf /usr/local/lib/node_modules/lodash/* - elif [[ "$(npm ls $i -g)" =~ $i && "$(echo $(npm ls $i -g) | grep ERR)" != "" ]]; then - npm uninstall $i -g - rm -rf /ql/scripts/node_modules/$i - rm -rf /usr/local/lib/node_modules/lodash/* - fi - if [[ "$(npm ls $i -g)" =~ (empty) ]]; then - npm i $i -g --force - fi - ;; - esac +install_alpine_pkgs() { + apk update + apk_info=" $(apk info) " + for i in $alpine_pkgs; do + if expr "$apk_info" : ".*\s${i}\s.*" >/dev/null; then + echo "$i 已安装" + else + install 0 "apk add $i" "$(apk add --no-cache "$i" | grep -c 'OK')" + fi done } -install_dependencies_all(){ - install_dependencies_normal $package_name - for i in $package_name; do - install_dependencies_force $i +install_py_reqs() { + pip3 install --upgrade pip + pip3_freeze="$(pip3 freeze)" + for i in $py_reqs; do + if expr "$pip3_freeze" : ".*${i}" >/dev/null; then + echo "$i 已安装" + else + install 0 "pip3 install $i" "$(pip3 install "$i" | grep -c 'Successfully')" + fi done } -if [ "$dependencies" = "yes" ]; then - install_dependencies_all & -fi \ No newline at end of file +install_js_pkgs_initial() { + if [ -d "/ql/scripts" ] && [ ! -f "/ql/scripts/package.bak.json" ]; then + cd /ql/scripts || exit + rm -rf node_modules + rm -rf .pnpm-store + mv package-lock.json package-lock.bak.json + mv package.json package.bak.json + mv pnpm-lock.yaml pnpm-lock.bak.yaml + install 1 "npm install -g package-merge" "$(echo "$(npm install -g package-merge && npm ls -g package-merge)" | grep -cE '(empty)|ERR')" && + export NODE_PATH="/usr/local/lib/node_modules" && + node -e \ + "const merge = require('package-merge'); + const fs = require('fs'); + const dst = fs.readFileSync('/ql/repo/Oreomeow_checkinpanel_master/package.json'); + const src = fs.readFileSync('/ql/scripts/package.bak.json'); + fs.writeFile('/ql/scripts/package.json', merge(dst, src), function (err) { + if (err) { + console.log(err); + } + console.log('package.json merged successfully!'); + });" + fi + npm install +} +install_js_pkgs_each() { + is_empty=$(npm ls "$1" | grep empty) + has_err=$(npm ls "$1" | grep ERR) + if [ "$is_empty" = "" ] && [ "$has_err" = "" ]; then + echo "$1 已正确安装" + elif [ "$has_err" != "" ]; then + uninstall_js_pkgs "$1" + else + install 1 "npm install $1" "$(echo "$(npm install --force "$1" && npm ls --force "$1")" | grep -cE '(empty)|ERR')" + fi +} +uninstall_js_pkgs() { + npm uninstall "$1" + rm -rf "$(pwd)"/node_modules/"$1" + rm -rf /usr/local/lib/node_modules/lodash/* + npm cache clear --force +} +install_js_pkgs_all() { + install_js_pkgs_initial + for i in $js_pkgs; do + install_js_pkgs_each "$i" + done + npm ls --depth 0 +} + +install_pl_mods() { + if command -v cpm >/dev/null 2>&1; then + echo "App::cpm 已安装" + else + install 1 "cpanm -fn App::cpm" "$(cpanm -fn App::cpm | grep -c "FAIL")" + if ! command -v cpm >/dev/null 2>&1; then + if [ -f ./cpm ]; then + chmod +x cpm && ./cpm --version + else + cp -f /ql/repo/Oreomeow_checkinpanel_master/cpm ./ && chmod +x cpm && ./cpm --version + if [ ! -f ./cpm ]; then + curl -fsSL https://cdn.jsdelivr.net/gh/Oreomeow/checkinpanel/cpm >cpm && chmod +x cpm && ./cpm --version + fi + fi + fi + fi + for i in $pl_mods; do + if [ -f "$(perldoc -l "$i")" ]; then + echo "$i 已安装" + else + install 1 "cpm install -g $i" "$(cpm install -g "$i" | grep -c "FAIL")" + fi + done +} +[[ $dependencies == yes ]] && { + install_alpine_pkgs + install_py_reqs + install_js_pkgs_all + install_pl_mods +} +[[ $dependencies == *al* ]] && install_alpine_pkgs +[[ $dependencies == *py* ]] && install_py_reqs +[[ $dependencies == *js* ]] && install_js_pkgs_all +[[ $dependencies == *pl* ]] && install_pl_mods From 81101d574f1867bd54ef7d6a5287c7b40851f756 Mon Sep 17 00:00:00 2001 From: 1335344215 <33363399+1335344215@users.noreply.github.com> Date: Sun, 29 May 2022 10:38:44 +0800 Subject: [PATCH 4/4] Update extra.sh --- Tasks/qlrepo/extra.sh | 57 +++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/Tasks/qlrepo/extra.sh b/Tasks/qlrepo/extra.sh index 14dc381..22b5c37 100644 --- a/Tasks/qlrepo/extra.sh +++ b/Tasks/qlrepo/extra.sh @@ -74,34 +74,37 @@ EOF #------ 代码区 ------# # 🌱拉取仓库或脚本 CR2() { - ql repo https://gh.fakev.cn/JDHelloWorld/jd_scripts.git ""jd_|jx_|getJDCookie"" ""backUp"" ""^jd[^_]|USER|utils|sendNotify|^TS|JD_"" + ql repo https://gh.fakev.cn/JDHelloWorld/jd_scripts.git "jd_|jx_|getJDCookie" "backUp" "^jd[^_]|USER|utils|sendNotify|^TS|JD_" } CR3() { - ql repo https://gh.fakev.cn/he1pu/JDHelp.git ""jd_|jx_|getJDCookie"" ""activity|backUp|Coupon"" ""^jd[^_]|USER|utils|sendNotify|ZooFaker|JDJRValidator_|^sign"" + ql repo https://gh.fakev.cn/he1pu/JDHelp.git "jd_|jx_|getJDCookie" "activity|backUp|Coupon" "^jd[^_]|USER|utils|sendNotify|ZooFaker|JDJRValidator_|^sign" } CR4() { - ql repo https://gh.fakev.cn/shufflewzc/faker2.git ""jd_|jx_|gua_|jddj_|jdCookie"" ""activity|backUp"" ""^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate| ql|JDSignValidator|magic"" ""main"" + ql repo https://gh.fakev.cn/shufflewzc/faker2.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator|magic" "main" +} +CR4(){ + ql repo https://github.com/shufflewzc/faker2.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator|magic" "main" } CR5() { - ql repo https://gh.fakev.cn/shufflewzc/faker3.git ""jd_|jx_|gua_|jddj_|getJDCookie"" ""activity|backUp|Coupon|update"" ""^jd[^_]|USER|utils|^JS|^TS|^JDJRValidator_|^ZooFaker|^sign| ql|sentNotify|JDSignValidator|magic"" ""main"" + ql repo https://gh.fakev.cn/shufflewzc/faker3.git "jd_|jx_|gua_|jddj_|getJDCookie" "activity|backUp|Coupon|update" "^jd[^_]|USER|utils|^JS|^TS|^JDJRValidator_|^ZooFaker|^sign|ql|sentNotify|JDSignValidator|magic" "main" } CR6() { - ql repo https://gh.fakev.cn/Aaron-lv/sync.git ""jd_|jx_|getJDCookie"" ""activity|backUp|Coupon"" ""^jd[^_]|USER|utils|sendNotify|JD_"" ""jd_scripts"" + ql repo https://gh.fakev.cn/Aaron-lv/sync.git "jd_|jx_|getJDCookie" "activity|backUp|Coupon" "^jd[^_]|USER|utils|sendNotify|JD_" "jd_scripts" } CR7() { - ql repo https://gh.fakev.cn/yuannian1112/jd_scripts.git ""jd_|jx_|getJDCookie"" ""activity|backUp"" ""^jd[^_]|USER|utils"" + ql repo https://gh.fakev.cn/yuannian1112/jd_scripts.git "jd_|jx_|getJDCookie" "activity|backUp" "^jd[^_]|USER|utils" } CR8() { - ql repo https://gh.fakev.cn/zero205/JD_tencent_scf.git ""jd_|jx_|getJDCookie"" ""backUp|icon"" ""^jd[^_]|USER|sendNotify|sign_graphics_validate|JDJR|JDSign"" ""main"" + ql repo https://gh.fakev.cn/zero205/JD_tencent_scf.git "jd_|jx_|getJDCookie" "backUp|icon" "^jd[^_]|USER|sendNotify|sign_graphics_validate|JDJR|JDSign" "main" } CR9() { - ql repo https://gh.fakev.cn/okyyds/yyds.git ""jd_|jx_|gua_|jddj_|jdCookie"" ""activity|backUp"" ""^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate| ql|JDSignValidator"" ""master"" + ql repo https://gh.fakev.cn/okyyds/yyds.git "jd_|jx_|gua_|jddj_|jdCookie" "activity|backUp" "^jd[^_]|USER|function|utils|sendNotify|ZooFaker_Necklace.js|JDJRValidator_|sign_graphics_validate|ql|JDSignValidator" "master" } CR10() { - ql repo https://gh.fakev.cn/KingRan/KR.git ""jd_|jx_|jdCookie"" ""activity|backUp"" ""^jd[^_]|USER|utils|function|sign|sendNotify| ql|JDJR"" + ql repo https://gh.fakev.cn/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR" } CR11() { - ql repo https://gh.fakev.cn/gys619/jdd.git ""jd_|jx_|jddj_|gua_|jddj_|getJDCookie|wskey"" ""activity|backUp"" ""^jd[^_]|USER|utils|ZooFaker_Necklace|JDJRValidator_Pure|sign_graphics_validate|jddj_cookie|function| ql"" + ql repo https://gh.fakev.cn/gys619/jdd.git "jd_|jx_|jddj_|gua_|jddj_|getJDCookie|wskey" "activity|backUp" "^jd[^_]|USER|utils|ZooFaker_Necklace|JDJRValidator_Pure|sign_graphics_validate|jddj_cookie|function|ql" } @@ -112,58 +115,58 @@ done OR2() { -ql repo https://gh.fakev.cn/curtinlv/JD-Script.git ""jd_"" ""jd_cookie"" ""^jd[^_]|sendNotify|OpenCard|getFollowGifts|getJDCookie"" +ql repo https://gh.fakev.cn/curtinlv/JD-Script.git "jd_" "jd_cookie" "^jd[^_]|sendNotify|OpenCard|getFollowGifts|getJDCookie" } OR3() { -ql repo https://gh.fakev.cn/smiek2121/scripts.git ""jd_|gua_"" """" ""^jd[^_]|USER|utils|sendNotify|ZooFaker|JDJRValidator_|^sign|cleancart_"" +ql repo https://gh.fakev.cn/smiek2121/scripts.git "jd_|gua_" "^jd[^_]|USER|utils|sendNotify|ZooFaker|JDJRValidator_|^sign|cleancart_" } OR4() { -ql repo https://gh.fakev.cn/cdle/xdd.git ""jd_"" ""disposable|expired|jdc"" +ql repo https://gh.fakev.cn/cdle/xdd.git "jd_" "disposable|expired|jdc" } OR5() { -ql repo https://gh.fakev.cn/ZCY01/daily_scripts.git ""jd_"" +ql repo https://gh.fakev.cn/ZCY01/daily_scripts.git "jd_" } OR6() { -ql repo https://gh.fakev.cn/whyour/hundun.git ""quanx"" ""tokens|caiyun|didi|donate|fold|Env"" +ql repo https://gh.fakev.cn/whyour/hundun.git "quanx" "tokens|caiyun|didi|donate|fold|Env" } OR7() { -ql repo https://gh.fakev.cn/moposmall/Script.git ""Me"" +ql repo https://gh.fakev.cn/moposmall/Script.git "Me" } OR8() { -ql repo https://gh.fakev.cn/Ariszy/Private-Script.git ""JD"" +ql repo https://gh.fakev.cn/Ariszy/Private-Script.git "JD" } OR9() { -ql repo https://gh.fakev.cn/photonmang/quantumultX.git ""JDscripts"" +ql repo https://gh.fakev.cn/photonmang/quantumultX.git "JDscripts" } OR10() { -ql repo https://gh.fakev.cn/jiulan/platypus.git ""jd_|jx_"" """" "Overdue"" ""main"" +ql repo https://gh.fakev.cn/jiulan/platypus.git "jd_|jx_" "Overdue" "main" } OR11() { -ql repo https://gh.fakev.cn/star261/jd.git ""jd_|star"" """" ""code"" ""main"" +ql repo https://gh.fakev.cn/star261/jd.git "jd_|star" "code" "main" } OR13() { -ql repo https://gh.fakev.cn/Tsukasa007/my_script.git ""jd_|jx_"" ""jdCookie|USER_AGENTS|sendNotify|backup"" """" ""master"" +ql repo https://gh.fakev.cn/Tsukasa007/my_script.git "jd_|jx_" "jdCookie|USER_AGENTS|sendNotify|backup" "master" } OR14() { -ql repo https://gh.fakev.cn/mmnvnmm/omo.git ""jd_|rush_|bean_"" +ql repo https://gh.fakev.cn/mmnvnmm/omo.git "jd_|rush_|bean_" } OR15() { -ql repo https://gh.fakev.cn/X1a0He/jd_scripts_fixed.git ""jd_"" """" ""^jd[^_]"" +ql repo https://gh.fakev.cn/X1a0He/jd_scripts_fixed.git "jd_" "^jd[^_]" } OR16() { ql repo https://gh.fakev.cn/chianPLA/xiaoshou.git } OR17() { -ql repo https://gh.fakev.cn/hyzaw/scripts.git ""jd_|ql_"" +ql repo https://gh.fakev.cn/hyzaw/scripts.git "jd_|ql_" } OR18() { -ql repo https://gh.fakev.cn/Zy143L/wskey.git ""wskey"" +ql repo https://gh.fakev.cn/Zy143L/wskey.git "wskey" } OR19() { -ql repo https://gh.fakev.cn/Mashiro2000/HeyTapTask.git """" ""Backup|index|HT.*|sendNotify"" ""HT_config|sendNotify"" +ql repo https://gh.fakev.cn/Mashiro2000/HeyTapTask.git "Backup|index|HT.*|sendNotify" "HT_config|sendNotify" } OR20() { -ql repo https://gh.fakev.cn/ccwav/QLScript2.git ""jd_"" ""NoUsed"" ""ql|sendNotify|utils|USER|jdCookie"" +ql repo https://gh.fakev.cn/ccwav/QLScript2.git "jd_" "NoUsed" "ql|sendNotify|utils|USER|jdCookie" } for i in "${OtherRepo[@]}"; do