更新code

This commit is contained in:
烟雨 2022-05-26 18:19:31 +08:00
parent b96146fd84
commit 94c76de85f

View File

@ -1,22 +1,29 @@
#!/usr/bin/env bash #!/usr/bin/env bash
## Build 20211208-001-test ## Build 20220525-001-test
## 导入通用变量与函数 ## 导入通用变量与函数
dir_shell=/ql/shell #dir_shell=/ql/shell
. $dir_shell/share.sh #. $dir_shell/share.sh
## 目录
dir_root=/ql
dir_config=$dir_root/config
dir_scripts=$dir_root/scripts
dir_log=$dir_root/log
dir_db=$dir_root/db
dir_code=$dir_log/code
## 预设的仓库及默认调用仓库设置 ## 预设的仓库及默认调用仓库设置
## 将"repo=$repo1"改成repo=$repo2"或其他,以默认调用其他仓库脚本日志 ## 将"repo=$repo4"改成repo=$repo4"或其他,以默认调用其他仓库脚本日志
## 也可自行搜索本脚本内的"name_js=("和"name_js_only",将"repo"改成"repo2"或其他,用以自由组合调用仓库的脚本日志 ## 也可自行搜索本脚本内的"name_js=("和"name_js_only",将"repo"改成"repo2"或其他,用以自由组合调用仓库的脚本日志
repo1='panghu999_jd_scripts' #预设的 panghu999 仓库 repo1='panghu999_jd_scripts' #预设的 panghu999 仓库
repo2='JDHelloWorld_jd_scripts' #预设的 JDHelloWorld 仓库 repo2='JDHelloWorld_jd_scripts' #预设的 JDHelloWorld 仓库
repo3='he1pu_JDHelp' #预设的 he1pu 仓库 repo3='he1pu_JDHelp' #预设的 he1pu 仓库
repo4='shufflewzc_faker2' #预设的 shufflewzc 仓库 repo4='shufflewzc_faker2' #预设的 Hyominn_hyominnn 仓库
repo5='Wenmoux_scripts_wen_chinnkarahoi' #预设的 Wenmoux 仓库,用于读取口袋书店互助码。需提前拉取温某人的仓库或口袋书店脚本并完整运行。 repo5='Wenmoux_scripts_wen_chinnkarahoi' #预设的 Wenmoux 仓库,用于读取口袋书店互助码。需提前拉取温某人的仓库或口袋书店脚本并完整运行。
repo6='Aaron-lv_sync_jd_scripts' #预设的 Aaron-lv 仓库 repo6='Aaron-lv_sync_jd_scripts' #预设的 Aaron-lv 仓库
repo7='smiek2221_scripts' #预设的 smiek2221 仓库 repo7='smiek2221_scripts' #预设的 smiek2221 仓库
repo="" #空值,表示遍历所有仓库脚本日志 repo="" #空值,表示遍历所有仓库脚本日志
## 调试模式开关默认是0表示关闭设置为1表示开启 ## 调试模式开关默认是0表示关闭设置为1表示开启
DEBUG="1" DEBUG="1"
@ -25,7 +32,7 @@ DEBUG="1"
proc_num="10" proc_num="10"
## 备份配置文件开关默认是1表示开启设置为0表示关闭。备份路径 /ql/config/bak/ ## 备份配置文件开关默认是1表示开启设置为0表示关闭。备份路径 /ql/config/bak/
BACKUP="1" BACKUP="0"
## 是否删除指定天数以前的备份文件开关默认是1表示开启设置为0表示关闭。删除路径 /ql/config/bak/ ## 是否删除指定天数以前的备份文件开关默认是1表示开启设置为0表示关闭。删除路径 /ql/config/bak/
CLEANBAK="1" CLEANBAK="1"
## 定义删除指定天数以前的备份文件 ## 定义删除指定天数以前的备份文件
@ -48,20 +55,20 @@ front_num="5"
## 如果只是想要控制某个活动以执行某种互助规则,可以参考下面 case 这个命令的例子来控制 ## 如果只是想要控制某个活动以执行某种互助规则,可以参考下面 case 这个命令的例子来控制
## 活动名称参见 name_config 定义内容;具体可在本脚本中搜索 name_config=( 获悉 ## 活动名称参见 name_config 定义内容;具体可在本脚本中搜索 name_config=( 获悉
DiyHelpType="" 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
} }
@ -74,8 +81,8 @@ 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" 表示只更新互助规则,不更新互助码;留空或其他数值表示不更新。
@ -84,119 +91,142 @@ UpdateType="1"
## 定义是否自动安装或修复缺失的依赖默认为1表示自动修复留空或其他数值表示不修复。 ## 定义是否自动安装或修复缺失的依赖默认为1表示自动修复留空或其他数值表示不修复。
FixDependType="" FixDependType=""
## 定义监控修复的依赖名称 ## 定义监控修复的依赖名称
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" package_name="canvas png-js date-fns axios crypto-js ts-md5 tslib @types/node dotenv got md5 requests typescript fs require jsdom download js-base64 tough-cookie tunnel ws jieba prettytable form-data json5 global-agent"
## 需组合的环境变量列表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
"$repo"_jd_moneyTree_he?p "$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
) )
# 定义 json 数据查询工具
def_envs_tool(){
for i in $@; do
curl -s --noproxy "*" "http://0.0.0.0:5600/api/envs?searchValue=$i" -H "Authorization: Bearer $token"
done
}
def_json_total(){
def_envs_tool $1 | grep -Eo "\{\"value[^\}]+[^\}]+\}" | jq -r .$2
}
def_json(){
def_envs_tool $1 | grep -Eo "\{\"value[^\}]+[^\}]+\}" | grep "$3" | jq -r .$2
}
def_json_value(){
cat "$1" | perl -pe "{s|\n||g; s|\},|\}\n|g}" | grep -Eo "\{[^\}]+}" | grep "$3" | jq -r .$2
}
def_sub(){
local i j
for i in $(def_json_total $1 $2 | awk '/'$3'/{print NR}'); do
j=$((i - 1));
echo $j
done
}
## 生成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 pt_pin=($(eval echo "\$JD_COOKIE" | perl -pe "{s|&|\n|g; s|.*pt_pin=([^; ]+)(?=;?).*|\1|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;}'))
pt_pin_temp=$(echo ${array[i]} | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}")
remark_name[i]=$(cat $dir_db/env.db | grep ${array[i]} | grep remarks | perl -pe "{s|.*remarks\":\"([^\"]+).*|\1|g}" | tail -1)
[[ $pt_pin_temp == *\\x* ]] && pt_pin[i]=$(printf $pt_pin_temp) || pt_pin[i]=$pt_pin_temp
done
} }
## 导出互助码的通用程序,$1去掉后缀的脚本名称$2config.sh中的后缀$3活动中文名称 ## 导出互助码的通用程序,$1去掉后缀的脚本名称$2config.sh中的后缀$3活动中文名称
@ -214,7 +244,7 @@ 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 &>/dev/null && [[ $(ls ./*$task_name*/*.log 2>/dev/null | wc -l) -gt 0 ]]; 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=()
@ -260,7 +290,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
@ -294,7 +324,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
@ -321,7 +351,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
@ -347,7 +377,7 @@ export_codes_sub() {
fi fi
done done
tmp_ramdom_for_other="" tmp_ramdom_for_other=""
random_num_list=$(seq $((front_num + 1)) $user_sum | sort -R) random_num_list=$(seq $((front_num+1)) $user_sum | sort -R)
for x in $random_num_list; do for x in $random_num_list; do
tmp_ramdom_for_other="$tmp_ramdom_for_other@\${$config_name_my$x}" tmp_ramdom_for_other="$tmp_ramdom_for_other@\${$config_name_my$x}"
done done
@ -359,7 +389,7 @@ export_codes_sub() {
HelpTemp="车头B模式" HelpTemp="车头B模式"
echo -e "\n## 采用\"$HelpTemp\"互助模板" echo -e "\n## 采用\"$HelpTemp\"互助模板"
[[ $user_sum -le $front_num ]] && front_num=$user_sum [[ $user_sum -le $front_num ]] && front_num=$user_sum
random_num_list=$(seq $((front_num + 1)) $user_sum | sort -R) random_num_list=$(seq $((front_num+1)) $user_sum | sort -R)
for ((m = 0; m < ${#pt_pin[*]}; m++)); do for ((m = 0; m < ${#pt_pin[*]}; m++)); do
tmp_for_other="" tmp_for_other=""
j=$((m + 1)) j=$((m + 1))
@ -372,7 +402,7 @@ export_codes_sub() {
done done
tmp_ramdom_for_other="" tmp_ramdom_for_other=""
for x in $random_num_list; do for x in $random_num_list; do
[[ $m -eq $((x - 1)) ]] && continue [[ $m -eq $((x-1)) ]] && continue
tmp_ramdom_for_other="$tmp_ramdom_for_other@\${$config_name_my$x}" tmp_ramdom_for_other="$tmp_ramdom_for_other@\${$config_name_my$x}"
done done
echo "$config_name_for_other$j=\"$tmp_for_other$tmp_ramdom_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|" echo "$config_name_for_other$j=\"$tmp_for_other$tmp_ramdom_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
@ -395,7 +425,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
@ -408,22 +438,22 @@ export_codes_sub() {
esac esac
fi fi
else else
echo "#【$(date +%X)】 未运行过 $chinese_name 的脚本,未产生日志" 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 "所有账号助力码全部一致。"
@ -440,17 +470,17 @@ export_all_codes() {
4) 4)
echo "本套脚本内指定前 N 个账号优先助力N 个以后账号间随机助力(随机部分账号顺序固定)。" 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 exit
else else
[[ $repo ]] && echo -e "\n#【$(date +%X)】 默认查询 $repo 的活动脚本日志,格式化导出互助码,生成互助规则!" || echo -e "\n#【$(date +%X)】 遍历活动脚本日志,格式化导出互助码,生成互助规则!" [[ $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]}"
@ -460,84 +490,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 fi
echo -e "\n#【$(date +%X)】 正在更新 $chinese_name 的互助码..." echo -e "\n#【`date +%X`】 正在更新 $chinese_name 的互助码..."
for ((i = 1; i <= 200; i++)); do for ((i=1; i<=200; i++)); do
local new_code="$(cat $latest_log_path | grep "^$config_name_my$i=.\+'$" | sed "s/\S\+'\([^']*\)'$/\1/")" 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/")" local old_code="$(cat $ShareCode_log | grep "^$config_name_my$i=.\+'$" | sed "s/\S\+'\([^']*\)'$/\1/")"
if [[ $i -le $user_sum ]]; then if [[ $i -le $user_sum ]]; then
if [ -z "$(grep "^$config_name_my$i" $ShareCode_log)" ]; 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 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 if [ "$new_code" != "$old_code" ]; then
sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log 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
#更新配置文件中的互助规则 #更新配置文件中的互助规则
echo -e "\n#【$(date +%X)】 正在更新 $chinese_name 的互助规则..." echo -e "\n#【`date +%X`】 正在更新 $chinese_name 的互助规则..."
if [ -z "$(cat $ShareCode_log | grep "^$config_name_for_other\d")" ]; then if [ -z "$(cat $ShareCode_log | grep "^$config_name_for_other\d")" ]; then
echo -e "${config_name_for_other}1=\"\"" >>$ShareCode_log echo -e "${config_name_for_other}1=\"\"" >> $ShareCode_log
fi fi
for ((j = 1; j <= 200; j++)); do 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 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/")" local old_rule="$(cat $ShareCode_log | grep "^$config_name_for_other$j=.\+\"$" | sed "s/\S\+\"\([^\"]*\)\"$/\1/")"
if [[ $j -le $user_sum ]]; then if [[ $j -le $user_sum ]]; then
if [ -z "$(grep "^$config_name_for_other$j" $ShareCode_log)" ]; 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 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 if [ "$new_rule" != "$old_rule" ]; then
sed -i "1c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" $ShareCode_log 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
@ -549,7 +579,7 @@ 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 &>/dev/null && [[ $(ls ./*$task_name*/*.log 2>/dev/null | wc -l) -gt 0 ]]; 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=()
@ -578,57 +608,56 @@ export_codes_sub_only() {
echo "## 从日志中未找到任何互助码" echo "## 从日志中未找到任何互助码"
fi fi
else else
echo "#【$(date +%X)】 未运行过 $chinese_name 的脚本,未产生日志" echo "#【`date +%X`】 未运行过 $chinese_name 的脚本,未产生日志"
fi 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(){
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_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")" 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 if [ "$test_connect" -eq "302" ]; then
@ -638,43 +667,51 @@ check_jd_cookie() {
fi fi
} }
dump_user_info() { dump_user_info(){
echo -e "\n## 账号用户名及 COOKIES 整理如下:" echo -e "\n## 账号用户名及 COOKIES 整理如下:"
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'))
for ((m = 0; m < ${#pt_pin[*]}; m++)); do for ((i = 0; i < ${#pt_pin[*]}; i++)); do
j=$((m + 1)) remarks[i]="$(def_json JD_COOKIE remarks "pin=${pin[i]};" | head -1)"
echo -e "## 用户名 $j${pt_pin[m]} 备注:${remark_name[m]} $(check_jd_cookie ${array[m]})\nCookie$j=\"${array[m]}\"" if [[ ${remarks[i]} == *@@* ]]; then
remarks_name[i]="($(echo ${remarks[i]} | awk -F '@@' '{print $1}'))"
elif [[ ${remarks[i]} && ${remarks[i]} != null ]]; then
remarks_name[i]="(${remarks[i]})"
else
remarks_name[i]="(未备注)"
fi
j=$((i + 1))
echo -e "## 用户名 $j${pt_pin[i]} 备注:${remark_name[i]} `check_jd_cookie ${array[i]}`\nCookie$j=\"${array[i]}\""
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
done [[ $diff_time -gt $(($CLEANBAK_DAYS * 86400)) ]] && rm -rf $log
fi fi
done
fi
} }
#检查 node 依赖状态并修复 #检查 node 依赖状态并修复
install_node_dependencies_all() { install_node_dependencies_all(){
node_dependencies_ori_status() { node_dependencies_ori_status(){
if [[ -n $(echo $(cnpm ls $1) | grep ERR) ]]; then if [[ -n $(echo $(cnpm ls $1) | grep ERR) ]]; then
return 1 return 1
elif [[ -n $(echo $(cnpm ls $1 -g) | grep ERR) ]]; then elif [[ -n $(echo $(cnpm ls $1 -g) | grep ERR) ]]; then
@ -686,54 +723,44 @@ install_node_dependencies_all() {
fi fi
} }
test() { test(){
for i in $@; do for i in $@; do
node_dependencies_ori_status node_dependencies_ori_status
echo -e "$i : $?" echo -e "$i : $?"
done done
} }
install_node_dependencie() { install_node_dependencie(){
# node_dependencies_ori_status $1 # node_dependencies_ori_status $1
# if [[ $? = 1 || $? = 2 ]]; then # if [[ $? = 1 || $? = 2 ]]; then
# cnpm uninstall $1 # cnpm uninstall $1
# elif [[ $? = 3 ]]; then # elif [[ $? = 3 ]]; then
# cnpm uninstall $1 -g # cnpm uninstall $1 -g
# fi # fi
# #
# node_dependencies_ori_status $1 # node_dependencies_ori_status $1
# if [[ $? = 4 ]]; then # if [[ $? = 4 ]]; then
# if [[ $1 = "canvas" ]]; then # if [[ $1 = "canvas" ]]; then
# apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && cnpm install $1 -g # apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && cnpm install $1 -g
# else # else
# cnpm install $1 -g --force # cnpm install $1 -g --force
# fi # fi
# fi # fi
node_dependencies_ori_status $1 node_dependencies_ori_status $1
if [[ $? = 1 ]]; then if [[ $? = 1 ]]; then
[[ $1 = "canvas" ]] && { [[ $1 = "canvas" ]] && { cnpm uninstall $1; rm -rf /ql/scripts/node_modules/canvas; rm -rf /usr/local/lib/node_modules/lodash/canvas; } || cnpm uninstall $1
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 elif [ $? = 2 ]; then
[[ $1 = "canvas" ]] && { [[ $1 = "canvas" ]] && { cnpm uninstall $1 -g; rm -rf /usr/local/lib/node_modules/canvas; } || cnpm uninstall $1 -g
cnpm uninstall $1 -g
rm -rf /usr/local/lib/node_modules/canvas
} || cnpm uninstall $1 -g
fi fi
node_dependencies_ori_status $1 node_dependencies_ori_status $1
if [[ $? != 3 && $? != 4 ]]; then if [[ $? != 3 && $? != 4 ]]; then
[[ $1 = "canvas" ]] && { [[ $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
apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev
cnpm install $1 -g --force
} || cnpm install $1 -g --force
fi fi
} }
uninstall_dependencies() { uninstall_dependencies(){
for i in $package_name; do for i in $package_name; do
cnpm uninstall $i cnpm uninstall $i
cnpm uninstall i $i cnpm uninstall i $i
@ -742,13 +769,14 @@ install_node_dependencies_all() {
done done
} }
check_node_dependencies_setup_status() { check_node_dependencies_setup_status(){
for i in $package_name; do for i in $package_name; do
cnpm ls $i -g cnpm ls $i -g
done done
} }
cnpm install -g cnpm [[ ! $(npm get registry | grep "taobao.org") ]] && npm config set registry http://registry.npm.taobao.org
npm install -g cnpm
[[ $(npm ls cnpm -g) =~ (empty) ]] && npm install cnpm -g [[ $(npm ls cnpm -g) =~ (empty) ]] && npm install cnpm -g
for i in $package_name; do for i in $package_name; do
install_node_dependencie $i install_node_dependencie $i
@ -760,50 +788,51 @@ install_node_dependencies_all() {
#cnpm audit fix --force #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() { batch_deps_scripts(){
switch_status=( switch_status=(
on on
on on
on on
) )
scripts_name=( scripts_name=(
ql.js ql.js
sendNotify.js sendNotify.js
JD_DailyBonus.js JD_DailyBonus.js
) )
test_connect() { test_connect(){
curl -o /dev/null -s -w %{http_code} $1 curl -o /dev/null -s -w %{http_code} $1
} }
get_remote_filesize() { get_remote_filesize(){
curl -sI $1 | grep -i Content-Length | awk '{print $2}' curl -sI $1 | grep -i Content-Length | awk '{print $2}'
} }
get_local_filesize() { get_local_filesize(){
stat -c %s $1 stat -c %s $1
} }
scripts_source=( scripts_source=(
https://cdn.jsdelivr.net/gh/ccwav/QLScript2@main/ql.js https://raw.fastgit.org/ccwav/QLScript2/main/ql.js
https://cdn.jsdelivr.net/gh/ccwav/QLScript2@main/sendNotify.js https://raw.fastgit.org/ccwav/QLScript2/main/sendNotify.js
https://cdn.jsdelivr.net/gh/NobyDa/Script@master/JD-DailyBonus/JD_DailyBonus.js https://raw.fastgit.org/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js
) )
download_scripts() { download_scripts(){
if [[ "$(test_connect $1)" -eq "200" ]]; then if [[ "$(test_connect $1)" -eq "200" ]]; then
curl -C - -s --connect-timeout 5 --retry 3 --noproxy "*" $1 -o $dir_config/tmp_$2 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 [[ $(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
#curl -C - -s --connect-timeout 5 --retry 3 --noproxy "*" $1 -o $dir_config/$2
fi fi
} }
for ((i = 0; i < ${#scripts_source[*]}; i++)); do for ((i = 0; i < ${#scripts_source[*]}; i++)); do
{ if [[ ${switch_status[i]} = "on" ]]; then download_scripts ${scripts_source[i]} ${scripts_name[i]}; fi; } & { if [[ ${switch_status[i]} = "on" ]]; then download_scripts ${scripts_source[i]} ${scripts_name[i]}; fi } &
done done
} }