uodate
This commit is contained in:
parent
cc654a265e
commit
c9be0b5495
BIN
Scripts/sh/.DS_Store
vendored
BIN
Scripts/sh/.DS_Store
vendored
Binary file not shown.
@ -1,28 +1,28 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
## Build 20210821-001
|
## Build 20211208-001-test
|
||||||
|
|
||||||
## 导入通用变量与函数
|
## 导入通用变量与函数
|
||||||
dir_shell=/ql/shell
|
dir_shell=/ql/shell
|
||||||
. $dir_shell/share.sh
|
. $dir_shell/share.sh
|
||||||
|
|
||||||
dir_env_db=/$dir_db/env.db
|
|
||||||
|
|
||||||
## 删除失效Cookie开关,默认是0,表示关闭;设置为1,表示开启
|
|
||||||
DEL_COOKIE="0"
|
|
||||||
|
|
||||||
## 预设的仓库及默认调用仓库设置
|
## 预设的仓库及默认调用仓库设置
|
||||||
## 将"repo=$repo1"改成repo=$repo2"或其他,以默认调用其他仓库脚本日志
|
## 将"repo=$repo1"改成repo=$repo2"或其他,以默认调用其他仓库脚本日志
|
||||||
## 也可自行搜索本脚本内的"name_js=("和"name_js_only",将"repo"改成"repo2"或其他,用以自由组合调用仓库的脚本日志
|
## 也可自行搜索本脚本内的"name_js=("和"name_js_only",将"repo"改成"repo2"或其他,用以自由组合调用仓库的脚本日志
|
||||||
repo1='shufflewzc_faker3' #预设的 Faker3仓库
|
repo1='panghu999_jd_scripts' #预设的 panghu999 仓库
|
||||||
repo4='shufflewzc_faker2' #预设的 shufflewzc 仓库
|
repo2='JDHelloWorld_jd_scripts' #预设的 JDHelloWorld 仓库
|
||||||
repo=$repo4 #默认调用 shufflewzc_faker2 仓库脚本日志
|
repo3='he1pu_JDHelp' #预设的 he1pu 仓库
|
||||||
|
repo4='shufflewzc_faker2' #预设的 shufflewzc 仓库
|
||||||
|
repo5='Wenmoux_scripts_wen_chinnkarahoi' #预设的 Wenmoux 仓库,用于读取口袋书店互助码。需提前拉取温某人的仓库或口袋书店脚本并完整运行。
|
||||||
|
repo6='Aaron-lv_sync_jd_scripts' #预设的 Aaron-lv 仓库
|
||||||
|
repo7='smiek2221_scripts' #预设的 smiek2221 仓库
|
||||||
|
repo="" #空值,表示遍历所有仓库脚本日志
|
||||||
|
|
||||||
## 调试模式开关,默认是0,表示关闭;设置为1,表示开启
|
## 调试模式开关,默认是0,表示关闭;设置为1,表示开启
|
||||||
DEBUG="1"
|
DEBUG="1"
|
||||||
|
|
||||||
## 本脚本限制的最大线程数量
|
## 本脚本限制的最大线程数量
|
||||||
proc_num="7"
|
proc_num="10"
|
||||||
|
|
||||||
## 备份配置文件开关,默认是1,表示开启;设置为0,表示关闭。备份路径 /ql/config/bak/
|
## 备份配置文件开关,默认是1,表示开启;设置为0,表示关闭。备份路径 /ql/config/bak/
|
||||||
BACKUP="1"
|
BACKUP="1"
|
||||||
@ -36,27 +36,32 @@ CLEANBAK_DAYS="2"
|
|||||||
## 填 0 使用“全部一致互助模板”,所有账户要助力的码全部一致
|
## 填 0 使用“全部一致互助模板”,所有账户要助力的码全部一致
|
||||||
## 填 1 使用“均等机会互助模板”,所有账户获得助力次数一致
|
## 填 1 使用“均等机会互助模板”,所有账户获得助力次数一致
|
||||||
## 填 2 使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。
|
## 填 2 使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。
|
||||||
HelpType="1"
|
## 填 3 使用“车头A模式互助模板”,本套脚本内指定前 N 个账号优先助力,N 个以后账号间随机助力(随机部分账号顺序随机)。
|
||||||
|
## 填 4 使用“车头B模式互助模板”,本套脚本内指定前 N 个账号优先助力,N 个以后账号间随机助力(随机部分账号顺序固定)。
|
||||||
|
HelpType=""
|
||||||
|
|
||||||
|
## 定义前 N 个账号优先助力,N 个以后账号间随机助力。front_num="N",N 定义值小于账号总数,当HelpType 赋值 3 或 4 时有效
|
||||||
|
front_num="5"
|
||||||
|
|
||||||
## 定义指定活动采用指定的互助模板。
|
## 定义指定活动采用指定的互助模板。
|
||||||
## 设定值为 DiyHelpType="1" 表示启用功能;不填或填其他内容表示不开启功能。
|
## 设定值为 DiyHelpType="1" 表示启用功能;不填或填其他内容表示不开启功能。
|
||||||
## 如果只是想要控制某个活动以执行某种互助规则,可以参考下面 case 这个命令的例子来控制
|
## 如果只是想要控制某个活动以执行某种互助规则,可以参考下面 case 这个命令的例子来控制
|
||||||
## 活动名称参见 name_config 定义内容;具体可在本脚本中搜索 name_config=( 获悉
|
## 活动名称参见 name_config 定义内容;具体可在本脚本中搜索 name_config=( 获悉
|
||||||
DiyHelpType="0"
|
DiyHelpType=""
|
||||||
diy_help_rules(){
|
diy_help_rules() {
|
||||||
case $1 in
|
case $1 in
|
||||||
Fruit)
|
Fruit)
|
||||||
tmp_helptype="0" # 东东农场使用“全部一致互助模板”,所有账户要助力的码全部一致
|
tmp_helptype="0" # 东东农场使用“全部一致互助模板”,所有账户要助力的码全部一致
|
||||||
;;
|
;;
|
||||||
DreamFactory | JdFactory)
|
DreamFactory | JdFactory)
|
||||||
tmp_helptype="1" # 京喜工厂和东东工厂使用“均等机会互助模板”,所有账户获得助力次数一致
|
tmp_helptype="1" # 京喜工厂和东东工厂使用“均等机会互助模板”,所有账户获得助力次数一致
|
||||||
;;
|
;;
|
||||||
Jdzz | Joy)
|
Jdzz | Joy)
|
||||||
tmp_helptype="2" # 京东赚赚和疯狂的Joy使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。
|
tmp_helptype="2" # 京东赚赚和疯狂的Joy使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
tmp_helptype=$HelpType # 其他活动仍按默认互助模板生产互助规则。
|
tmp_helptype=$HelpType # 其他活动仍按默认互助模板生产互助规则。
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,128 +74,129 @@ diy_help_rules(){
|
|||||||
## c) 设定为 BreakHelpNum="6-12" 表示从第 6 至 12 个账号均不被助力;
|
## c) 设定为 BreakHelpNum="6-12" 表示从第 6 至 12 个账号均不被助力;
|
||||||
## d) 设定为 BreakHelpNum="4 9-14 15~18 19_21" 表示第4个账号、第9至14账号、第15至18账号、第19至21账号均不被助力。注意序号区间连接符仅支持 - ~ _;
|
## d) 设定为 BreakHelpNum="4 9-14 15~18 19_21" 表示第4个账号、第9至14账号、第15至18账号、第19至21账号均不被助力。注意序号区间连接符仅支持 - ~ _;
|
||||||
## 不按示例填写可能引发报错。
|
## 不按示例填写可能引发报错。
|
||||||
BreakHelpType="0" ## 屏蔽模式
|
BreakHelpType="0" ## 屏蔽模式
|
||||||
BreakHelpNum="4 9-14 15~18 19_21" ## 屏蔽账号序号或序号区间
|
BreakHelpNum="4 9-14 15~18 19_21" ## 屏蔽账号序号或序号区间
|
||||||
|
|
||||||
## 定义是否自动更新配置文件中的互助码和互助规则
|
## 定义是否自动更新配置文件中的互助码和互助规则
|
||||||
## 默认为 UpdateType="1" 表示更新互助码和互助规则;UpdateType="2" 表示只更新互助码,不更新互助规则;UpdateType="3" 表示只更新互助规则,不更新互助码;留空或其他数值表示不更新。
|
## 默认为 UpdateType="1" 表示更新互助码和互助规则;UpdateType="2" 表示只更新互助码,不更新互助规则;UpdateType="3" 表示只更新互助规则,不更新互助码;留空或其他数值表示不更新。
|
||||||
UpdateType="1"
|
UpdateType="1"
|
||||||
|
|
||||||
## 定义是否自动安装或修复缺失的依赖,默认为1,表示自动修复;留空或其他数值表示不修复。
|
## 定义是否自动安装或修复缺失的依赖,默认为1,表示自动修复;留空或其他数值表示不修复。
|
||||||
FixDependType="1"
|
FixDependType=""
|
||||||
## 定义监控修复的依赖名称
|
## 定义监控修复的依赖名称
|
||||||
package_name="canvas png-js date-fns axios crypto-js ts-md5 tslib @types/node dotenv typescript fs require tslib"
|
package_name="canvas png-js date-fns axios crypto-js ts-md5 tslib @types/node dotenv got md5 requests typescript fs require tslib jsdom download js-base64 tough-cookie tunnel ws qrcode-terminal jieba prettytable form-data json5 global-agent"
|
||||||
|
|
||||||
## 需组合的环境变量列表,env_name需要和var_name一一对应,如何有新活动按照格式添加(不懂勿动)
|
## 需组合的环境变量列表,env_name需要和var_name一一对应,如何有新活动按照格式添加(不懂勿动)
|
||||||
env_name=(
|
env_name=(
|
||||||
FRUITSHARECODES
|
FRUITSHARECODES
|
||||||
PETSHARECODES
|
PETSHARECODES
|
||||||
PLANT_BEAN_SHARECODES
|
PLANT_BEAN_SHARECODES
|
||||||
DREAM_FACTORY_SHARE_CODES
|
DREAM_FACTORY_SHARE_CODES
|
||||||
DDFACTORY_SHARECODES
|
DDFACTORY_SHARECODES
|
||||||
JDJOY_SHARECODES
|
JDJOY_SHARECODES
|
||||||
JDZZ_SHARECODES
|
JDZZ_SHARECODES
|
||||||
JXNC_SHARECODES
|
JXNC_SHARECODES
|
||||||
BOOKSHOP_SHARECODES
|
BOOKSHOP_SHARECODES
|
||||||
JD_CASH_SHARECODES
|
JD_CASH_SHARECODES
|
||||||
JDSGMH_SHARECODES
|
JDSGMH_SHARECODES
|
||||||
JDCFD_SHARECODES
|
JDCFD_SHARECODES
|
||||||
JDHEALTH_SHARECODES
|
JDHEALTH_SHARECODES
|
||||||
JD818_SHARECODES
|
JD818_SHARECODES
|
||||||
CITY_SHARECODES
|
CITY_SHARECODES
|
||||||
MONEYTREE_SHARECODES
|
MONEYTREE_SHARECODES
|
||||||
)
|
)
|
||||||
var_name=(
|
var_name=(
|
||||||
ForOtherFruit
|
ForOtherFruit
|
||||||
ForOtherPet
|
ForOtherPet
|
||||||
ForOtherBean
|
ForOtherBean
|
||||||
ForOtherDreamFactory
|
ForOtherDreamFactory
|
||||||
ForOtherJdFactory
|
ForOtherJdFactory
|
||||||
ForOtherJoy
|
ForOtherJoy
|
||||||
ForOtherJdzz
|
ForOtherJdzz
|
||||||
ForOtherJxnc
|
ForOtherJxnc
|
||||||
ForOtherBookShop
|
ForOtherBookShop
|
||||||
ForOtherCash
|
ForOtherCash
|
||||||
ForOtherSgmh
|
ForOtherSgmh
|
||||||
ForOtherCfd
|
ForOtherCfd
|
||||||
ForOtherHealth
|
ForOtherHealth
|
||||||
ForOtherCarni
|
ForOtherCarni
|
||||||
ForOtherCity
|
ForOtherCity
|
||||||
ForOtherMoneyTree
|
ForOtherMoneyTree
|
||||||
)
|
)
|
||||||
|
|
||||||
## name_js为脚本文件名,如果使用ql repo命令拉取,文件名含有作者名
|
## name_js为脚本文件名,如果使用ql repo命令拉取,文件名含有作者名
|
||||||
## 所有有互助码的活动,把脚本名称列在 name_js 中,对应 config.sh 中互助码后缀列在 name_config 中,中文名称列在 name_chinese 中。
|
## 所有有互助码的活动,把脚本名称列在 name_js 中,对应 config.sh 中互助码后缀列在 name_config 中,中文名称列在 name_chinese 中。
|
||||||
## name_js、name_config 和 name_chinese 中的三个名称必须一一对应。
|
## name_js、name_config 和 name_chinese 中的三个名称必须一一对应。
|
||||||
name_js=(
|
name_js=(
|
||||||
"$repo"_jd_fruit
|
"$repo"_jd_fruit
|
||||||
"$repo"_jd_pet
|
"$repo"_jd_pet
|
||||||
"$repo"_jd_plantBean
|
"$repo"_jd_plantBean
|
||||||
"$repo"_jd_dreamFactory
|
"$repo"_jd_dreamFactory
|
||||||
"$repo"_jd_jdfactory
|
"$repo"_jd_jdfactory
|
||||||
"$repo"_jd_crazy_joy
|
"$repo"_jd_crazy_joy
|
||||||
"$repo"_jd_jdzz
|
"$repo"_jd_jdzz
|
||||||
"$repo"_jd_jxnc
|
"$repo"_jd_jxnc
|
||||||
"$repo"_jd_bookshop
|
"$repo"_jd_bookshop
|
||||||
"$repo"_jd_cash
|
"$repo"_jd_cash
|
||||||
"$repo"_jd_sgmh
|
"$repo"_jd_sgmh
|
||||||
"$repo"_jd_cfd
|
"$repo"_jd_cfd
|
||||||
"$repo"_jd_health
|
"$repo"_jd_health
|
||||||
"$repo"_jd_carnivalcity
|
"$repo"_jd_carnivalcity
|
||||||
"$repo"_jd_city
|
"$repo"_jd_city
|
||||||
"$repo4"_jd_moneyTree_heip
|
"$repo"_jd_moneyTree_he?p
|
||||||
"$repo"_jd_cfd
|
"$repo"_jd_cfd
|
||||||
)
|
)
|
||||||
|
|
||||||
name_config=(
|
name_config=(
|
||||||
Fruit
|
Fruit
|
||||||
Pet
|
Pet
|
||||||
Bean
|
Bean
|
||||||
DreamFactory
|
DreamFactory
|
||||||
JdFactory
|
JdFactory
|
||||||
Joy
|
Joy
|
||||||
Jdzz
|
Jdzz
|
||||||
Jxnc
|
Jxnc
|
||||||
BookShop
|
BookShop
|
||||||
Cash
|
Cash
|
||||||
Sgmh
|
Sgmh
|
||||||
Cfd
|
Cfd
|
||||||
Health
|
Health
|
||||||
Carni
|
Carni
|
||||||
City
|
City
|
||||||
MoneyTree
|
MoneyTree
|
||||||
TokenJxnc
|
TokenJxnc
|
||||||
)
|
)
|
||||||
|
|
||||||
name_chinese=(
|
name_chinese=(
|
||||||
东东农场
|
东东农场
|
||||||
东东萌宠
|
东东萌宠
|
||||||
京东种豆得豆
|
京东种豆得豆
|
||||||
京喜工厂
|
京喜工厂
|
||||||
东东工厂
|
东东工厂
|
||||||
crazyJoy任务
|
crazyJoy任务
|
||||||
京东赚赚
|
京东赚赚
|
||||||
京喜农场
|
京喜农场
|
||||||
口袋书店
|
口袋书店
|
||||||
签到领现金
|
签到领现金
|
||||||
闪购盲盒
|
闪购盲盒
|
||||||
京喜财富岛
|
京喜财富岛
|
||||||
东东健康社区
|
东东健康社区
|
||||||
京东手机狂欢城
|
京东手机狂欢城
|
||||||
城城领现金
|
城城领现金
|
||||||
摇钱树
|
摇钱树
|
||||||
京喜token
|
京喜token
|
||||||
)
|
)
|
||||||
|
|
||||||
## 生成pt_pin清单
|
## 生成pt_pin清单
|
||||||
gen_pt_pin_array() {
|
gen_pt_pin_array() {
|
||||||
local envs=$(eval echo "\$JD_COOKIE")
|
local envs=$(eval echo "\$JD_COOKIE")
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
local tmp1 tmp2 i pt_pin_temp
|
local tmp1 tmp2 i pt_pin_temp
|
||||||
for i in "${!array[@]}"; do
|
for i in "${!array[@]}"; do
|
||||||
pt_pin_temp=$(echo ${array[i]} | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}")
|
pt_pin_temp=$(echo ${array[i]} | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}")
|
||||||
[[ $pt_pin_temp == *\\x* ]] && pt_pin[i]=$(printf $pt_pin_temp) || pt_pin[i]=$pt_pin_temp
|
remark_name[i]=$(cat $dir_db/env.db | grep ${array[i]} | grep remarks | perl -pe "{s|.*remarks\":\"([^\"]+).*|\1|g}" | tail -1)
|
||||||
done
|
[[ $pt_pin_temp == *\\x* ]] && pt_pin[i]=$(printf $pt_pin_temp) || pt_pin[i]=$pt_pin_temp
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
## 导出互助码的通用程序,$1:去掉后缀的脚本名称,$2:config.sh中的后缀,$3:活动中文名称
|
## 导出互助码的通用程序,$1:去掉后缀的脚本名称,$2:config.sh中的后缀,$3:活动中文名称
|
||||||
@ -208,12 +214,12 @@ export_codes_sub() {
|
|||||||
local envs=$(eval echo "\$JD_COOKIE")
|
local envs=$(eval echo "\$JD_COOKIE")
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
local user_sum=${#array[*]}
|
local user_sum=${#array[*]}
|
||||||
if cd $dir_log/$task_name &>/dev/null && [[ $(ls) ]]; then
|
if cd $dir_log &>/dev/null && [[ $(ls ./*$task_name*/*.log 2>/dev/null | wc -l) -gt 0 ]]; then
|
||||||
## 寻找所有互助码以及对应的pt_pin
|
## 寻找所有互助码以及对应的pt_pin
|
||||||
i=0
|
i=0
|
||||||
pt_pin_in_log=()
|
pt_pin_in_log=()
|
||||||
code=()
|
code=()
|
||||||
pt_pin_and_code=$(ls -r *.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}')
|
pt_pin_and_code=$(ls -t ./*$task_name*/*.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}')
|
||||||
for line in $pt_pin_and_code; do
|
for line in $pt_pin_and_code; do
|
||||||
pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}')
|
pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}')
|
||||||
code[i]=$(echo $line | awk -F "&" '{print $2}')
|
code[i]=$(echo $line | awk -F "&" '{print $2}')
|
||||||
@ -254,7 +260,7 @@ export_codes_sub() {
|
|||||||
done
|
done
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
|
||||||
else
|
else
|
||||||
echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!"
|
echo -e "\n#【$(date +%X)】 变量值填写不规范,请检查后重试!"
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@ -288,7 +294,7 @@ export_codes_sub() {
|
|||||||
done
|
done
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||||||
else
|
else
|
||||||
echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!"
|
echo -e "\n#【$(date +%X)】 变量值填写不规范,请检查后重试!"
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@ -315,7 +321,7 @@ export_codes_sub() {
|
|||||||
done
|
done
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
|
||||||
else
|
else
|
||||||
echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!"
|
echo -e "\n#【$(date +%X)】 变量值填写不规范,请检查后重试!"
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@ -326,6 +332,53 @@ export_codes_sub() {
|
|||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
3) ## 本套脚本内指定前 N 个账号优先助力,N 个以后账号间随机助力(随机部分账号顺序随机)。
|
||||||
|
HelpTemp="车头A模式"
|
||||||
|
echo -e "\n## 采用\"$HelpTemp\"互助模板"
|
||||||
|
[[ $user_sum -le $front_num ]] && front_num=$user_sum
|
||||||
|
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||||||
|
tmp_for_other=""
|
||||||
|
j=$((m + 1))
|
||||||
|
for ((n = 0; n < $user_sum; n++)); do
|
||||||
|
[[ $m -eq $n ]] && continue
|
||||||
|
k=$((n + 1))
|
||||||
|
if [[ $k -le $front_num ]]; then
|
||||||
|
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
tmp_ramdom_for_other=""
|
||||||
|
random_num_list=$(seq $((front_num + 1)) $user_sum | sort -R)
|
||||||
|
for x in $random_num_list; do
|
||||||
|
tmp_ramdom_for_other="$tmp_ramdom_for_other@\${$config_name_my$x}"
|
||||||
|
done
|
||||||
|
echo "$config_name_for_other$j=\"$tmp_for_other$tmp_ramdom_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
4) ## 本套脚本内指定前 N 个账号优先助力,N 个以后账号间随机助力(随机部分账号顺序固定)。
|
||||||
|
HelpTemp="车头B模式"
|
||||||
|
echo -e "\n## 采用\"$HelpTemp\"互助模板"
|
||||||
|
[[ $user_sum -le $front_num ]] && front_num=$user_sum
|
||||||
|
random_num_list=$(seq $((front_num + 1)) $user_sum | sort -R)
|
||||||
|
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||||||
|
tmp_for_other=""
|
||||||
|
j=$((m + 1))
|
||||||
|
for ((n = 0; n < $user_sum; n++)); do
|
||||||
|
[[ $m -eq $n ]] && continue
|
||||||
|
k=$((n + 1))
|
||||||
|
if [[ $k -le $front_num ]]; then
|
||||||
|
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
tmp_ramdom_for_other=""
|
||||||
|
for x in $random_num_list; do
|
||||||
|
[[ $m -eq $((x - 1)) ]] && continue
|
||||||
|
tmp_ramdom_for_other="$tmp_ramdom_for_other@\${$config_name_my$x}"
|
||||||
|
done
|
||||||
|
echo "$config_name_for_other$j=\"$tmp_for_other$tmp_ramdom_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
*) ## 按编号优先
|
*) ## 按编号优先
|
||||||
HelpTemp="按编号优先"
|
HelpTemp="按编号优先"
|
||||||
echo -e "\n## 采用\"$HelpTemp\"互助模板"
|
echo -e "\n## 采用\"$HelpTemp\"互助模板"
|
||||||
@ -342,7 +395,7 @@ export_codes_sub() {
|
|||||||
done
|
done
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||||||
else
|
else
|
||||||
echo -e "\n#【`date +%X`】 变量值填写不规范,请检查后重试!"
|
echo -e "\n#【$(date +%X)】 变量值填写不规范,请检查后重试!"
|
||||||
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@ -355,22 +408,22 @@ export_codes_sub() {
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "#【`date +%X`】 未运行过 $task_name.js 脚本,未产生日志"
|
echo "#【$(date +%X)】 未运行过 $chinese_name 的脚本,未产生日志"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
## 汇总输出
|
## 汇总输出
|
||||||
export_all_codes() {
|
export_all_codes() {
|
||||||
gen_pt_pin_array
|
gen_pt_pin_array
|
||||||
[[ $DEBUG = "1" ]] && echo -e "\n#【`date +%X`】 当前 code.sh 的线程数量:$ps_num"
|
[[ $DEBUG = "1" ]] && echo -e "\n#【$(date +%X)】 当前 code.sh 的线程数量:$ps_num"
|
||||||
[[ $DEBUG = "1" ]] && echo -e "\n#【`date +%X`】 预设的 JD_COOKIE 数量:`echo $JD_COOKIE | grep -o 'pt_key' | wc -l`"
|
[[ $DEBUG = "1" ]] && echo -e "\n#【$(date +%X)】 预设的 JD_COOKIE 数量:$(echo $JD_COOKIE | grep -o 'pt_key' | wc -l)"
|
||||||
[[ $DEBUG = "1" ]] && echo -e "\n#【`date +%X`】 预设的 JD_COOKIE 环境变量数量:`echo $JD_COOKIE | sed 's/&/\n/g' | wc -l`"
|
[[ $DEBUG = "1" ]] && echo -e "\n#【$(date +%X)】 预设的 JD_COOKIE 环境变量数量:$(echo $JD_COOKIE | sed 's/&/\n/g' | wc -l)"
|
||||||
[[ $DEBUG = "1" && "$(echo $JD_COOKIE | sed 's/&/\n/g' | wc -l)" = "1" && "$(echo $JD_COOKIE | grep -o 'pt_key' | wc -l)" -gt 1 ]] && echo -e "\n#【`date +%X`】 检测到您将多个 COOKIES 填写到单个环境变量值,请注意将各 COOKIES 采用 & 分隔,否则将无法完整输出互助码及互助规则!"
|
[[ $DEBUG = "1" && "$(echo $JD_COOKIE | sed 's/&/\n/g' | wc -l)" = "1" && "$(echo $JD_COOKIE | grep -o 'pt_key' | wc -l)" -gt 1 ]] && echo -e "\n#【$(date +%X)】 检测到您将多个 COOKIES 填写到单个环境变量值,请注意将各 COOKIES 采用 & 分隔,否则将无法完整输出互助码及互助规则!"
|
||||||
echo -e "\n#【`date +%X`】 从日志提取互助码,编号和配置文件中Cookie编号完全对应,如果为空就是所有日志中都没有。\n\n#【`date +%X`】 即使某个MyXxx变量未赋值,也可以将其变量名填在ForOtherXxx中,jtask脚本会自动过滤空值。\n"
|
echo -e "\n#【$(date +%X)】 从日志提取互助码,编号和配置文件中Cookie编号完全对应,如果为空就是所有日志中都没有。\n\n#【$(date +%X)】 即使某个MyXxx变量未赋值,也可以将其变量名填在ForOtherXxx中,jtask脚本会自动过滤空值。\n"
|
||||||
if [[ $DiyHelpType = "1" ]]; then
|
if [[ $DiyHelpType = "1" ]]; then
|
||||||
echo -e "#【`date +%X`】 您已启用指定活动采用指定互助模板功能!"
|
echo -e "#【$(date +%X)】 您已启用指定活动采用指定互助模板功能!"
|
||||||
else
|
else
|
||||||
echo -n "#【`date +%X`】 您选择的互助码模板为:"
|
echo -n "#【$(date +%X)】 您选择的互助码模板为:"
|
||||||
case $HelpType in
|
case $HelpType in
|
||||||
0)
|
0)
|
||||||
echo "所有账号助力码全部一致。"
|
echo "所有账号助力码全部一致。"
|
||||||
@ -381,21 +434,24 @@ export_all_codes() {
|
|||||||
2)
|
2)
|
||||||
echo "本套脚本内账号间随机顺序助力。"
|
echo "本套脚本内账号间随机顺序助力。"
|
||||||
;;
|
;;
|
||||||
*)
|
3)
|
||||||
|
echo "本套脚本内指定前 N 个账号优先助力,N 个以后账号间随机助力(随机部分账号顺序随机)。"
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
echo "本套脚本内指定前 N 个账号优先助力,N 个以后账号间随机助力(随机部分账号顺序固定)。"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
echo "按账号编号优先。"
|
echo "按账号编号优先。"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
[[ $BreakHelpType = "1" ]] && echo -e "\n#【`date +%X`】 您已启用屏蔽模式,账号 $BreakHelpNum 将不被助力!"
|
[[ $BreakHelpType = "1" ]] && echo -e "\n#【$(date +%X)】 您已启用屏蔽模式,账号 $BreakHelpNum 将不被助力!"
|
||||||
if [ "$ps_num" -gt $proc_num ]; then
|
if [ "$ps_num" -gt $proc_num ]; then
|
||||||
echo -e "\n#【`date +%X`】 检测到 code.sh 的线程过多 ,请稍后再试!"
|
echo -e "\n#【$(date +%X)】 检测到 code.sh 的线程过多 ,请稍后再试!"
|
||||||
exit
|
|
||||||
elif [ -z $repo ]; then
|
|
||||||
echo -e "\n#【`date +%X`】 未检测到兼容的活动脚本日志,无法读取互助码,退出!"
|
|
||||||
exit
|
exit
|
||||||
else
|
else
|
||||||
echo -e "\n#【`date +%X`】 默认调用 $repo 的脚本日志,格式化导出互助码,生成互助规则!"
|
[[ $repo ]] && echo -e "\n#【$(date +%X)】 默认查询 $repo 的活动脚本日志,格式化导出互助码,生成互助规则!" || echo -e "\n#【$(date +%X)】 遍历活动脚本日志,格式化导出互助码,生成互助规则!"
|
||||||
dump_user_info
|
# dump_user_info
|
||||||
for ((i = 0; i < ${#name_js[*]}; i++)); do
|
for ((i = 0; i < ${#name_js[*]}; i++)); do
|
||||||
echo -e "\n## ${name_chinese[i]}:"
|
echo -e "\n## ${name_chinese[i]}:"
|
||||||
export_codes_sub "${name_js[i]}" "${name_config[i]}" "${name_chinese[i]}"
|
export_codes_sub "${name_js[i]}" "${name_config[i]}" "${name_chinese[i]}"
|
||||||
@ -404,82 +460,84 @@ export_all_codes() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#更新配置文件中互助码的函数
|
#更新配置文件中互助码的函数
|
||||||
help_codes(){
|
help_codes() {
|
||||||
local envs=$(eval echo "\$JD_COOKIE")
|
local envs=$(eval echo "\$JD_COOKIE")
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
local user_sum=${#array[*]}
|
local user_sum=${#array[*]}
|
||||||
local config_name=$1
|
local config_name=$1
|
||||||
local chinese_name=$2
|
local chinese_name=$2
|
||||||
local config_name_my=My$config_name
|
local config_name_my=My$config_name
|
||||||
local config_name_for_other=ForOther$config_name
|
local config_name_for_other=ForOther$config_name
|
||||||
local ShareCode_dir="$dir_log/.ShareCode"
|
local ShareCode_dir="$dir_log/.ShareCode"
|
||||||
local ShareCode_log="$ShareCode_dir/$config_name.log"
|
local ShareCode_log="$ShareCode_dir/$config_name.log"
|
||||||
local i j k
|
local i j k
|
||||||
|
|
||||||
#更新配置文件中的互助码
|
#更新配置文件中的互助码
|
||||||
[[ ! -d $ShareCode_dir ]] && mkdir -p $ShareCode_dir
|
[[ ! -d $ShareCode_dir ]] && mkdir -p $ShareCode_dir
|
||||||
[[ "$1" = "TokenJxnc" ]] && config_name_my=$1
|
[[ "$1" = "TokenJxnc" ]] && config_name_my=$1
|
||||||
if [ ! -f $ShareCode_log ] || [ -z "$(cat $ShareCode_log | grep "^$config_name_my\d")" ]; then
|
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
|
echo -e "\n## $chinese_name\n${config_name_my}1=''\n" >>$ShareCode_log
|
||||||
fi
|
|
||||||
for ((i=1; i<=200; 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
|
|
||||||
if [ -z "$(grep "^$config_name_my$i" $ShareCode_log)" ]; then
|
|
||||||
sed -i "/^$config_name_my$[$i-1]='.*'/ s/$/\n$config_name_my$i=\'\'/" $ShareCode_log
|
|
||||||
fi
|
|
||||||
if [ "$new_code" != "$old_code" ]; then
|
|
||||||
if [[ "$new_code" != "undefined" ]] && [[ "$new_code" != "{}" ]]; then
|
|
||||||
sed -i "s/^$config_name_my$i='$old_code'$/$config_name_my$i='$new_code'/" $ShareCode_log
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif [[ $i -gt $user_sum ]] && [[ $i -gt 1 ]]; then
|
|
||||||
sed -i "/^$config_name_my$i/d" $ShareCode_log
|
|
||||||
elif [[ $i -eq 1 ]] && [[ -z "$new_code" ]]; then
|
|
||||||
sed -i "s/^$config_name_my$i='\S*'$/$config_name_my$i=''/" $ShareCode_log
|
|
||||||
fi
|
fi
|
||||||
done
|
echo -e "\n#【$(date +%X)】 正在更新 $chinese_name 的互助码..."
|
||||||
sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log
|
for ((i = 1; i <= 200; 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
|
||||||
|
if [ -z "$(grep "^$config_name_my$i" $ShareCode_log)" ]; then
|
||||||
|
sed -i "/^$config_name_my$(($i - 1))='.*'/ s/$/\n$config_name_my$i=\'\'/" $ShareCode_log
|
||||||
|
fi
|
||||||
|
if [ "$new_code" != "$old_code" ]; then
|
||||||
|
if [[ "$new_code" != "undefined" ]] && [[ "$new_code" != "{}" ]]; then
|
||||||
|
sed -i "s/^$config_name_my$i='$old_code'$/$config_name_my$i='$new_code'/" $ShareCode_log
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif [[ $i -gt $user_sum ]] && [[ $i -gt 1 ]]; then
|
||||||
|
sed -i "/^$config_name_my$i/d" $ShareCode_log
|
||||||
|
elif [[ $i -eq 1 ]] && [[ -z "$new_code" ]]; then
|
||||||
|
sed -i "s/^$config_name_my$i='\S*'$/$config_name_my$i=''/" $ShareCode_log
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log
|
||||||
}
|
}
|
||||||
|
|
||||||
#更新配置文件中互助规则的函数
|
#更新配置文件中互助规则的函数
|
||||||
help_rules(){
|
help_rules() {
|
||||||
local envs=$(eval echo "\$JD_COOKIE")
|
local envs=$(eval echo "\$JD_COOKIE")
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
local user_sum=${#array[*]}
|
local user_sum=${#array[*]}
|
||||||
local config_name=$1
|
local config_name=$1
|
||||||
local chinese_name=$2
|
local chinese_name=$2
|
||||||
local config_name_my=My$config_name
|
local config_name_my=My$config_name
|
||||||
local config_name_for_other=ForOther$config_name
|
local config_name_for_other=ForOther$config_name
|
||||||
local ShareCode_dir="$dir_log/.ShareCode"
|
local ShareCode_dir="$dir_log/.ShareCode"
|
||||||
local ShareCode_log="$ShareCode_dir/$config_name.log"
|
local ShareCode_log="$ShareCode_dir/$config_name.log"
|
||||||
local i j k
|
local i j k
|
||||||
|
|
||||||
#更新配置文件中的互助规则
|
#更新配置文件中的互助规则
|
||||||
if [ -z "$(cat $ShareCode_log | grep "^$config_name_for_other\d")" ]; then
|
echo -e "\n#【$(date +%X)】 正在更新 $chinese_name 的互助规则..."
|
||||||
echo -e "${config_name_for_other}1=\"\"" >> $ShareCode_log
|
if [ -z "$(cat $ShareCode_log | grep "^$config_name_for_other\d")" ]; then
|
||||||
fi
|
echo -e "${config_name_for_other}1=\"\"" >>$ShareCode_log
|
||||||
for ((j=1; j<=200; 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
|
|
||||||
if [ -z "$(grep "^$config_name_for_other$j" $ShareCode_log)" ]; then
|
|
||||||
sed -i "/^$config_name_for_other$[$j-1]=".*"/ s/$/\n$config_name_for_other$j=\"\"/" $ShareCode_log
|
|
||||||
fi
|
|
||||||
if [ "$new_rule" != "$old_rule" ]; then
|
|
||||||
sed -i "s/^$config_name_for_other$j=\"$old_rule\"$/$config_name_for_other$j=\"$new_rule\"/" $ShareCode_log
|
|
||||||
fi
|
|
||||||
elif [[ $j -gt $user_sum ]] && [[ $j -gt 1 ]]; then
|
|
||||||
sed -i "/^$config_name_for_other$j/d" $ShareCode_log
|
|
||||||
elif [[ $j -eq 1 ]] && [[ -z "$new_rule" ]]; then
|
|
||||||
sed -i "s/^$config_name_for_other$j=\"\S*\"$/$config_name_for_other$j=\"\"/" $ShareCode_log
|
|
||||||
fi
|
fi
|
||||||
done
|
for ((j = 1; j <= 200; j++)); do
|
||||||
sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log
|
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
|
||||||
|
if [ -z "$(grep "^$config_name_for_other$j" $ShareCode_log)" ]; then
|
||||||
|
sed -i "/^$config_name_for_other$(($j - 1))=".*"/ s/$/\n$config_name_for_other$j=\"\"/" $ShareCode_log
|
||||||
|
fi
|
||||||
|
if [ "$new_rule" != "$old_rule" ]; then
|
||||||
|
sed -i "s/^$config_name_for_other$j=\"$old_rule\"$/$config_name_for_other$j=\"$new_rule\"/" $ShareCode_log
|
||||||
|
fi
|
||||||
|
elif [[ $j -gt $user_sum ]] && [[ $j -gt 1 ]]; then
|
||||||
|
sed -i "/^$config_name_for_other$j/d" $ShareCode_log
|
||||||
|
elif [[ $j -eq 1 ]] && [[ -z "$new_rule" ]]; then
|
||||||
|
sed -i "s/^$config_name_for_other$j=\"\S*\"$/$config_name_for_other$j=\"\"/" $ShareCode_log
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log
|
||||||
}
|
}
|
||||||
|
|
||||||
export_codes_sub_only(){
|
export_codes_sub_only() {
|
||||||
if [ "$(cat $dir_scripts/"$repo"_jd_cfd.js | grep "// console.log(\`token")" != "" ]; then
|
if [ "$(cat $dir_scripts/"$repo"_jd_cfd.js | grep "// console.log(\`token")" != "" ]; then
|
||||||
echo -e "\n# 正在修改 "$repo"_jd_cfd.js ,待完全运行 "$repo"_jd_cfd.js 后即可输出 token !"
|
echo -e "\n# 正在修改 "$repo"_jd_cfd.js ,待完全运行 "$repo"_jd_cfd.js 后即可输出 token !"
|
||||||
fi
|
fi
|
||||||
@ -491,12 +549,12 @@ export_codes_sub_only(){
|
|||||||
local envs=$(eval echo "\$JD_COOKIE")
|
local envs=$(eval echo "\$JD_COOKIE")
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
local user_sum=${#array[*]}
|
local user_sum=${#array[*]}
|
||||||
if cd $dir_log/$task_name &>/dev/null && [[ $(ls) ]]; then
|
if cd $dir_log &>/dev/null && [[ $(ls ./*$task_name*/*.log 2>/dev/null | wc -l) -gt 0 ]]; then
|
||||||
## 寻找所有互助码以及对应的pt_pin
|
## 寻找所有互助码以及对应的pt_pin
|
||||||
i=0
|
i=0
|
||||||
pt_pin_in_log=()
|
pt_pin_in_log=()
|
||||||
code=()
|
code=()
|
||||||
pt_pin_and_code=$(ls -r *.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}')
|
pt_pin_and_code=$(ls -t ./*$task_name*/*.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}' | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}')
|
||||||
for line in $pt_pin_and_code; do
|
for line in $pt_pin_and_code; do
|
||||||
pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}')
|
pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}')
|
||||||
code[i]=$(echo $line | awk -F "&" '{print $2}')
|
code[i]=$(echo $line | awk -F "&" '{print $2}')
|
||||||
@ -519,180 +577,240 @@ export_codes_sub_only(){
|
|||||||
else
|
else
|
||||||
echo "## 从日志中未找到任何互助码"
|
echo "## 从日志中未找到任何互助码"
|
||||||
fi
|
fi
|
||||||
fi
|
else
|
||||||
|
echo "#【$(date +%X)】 未运行过 $chinese_name 的脚本,未产生日志"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#更新互助码和互助规则
|
#更新互助码和互助规则
|
||||||
update_help(){
|
update_help() {
|
||||||
case $UpdateType in
|
case $UpdateType in
|
||||||
1)
|
1)
|
||||||
if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then
|
if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then
|
||||||
backup_del
|
backup_del
|
||||||
echo -e "\n#【`date +%X`】 开始更新配置文件的互助码和互助规则"
|
echo -e "\n#【$(date +%X)】 开始更新配置文件的互助码和互助规则"
|
||||||
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
||||||
help_codes "${name_config[i]}" "${name_chinese[i]}"
|
help_codes "${name_config[i]}" "${name_chinese[i]}"
|
||||||
[[ "${name_config[i]}" != "TokenJxnc" ]] && help_rules "${name_config[i]}" "${name_chinese[i]}"
|
[[ "${name_config[i]}" != "TokenJxnc" ]] && help_rules "${name_config[i]}" "${name_chinese[i]}"
|
||||||
done
|
done
|
||||||
echo -e "\n#【`date +%X`】 配置文件的互助码和互助规则已完成更新"
|
echo -e "\n#【$(date +%X)】 配置文件的互助码和互助规则已完成更新"
|
||||||
elif [ ! -f $latest_log_path ]; then
|
elif [ ! -f $latest_log_path ]; then
|
||||||
echo -e "\n#【`date +%X`】 日志文件不存在,请检查后重试!"
|
echo -e "\n#【$(date +%X)】 日志文件不存在,请检查后重试!"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then
|
if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then
|
||||||
backup_del
|
backup_del
|
||||||
echo -e "\n#【`date +%X`】 开始更新配置文件的互助码,不更新互助规则"
|
echo -e "\n#【$(date +%X)】 开始更新配置文件的互助码,不更新互助规则"
|
||||||
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
||||||
help_codes "${name_config[i]}" "${name_chinese[i]}"
|
help_codes "${name_config[i]}" "${name_chinese[i]}"
|
||||||
done
|
done
|
||||||
echo -e "\n#【`date +%X`】 配置文件的互助码已完成更新"
|
echo -e "\n#【$(date +%X)】 配置文件的互助码已完成更新"
|
||||||
elif [ ! -f $latest_log_path ]; then
|
elif [ ! -f $latest_log_path ]; then
|
||||||
echo -e "\n#【`date +%X`】 日志文件不存在,请检查后重试!"
|
echo -e "\n#【$(date +%X)】 日志文件不存在,请检查后重试!"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then
|
if [ "$ps_num" -le $proc_num ] && [ -f $latest_log_path ]; then
|
||||||
backup_del
|
backup_del
|
||||||
echo -e "\n#【`date +%X`】 开始更新配置文件的互助规则,不更新互助码"
|
echo -e "\n#【$(date +%X)】 开始更新配置文件的互助规则,不更新互助码"
|
||||||
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
||||||
[[ "${name_config[i]}" != "TokenJxnc" ]] && help_rules "${name_config[i]}" "${name_chinese[i]}"
|
[[ "${name_config[i]}" != "TokenJxnc" ]] && help_rules "${name_config[i]}" "${name_chinese[i]}"
|
||||||
done
|
done
|
||||||
echo -e "\n#【`date +%X`】 配置文件的互助规则已完成更新"
|
echo -e "\n#【$(date +%X)】 配置文件的互助规则已完成更新"
|
||||||
elif [ ! -f $latest_log_path ]; then
|
elif [ ! -f $latest_log_path ]; then
|
||||||
echo -e "\n#【`date +%X`】 日志文件不存在,请检查后重试!"
|
echo -e "\n#【$(date +%X)】 日志文件不存在,请检查后重试!"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo -e "\n#【`date +%X`】 您已设置不更新配置文件的互助码和互助规则,跳过更新!"
|
echo -e "\n#【$(date +%X)】 您已设置不更新配置文件的互助码和互助规则,跳过更新!"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
check_jd_cookie(){
|
check_jd_cookie() {
|
||||||
[[ "$(curl -s --noproxy "*" "https://bean.m.jd.com/bean/signIndex.action" -H "cookie: $1")" ]] && echo "COOKIE 有效" || echo "COOKIE 已失效"
|
local test_connect="$(curl -I -s --connect-timeout 5 --retry 3 --noproxy "*" https://bean.m.jd.com/bean/signIndex.action -w %{http_code} | tail -n1)"
|
||||||
|
local test_jd_cookie="$(curl -s --connect-timeout 5 --retry 3 --noproxy "*" "https://bean.m.jd.com/bean/signIndex.action" -H "cookie: $1")"
|
||||||
|
if [ "$test_connect" -eq "302" ]; then
|
||||||
|
[[ "$test_jd_cookie" ]] && echo "(COOKIE 有效)" || echo "(COOKIE 已失效)"
|
||||||
|
else
|
||||||
|
echo "(API 连接失败)"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
delete_old_cookie(){
|
dump_user_info() {
|
||||||
local ifold=$(curl -s --noproxy "*" "https://bean.m.jd.com/bean/signIndex.action" -H "cookie: $1")
|
echo -e "\n## 账号用户名及 COOKIES 整理如下:"
|
||||||
if [ ! "$ifold" ]; then
|
local envs=$(eval echo "\$JD_COOKIE")
|
||||||
sed -i "s/$1/d" $dir_env_db
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
echo "COOKIE 失效,将被删除"
|
|
||||||
else
|
|
||||||
echo "COOKIE 有效"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
dump_user_info(){
|
|
||||||
echo -e "\n## 账号用户名及 COOKIES 整理如下:"
|
|
||||||
local envs=$(eval echo "\$JD_COOKIE")
|
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
|
||||||
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||||||
j=$((m + 1))
|
j=$((m + 1))
|
||||||
if [[ $DEL_COOKIE = "1" ]]; then
|
echo -e "## 用户名 $j:${pt_pin[m]} 备注:${remark_name[m]} $(check_jd_cookie ${array[m]})\nCookie$j=\"${array[m]}\""
|
||||||
echo -e "## 用户名 $j:${pt_pin[m]} (`delete_old_cookie ${array[m]}`)\nCookie$j=\"${array[m]}\""
|
|
||||||
else
|
|
||||||
echo -e "## 用户名 $j:${pt_pin[m]} (`check_jd_cookie ${array[m]}`)\nCookie$j=\"${array[m]}\""
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_del(){
|
backup_del() {
|
||||||
[[ ! -d $dir_log/.bak_ShareCode ]] && mkdir -p $dir_log/.bak_ShareCode
|
[[ ! -d $dir_log/.bak_ShareCode ]] && mkdir -p $dir_log/.bak_ShareCode
|
||||||
local bak_ShareCode_full_path_list=$(find $dir_log/.bak_ShareCode/ -name "*.log")
|
local bak_ShareCode_full_path_list=$(find $dir_log/.bak_ShareCode/ -name "*.log")
|
||||||
local diff_time
|
local diff_time
|
||||||
if [[ $BACKUP = "1" ]]; then
|
if [[ $BACKUP = "1" ]]; then
|
||||||
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
for ((i = 0; i < ${#name_config[*]}; i++)); do
|
||||||
[[ -f $dir_log/.ShareCode/${name_config[i]}.log ]] && cp $dir_log/.ShareCode/${name_config[i]}.log $dir_log/.bak_ShareCode/${name_config[i]}_`date "+%Y-%m-%d-%H-%M-%S"`.log
|
[[ -f $dir_log/.ShareCode/${name_config[i]}.log ]] && cp $dir_log/.ShareCode/${name_config[i]}.log $dir_log/.bak_ShareCode/${name_config[i]}_$(date "+%Y-%m-%d-%H-%M-%S").log
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [[ $CLEANBAK = "1" ]]; then
|
if [[ $CLEANBAK = "1" ]]; then
|
||||||
for log in $bak_ShareCode_full_path_list; do
|
for log in $bak_ShareCode_full_path_list; do
|
||||||
local log_date=$(echo $log | awk -F "_" '{print $NF}' | cut -c1-10)
|
local log_date=$(echo $log | awk -F "_" '{print $NF}' | cut -c1-10)
|
||||||
if [[ $(date +%s -d $log_date 2>/dev/null) ]]; then
|
if [[ $(date +%s -d $log_date 2>/dev/null) ]]; then
|
||||||
if [[ $is_macos -eq 1 ]]; then
|
if [[ $is_macos -eq 1 ]]; then
|
||||||
diff_time=$(($(date +%s) - $(date -j -f "%Y-%m-%d" "$log_date" +%s)))
|
diff_time=$(($(date +%s) - $(date -j -f "%Y-%m-%d" "$log_date" +%s)))
|
||||||
else
|
else
|
||||||
diff_time=$(($(date +%s) - $(date +%s -d "$log_date")))
|
diff_time=$(($(date +%s) - $(date +%s -d "$log_date")))
|
||||||
|
fi
|
||||||
|
[[ $diff_time -gt $(($CLEANBAK_DAYS * 86400)) ]] && rm -rf $log
|
||||||
fi
|
fi
|
||||||
[[ $diff_time -gt $(($CLEANBAK_DAYS * 86400)) ]] && rm -vf $log
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#检查 node 依赖状态并修复
|
||||||
|
install_node_dependencies_all() {
|
||||||
|
node_dependencies_ori_status() {
|
||||||
|
if [[ -n $(echo $(cnpm ls $1) | grep ERR) ]]; then
|
||||||
|
return 1
|
||||||
|
elif [[ -n $(echo $(cnpm ls $1 -g) | grep ERR) ]]; then
|
||||||
|
return 2
|
||||||
|
elif [[ $(cnpm ls $1) =~ $1 ]]; then
|
||||||
|
return 3
|
||||||
|
elif [[ $(cnpm ls $1 -g) =~ $1 ]]; then
|
||||||
|
return 4
|
||||||
fi
|
fi
|
||||||
done
|
}
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
install_dependencies_normal(){
|
test() {
|
||||||
for i in $@; do
|
for i in $@; do
|
||||||
case $i in
|
node_dependencies_ori_status
|
||||||
canvas)
|
echo -e "$i : $?"
|
||||||
cd /ql/scripts
|
done
|
||||||
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
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
install_dependencies_force(){
|
install_node_dependencie() {
|
||||||
for i in $@; do
|
# node_dependencies_ori_status $1
|
||||||
case $i in
|
# if [[ $? = 1 || $? = 2 ]]; then
|
||||||
canvas)
|
# cnpm uninstall $1
|
||||||
cd /ql/scripts
|
# elif [[ $? = 3 ]]; then
|
||||||
if [[ "$(npm ls $i)" =~ $i && "$(echo $(npm ls $i) | grep ERR)" != "" ]]; then
|
# cnpm uninstall $1 -g
|
||||||
npm uninstall $i
|
# fi
|
||||||
rm -rf /ql/scripts/node_modules/$i
|
#
|
||||||
rm -rf /usr/local/lib/node_modules/lodash/*
|
# node_dependencies_ori_status $1
|
||||||
fi
|
# if [[ $? = 4 ]]; then
|
||||||
if [[ "$(npm ls $i)" =~ (empty) ]]; then
|
# if [[ $1 = "canvas" ]]; then
|
||||||
apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && npm i $i --prefix /ql/scripts --build-from-source --force
|
# apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && cnpm install $1 -g
|
||||||
fi
|
# else
|
||||||
;;
|
# cnpm install $1 -g --force
|
||||||
*)
|
# fi
|
||||||
cd /ql/scripts
|
# fi
|
||||||
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
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
install_dependencies_all(){
|
node_dependencies_ori_status $1
|
||||||
install_dependencies_normal $package_name
|
if [[ $? = 1 ]]; then
|
||||||
|
[[ $1 = "canvas" ]] && {
|
||||||
|
cnpm uninstall $1
|
||||||
|
rm -rf /ql/scripts/node_modules/canvas
|
||||||
|
rm -rf /usr/local/lib/node_modules/lodash/canvas
|
||||||
|
} || cnpm uninstall $1
|
||||||
|
elif [ $? = 2 ]; then
|
||||||
|
[[ $1 = "canvas" ]] && {
|
||||||
|
cnpm uninstall $1 -g
|
||||||
|
rm -rf /usr/local/lib/node_modules/canvas
|
||||||
|
} || cnpm uninstall $1 -g
|
||||||
|
fi
|
||||||
|
|
||||||
|
node_dependencies_ori_status $1
|
||||||
|
if [[ $? != 3 && $? != 4 ]]; then
|
||||||
|
[[ $1 = "canvas" ]] && {
|
||||||
|
apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev
|
||||||
|
cnpm install $1 -g --force
|
||||||
|
} || cnpm install $1 -g --force
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
uninstall_dependencies() {
|
||||||
|
for i in $package_name; do
|
||||||
|
cnpm uninstall $i
|
||||||
|
cnpm uninstall i $i
|
||||||
|
cnpm uninstall $i -g
|
||||||
|
cnpm uninstall i $i -g
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
check_node_dependencies_setup_status() {
|
||||||
|
for i in $package_name; do
|
||||||
|
cnpm ls $i -g
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
cnpm install -g cnpm
|
||||||
|
[[ $(npm ls cnpm -g) =~ (empty) ]] && npm install cnpm -g
|
||||||
for i in $package_name; do
|
for i in $package_name; do
|
||||||
install_dependencies_force $i
|
install_node_dependencie $i
|
||||||
done
|
done
|
||||||
|
#cnpm update --force
|
||||||
|
#cnpm i --legacy-peer-deps
|
||||||
|
#cnpm i --package-lock-only
|
||||||
|
#cnpm audit fix
|
||||||
|
#cnpm audit fix --force
|
||||||
}
|
}
|
||||||
|
|
||||||
kill_proc(){
|
kill_proc() {
|
||||||
ps -ef|grep "$1"|grep -Ev "$2"|awk '{print $1}'|xargs kill -9
|
ps -ef | grep "$1" | grep -Ev "$2" | awk '{print $1}' | xargs kill -9
|
||||||
|
}
|
||||||
|
|
||||||
|
batch_deps_scripts() {
|
||||||
|
switch_status=(
|
||||||
|
on
|
||||||
|
on
|
||||||
|
on
|
||||||
|
)
|
||||||
|
|
||||||
|
scripts_name=(
|
||||||
|
ql.js
|
||||||
|
sendNotify.js
|
||||||
|
JD_DailyBonus.js
|
||||||
|
)
|
||||||
|
|
||||||
|
test_connect() {
|
||||||
|
curl -o /dev/null -s -w %{http_code} $1
|
||||||
|
}
|
||||||
|
|
||||||
|
get_remote_filesize() {
|
||||||
|
curl -sI $1 | grep -i Content-Length | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
get_local_filesize() {
|
||||||
|
stat -c %s $1
|
||||||
|
}
|
||||||
|
|
||||||
|
scripts_source=(
|
||||||
|
https://cdn.jsdelivr.net/gh/ccwav/QLScript2@main/ql.js
|
||||||
|
https://cdn.jsdelivr.net/gh/ccwav/QLScript2@main/sendNotify.js
|
||||||
|
https://cdn.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js
|
||||||
|
)
|
||||||
|
|
||||||
|
download_scripts() {
|
||||||
|
if [[ "$(test_connect $1)" -eq "200" ]]; then
|
||||||
|
curl -C - -s --connect-timeout 5 --retry 3 --noproxy "*" $1 -o $dir_config/tmp_$2
|
||||||
|
[[ $(get_remote_filesize $1) -eq $(get_local_filesize $dir_config/tmp_$2) ]] && mv -f $dir_config/tmp_$2 $dir_config/$2 || rm -rf $dir_config/tmp_$2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
for ((i = 0; i < ${#scripts_source[*]}; i++)); do
|
||||||
|
{ if [[ ${switch_status[i]} = "on" ]]; then download_scripts ${scripts_source[i]} ${scripts_name[i]}; fi; } &
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
## 执行并写入日志
|
## 执行并写入日志
|
||||||
kill_proc "code.sh" "grep|$$" >/dev/null 2>&1
|
kill_proc "code.sh" "grep|$$" >/dev/null 2>&1
|
||||||
[[ $FixDependType = "1" ]] && [[ "$ps_num" -le $proc_num ]] && install_dependencies_all >/dev/null 2>&1 &
|
batch_deps_scripts &
|
||||||
|
[[ $FixDependType = "1" ]] && [[ "$ps_num" -le $proc_num ]] && install_node_dependencies_all >/dev/null 2>&1 &
|
||||||
latest_log=$(ls -r $dir_code | head -1)
|
latest_log=$(ls -r $dir_code | head -1)
|
||||||
latest_log_path="$dir_code/$latest_log"
|
latest_log_path="$dir_code/$latest_log"
|
||||||
ps_num="$(ps | grep code.sh | grep -v grep | wc -l)"
|
ps_num="$(ps | grep code.sh | grep -v grep | wc -l)"
|
||||||
@ -702,3 +820,5 @@ update_help
|
|||||||
|
|
||||||
## 修改curtinlv入会领豆配置文件的参数
|
## 修改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
|
[[ -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
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
## Version: v3.0.0
|
## Version: v2.8.0
|
||||||
## Date: 2021-11-12
|
## Date: 2021-06-20
|
||||||
## Mod: Build20211112-002 Faker Repository config
|
## Mod: Build 20211214-002-test
|
||||||
## Update Content: 可持续发展纲要\n1. session管理破坏性修改\n2. 配置管理可编辑config下文件\n3. 自定义脚本改为查看脚本\n4. 移除互助相关
|
## Update Content: 可持续发展纲要\n1. session管理破坏性修改\n2. 配置管理可编辑config下文件\n3. 自定义脚本改为查看脚本\n4. 移除互助相关
|
||||||
|
|
||||||
## 上面版本号中,如果第2位数字有变化,那么代表增加了新的参数,如果只有第3位数字有变化,仅代表更新了注释,没有增加新的参数,可更新可不更新
|
## 上面版本号中,如果第2位数字有变化,那么代表增加了新的参数,如果只有第3位数字有变化,仅代表更新了注释,没有增加新的参数,可更新可不更新
|
||||||
@ -11,8 +11,11 @@ AutoDelCron="true"
|
|||||||
## 在运行 ql repo 命令时,是否自动增加新的本地定时任务
|
## 在运行 ql repo 命令时,是否自动增加新的本地定时任务
|
||||||
AutoAddCron="true"
|
AutoAddCron="true"
|
||||||
|
|
||||||
|
## 拉取脚本时默认的定时规则,当匹配不到定时规则时使用,例如: 0 9 * * *
|
||||||
|
DefaultCronRule="37 0 * * *"
|
||||||
|
|
||||||
## ql repo命令拉取脚本时需要拉取的文件后缀,直接写文件后缀名即可
|
## ql repo命令拉取脚本时需要拉取的文件后缀,直接写文件后缀名即可
|
||||||
RepoFileExtensions="js py ts"
|
RepoFileExtensions="js py sh ts"
|
||||||
|
|
||||||
## 由于github仓库拉取较慢,所以会默认添加代理前缀,如不需要请移除
|
## 由于github仓库拉取较慢,所以会默认添加代理前缀,如不需要请移除
|
||||||
GithubProxyUrl="https://ghproxy.com/"
|
GithubProxyUrl="https://ghproxy.com/"
|
||||||
@ -50,7 +53,7 @@ export BARK_SOUND=""
|
|||||||
## 下方填写推送消息分组,默认为"QingLong"
|
## 下方填写推送消息分组,默认为"QingLong"
|
||||||
export BARK_GROUP="QingLong"
|
export BARK_GROUP="QingLong"
|
||||||
|
|
||||||
## 3. Telegram
|
## 3. Telegram
|
||||||
## 下方填写自己申请@BotFather的Token,如10xxx4:AAFcqxxxxgER5uw
|
## 下方填写自己申请@BotFather的Token,如10xxx4:AAFcqxxxxgER5uw
|
||||||
export TG_BOT_TOKEN=""
|
export TG_BOT_TOKEN=""
|
||||||
## 下方填写 @getuseridbot 中获取到的纯数字ID
|
## 下方填写 @getuseridbot 中获取到的纯数字ID
|
||||||
@ -71,7 +74,7 @@ export TG_PROXY_AUTH=""
|
|||||||
## 如需使用,请赋值代理地址链接,并自行解除下一行的注释
|
## 如需使用,请赋值代理地址链接,并自行解除下一行的注释
|
||||||
export TG_API_HOST=""
|
export TG_API_HOST=""
|
||||||
|
|
||||||
## 4. 钉钉
|
## 4. 钉钉
|
||||||
## 官方文档:https://developers.dingtalk.com/document/app/custom-robot-access
|
## 官方文档:https://developers.dingtalk.com/document/app/custom-robot-access
|
||||||
## 下方填写token后面的内容,只需 https://oapi.dingtalk.com/robot/send?access_token=XXX 等于=符号后面的XXX即可
|
## 下方填写token后面的内容,只需 https://oapi.dingtalk.com/robot/send?access_token=XXX 等于=符号后面的XXX即可
|
||||||
export DD_BOT_TOKEN=""
|
export DD_BOT_TOKEN=""
|
||||||
@ -101,120 +104,164 @@ export PUSH_PLUS_TOKEN=""
|
|||||||
## 1. 需订阅者扫描二维码 2、如果您是创建群组所属人,也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送
|
## 1. 需订阅者扫描二维码 2、如果您是创建群组所属人,也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送
|
||||||
export PUSH_PLUS_USER=""
|
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
|
## 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_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
|
## go-cqhttp相关API https://docs.go-cqhttp.org/api
|
||||||
export GOBOT_URL=""
|
export GOBOT_URL=""
|
||||||
export GOBOT_TOKEN=""
|
export GOBOT_TOKEN=""
|
||||||
export GOBOT_QQ=""
|
export GOBOT_QQ=""
|
||||||
|
|
||||||
## 10. 临时屏蔽某个Cookie
|
## 10 临时禁止Cookie
|
||||||
## 如果某些 Cookie 已经失效了,但暂时还没法更新,可以使用此功能在不删除该Cookie和重新修改Cookie编号的前提下,临时屏蔽掉某些编号的Cookie
|
### 分为 按 Cookie 序号、按 pt_pin(用户名) 2 种模式禁止将 Cookie 提交活动脚本:
|
||||||
## 多个Cookie编号以半角的空格分隔,两侧一对半角双引号,使用此功能后,在运行js脚本时账户编号将发生变化
|
### 其他说明:①全局模式和局部模式可同时生效;
|
||||||
## 举例1:TempBlockCookie="2" 临时屏蔽掉 Cookie2
|
### ②支持黑名单模式(即不使用该模式,详见 局部模式环境变量 recombin_ck_envs 说明);
|
||||||
## 举例2:TempBlockCookie="2 4" 临时屏蔽掉 Cookie2 和 Cookie4
|
|
||||||
|
|
||||||
## 如果只是想要屏蔽某个 Cookie 不参加某些活动,可以参考下面 case 这个命令的例子来控制
|
## 10.1 全局模式选项
|
||||||
## case $1 in
|
### 赋值要求:①TempBlockCookie 只能填数字或者区间,表示按 Cookie 序号禁止账号;
|
||||||
## *jd_fruit*) # 东东农场活动脚本关键词
|
### ②TempBlockPin 只能填写 pt_pin 值 或者 用户名(支持中文),表示按 pt_pin 或者 用户名(支持中文) 禁止账号。
|
||||||
## TempBlockCookie="5" # Cookie5 不玩东东农场
|
### ③对全部脚本有效(除非 recombin_ck_envs 另有设定);
|
||||||
## ;;
|
### ⑧例如:TempBlockCookie="1,2,5_8,12~19 20",表示第 1、2、5至8、12至19、20位账号均被禁止参加活动。数字与数字,数字与区间之间可用 ~、_、空格隔开; ;
|
||||||
## *jd_dreamFactory* | *jd_jdfactory*) # 京喜工厂和东东工厂的活动脚本关键词
|
### ⑧例如:TempBlockPin="张三 jd_13134567890,%E7%95%AA%E8%8C%84%E5%8A%A0%E4%B8%AA%E8%9B%8B",表示 张三、jd_13134567890、番茄加个蛋、这几个账号均被禁止参加活动。各账号间可用 , 或空格隔开;
|
||||||
## TempBlockCookie="2" # Cookie2 不玩京喜工厂和东东工厂
|
TempBlockCookie=""
|
||||||
## ;;
|
TempBlockPin=""
|
||||||
## *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
|
|
||||||
|
|
||||||
## 11. 随机Cookie
|
## 10.2 局部模式环境变量
|
||||||
## Cookie 按随机顺序参加活动。取消 # 注释后,填 1 表示开启功能。
|
### 释义:①单脚本规则单元:脚本1文件名关键词@参数1@参数2;
|
||||||
# RandomMode=""
|
### ②两个及以上脚本共享一套规则单元:脚本1文件名关键词|脚本2文件名关键词@参数1@参数2。多脚本共用一套规则单元时,脚本文件名关键词之间采用 | 分隔符。
|
||||||
## 从原 Cookie 中随机提取指定数量的 Cookie 参加活动,当 RandomMode="1" 时生效。取消 # 注释后,赋值后生效。
|
### 赋值要求:①脚本文件名关键词,例如,东东农场的活动脚本关键词 jd_fruit;多个脚本关键词采用 | 符号分隔。例如:jd_fruit|jd_dreamFactory;
|
||||||
### 赋值要求:"空值"、"非数字"、"小于2或大于 Cookie 总数的数值",均自动调整为全部 Cookie 按随机顺序参加活动;
|
### ②脚本文件名关键词与各参数采用 @ 连接。释义附后。如果不设定参数1,表示该脚本所有账号参加活动(即:黑名单);
|
||||||
### "大于或等于2,且小于或等于 Cookie 总数的数值",抽取指定数值的 Cookie 按随机顺序参数活动。
|
### ③参数1。表示 TempBlockCookie。不能有空格,建议序号与序号、序号与区间采用 , 分隔;
|
||||||
# ran_num=""
|
### ④参数2。表示 TempBlockPin。不能有空格,建议各pt_pin(或用户名)采用 , 分隔;
|
||||||
## 如果想指定活动进行随机模式,可以参考下面 case 这个命令的例子来控制
|
### ⑤各个规则单元之间采用 & 连接,例如:jd_fruit|jd_dreamFactory@1,3-4,7~9&jd_plantBean@2,4-6,8@张三&jd_pigPet@-@张三&jd_plantBean;
|
||||||
## case $1 in
|
### jd_fruit|jd_dreamFactory@1,3-5,7~9 使用模式:按序号,1、3至5、7至9不参加活动
|
||||||
## *jd_fruit*) # 东东农场活动脚本关键词
|
### jd_plantBean@2,4-6,8@张三 使用模式:按序号,2、4至6、8不参加活动,且张三也不参加活动
|
||||||
## RandomMode="1" # 东东农场开启随机模式
|
### jd_pigPet@-@张三 使用模式:按pt_pin或用户名,张三不参加活动。注意,参数1位置需要加一个 - 作为占位符
|
||||||
## ran_num="" # 东东农场全部 Cookie 按随机顺序参加活动
|
### jd_plantBean 使用模式:所有账号参加活动
|
||||||
## ;;
|
|
||||||
## *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
|
|
||||||
|
|
||||||
## 12. 组队环境变量
|
## 10.2.1 局部模式环境变量的启用数量
|
||||||
### 环境变量填写要求较高,建议群组内确认填写结果
|
### 释义:顾名思义;
|
||||||
scr_name="$1" ## 不可删除
|
### 赋值要求:①正整数。如果填写 3 ,表示 tempblock_ck_envs1 ~ tempblock_ck_envs3 生效;
|
||||||
case $1 in
|
tempblock_ck_envs_num=""
|
||||||
*jd_sendBean* | *jd_sddd*) ## 送豆得豆活动脚本关键词
|
## 10.2.2 多组环境变量
|
||||||
teamer_num="11" ## 单个队伍中的总账号数为 11 个
|
### 释义:可以自由定义多组局部模式环境变量,如果多组变量中针对同一个脚本设置了多次变量,第一次变量有效,其他变量无效;
|
||||||
team_num="1" ## 每个账号发起组队的最大队伍数为 1 个
|
### 赋值要求:详见“局部模式环境变量”赋值要求;
|
||||||
;;
|
# tempblock_ck_envs1="jd_fruit@1,3-4,7~9&jd_plantBean@2,4-6,8@张三&jd_pigPet@-@张三&jd_plantBean"
|
||||||
*xmGame*) ## 小米-星空大冒险活动脚本关键词
|
# tempblock_ck_envs2="Check|jd_islogin_xh@3-5@法外狂徒"
|
||||||
teamer_num="11" ## 单个队伍中的总账号数为 11 个
|
tempblock_ck_envs1=""
|
||||||
team_num="1" ## 每个账号发起组队的最大队伍数为 1 个
|
tempblock_ck_envs2=""
|
||||||
;;
|
|
||||||
*jd_zdjr*) ## 组队瓜分京豆活动脚本关键词
|
## 11 重组Cookie
|
||||||
teamer_num="5 5 5 5" ## 对应各个活动中单个队伍中的总账号数分别为 5 5 5 5 个
|
### 分为 随机、优先、轮换、组队和分段 5 种模式:
|
||||||
team_num="2 3 3 5" ## 对应各个活动中每个账号发起组队的最大队伍数为 2 3 3 5 个
|
### 1、随机模式:支持自定义从所有 Cookie 中随机抽取若干数量的账号按随机顺序参加活动;
|
||||||
activityId=( ## 活动 activityId;需手动抓包。按数组分行填写至括号内
|
### 2、优先模式:支持自定义前若干数量的账号固定按照正常顺序参加活动,其余账号按随机顺序参加活动;
|
||||||
54f071f4eb794092a872392696be7d8d
|
### 3、轮换模式:支持自定义前若干数量的账号固定按照正常顺序参加活动,其余账号按轮换模式参加活动。所谓轮换就是指若干数量的账号每过一天挪动到 Cookie 队伍末尾;
|
||||||
0582063f78434ed599becfc8f812c2ee
|
### 4、组队模式:只支持 js 脚本。根据游戏规则每支队伍的成员数量、每个账号能发起的组队次数上限自动按顺序参加活动。
|
||||||
bbda11ba7a9644148d65c8b0b78f0bd2
|
### 5、分段模式:只支持 js 脚本。支持自定义按若干数量拆分账号,按分段顺序参加活动。支持各段启动活动脚本的延隔时间。
|
||||||
92c03af2ce744f6f94de181ccee15e4f
|
### 其他说明:①全局模式和局部模式可同时生效;
|
||||||
)
|
### ②支持黑名单模式(即不使用该模式,详见 局部模式环境变量 recombin_ck_envs 说明);
|
||||||
activityUrl=( ## 活动 activityUrl;需手动抓包。按数组分行填写至括号内
|
|
||||||
https://cjhydz-isv.isvjcloud.com
|
## 11.1 全局模式选项
|
||||||
https://lzkjdz-isv.isvjcloud.com
|
### 模式
|
||||||
https://lzkjdz-isv.isvjcloud.com
|
### 赋值要求:①只能填 1 2 3 4 5,分别表示随机、优先、轮换、组队、分段 5 种模式,对全部脚本有效(除非 recombin_ck_envs 另有设定);
|
||||||
https://cjhydz-isv.isvjcloud.com
|
### ②若填写为其他内容,则所有账号按正常顺序参加活动(除非 recombin_ck_envs 另有设定);
|
||||||
)
|
Recombin_CK_Mode=""
|
||||||
;;
|
|
||||||
*) ## 不可删除
|
### 参数 1
|
||||||
scr_name="" ## 不可删除
|
### 释义:①在随机模式下:表示随意抽取 N 个账号随机顺序参加活动;
|
||||||
;; ## 不可删除
|
### ②在优先模式和轮换模式下:表示前 N 个账号固定按正常顺序参加活动;
|
||||||
esac
|
### ③在组队模式下:表示每支队伍的成员数量;
|
||||||
|
### ④在分段模式下:表示前 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=""
|
||||||
|
|
||||||
|
## 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;组队模式、分段模式:表示各分段启动活动脚本的延隔时间,支持 d(天)、h(小时)、m(分钟)、s(秒可略写)。如 1d2h3m4s 表示 1天2小时3分钟4秒;
|
||||||
|
### ⑦参数4。表示 Recombin_CK_ARG4;组队模式、分段模式:表示各分段启动活动脚本的间隔时间。需参数3为 - 占位符时生效;
|
||||||
|
### ⑧参数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@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="5"
|
||||||
|
## 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@-@-@-@-@3" # 组队瓜分京豆。参数1、参数2,使用 - 占位符,表示引用 组队瓜分京豆活动变量组 的前两个参数,作为几人成队和发起几次组队
|
||||||
|
recombin_ck_envs3="jd_jxlhb|jd_88hb@4@78@1" # 领88元红包
|
||||||
|
recombin_ck_envs4="CheckCK|checkCookie|cookieCheck|checkCookie|bean_change|wskey|code&jd_islogin_xh" # 强制黑名单
|
||||||
|
recombin_ck_envs5="ccwav*speed_sign@5@0@20@-@1h" # ccwav 防黑号京东极速版任务分段
|
||||||
|
|
||||||
|
## 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 次组队
|
||||||
|
teamer_num@team_num@activityId4@activityUrl4 # 第 4 组环境变量。前两个参数表示 teamer_num 人成队,每个账号最多发起 team_num 次组队
|
||||||
|
)
|
||||||
|
|
||||||
|
## 12 基础 js 依赖文件的预先替换
|
||||||
|
### 释义:目前仅支持将 /ql/config 路径下的 ql.js、sendNotify.js、JD_DailyBonus.js 三个文件,在 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@JDHelloWorld_jd_scripts|ccwav_QLScript2"
|
||||||
|
|
||||||
## 其他需要的变量,脚本中需要的变量使用 export 变量名= 声明即可
|
## 其他需要的变量,脚本中需要的变量使用 export 变量名= 声明即可
|
||||||
|
|
||||||
@ -287,7 +334,7 @@ export FRUIT_BEAN_CARD="true"
|
|||||||
## 12、是否取关商品。环境变量内容的意思依次是是否取关全部商品(0表示一个都不),是否取关全部店铺数(0表示一个都不),遇到此商品不再进行取关,遇到此店铺不再进行取关
|
## 12、是否取关商品。环境变量内容的意思依次是是否取关全部商品(0表示一个都不),是否取关全部店铺数(0表示一个都不),遇到此商品不再进行取关,遇到此店铺不再进行取关
|
||||||
export UN_SUBSCRIBES="300,300,,"
|
export UN_SUBSCRIBES="300,300,,"
|
||||||
## 12、jd_unsubscribe这个任务是用来取关每天做任务关注的商品和店铺,默认在每次运行时取关20个商品和20个店铺
|
## 12、jd_unsubscribe这个任务是用来取关每天做任务关注的商品和店铺,默认在每次运行时取关20个商品和20个店铺
|
||||||
### 如果取关数量不够,可以根据情况增加,还可以设置 jdUnsubscribeStopGoods 和 jdUnsubscribeStopShop
|
### 如果取关数量不够,可以根据情况增加,还可以设置 jdUnsubscribeStopGoods 和 jdUnsubscribeStopShop
|
||||||
### 商品取关数量
|
### 商品取关数量
|
||||||
export goodPageSize="30"
|
export goodPageSize="30"
|
||||||
### 店铺取关数量
|
### 店铺取关数量
|
||||||
@ -316,100 +363,312 @@ export PURCHASE_SHOPS="true"
|
|||||||
export TUAN_ACTIVEID=""
|
export TUAN_ACTIVEID=""
|
||||||
## 22、京东UA。点点券脚本运行环境变量
|
## 22、京东UA。点点券脚本运行环境变量
|
||||||
export JD_USER_AGENT=""
|
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=""
|
|
||||||
|
|
||||||
# 龙猪猪环境变量
|
# curtinlv 环境变量
|
||||||
## 京豆雨通知,填写true为不关闭推送,false为关闭推送
|
## 1、赚京豆
|
||||||
export RAIN_NOTIFY_CONTROL="false"
|
### 助力账号,填写pt_pin或用户名的值,如 zlzh = ['aaaa','xxxx','yyyy'] ,支持ENV
|
||||||
## 整点京豆雨RRA
|
### export zlzh="$(echo $JD_COOKIE | sed "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 SUPER_RAIN_RRA=""
|
export zlzh="$(echo $JD_COOKIE | sed "s/&/ /g; s/\S*pt_pin=\([^;]\+\);\S*/\'\1\',/g; s/^/[/; s/$\|,$/]/;")"
|
||||||
## 半点京豆雨RRA
|
## 2、全民抢京豆
|
||||||
export HALF_RAIN_RRA=""
|
### export qjd_zlzh="$(echo $JD_COOKIE | sed "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 qjd_zlzh="$(echo $JD_COOKIE | sed "s/&/ /g; s/\S*pt_pin=\([^;]\+\);\S*/\'\1\',/g; s/^/[/; s/$\|,$/]/;")"
|
||||||
|
## 3、签到领现金助力
|
||||||
|
### export cash_zlzh="$(echo $JD_COOKIE | sed "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 | sed "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 | sed "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、入会开卡
|
||||||
|
### 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"
|
||||||
|
|
||||||
# 柠檬(胖虎部分环境变量)
|
# smiek2221 环境变量
|
||||||
## 1、京喜工厂抢茅台
|
## 1、京东签到图形验证修改火爆问题
|
||||||
### 自定义商品变量
|
### 如果 read ECONNRESET 错误 可以试试
|
||||||
export shopid="1598" ##你要商品ID 冰箱
|
### 环境变量 JOY_HOST 修改域名 https://jdjoy.jd.com 可以改成ip https://49.7.27.236
|
||||||
export shopid1="1607" ##你要商品ID 茅台
|
### 如果上面ip不行就自己去ping下域名对应的ip cmd窗口输入—>ping jdjoy.jd.com 再改
|
||||||
## 2、推一推
|
### 不要频繁请求 请过个半小时 1小时在执行
|
||||||
### 入口:极速版-赚金币
|
export JOY_HOST=""
|
||||||
### 分享到QQ查看邀请码,packetId就是
|
## 2、图形验证文件 JDJRValidator_Pure.js 验证次数
|
||||||
### 自定义变量
|
### 新增验证次数上限 默认25次 验证可能无法成功
|
||||||
export tytpacketId=""
|
export JDJR_validator_Count="25"
|
||||||
## 3、拆红包
|
## 3、财富大陆热气球接客次数
|
||||||
export chbpacketId=""
|
### 新增热气球接客 默认每次运行执行10次
|
||||||
## 4、是兄弟就砍我
|
export gua_wealth_island_serviceNum="500"
|
||||||
### 是兄弟就来砍我脚本要参加砍价的商品ID
|
## 4、修复点点券
|
||||||
export actId=""
|
### 新增显示有多少个非法请求 可以开通知
|
||||||
export actId1=""
|
export DDQ_NOTIFY_CONTROL="" ##不填或false为通知,true为不通知
|
||||||
export actId2=""
|
## 5、24 及之后的开卡变量
|
||||||
export actId3=""
|
export guaopencard_All="true"
|
||||||
export actId4=""
|
export guaopencard_addSku_All="true"
|
||||||
### 是兄弟就来砍我脚本要要参加砍价的邀请码
|
export guaopencardRun_All="true"
|
||||||
export packetId=""
|
export guaopencard_draw="true"
|
||||||
## 5、是兄弟就砍我2
|
export guaunknownTask_addSku_All="true"
|
||||||
### 惊喜欢乐砍 自定义变量 入口:京喜APP-我的-惊喜欢乐砍
|
export guaunknownTask_card_All="true"
|
||||||
export launchid="" ##你的邀请码
|
export gua_carnivalcity_draw="true"
|
||||||
### 第一次参加变量设置为true查看商品ID,填写商品ID后自动获取邀请码邀请;如果只助力,变量设置为false
|
export guaopenwait_All="true"
|
||||||
export first="false"
|
export guaopencard_draw45="3"
|
||||||
export active="" ##商品ID
|
for ((s = 0; s <= 100; s++)); do
|
||||||
## 6、赚金币
|
export guaopencard$s="3"
|
||||||
### 入口:极速版-百元生活费-赚金币-邀请好友
|
export guaopencard_draw$s="3"
|
||||||
### 第一次运行可不填写邀请码,运行一次查看自己的邀请码
|
export guaopencard_addSku$s="true"
|
||||||
export InviterPin="" ##你的邀请码
|
done
|
||||||
## 7、0元砍价,入口:京东-我的-0元砍价
|
## 6、城城领现金自动抽奖
|
||||||
### 使用教程:
|
export jdJxdExchange="true"
|
||||||
### 第一步,运行脚本一次日志查看商品ID
|
export JD_CITY_HELPSHARE="false" # false 优先内部助力 | true 优先助力池
|
||||||
### 获取你要砍价的商品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" ##兑换牛奶
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
# Ninja 环境变量
|
# Ninja 环境变量
|
||||||
## 1、通知黑名单
|
## 1、通知黑名单
|
||||||
### 使用 & 分隔,例如 东东乐园&东东萌宠
|
### 使用 & 分隔,例如 东东乐园&东东萌宠
|
||||||
export NOTIFY_SKIP_LIST=""
|
export NOTIFY_SKIP_LIST=""
|
||||||
|
|
||||||
# Faker2库环境变量
|
# 不知名大佬环境变量
|
||||||
## 1、清空购物车
|
## 1、清空购物车
|
||||||
export JD_CART_REMOVE=""
|
### 将需要跳过清理的账号(cookie中的pt_pin)放到变量CleanUsers中,多个用@隔开
|
||||||
export JD_CART_REMOVESIZE=""
|
export CleanUsers=""
|
||||||
|
|
||||||
|
# ccwav 环境变量
|
||||||
|
## [1] jd_CheckCK.js
|
||||||
|
### 当有自动禁用或自动启用事件发生才会发送通知,如果要每次都通知则需设定变量
|
||||||
|
### 自动检测账号是否正常,不正常的自动禁用,正常的如果是禁用状态则自动启用
|
||||||
|
export CHECKCK_SHOWSUCCESSCK="false" ##显示正常CK,true为显示
|
||||||
|
export CHECKCK_CKALWAYSNOTIFY="true" ##通知CK状态,true为永远通知
|
||||||
|
export CHECKCK_CKAUTOENABLE="false" ##自动启用CK,false为停用
|
||||||
|
export CHECKCK_CKNOWARNERROR="true" ##服务器空数据等错误不触发通知,false为通知
|
||||||
|
## [2] jd_bean_change.js
|
||||||
|
### 自用的京东资产变动查询加强版
|
||||||
|
### 京东资产变动 + 白嫖榜 + 京东月资产变动,注意事项:如果你遇到TG Bark报错,那是因为报文过长,请使用分段通知功能.
|
||||||
|
### 1. BEANCHANGE_PERSENT 分段通知
|
||||||
|
### 例:export BEANCHANGE_PERSENT="10"总共有22个账号,结果会分成3条推送通知,1~10为第一条推送,11~20为第二条推送,剩余的为第三条推送
|
||||||
|
export BEANCHANGE_PERSENT="10" ##10合1
|
||||||
|
### 2. BEANCHANGE_USERGP2 BEANCHANGE_USERGP3 BEANCHANGE_USERGP4 根据Pt_Pin的值进行分组通知
|
||||||
|
### 注意:分组通知会强制禁用BEANCHANGE_PERSENT变量!
|
||||||
|
### 分组通知的通知标题为 脚本名+"#"+分组数值
|
||||||
|
### 主要用于搭配通知脚本的分组通知使用.
|
||||||
|
### 3. BEANCHANGE_ENABLEMONTH
|
||||||
|
### 每月1号17点后如果执行资产查询,开启京东月资产变动的统计和推送.
|
||||||
|
### 拆分通知和分组通知的变量都可以兼容.
|
||||||
|
### 标题按照分组分别为 京东月资产变动 京东月资产变动#2 京东月资产变动#3
|
||||||
|
### 开启 : export BEANCHANGE_ENABLEMONTH="true"
|
||||||
|
### 4.BEANCHANGE_ALLNOTIFY
|
||||||
|
### 设置推送置顶公告,&表示换行,公告会出现在资产通知中(包括一对一).
|
||||||
|
### 例子 : export BEANCHANGE_ALLNOTIFY="你好&今天天气不错...&&哥斯拉大战金刚...."
|
||||||
|
### 显示:
|
||||||
|
###
|
||||||
|
### 【✨✨✨✨公告✨✨✨✨】
|
||||||
|
### 你好
|
||||||
|
### 今天天气不错...
|
||||||
|
###
|
||||||
|
### 哥斯拉大战金刚....
|
||||||
|
### 5. BEANCHANGE_ENABLEMONTH
|
||||||
|
### 当设定BEANCHANGE_ExJxBeans="true"且时间在17点之后,会自动将临期京豆兑换成喜豆续命.
|
||||||
|
export BEANCHANGE_ExJxBeans="true"
|
||||||
|
## [3] sendNotify.js
|
||||||
|
### 1. 通知黑名单
|
||||||
|
### 如果通知标题在此变量里面存在(&隔开),则用屏蔽不发送通知,继承Ninja。例: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. 屏蔽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的推送加接口,貌似更稳定,普通用法和NOTIFY_CUSTOMNOTIFY用法同PUSH_PLUS.
|
||||||
|
export PUSH_PLUS_TOKEN_hxtrip=""
|
||||||
|
export PUSH_PLUS_USER_hxtrip=""
|
||||||
|
### 12. jd_joy_reward_Mod.js 宠汪汪积分兑换有就换版
|
||||||
|
export JOY_GET20WHEN16="true" ##控制16点才触发20京豆兑换.
|
||||||
|
### 13. CK失效时执行脚本
|
||||||
|
export NOTIFY_CKTASK="ccwav_QLScript2_jd_CheckCK.js"
|
||||||
|
### 14. 用 WxPusher 进行一对一推送
|
||||||
|
### 详细教程有人写了,不知道是幸运还是不幸: 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",启用一对一推送标题显示备注信息,默认不启用.
|
||||||
|
### CK_WxPusherUid.json 内容(pt_pin 如果是汉字需要填写转码后的!):
|
||||||
|
### [
|
||||||
|
### {
|
||||||
|
### "pt_pin": "ccwav",
|
||||||
|
### "Uid": "UID_AAAAAAAA"
|
||||||
|
### },
|
||||||
|
### {
|
||||||
|
### "pt_pin": "中文名",
|
||||||
|
### "Uid": "BBBBBBBBBB"
|
||||||
|
### }
|
||||||
|
### ]
|
||||||
|
### 15. NOTIFY_SKIP_TEXT
|
||||||
|
### 如果此变量(&隔开)的关键字在通知内容里面存在,则屏蔽不发送通知.
|
||||||
|
### 例子 : export NOTIFY_SKIP_TEXT="忘了种植&异常"
|
||||||
|
|
||||||
|
# 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"
|
||||||
|
|
||||||
|
# Aaron-lv
|
||||||
|
## 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一大串字符\"}"
|
||||||
|
|||||||
@ -1,183 +1,636 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Build 20210822-001
|
## Build 20211214-002-test
|
||||||
|
|
||||||
name_js=(
|
name_js=(
|
||||||
jd_fruit
|
jd_fruit
|
||||||
jd_pet
|
jd_pet
|
||||||
jd_plantBean
|
jd_plantBean
|
||||||
jd_dreamFactory
|
jd_dreamFactory
|
||||||
jd_jdfactory
|
jd_jdfactory
|
||||||
jd_crazy_joy
|
jd_crazy_joy
|
||||||
jd_jdzz
|
jd_jdzz
|
||||||
jd_jxnc
|
jd_jxnc
|
||||||
jd_bookshop
|
jd_bookshop
|
||||||
jd_cash
|
jd_cash
|
||||||
jd_sgmh
|
jd_sgmh
|
||||||
jd_cfd
|
jd_cfd
|
||||||
jd_health
|
jd_health
|
||||||
jd_carnivalcity
|
jd_carnivalcity
|
||||||
jd_city
|
jd_city
|
||||||
jd_moneyTree_heip
|
jd_moneyTree
|
||||||
jd_cfdtx
|
jd_cfdtx
|
||||||
)
|
)
|
||||||
name_config=(
|
name_config=(
|
||||||
Fruit
|
Fruit
|
||||||
Pet
|
Pet
|
||||||
Bean
|
Bean
|
||||||
DreamFactory
|
DreamFactory
|
||||||
JdFactory
|
JdFactory
|
||||||
Joy
|
Joy
|
||||||
Jdzz
|
Jdzz
|
||||||
Jxnc
|
Jxnc
|
||||||
BookShop
|
BookShop
|
||||||
Cash
|
Cash
|
||||||
Sgmh
|
Sgmh
|
||||||
Cfd
|
Cfd
|
||||||
Health
|
Health
|
||||||
Carni
|
Carni
|
||||||
City
|
City
|
||||||
MoneyTree
|
MoneyTree
|
||||||
TokenJxnc
|
TokenJxnc
|
||||||
|
)
|
||||||
|
name_chinese=(
|
||||||
|
东东农场
|
||||||
|
东东萌宠
|
||||||
|
京东种豆得豆
|
||||||
|
京喜工厂
|
||||||
|
东东工厂
|
||||||
|
crazyJoy任务
|
||||||
|
京东赚赚
|
||||||
|
京喜农场
|
||||||
|
口袋书店
|
||||||
|
签到领现金
|
||||||
|
闪购盲盒
|
||||||
|
京喜财富岛
|
||||||
|
东东健康社区
|
||||||
|
京东手机狂欢城
|
||||||
|
城城领现金
|
||||||
|
摇钱树
|
||||||
|
京喜token
|
||||||
)
|
)
|
||||||
env_name=(
|
env_name=(
|
||||||
FRUITSHARECODES ## 1、东东农场互助码
|
FRUITSHARECODES ## 1、东东农场互助码
|
||||||
PETSHARECODES ## 2、东东萌宠互助码
|
PETSHARECODES ## 2、东东萌宠互助码
|
||||||
PLANT_BEAN_SHARECODES ## 3、种豆得豆互助码
|
PLANT_BEAN_SHARECODES ## 3、种豆得豆互助码
|
||||||
DREAM_FACTORY_SHARE_CODES ## 4、京喜工厂互助码
|
DREAM_FACTORY_SHARE_CODES ## 4、京喜工厂互助码
|
||||||
DDFACTORY_SHARECODES ## 5、东东工厂互助码
|
DDFACTORY_SHARECODES ## 5、东东工厂互助码
|
||||||
JDJOY_SHARECODES ## 6、疯狂的JOY互助码
|
JDJOY_SHARECODES ## 6、疯狂的JOY互助码
|
||||||
JDZZ_SHARECODES ## 7、京东赚赚互助码
|
JDZZ_SHARECODES ## 7、京东赚赚互助码
|
||||||
JXNC_SHARECODES ## 8、京喜农场助力码
|
JXNC_SHARECODES ## 8、京喜农场助力码
|
||||||
BOOKSHOP_SHARECODES ## 9、口袋书店互助码
|
BOOKSHOP_SHARECODES ## 9、口袋书店互助码
|
||||||
JD_CASH_SHARECODES ## 10、签到领现金互助码
|
JD_CASH_SHARECODES ## 10、签到领现金互助码
|
||||||
JDSGMH_SHARECODES ## 11、闪购盲盒互助码
|
JDSGMH_SHARECODES ## 11、闪购盲盒互助码
|
||||||
JDCFD_SHARECODES ## 12、京喜财富岛互助码
|
JDCFD_SHARECODES ## 12、京喜财富岛互助码
|
||||||
JDHEALTH_SHARECODES ## 13、东东健康社区互助码
|
JDHEALTH_SHARECODES ## 13、东东健康社区互助码
|
||||||
JD818_SHARECODES ## 14、京东手机狂欢城互助码
|
JD818_SHARECODES ## 14、京东手机狂欢城互助码
|
||||||
CITY_SHARECODES ## 15、城城领现金互助码
|
CITY_SHARECODES ## 15、城城领现金互助码
|
||||||
MONEYTREE_SHARECODES ## 16、摇钱树
|
MONEYTREE_SHARECODES ## 16、摇钱树
|
||||||
JXNCTOKENS ## 17、京喜Token(京喜财富岛提现用)
|
JXNCTOKENS ## 17、京喜Token(京喜财富岛提现用)
|
||||||
)
|
)
|
||||||
var_name=(
|
var_name=(
|
||||||
ForOtherFruit ## 1、东东农场互助规则
|
ForOtherFruit ## 1、东东农场互助规则
|
||||||
ForOtherPet ## 2、东东萌宠互助规则
|
ForOtherPet ## 2、东东萌宠互助规则
|
||||||
ForOtherBean ## 3、种豆得豆互助规则
|
ForOtherBean ## 3、种豆得豆互助规则
|
||||||
ForOtherDreamFactory ## 4、京喜工厂互助规则
|
ForOtherDreamFactory ## 4、京喜工厂互助规则
|
||||||
ForOtherJdFactory ## 5、东东工厂互助规则
|
ForOtherJdFactory ## 5、东东工厂互助规则
|
||||||
ForOtherJoy ## 6、疯狂的JOY互助规则
|
ForOtherJoy ## 6、疯狂的JOY互助规则
|
||||||
ForOtherJdzz ## 7、京东赚赚互助规则
|
ForOtherJdzz ## 7、京东赚赚互助规则
|
||||||
ForOtherJxnc ## 8、京喜农场助力码
|
ForOtherJxnc ## 8、京喜农场助力码
|
||||||
ForOtherBookShop ## 9、口袋书店互助规则
|
ForOtherBookShop ## 9、口袋书店互助规则
|
||||||
ForOtherCash ## 10、签到领现金互助规则
|
ForOtherCash ## 10、签到领现金互助规则
|
||||||
ForOtherSgmh ## 11、闪购盲盒互助规则
|
ForOtherSgmh ## 11、闪购盲盒互助规则
|
||||||
ForOtherCfd ## 12、京喜财富岛互助规则
|
ForOtherCfd ## 12、京喜财富岛互助规则
|
||||||
ForOtherHealth ## 13、东东健康社区互助规则
|
ForOtherHealth ## 13、东东健康社区互助规则
|
||||||
ForOtherCarni ## 14、京东手机狂欢城互助规则
|
ForOtherCarni ## 14、京东手机狂欢城互助规则
|
||||||
ForOtherCity ## 15、城城领现金互助规则
|
ForOtherCity ## 15、城城领现金互助规则
|
||||||
ForOtherMoneyTree ## 16、摇钱树
|
ForOtherMoneyTree ## 16、摇钱树
|
||||||
TokenJxnc ## 17、京喜Token(京喜财富岛提现用)
|
TokenJxnc ## 17、京喜Token(京喜财富岛提现用)
|
||||||
)
|
)
|
||||||
|
|
||||||
## 临时屏蔽某账号运行活动脚本
|
local_scr=$1
|
||||||
TempBlock_JD_COOKIE(){
|
repo_dir=""
|
||||||
|
sub_dir_scripts="$(ls -l $dir_scripts | awk '/^d/ {print $NF}')"
|
||||||
|
if [[ ! $local_scr =~ "/" ]] || [[ $local_scr == $dir_scripts/[^/]* ]]; then
|
||||||
|
local_scr_dir="$dir_scripts"
|
||||||
|
elif [[ $local_scr == */* ]] && [[ ! $local_scr =~ ql ]]; then
|
||||||
|
repo_dir="$(echo $local_scr | awk -F '/' '{print $(NF-1)}')"
|
||||||
|
[[ $sub_dir_scripts[@] =~ $repo_dir ]] && local_scr_dir="$dir_scripts/$repo_dir"
|
||||||
|
else
|
||||||
|
local_scr_dir=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
## 生成pt_pin清单
|
||||||
|
gen_pt_pin_array() {
|
||||||
source $file_env
|
source $file_env
|
||||||
local TempBlockCookieInterval="$(echo $TempBlockCookie | perl -pe "{s|~|-|; s|_|-|}" | sed 's/\(\d\+\)-\(\d\+\)/{\1..\2}/g')"
|
ori_jdCookie=$JD_COOKIE
|
||||||
local TempBlockCookieArray=($(eval echo $TempBlockCookieInterval))
|
ori_envs=$(eval echo "\$ori_jdCookie")
|
||||||
local envs=$(eval echo "\$JD_COOKIE")
|
ori_array=($(echo $ori_envs | sed 's/&/ /g'))
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local i j ori_pt_pin_temp
|
||||||
local user_sum=${#array[*]}
|
for i in "${!ori_array[@]}"; do
|
||||||
local m n t
|
j=$((i + 1))
|
||||||
for ((m = 1; m <= $user_sum; m++)); do
|
ori_pt_pin_temp=$(echo ${ori_array[i]} | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}")
|
||||||
n=$((m - 1))
|
ori_remark_name[i]="$(cat $dir_db/env.db | grep ${ori_array[i]} | grep remarks | perl -pe "{s|.*remarks\":\"([^\"]+).*|\1|g}" | tail -1)"
|
||||||
for ((t = 0; t < ${#TempBlockCookieArray[*]}; t++)); do
|
[[ ! ${ori_remark_name[i]} ]] && ori_remark_name[i]="未备注"
|
||||||
[[ "${TempBlockCookieArray[t]}" = "$m" ]] && unset array[n]
|
[[ $ori_pt_pin_temp == *\\x* ]] && ori_pt_pin[i]=$(printf $ori_pt_pin_temp) || ori_pt_pin[i]=$ori_pt_pin_temp
|
||||||
|
ori_sn=$j
|
||||||
|
ori_uesr_info[i]="序号 $j. 用户名:${ori_pt_pin[i]} 备注:${ori_remark_name[i]}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
export_uesr_info() {
|
||||||
|
for i in $@; do
|
||||||
|
for j in "${!ori_array[@]}"; do
|
||||||
|
[[ ${ori_array[j]} == *$i* ]] && echo ${ori_uesr_info[j]}
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
jdCookie=$(echo ${array[*]} | sed 's/\ /\&/g')
|
|
||||||
[[ ! -z $jdCookie ]] && export JD_COOKIE="$jdCookie"
|
|
||||||
temp_user_sum=${#array[*]}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## 随机账号运行活动
|
# Cookie 有效性检查
|
||||||
Random_JD_COOKIE(){
|
check_jd_ck() {
|
||||||
[[ -z $JD_COOKIE ]] && source $file_env
|
local test_jd_cookie="$(curl -s --connect-timeout 5 --retry 3 --noproxy "*" "https://bean.m.jd.com/bean/signIndex.action" -H "cookie: $1")"
|
||||||
local envs=$(eval echo "\$JD_COOKIE")
|
[[ "$test_jd_cookie" ]] && return 0 || return 1
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
}
|
||||||
local user_sum=${#array[*]}
|
|
||||||
local combined_all
|
# 移除失效的 Cookie
|
||||||
if [[ $RandomMode = "1" ]]; then
|
remove_void_ck() {
|
||||||
[[ ! $ran_num ]] && ran_num=$user_sum
|
gen_pt_pin_array
|
||||||
if [ $(echo $ran_num|grep '[0-9]') ]; then
|
local tmp_jdCookie i j void_ck_num
|
||||||
[[ $ran_num -gt $user_sum || $ran_num -lt 2 ]] && ran_num=$user_sum
|
if [[ $jdCookie_1 ]]; then
|
||||||
ran_sub="$(seq $user_sum | sort -R | head -$ran_num)"
|
tmp_jdCookie=$jdCookie_1
|
||||||
for i in $ran_sub; do
|
else
|
||||||
tmp="${array[i]}"
|
source $file_env
|
||||||
combined_all="$combined_all&$tmp"
|
tmp_jdCookie=$JD_COOKIE
|
||||||
done
|
|
||||||
jdCookie=$(echo $combined_all | sed 's/^&//g')
|
|
||||||
[[ ! -z $jdCookie ]] && export JD_COOKIE="$jdCookie"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
local envs=$(eval echo "\$tmp_jdCookie")
|
||||||
|
|
||||||
## 组队任务
|
|
||||||
combine_team(){
|
|
||||||
p=$1
|
|
||||||
q=$2
|
|
||||||
export jd_zdjr_activityId=$3
|
|
||||||
export jd_zdjr_activityUrl=$4
|
|
||||||
}
|
|
||||||
|
|
||||||
team_task(){
|
|
||||||
[[ -z $JD_COOKIE ]] && source $file_env
|
|
||||||
local envs=$(eval echo "\$JD_COOKIE")
|
|
||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
local user_sum=${#array[*]}
|
local user_sum=${#array[*]}
|
||||||
local i j k x y p q
|
local test_connect="$(curl -I -s --connect-timeout 5 --retry 3 --noproxy "*" https://bean.m.jd.com/bean/signIndex.action -w %{http_code} | tail -n1)"
|
||||||
local scr=$scr_name
|
echo -e "# 开始检测 Cookie 的有效性,可能花费一定时间,请耐心等待 ..."
|
||||||
local teamer_array=($teamer_num)
|
if [ "$test_connect" -eq "302" ]; then
|
||||||
local team_array=($team_num)
|
echo -e "# 本次一共导入 $user_sum 个 Cookie ,其中:"
|
||||||
if [[ -f /ql/scripts/$scr ]]; then
|
for ((i = 0; i < $user_sum; i++)); do
|
||||||
for ((i=0; i<${#teamer_array[*]}; i++)); do
|
j=$((i + 1))
|
||||||
combine_team ${teamer_array[i]} ${team_array[i]} ${activityId[i]} ${activityUrl[i]}
|
check_jd_ck ${array[i]}
|
||||||
[[ $q -ge $(($user_sum/p)) ]] && q=$(($user_sum/p))
|
[[ $? = 0 ]] && echo -e "# $(export_uesr_info ${array[i]}) 状态正常"
|
||||||
for ((m = 0; m < $user_sum; m++)); do
|
[[ $? = 1 ]] && echo -e "# $(export_uesr_info ${array[i]}) 已失效" && unset array[i]
|
||||||
j=$((m + 1))
|
done
|
||||||
x=$((m/q))
|
jdCookie_2=$(echo ${array[*]} | sed 's/\ /\&/g')
|
||||||
y=$(((p - 1)*m + 1))
|
[[ $jdCookie_2 ]] && export JD_COOKIE="$jdCookie_2"
|
||||||
COOKIES_HEAD="${array[x]}"
|
void_ck_num=$((user_sum - ${#array[*]}))
|
||||||
COOKIES=""
|
[[ $void_ck_num = 0 ]] && echo -e "# 未检测到失效 Cookie 。" || echo -e "# 已剔除以上 $void_ck_num 个失效的 Cookie 。"
|
||||||
if [[ $j -le $q ]]; then
|
else
|
||||||
for ((n = 1; n < $p; n++)); do
|
echo -e "# API 连接失败,跳过检测。"
|
||||||
COOKIES="$COOKIES&${array[y]}"
|
fi
|
||||||
let y++
|
echo -e ""
|
||||||
done
|
}
|
||||||
elif [[ $j -eq $((q + 1)) ]]; then
|
|
||||||
for ((n = 1; n < $((p-1)); n++)); do
|
## 临时禁止账号运行活动脚本
|
||||||
COOKIES_HEAD="${array[x]}&${array[0]}"
|
TempBlock_CK() {
|
||||||
COOKIES="$COOKIES&${array[y]}"
|
## 按 Cookie 序号禁止账号
|
||||||
let y++
|
TempBlock_JD_COOKIE() {
|
||||||
done
|
## 导入基础 JD_COOKIE 变量
|
||||||
elif [[ $j -gt $((q + 1)) ]]; then
|
source $file_env
|
||||||
[[ $((y+1)) -le $user_sum ]] && y=$(((p - 1)*m)) || break
|
local tmp_jdCookie=$JD_COOKIE
|
||||||
for ((n = $m; n < $((m + p -1)); n++)); do
|
local envs=$(eval echo "\$tmp_jdCookie")
|
||||||
COOKIES="$COOKIES&${array[y]}"
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
let y++
|
local user_sum=${#array[*]}
|
||||||
[[ $y = $x ]] && y=$((y+1))
|
local TempBlockCookie="$(eval echo $(echo $TempBlockCookie | perl -pe "{s|~\|-|_|g; s|\W+\|[A-Za-z]+| |g; s|(\d+)_(\d+)|{\1..\2}|g;}"))"
|
||||||
[[ $((y+1)) -gt $user_sum ]] && break
|
local TempBlockPin="$(echo $TempBlockPin | perl -pe "{s|,| |g;}")"
|
||||||
done
|
local TempBlockCookieArray=($TempBlockCookie)
|
||||||
fi
|
local TempBlockPinArray=($TempBlockPin)
|
||||||
result=$(echo -e "$COOKIES_HEAD$COOKIES")
|
local i j k m jdCookie_3
|
||||||
if [[ $result ]]; then
|
for ((i = 1; i <= $user_sum; i++)); do
|
||||||
export JD_COOKIE=$result
|
j=$((i - 1))
|
||||||
node /ql/scripts/$scr
|
for ((k = 0; k < ${#TempBlockCookieArray[*]}; k++)); do
|
||||||
fi
|
[[ "${TempBlockCookieArray[k]}" = "$i" ]] && unset array[j]
|
||||||
# echo $JD_COOKIE
|
done
|
||||||
|
pt_pin_temp=$(echo ${array[j]} | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}")
|
||||||
|
[[ $pt_pin_temp == *\\x* ]] && pt_pin[j]=$(printf $pt_pin_temp) || pt_pin[j]=$pt_pin_temp
|
||||||
|
for ((m = 0; m < ${#TempBlockPinArray[*]}; m++)); do
|
||||||
|
pt_pin_temp_block=$(echo ${TempBlockPinArray[m]} | perl -pe "{s|%|\\\x|g}")
|
||||||
|
[[ $pt_pin_temp_block == *\\x* ]] && pt_pin_block[m]=$(printf $pt_pin_temp_block) || pt_pin_block[m]=$pt_pin_temp_block
|
||||||
|
[[ "${pt_pin[j]}" =~ "${pt_pin_block[m]}" ]] && unset array[j]
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
exit
|
jdCookie_1=$(echo ${array[*]} | sed 's/\ /\&/g')
|
||||||
|
[[ $jdCookie_1 ]] && export JD_COOKIE="$jdCookie_1"
|
||||||
|
user_sum_1=${#array[*]}
|
||||||
|
}
|
||||||
|
|
||||||
|
local i j k
|
||||||
|
if [[ -n "$(echo $tempblock_ck_envs_num | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
for ((k = 1; k <= $tempblock_ck_envs_num; k++)); do
|
||||||
|
if [ tempblock_ck_envs$k ]; then
|
||||||
|
local tempblock_ck_array=($(eval echo "\$tempblock_ck_envs$k" | perl -pe "{s|&| |g}"))
|
||||||
|
for i in "${tempblock_ck_array[@]}"; do
|
||||||
|
local tmp_task_array=($(echo $i | perl -pe "{s|@| |g}"))
|
||||||
|
local tmp_script_array=($(echo ${tmp_task_array[0]} | perl -pe "{s/\|/ /g}"))
|
||||||
|
for j in ${tmp_script_array[@]}; do
|
||||||
|
if [[ $local_scr == *$j* ]]; then
|
||||||
|
[[ $(echo ${tmp_task_array[1]} | perl -pe "{s|\D||g;}") ]] && TempBlockCookie=${tmp_task_array[1]} || TempBlockCookie=""
|
||||||
|
TempBlockPin=${tmp_task_array[2]}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
if [[ $TempBlockCookie ]] || [[ $TempBlockPin ]]; then
|
||||||
|
TempBlock_JD_COOKIE
|
||||||
|
else
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## 重组 CK
|
||||||
|
Recombin_CK() {
|
||||||
|
## 导入基础 JD_COOKIE 变量
|
||||||
|
if [[ $jdCookie_2 ]]; then
|
||||||
|
tmp_jdCookie=$jdCookie_2
|
||||||
|
elif [[ $jdCookie_1 ]]; then
|
||||||
|
tmp_jdCookie=$jdCookie_1
|
||||||
|
else
|
||||||
|
source $file_env
|
||||||
|
tmp_jdCookie=$JD_COOKIE
|
||||||
|
fi
|
||||||
|
|
||||||
|
## JD_COOKIE 基本分析
|
||||||
|
local envs=$(eval echo "\$tmp_jdCookie")
|
||||||
|
array=($(echo $envs | sed 's/&/ /g'))
|
||||||
|
user_sum=${#array[*]}
|
||||||
|
local jdCookie_4 i j k m n
|
||||||
|
if [[ -n "$(echo $recombin_ck_envs_num | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
for ((k = 1; k <= $recombin_ck_envs_num; k++)); do
|
||||||
|
if [ recombin_ck_envs$k ]; then
|
||||||
|
local recombin_ck_array=($(eval echo "\$recombin_ck_envs$k" | perl -pe "{s|&| |g}"))
|
||||||
|
for i in "${recombin_ck_array[@]}"; do
|
||||||
|
local tmp_task_array=($(echo $i | perl -pe "{s|@| |g}"))
|
||||||
|
local tmp_script_array=($(echo ${tmp_task_array[0]} | perl -pe "{s/\|/ /g}"))
|
||||||
|
#[[ $DEBUG_MODE = 1 ]] && echo ${tmp_script_array[@]}
|
||||||
|
for j in "${tmp_script_array[@]}"; do
|
||||||
|
if [[ $local_scr == *$j* ]]; then
|
||||||
|
[[ $DEBUG_MODE = 1 ]] && echo -n "${tmp_script_array[@]}" && echo -e "\n"
|
||||||
|
Recombin_CK_Mode="${tmp_task_array[1]}"
|
||||||
|
for ((m = 1; m <= 5; m++)); do
|
||||||
|
n=$((m + 1))
|
||||||
|
eval Recombin_CK_ARG$m="${tmp_task_array[n]}"
|
||||||
|
[[ $DEBUG_MODE = 1 ]] && eval echo "Recombin_CK_ARG$m : \$Recombin_CK_ARG$m"
|
||||||
|
done
|
||||||
|
local temp_status=1
|
||||||
|
[[ $Recombin_CK_Mode = 4 || $Recombin_CK_Mode = 5 ]] && Recombin_CK_cal && break 4 || Recombin_CK_cal
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ ! $temp_status ]] && Recombin_CK_cal
|
||||||
|
}
|
||||||
|
|
||||||
|
## 重组 CK 计算
|
||||||
|
Recombin_CK_cal() {
|
||||||
|
## 随机模式算法
|
||||||
|
combine_random() {
|
||||||
|
local combined_all ran_sub tmp i
|
||||||
|
echo "# 正在应用 随机Cookie 模式..."
|
||||||
|
[[ -n "$(echo $1 | sed -n "/^[0-9]\+$/p")" && $1 -le $user_sum ]] && ran_num=$1 || ran_num=$user_sum
|
||||||
|
echo -e "# 当前总共 $user_sum 个有效账号,本次随机抽取 $ran_num 个账号按随机顺序参加活动。"
|
||||||
|
ran_sub="$(seq $user_sum | sort -R | head -$ran_num)"
|
||||||
|
for i in $ran_sub; do
|
||||||
|
j=$((i - 1))
|
||||||
|
tmp="${array[j]}"
|
||||||
|
combined_all="$combined_all&$tmp"
|
||||||
|
done
|
||||||
|
jdCookie_4=$(echo $combined_all | sed 's/^&//g')
|
||||||
|
[[ $jdCookie_4 ]] && export JD_COOKIE="$jdCookie_4"
|
||||||
|
#[[ $DEBUG_MODE = 1 ]] && echo $jdCookie_4
|
||||||
|
}
|
||||||
|
|
||||||
|
## 优先模式算法
|
||||||
|
combine_priority() {
|
||||||
|
local combined_all ran_sub jdCookie_priority jdCookie_random m n
|
||||||
|
if [ $1 ]; then
|
||||||
|
# 固定区账号数量
|
||||||
|
[[ -n "$(echo $1 | sed -n "/^[0-9]\+$/p")" ]] && fixed_num=$1 || fixed_num="0"
|
||||||
|
if [[ $fixed_num -ge $user_sum ]]; then
|
||||||
|
echo "# 固定账号数量不得大于或等于有效账号总量,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
elif [[ $fixed_num -eq 0 ]]; then
|
||||||
|
echo "# 未设定固定账号数量,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
else
|
||||||
|
echo "# 正在应用 优先Cookie 模式..."
|
||||||
|
echo -e "# 当前总共 $user_sum 个有效账号,其中前 $fixed_num 个账号为固定顺序。\n# 本次从第 $((fixed_num + 1)) 个账号开始按随机顺序参加活动。"
|
||||||
|
ran_sub=$(seq $fixed_num $user_sum | sort -R)
|
||||||
|
for ((m = 0; m < $fixed_num; m++)); do
|
||||||
|
tmp="${array[m]}"
|
||||||
|
jdCookie_priority="$jdCookie_priority&$tmp"
|
||||||
|
done
|
||||||
|
for n in $ran_sub; do
|
||||||
|
tmp="${array[n]}"
|
||||||
|
jdCookie_random="$jdCookie_random&$tmp"
|
||||||
|
done
|
||||||
|
combined_all="$jdCookie_priority$jdCookie_random"
|
||||||
|
jdCookie_4=$(echo $combined_all | perl -pe "{s|^&||; s|&&|&|; s|&$||}")
|
||||||
|
[[ $jdCookie_4 ]] && export JD_COOKIE="$jdCookie_4"
|
||||||
|
#[[ $DEBUG_MODE = 1 ]] && echo $jdCookie_4
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "# 由于参数缺失,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## 轮换模式算法
|
||||||
|
combine_rotation() {
|
||||||
|
# 当月总天数
|
||||||
|
local total_days=$(cal | grep ^[0-9] | tail -1 | awk -F " " '{print $NF}')
|
||||||
|
# 今天几号
|
||||||
|
local today_day=$(date +%-d)
|
||||||
|
local combined_all rot_num rot_start_num jdCookie_priority jdCookie_rot_head jdCookie_rot_mid tmp_1 tmp_2 tmp_3 a b c
|
||||||
|
# 固定区账号数量
|
||||||
|
[[ -n "$(echo $1 | sed -n "/^[0-9]\+$/p")" ]] && fixed_num=$1 || fixed_num="0"
|
||||||
|
if [[ $fixed_num -ge $user_sum ]]; then
|
||||||
|
echo "# 固定账号数量不得大于或等于有效账号总量,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
elif [[ $today_day -gt 1 ]]; then
|
||||||
|
echo "# 正在应用 轮换Cookie 模式..."
|
||||||
|
local rot_total_num=$((user_sum - $fixed_num))
|
||||||
|
if [[ $rot_total_num -gt 2 ]]; then
|
||||||
|
# 轮换区的账号数量
|
||||||
|
rot_num=$2
|
||||||
|
[[ -z "$(echo $rot_num | sed -n "/^[0-9]\+$/p")" || ! $rot_num || $rot_num -lt 1 || $rot_total_num -lt $rot_num ]] && rot_num=$(((rot_total_num + total_days - 1) / total_days)) && [[ $rot_num -lt 1 ]] && rot_num="1"
|
||||||
|
rot_start_num=$((fixed_num + rot_num * ((today_day - 1))))
|
||||||
|
while [[ $user_sum -lt $((rot_start_num + 1)) ]]; do rot_start_num=$((rot_start_num - rot_total_num)); done
|
||||||
|
echo -n "# 当前总共 $user_sum 个有效账号"
|
||||||
|
[[ $fixed_num -gt 0 ]] && echo -e ",其中前 $fixed_num 个账号为固定顺序。" || echo -e ",所有账号参与轮换。"
|
||||||
|
echo -e "# 今天从第 $((rot_start_num + 1)) 个账号开始轮换,轮换频次为:$rot_num 个账号/天。"
|
||||||
|
for ((a = 0; a < fixed_num; a++)); do
|
||||||
|
tmp_1="${array[a]}"
|
||||||
|
jdCookie_priority="$jdCookie_priority&$tmp_1"
|
||||||
|
done
|
||||||
|
for ((b = $rot_start_num; b < $user_sum; b++)); do
|
||||||
|
tmp_2="${array[b]}"
|
||||||
|
jdCookie_rot_head="$jdCookie_rot_head&$tmp_2"
|
||||||
|
done
|
||||||
|
for ((c = $fixed_num; c < $((rot_start_num)); c++)); do
|
||||||
|
tmp_3="${array[c]}"
|
||||||
|
jdCookie_rot_mid="$jdCookie_rot_mid&$tmp_3"
|
||||||
|
done
|
||||||
|
combined_all="$jdCookie_priority$jdCookie_rot_head$jdCookie_rot_mid"
|
||||||
|
jdCookie_4=$(echo $combined_all | perl -pe "{s|^&||; s|&$||}")
|
||||||
|
[[ $jdCookie_4 ]] && export JD_COOKIE="$jdCookie_4"
|
||||||
|
#[[ $DEBUG_MODE = 1 ]] && echo $jdCookie_4
|
||||||
|
else
|
||||||
|
echo "# 由于参加轮换的账号数量不足 2 个,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
fi
|
||||||
|
elif [[ $today_day -eq 1 ]]; then
|
||||||
|
echo "# 今天是 1 号,不应用轮换模式,全部 Cookie 按正常顺序参加活动..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## 组队模式算法
|
||||||
|
combine_team() {
|
||||||
|
team_ck() {
|
||||||
|
local tmp combined_tmp combined_all i j k m n
|
||||||
|
for ((i = 0; i < $team_num_total; i++)); do
|
||||||
|
#当前队伍是第几组
|
||||||
|
j=$((i + 1))
|
||||||
|
#发起组队的账号在Cookie数组中的序号
|
||||||
|
k=$((i / team_num))
|
||||||
|
tmp=""
|
||||||
|
combined_tmp=""
|
||||||
|
combined_all=""
|
||||||
|
if [ $i -ne $team_num ]; then
|
||||||
|
for ((m = 1; m < $teamer_num; m++)); do
|
||||||
|
#当前组队的第二账号所在Cookie数组的序号
|
||||||
|
n=$(((teamer_num - 1) * i + m)) && [[ $n -ge $user_sum ]] && continue
|
||||||
|
tmp="${array[n]}"
|
||||||
|
combined_tmp="$combined_tmp&$tmp"
|
||||||
|
done
|
||||||
|
combined_all="${array[k]}$combined_tmp"
|
||||||
|
elif [ $i -eq $team_num ]; then
|
||||||
|
for ((m = 1; m < $((teamer_num - 1)); m++)); do
|
||||||
|
#第二账号发起的第一支组队,该队伍中的第三账号所在Cookie数组的序号
|
||||||
|
n=$(((teamer_num - 1) * i + m)) && [[ $n -ge $user_sum ]] && continue
|
||||||
|
tmp="${array[n]}"
|
||||||
|
combined_tmp="$combined_tmp&$tmp"
|
||||||
|
done
|
||||||
|
combined_all="${array[k]}&${array[0]}$combined_tmp"
|
||||||
|
fi
|
||||||
|
jdCookie_4=$combined_all
|
||||||
|
if [[ $jdCookie_4 ]]; then
|
||||||
|
export JD_COOKIE="$jdCookie_4"
|
||||||
|
#[[ $DEBUG_MODE = 1 ]] && echo $jdCookie_4
|
||||||
|
if [[ $local_scr == *.js ]]; then
|
||||||
|
echo -e "\n# 本次提交的是第 $j 组账号。"
|
||||||
|
if [ $temp_status = 3 ]; then
|
||||||
|
node /ql/scripts/$local_scr
|
||||||
|
[[ $interval_time != "0" ]] && echo -e "# 等待 $interval_time 秒后开始进行下一组队任务 ..."
|
||||||
|
sleep $interval_time
|
||||||
|
else
|
||||||
|
node /ql/scripts/$local_scr &
|
||||||
|
sleep $delay_time
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
run_js_in_team() {
|
||||||
|
if [[ $teamer_num -ge $user_sum ]]; then
|
||||||
|
echo "# 每组队伍的成员数量不得大于或等于有效账号总数量,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
elif [[ $((teamer_num * team_num)) -ge $user_sum ]]; then
|
||||||
|
echo "# 参与组队的总成员数量不得大于或等于有效账号总数量,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
else
|
||||||
|
echo "# 正在应用 组队Cookie 模式..."
|
||||||
|
#总组队数量
|
||||||
|
team_num_total=$(((user_sum + teamer_num - 2) / (teamer_num - 1)))
|
||||||
|
#前几个账号发起组队
|
||||||
|
team_num_launch=$(((team_num_total + team_num - 1) / team_num))
|
||||||
|
[[ $team_num -ge $team_num_total ]] && team_num=$team_num_total && [[ $team_num -lt 1 ]] && team_num=1
|
||||||
|
echo -n "# 当前总共 $user_sum 个有效账号,其中前 $team_num_launch 个账号发起组队,每个账号最多可以发起 $team_num 次组队,一共组 $team_num_total 队,每支队伍最多包含 $teamer_num 个账号。"
|
||||||
|
if [[ -n "$(echo $1 | perl -pe "{s|\.\|s\|m\|h\|d||g}" | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
temp_status="1"
|
||||||
|
local delay_time="$(echo $1 | perl -pe "{s|([a-z])(\d)+|\1 \2|g;}")"
|
||||||
|
echo -e "各支队伍启动脚本的延隔时间为$(format_time $1)。"
|
||||||
|
elif [[ $1 = 0 ]]; then
|
||||||
|
temp_status="2"
|
||||||
|
local delay_time="0"
|
||||||
|
echo -e "所有队伍并发启动脚本,可能会占用较高的系统资源导致卡顿。"
|
||||||
|
elif [[ $1 = "-" ]] && [[ -n "$(echo $2 | perl -pe "{s|\.\|s\|m\|h\|d||g}" | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
temp_status="3"
|
||||||
|
local interval_time="$(echo $2 | perl -pe "{s|([a-z])(\d)|\1 \2|g;}")"
|
||||||
|
echo -e "各支队伍启动脚本的间隔时间为$(format_time $2)。"
|
||||||
|
else
|
||||||
|
temp_status="3"
|
||||||
|
delay_time="0"
|
||||||
|
interval_time="0"
|
||||||
|
echo -e ""
|
||||||
|
fi
|
||||||
|
team_ck
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
local p q
|
||||||
|
if [[ $1 ]] && [[ $2 ]]; then
|
||||||
|
if [[ $1 = "-" ]] && [[ $2 = "-" ]] && [[ -n "$(echo $5 | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
if [[ $5 = 0 ]]; then
|
||||||
|
for p in ${activity_env[@]}; do
|
||||||
|
activity_array=($(echo $p | perl -pe "{s|@| |g}"))
|
||||||
|
teamer_num=${activity_array[0]}
|
||||||
|
team_num=${activity_array[1]}
|
||||||
|
export jd_zdjr_activityId=${activity_array[2]}
|
||||||
|
export jd_zdjr_activityUrl=${activity_array[3]}
|
||||||
|
echo -e "活动 ID (activityId) : $jd_zdjr_activityId"
|
||||||
|
echo -e "活动链接(activityUrl): $jd_zdjr_activityUrl"
|
||||||
|
run_js_in_team $3 $4
|
||||||
|
done
|
||||||
|
elif [[ $5 -gt 0 ]]; then
|
||||||
|
q=$(($5 - 1))
|
||||||
|
activity_array=($(echo ${activity_env[q]} | perl -pe "{s|@| |g}"))
|
||||||
|
teamer_num=${activity_array[0]}
|
||||||
|
team_num=${activity_array[1]}
|
||||||
|
export jd_zdjr_activityId=${activity_array[2]}
|
||||||
|
export jd_zdjr_activityUrl=${activity_array[3]}
|
||||||
|
echo -e "活动 ID (activityId) : $jd_zdjr_activityId"
|
||||||
|
echo -e "活动链接(activityUrl): $jd_zdjr_activityUrl"
|
||||||
|
run_js_in_team $3 $4
|
||||||
|
fi
|
||||||
|
elif [[ -n "$(echo $1 | sed -n "/^[0-9]\+$/p")" ]] && [[ -n "$(echo $2 | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
# 每组队伍的成员数量
|
||||||
|
teamer_num=$1
|
||||||
|
# 单个账号最多发起的组队数量
|
||||||
|
team_num=$2
|
||||||
|
else
|
||||||
|
# 每组队伍的成员数量
|
||||||
|
teamer_num=$user_sum
|
||||||
|
# 单个账号最多发起的组队数量
|
||||||
|
team_num=1
|
||||||
|
fi
|
||||||
|
run_js_in_team $3 $4
|
||||||
|
else
|
||||||
|
echo "# 由于参数缺失,切换回 正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## 分段模式算法
|
||||||
|
combine_segmentation() {
|
||||||
|
local delay_time="$3"
|
||||||
|
local interval_time="$4"
|
||||||
|
local jdCookie_priority jdCookie_team_part i j k m n
|
||||||
|
if [[ $1 ]] && [[ $2 ]]; then
|
||||||
|
# 固定区账号数量
|
||||||
|
[[ -n "$(echo $1 | sed -n "/^[0-9]\+$/p")" ]] && fixed_num=$1 || fixed_num="0"
|
||||||
|
# 每段账号总数量
|
||||||
|
[[ -n "$(echo $2 | sed -n "/^[0-9]\+$/p")" ]] && teamer_total_num=$2 || teamer_total_num=$user_sum
|
||||||
|
if [[ $fixed_num -ge $teamer_total_num ]]; then
|
||||||
|
echo "# 固定账号数量不得大于或等于每段账号总数量,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
elif [[ $teamer_total_num -ge $user_sum ]]; then
|
||||||
|
echo "# 分段账号数量不得大于或等于有效账号总数量,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
elif [[ $fixed_num -lt $teamer_total_num ]]; then
|
||||||
|
echo "# 正在应用 分段Cookie 模式..."
|
||||||
|
local teamer_num="$((teamer_total_num - fixed_num))"
|
||||||
|
local team_total_num=$(((user_sum - fixed_num + teamer_num - 1) / teamer_num)) && [[ $team_total_num -lt 1 ]] && team_total_num=1
|
||||||
|
echo -n "# 当前总共 $user_sum 个有效账号"
|
||||||
|
[[ $fixed_num -ne 0 ]] && echo -n ",其中前 $fixed_num 个账号为固定顺序"
|
||||||
|
echo -n "。每 $teamer_total_num 个账号分一段,一共分 $team_total_num 段。"
|
||||||
|
if [[ -n "$(echo $3 | perl -pe "{s|\.\|s\|m\|h\|d||g}" | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
temp_status="1"
|
||||||
|
local delay_time="$(echo $3 | perl -pe "{s|([a-z])(\d)+|\1 \2|g;}")"
|
||||||
|
echo -e "各分段启动脚本的延隔时间为$(format_time $3)。"
|
||||||
|
echo -e "# 注意:如果每段的运行时间较长且延隔时间设定较短,运行日志可能会显示混乱,此为正常现象。"
|
||||||
|
elif [[ $3 = 0 ]]; then
|
||||||
|
temp_status="2"
|
||||||
|
local delay_time="0"
|
||||||
|
echo -e "所有分段并发启动脚本,可能会占用较高的系统资源导致卡顿。"
|
||||||
|
echo -e "# 注意:运行日志会显示混乱,此为正常现象。"
|
||||||
|
elif [[ $3 = "-" ]] && [[ -n "$(echo $4 | perl -pe "{s|\.\|s\|m\|h\|d||g}" | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
temp_status="3"
|
||||||
|
local interval_time="$(echo $4 | perl -pe "{s|([a-z])(\d)|\1 \2|g;}")"
|
||||||
|
echo -e ""
|
||||||
|
else
|
||||||
|
temp_status="3"
|
||||||
|
delay_time="0"
|
||||||
|
interval_time="0"
|
||||||
|
echo -e ""
|
||||||
|
fi
|
||||||
|
for ((m = 0; m < $fixed_num; m++)); do
|
||||||
|
tmp="${array[m]}"
|
||||||
|
jdCookie_priority="$jdCookie_priority&$tmp"
|
||||||
|
done
|
||||||
|
for ((i = 0; i < $team_total_num; i++)); do
|
||||||
|
j=$((i + 1))
|
||||||
|
m=$((teamer_num * i + fixed_num))
|
||||||
|
n=$((teamer_num * j + fixed_num))
|
||||||
|
t=$n && [[ $user_sum -lt $t ]] && t=$user_sum
|
||||||
|
jdCookie_team_part=""
|
||||||
|
for ((k = m; k < $n; k++)); do
|
||||||
|
tmp="${array[k]}"
|
||||||
|
jdCookie_team_part="$jdCookie_team_part&$tmp"
|
||||||
|
done
|
||||||
|
jdCookie_4=$(echo $jdCookie_priority$jdCookie_team_part | perl -pe "{s|^&+\|&+$||g}")
|
||||||
|
if [[ $jdCookie_4 ]]; then
|
||||||
|
export JD_COOKIE="$jdCookie_4"
|
||||||
|
#[[ $DEBUG_MODE = 1 ]] && echo $jdCookie_4
|
||||||
|
if [[ $local_scr == *.js ]]; then
|
||||||
|
[[ $fixed_num -ne 0 ]] && echo -e "\n# 本次提交的是前 $fixed_num 位账号及第 $((m + 1)) - $n 位账号。" || echo -e "\n# 本次提交的是第 $((m + 1)) - $n 位账号。"
|
||||||
|
if [ $temp_status = 3 ]; then
|
||||||
|
node /ql/scripts/$local_scr
|
||||||
|
[[ $interval_time != "0" ]] && echo -e "# 等待$(format_time $interval_time)后开始进行下一段任务 ..."
|
||||||
|
sleep $interval_time
|
||||||
|
else
|
||||||
|
node /ql/scripts/$local_scr &
|
||||||
|
sleep $delay_time
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "# 由于参数缺失,切换回正常 Cookie 模式..."
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 格式化时间
|
||||||
|
format_time() {
|
||||||
|
for i in $@; do
|
||||||
|
if [[ -n "$(echo $i | perl -pe "{s|\.||g}" | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
time_text=" $i 秒"
|
||||||
|
elif [[ -n "$(echo $i | perl -pe "{s|\.\|s\|m\|h\|d||g}" | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||||
|
time_text="$(echo $i | perl -pe "{s|([a-z])(\d)+|\1 \2|g; s|s| 秒|g; s|m| 分|g; s|h| 小时|g; s|d| 天|g; s|^| |g; s|(\d+)$|\1 秒|g;}")"
|
||||||
|
fi
|
||||||
|
echo -n "$time_text"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cookie 环境变量迭代导入
|
||||||
|
[[ $jdCookie_4 ]] && array=($(echo $jdCookie_4 | sed 's/&/ /g')) && user_sum=${#array[*]}
|
||||||
|
## 移除无效 Cookie
|
||||||
|
[[ $Recombin_CK_Mode ]] && [[ $Remove_Void_CK = 1 ]] && remove_void_ck
|
||||||
|
|
||||||
|
case $Recombin_CK_Mode in
|
||||||
|
1)
|
||||||
|
combine_random $Recombin_CK_ARG1
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
combine_priority $Recombin_CK_ARG1
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
combine_rotation $Recombin_CK_ARG1 $Recombin_CK_ARG2
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
combine_team $Recombin_CK_ARG1 $Recombin_CK_ARG2 $Recombin_CK_ARG3 $Recombin_CK_ARG4 $Recombin_CK_ARG5
|
||||||
|
;;
|
||||||
|
5)
|
||||||
|
combine_segmentation $Recombin_CK_ARG1 $Recombin_CK_ARG2 $Recombin_CK_ARG3 $Recombin_CK_ARG4
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
export JD_COOKIE="$tmp_jdCookie"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
## 组合互助码格式化为全局变量的函数
|
## 组合互助码格式化为全局变量的函数
|
||||||
@ -192,7 +645,7 @@ combine_sub() {
|
|||||||
local array=($(echo $envs | sed 's/&/ /g'))
|
local array=($(echo $envs | sed 's/&/ /g'))
|
||||||
local user_sum=${#array[*]}
|
local user_sum=${#array[*]}
|
||||||
local a b i j t sum combined_all
|
local a b i j t sum combined_all
|
||||||
for ((i=1; i <= $user_sum; i++)); do
|
for ((i = 1; i <= $user_sum; i++)); do
|
||||||
local tmp1=$what_combine$i
|
local tmp1=$what_combine$i
|
||||||
local tmp2=${!tmp1}
|
local tmp2=${!tmp1}
|
||||||
[[ ${tmp2} ]] && sum=$i || break
|
[[ ${tmp2} ]] && sum=$i || break
|
||||||
@ -226,34 +679,48 @@ combine_all() {
|
|||||||
## 正常依次运行时,组合互助码格式化为全局变量
|
## 正常依次运行时,组合互助码格式化为全局变量
|
||||||
combine_only() {
|
combine_only() {
|
||||||
for ((i = 0; i < ${#env_name[*]}; i++)); do
|
for ((i = 0; i < ${#env_name[*]}; i++)); do
|
||||||
case $first_param in
|
case $local_scr in
|
||||||
*${name_js[i]}.js | *${name_js[i]}.ts)
|
*${name_js[i]}*.js | *${name_js[i]}*.ts)
|
||||||
if [[ -f $dir_log/.ShareCode/${name_config[i]}.log ]]; then
|
if [[ -f $dir_log/.ShareCode/${name_config[i]}.log ]]; then
|
||||||
. $dir_log/.ShareCode/${name_config[i]}.log
|
. $dir_log/.ShareCode/${name_config[i]}.log
|
||||||
result=$(combine_sub ${var_name[i]})
|
result=$(combine_sub ${var_name[i]})
|
||||||
if [[ $result ]]; then
|
if [[ $result ]]; then
|
||||||
export ${env_name[i]}=$result
|
export ShareCodeConfigChineseName=${name_chinese[i]}
|
||||||
fi
|
export ShareCodeConfigName=${name_config[i]}
|
||||||
|
export ShareCodeEnvName=${env_name[i]}
|
||||||
fi
|
fi
|
||||||
;;
|
fi
|
||||||
*)
|
;;
|
||||||
export ${env_name[i]}=""
|
*)
|
||||||
;;
|
export ${env_name[i]}=""
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
TempBlock_JD_COOKIE && Random_JD_COOKIE
|
## 提前替换js基础依赖
|
||||||
|
JS_Deps_Replace() {
|
||||||
|
if [ $js_deps_replace_envs ]; then
|
||||||
|
local js_deps_replace_array=($(echo $js_deps_replace_envs | perl -pe "{s|&| |g}"))
|
||||||
|
for i in "${js_deps_replace_array[@]}"; do
|
||||||
|
local tmp_task_array=($(echo $i | perl -pe "{s|@| |g}"))
|
||||||
|
local tmp_script_array=($(echo ${tmp_task_array[0]} | perl -pe "{s/\|/ /g}"))
|
||||||
|
local tmp_skip_repo=($(echo ${tmp_task_array[1]} | perl -pe "{s/\|/ /g}"))
|
||||||
|
for j in "${tmp_script_array[@]}"; do
|
||||||
|
[[ ! $repo_dir ]] || [[ $repo_dir && ! ${tmp_skip_repo[@]} =~ $repo_dir ]] && [[ -f $dir_config/$j.js && $local_scr_dir ]] && cp -rvf $dir_config/$j.js $local_scr_dir/$j.js
|
||||||
|
done
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if [ $scr_name ]; then
|
[[ -f $dir_config/jdCookie.js && $local_scr_dir ]] && cp -rvf $dir_config/jdCookie.js $local_scr_dir/jdCookie.js
|
||||||
team_task
|
JS_Deps_Replace
|
||||||
else
|
TempBlock_CK
|
||||||
combine_only
|
Recombin_CK
|
||||||
fi
|
combine_only
|
||||||
|
|
||||||
#if [[ $(ls $dir_code) ]]; then
|
#if [[ $(ls $dir_code) ]]; then
|
||||||
# latest_log=$(ls -r $dir_code | head -1)
|
# latest_log=$(ls -r $dir_code | head -1)
|
||||||
# . $dir_code/$latest_log
|
# . $dir_code/$latest_log
|
||||||
# combine_all
|
# combine_all
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user