一:宝塔安装
二:青龙面板搭建(单容器)
三:装傻妞
四:配置青龙依赖
五:拉取库(感谢不知名作者的库)
六:内部互助库里的脚本(感谢旁白大佬提供教程)
前言:本期教程讲解的是内部互助教程,跟着操作有问题欢迎咨询
首先准备两个文件 code.sh和before.sh,请复制以下配置表到记事本中
code.sh配置如下(由于脚本教程我在这里只说重点配置,其他请看注解配置)
#!/usr/bin/env bash
## Build 20210722-001
## 导入通用变量与函数
dir_shell=/ql/shell
. $dir_shell/share.sh
## 预设的仓库及默认调用仓库设置
## 将"repo=$repo1"改成repo=$repo2"或其他,以默认调用其他仓库脚本日志
## 也可自行搜索本脚本内的"name_js=("和"name_js_only",将"repo"改成"repo2"或其他,用以自由组合调用仓库的脚本日志
repo1='panghu999_jd_scripts' #预设的 panghu999 仓库
repo2='JDHelloWorld_jd_scripts' #预设的 JDHelloWorld 仓库
repo3='he1pu_JDHelp' #预设的 he1pu 仓库
repo4='yuannian1112_jd_scripts' #预设的 shufflewzc 仓库
repo5='Wenmoux_scripts_wen_chinnkarahoi' #预设的 Wenmoux 仓库,用于读取口袋书店互助码。需提前拉取温某人的仓库或口袋书店脚本并完整运行。
repo6='Aaron-lv_sync_jd_scripts' #预设的 Aaron-lv 仓库
repo=$repo4 #默认调用 shufflewzc 仓库脚本日志
## 调试模式开关,默认是0,表示关闭;设置为1,表示开启
DEBUG="1"
## 备份配置文件开关,默认是1,表示开启;设置为0,表示关闭。备份路径 /ql/config/bak/
BACKUP="1"
## 是否删除指定天数以前的备份文件开关,默认是1,表示开启;设置为0,表示关闭。删除路径 /ql/config/bak/
CLEANBAK="1"
## 定义删除指定天数以前的备份文件
CLEANBAK_DAYS="2"
## 定义 jcode 脚本导出的互助码模板样式(选填)
## 不填 使用“按编号顺序互助模板”,Cookie编号在前的优先助力
## 填 0 使用“全部一致互助模板”,所有账户要助力的码全部一致
## 填 1 使用“均等机会互助模板”,所有账户获得助力次数一致
## 填 2 使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。
HelpType=""
## 定义指定活动采用指定的互助模板。
## 设定值为 DiyHelpType="1" 表示启用功能;不填或填其他内容表示不开启功能。
## 如果只是想要控制某个活动以执行某种互助规则,可以参考下面 case 这个命令的例子来控制
## 活动名称参见 name_config 定义内容;具体可在本脚本中搜索 name_config=( 获悉
DiyHelpType="0"
diy_help_rules(){
case $1 in
Fruit)
tmp_helptype="0" # 东东农场使用“全部一致互助模板”,所有账户要助力的码全部一致
;;
DreamFactory | JdFactory)
tmp_helptype="1" # 京喜工厂和东东工厂使用“均等机会互助模板”,所有账户获得助力次数一致
;;
Jdzz | Joy)
tmp_helptype="2" # 京东赚赚和疯狂的Joy使用“随机顺序互助模板”,本套脚本内账号间随机顺序助力,每次生成的顺序都不一致。
;;
*)
tmp_helptype=$HelpType # 其他活动仍按默认互助模板生产互助规则。
;;
esac
}
## 定义屏蔽模式。被屏蔽的账号将不被助力,被屏蔽的账号仍然可以助力其他账号。
## 设定值为 BreakHelpType="1" 表示启用屏蔽模式;不填或填其他内容表示不开启功能。
## 自定义屏蔽账号序号或序号区间。当 BreakHelpType="1"时生效。
## 设定值为一个或多个不相同正整数,每个正整数不大于账号总数;也可以设置正整数区间,最大正整数不大于账号总数;
## 如:a) 设定为 BreakHelpNum="3" 表示第 3 个账号不被助力;
## b) 设定为 BreakHelpNum="5 7 8 10" 表示第 5 7 8 10 个账号均不被助力;
## c) 设定为 BreakHelpNum="6-12" 表示从第 6 至 12 个账号均不被助力;
## d) 设定为 BreakHelpNum="4 9-14 15~18 19_21" 表示第4个账号、第9至14账号、第15至18账号、第19至21账号均不被助力。注意序号区间连接符仅支持 - ~ _;
## 不按示例填写可能引发报错。
BreakHelpType=" " ## 屏蔽模式
BreakHelpNum="" ## 屏蔽账号序号或序号区间
## 定义是否自动更新配置文件中的互助码和互助规则,默认为1,表示更新;留空或其他数值表示不更新。
UpdateType="1"
## 定义是否自动安装或修复缺失的依赖,默认为1,表示自动修复;留空或其他数值表示不修复。
FixDependType="1"
## 定义监控修复的依赖名称
package_name="canvas png-js date-fns axios crypto-js ts-md5 tslib @types/node dotenv typescript fs require tslib"
## 需组合的环境变量列表,env_name需要和var_name一一对应,如何有新活动按照格式添加(不懂勿动)
env_name=(
FRUITSHARECODES
PETSHARECODES
PLANT_BEAN_SHARECODES
DREAM_FACTORY_SHARE_CODES
DDFACTORY_SHARECODES
JDJOY_SHARECODES
JDZZ_SHARECODES
JXNC_SHARECODES
BOOKSHOP_SHARECODES
JD_CASH_SHARECODES
JDSGMH_SHARECODES
JDCFD_SHARECODES
JDHEALTH_SHARECODES
JD818_SHARECODES
CITY_SHARECODES
MONEYTREE_SHARECODES
)
var_name=(
ForOtherFruit
ForOtherPet
ForOtherBean
ForOtherDreamFactory
ForOtherJdFactory
ForOtherJoy
ForOtherJdzz
ForOtherJxnc
ForOtherBookShop
ForOtherCash
ForOtherSgmh
ForOtherCfd
ForOtherHealth
ForOtherCarni
ForOtherCity
ForOtherMoneyTree
)
## name_js为脚本文件名,如果使用ql repo命令拉取,文件名含有作者名
## 所有有互助码的活动,把脚本名称列在 name_js 中,对应 config.sh 中互助码后缀列在 name_config 中,中文名称列在 name_chinese 中。
## name_js、name_config 和 name_chinese 中的三个名称必须一一对应。
name_js=(
"$repo"_jd_fruit
"$repo"_jd_pet
"$repo"_jd_plantBean
"$repo"_jd_dreamFactory
"$repo"_jd_jdfactory
"$repo"_jd_crazy_joy
"$repo"_jd_jdzz
"$repo"_jd_jxnc
"$repo"_jd_bookshop
"$repo"_jd_cash
"$repo"_jd_sgmh
"$repo"_jd_cfd
"$repo"_jd_health
"$repo"_jd_carnivalcity
"$repo"_jd_city
"$repo4"_jd_moneyTree_heip
)
name_config=(
Fruit
Pet
Bean
DreamFactory
JdFactory
Joy
Jdzz
Jxnc
BookShop
Cash
Sgmh
Cfd
Health
Carni
City
MoneyTree
)
name_chinese=(
东东农场
东东萌宠
京东种豆得豆
京喜工厂
东东工厂
crazyJoy任务
京东赚赚
京喜农场
口袋书店
签到领现金
闪购盲盒
京喜财富岛
东东健康社区
京东手机狂欢城
城城领现金
摇钱树
)
#仅输出互助码的环境变量
name_js_only=(
"$repo6"_jd_cfd
)
name_config_only=(
TokenJxnc
)
name_chinese_only=(
京喜token
)
## 生成pt_pin清单
gen_pt_pin_array() {
local envs=$(eval echo "\$JD_COOKIE")
local array=($(echo $envs | sed 's/&/ /g'))
local tmp1 tmp2 i pt_pin_temp
for i in "${!array[@]}"; do
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
done
}
## 导出互助码的通用程序,$1:去掉后缀的脚本名称,$2:config.sh中的后缀,$3:活动中文名称
export_codes_sub() {
local task_name=$1
local config_name=$2
local chinese_name=$3
local config_name_my=My$config_name
local config_name_for_other=ForOther$config_name
local tmp_helptype=$HelpType
local BreakHelpInterval=$(echo $BreakHelpNum | perl -pe "{s|~|-|; s|_|-|}" | sed 's/\(\d\+\)-\(\d\+\)/{\1..\2}/g')
local BreakHelpNumArray=($(eval echo $BreakHelpInterval))
local BreakHelpNumVerify=$(echo $BreakHelpNum | sed 's/ //g' | perl -pe "{s|-||; s|~||; s|_||}" | sed 's/^\d\+$//g')
local i j k m n t pt_pin_in_log code tmp_grep tmp_my_code tmp_for_other user_num tmp_helptype HelpTemp random_num_list
local envs=$(eval echo "\$JD_COOKIE")
local array=($(echo $envs | sed 's/&/ /g'))
local user_sum=${#array[*]}
if cd $dir_log/$task_name &>/dev/null && [[ $(ls) ]]; then
## 寻找所有互助码以及对应的pt_pin
i=0
pt_pin_in_log=()
code=()
pt_pin_and_code=$(ls -r *.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}')
for line in $pt_pin_and_code; do
pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}')
code[i]=$(echo $line | awk -F "&" '{print $2}')
let i++
done
## 输出My系列变量
if [[ ${#code[*]} -gt 0 ]]; then
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
tmp_my_code=""
j=$((m + 1))
for ((n = 0; n < ${#code[*]}; n++)); do
if [[ ${pt_pin[m]} == ${pt_pin_in_log[n]} ]]; then
tmp_my_code=${code[n]}
break
fi
done
echo "$config_name_my$j='$tmp_my_code'"
done
else
echo "## 从日志中未找到任何互助码"
fi
## 输出ForOther系列变量
if [[ ${#code[*]} -gt 0 ]]; then
[[ $DiyHelpType = "1" ]] && diy_help_rules $2
case $tmp_helptype in
0) ## 全部一致
HelpTemp="全部一致"
echo -e "\n## 采用\"$HelpTemp\"互助模板:"
tmp_for_other=""
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
j=$((m + 1))
if [[ $BreakHelpType = "1" ]]; then
if [ "$BreakHelpNumVerify" = "" ]; then
for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do
[[ "${BreakHelpNumArray[t]}" = "$j" ]] && continue 2
done
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
else
echo -e "\n#$cur_time 变量值填写不规范,请检查后重试!"
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
fi
else
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
fi
done
echo "${config_name_for_other}1=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
for ((m = 1; m < ${#pt_pin[*]}; m++)); do
j=$((m + 1))
echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
done
;;
1) ## 均等助力
HelpTemp="均等助力"
echo -e "\n## 采用\"$HelpTemp\"互助模板:"
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
tmp_for_other=""
j=$((m + 1))
for ((n = $m; n < $(($user_sum + $m)); n++)); do
[[ $m -eq $n ]] && continue
if [[ $((n + 1)) -le $user_sum ]]; then
k=$((n + 1))
else
k=$((n + 1 - $user_sum))
fi
if [[ $BreakHelpType = "1" ]]; then
if [ "$BreakHelpNumVerify" = "" ]; then
for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do
[[ "${BreakHelpNumArray[t]}" = "$k" ]] && continue 2
done
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
else
echo -e "\n#$cur_time 变量值填写不规范,请检查后重试!"
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
fi
else
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
fi
done
echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
done
;;
2) ## 本套脚本内账号间随机顺序助力
HelpTemp="随机顺序"
echo -e "\n## 采用\"$HelpTemp\"互助模板:"
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
tmp_for_other=""
random_num_list=$(seq $user_sum | sort -R)
j=$((m + 1))
for n in $random_num_list; do
[[ $j -eq $n ]] && continue
if [[ $BreakHelpType = "1" ]]; then
if [ "$BreakHelpNumVerify" = "" ]; then
for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do
[[ "${BreakHelpNumArray[t]}" = "$n" ]] && continue 2
done
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
else
echo -e "\n#$cur_time 变量值填写不规范,请检查后重试!"
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
fi
else
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
fi
done
echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
done
;;
*) ## 按编号优先
HelpTemp="按编号优先"
echo -e "\n## 采用\"$HelpTemp\"互助模板"
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
tmp_for_other=""
j=$((m + 1))
for ((n = 0; n < ${#pt_pin[*]}; n++)); do
[[ $m -eq $n ]] && continue
k=$((n + 1))
if [[ $BreakHelpType = "1" ]]; then
if [ "$BreakHelpNumVerify" = "" ]; then
for ((t = 0; t < ${#BreakHelpNumArray[*]}; t++)); do
[[ "${BreakHelpNumArray[t]}" = "$k" ]] && continue 2
done
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
else
echo -e "\n#$cur_time 变量值填写不规范,请检查后重试!"
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
fi
else
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
fi
done
echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
done
;;
esac
fi
else
echo "#$cur_time 未运行过 $task_name.js 脚本,未产生日志"
fi
}
## 汇总输出
export_all_codes() {
gen_pt_pin_array
[[ $DEBUG = "1" ]] && echo -e "\n#$cur_time 当前 code.sh 的线程数量:$ps_num"
[[ $DEBUG = "1" ]] && echo -e "\n#$cur_time 预设的 JD_COOKIE 数量:`echo $JD_COOKIE | grep -o 'pt_key' | wc -l`"
[[ $DEBUG = "1" ]] && echo -e "\n#$cur_time 预设的 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#$cur_time 检测到您将多个 COOKIES 填写到单个环境变量值,请注意将各 COOKIES 采用 & 分隔,否则将无法完整输出互助码及互助规则!"
echo -e "\n#$cur_time 从日志提取互助码,编号和配置文件中Cookie编号完全对应,如果为空就是所有日志中都没有。\n\n#$cur_time 即使某个MyXxx变量未赋值,也可以将其变量名填在ForOtherXxx中,jtask脚本会自动过滤空值。\n"
if [[ $DiyHelpType = "1" ]]; then
echo -e "#$cur_time 您已启用指定活动采用指定互助模板功能!"
else
echo -n "#$cur_time 您选择的互助码模板为:"
case $HelpType in
0)
echo "所有账号助力码全部一致。"
;;
1)
echo "所有账号机会均等助力。"
;;
2)
echo "本套脚本内账号间随机顺序助力。"
;;
*)
echo "按账号编号优先。"
;;
esac
fi
[[ $BreakHelpType = "1" ]] && echo -e "\n#$cur_time 您已启用屏蔽模式,账号 $BreakHelpNum 将不被助力!"
if [ "$ps_num" -gt 7 ]; then
echo -e "\n#$cur_time 检测到 code.sh 的线程过多 ,请稍后再试!"
exit
elif [ -z $repo ]; then
echo -e "\n#$cur_time 未检测到兼容的活动脚本日志,无法读取互助码,退出!"
exit
else
echo -e "\n#$cur_time 默认调用 $repo 的脚本日志,格式化导出互助码,生成互助规则!"
dump_user_info
for ((i = 0; i < ${#name_js[*]}; i++)); do
echo -e "\n## ${name_chinese[i]}:"
export_codes_sub "${name_js[i]}" "${name_config[i]}" "${name_chinese[i]}"
done
for ((i = 0; i < ${#name_js_only[*]}; i++)); do
echo -e "\n## ${name_chinese_only[i]}:"
export_codes_sub_only "${name_js_only[i]}" "${name_config_only[i]}" "${name_chinese_only[i]}"
done
fi
}
#更新配置文件中互助码的函数
help_codes_rules(){
local envs=$(eval echo "\$JD_COOKIE")
local array=($(echo $envs | sed 's/&/ /g'))
local user_sum=${#array[*]}
local config_name=$1
local config_name_my=My$config_name
local config_name_for_other=ForOther$config_name
local i j k
#更新配置文件中的互助码
if [ -z "$(cat $file_task_before | grep "^$config_name_my\d")" ]; then
echo -e "\n${config_name_my}1=''\n" >> $file_task_before
fi
for ((i=1; i<=100; i++)); do
if [[ $i -le $user_sum ]] && [[ ! -z "$(cat $log_path | grep "^$config_name_my$i=.*'$")" ]]; then
new_code="$(cat $log_path | grep "^$config_name_my$i=.*'$" | sed "s/.*'\(.*\)'.*/\1/")"
old_code="$(cat $file_task_before | grep "^$config_name_my$i=.*'$" | sed "s/.*'\(.*\)'.*/\1/")"
if [ -z "$(grep "^$config_name_my$i" $file_task_before)" ]; then
sed -i "/^$config_name_my$[$i-1]='.*'/ s/$/\n$config_name_my$i=\'\'/" $file_task_before
fi
if [ "$new_code" != "$old_code" ]; then
# if [ $1 = "BookShop" ]; then
# if [[ "$new_code" != "undefined" ]] && [[ "$new_code" != "{}" ]] && [[ "$new_code" != "" ]]; then
# sed -i "s/^$config_name_my$i='$old_code'$/$config_name_my$i='$new_code'/" $file_task_before
# fi
# else
if [[ "$new_code" != "undefined" ]] && [[ "$new_code" != "{}" ]] || [[ "$new_code" = "" ]]; then
sed -i "s/^$config_name_my$i='$old_code'$/$config_name_my$i='$new_code'/" $file_task_before
fi
# fi
fi
elif [[ $i -gt $user_sum ]] && [[ $i -gt 1 ]] && [[ ! -z "$(cat $file_task_before | grep "^$config_name_my$i")" ]]; then
sed -i "/^$config_name_my$i/d" $file_task_before
elif [[ $i -eq 1 ]] && [[ ! -z "$(cat $file_task_before | grep "^$config_name_my$i")" ]]; then
sed -i "s/^$config_name_my$i='\S*'$/$config_name_my$i=''/" $file_task_before
fi
done
#更新配置文件中的互助规则
if [ -z "$(cat $file_task_before | grep "^$config_name_for_other\d")" ]; then
echo -e "${config_name_for_other}1=\"\"\n" >> $file_task_before
fi
for ((j=1; j<=100; j++)); do
if [[ $j -le $user_sum ]] && [[ ! -z "$(cat $log_path | grep "^$config_name_for_other$j=.*\"$")" ]]; then
new_rule="$(cat $log_path | grep "^$config_name_for_other$j=.*\"$" | sed "s/.*\"\(.*\)\".*/\1/")"
old_rule="$(cat $file_task_before | grep "^$config_name_for_other$j=.*\"$" | sed "s/.*\"\(.*\)\".*/\1/")"
if [ -z "$(grep "^$config_name_for_other$j" $file_task_before)" ]; then
sed -i "/^$config_name_for_other$[$j-1]=".*"/ s/$/\n$config_name_for_other$j=\"\"/" $file_task_before
fi
if [ "$new_rule" != "$old_rule" ]; then
sed -i "s/^$config_name_for_other$j=\"$old_rule\"$/$config_name_for_other$j=\"$new_rule\"/" $file_task_before
fi
elif [[ $j -gt $user_sum ]] && [[ $j -gt 1 ]] && [[ ! -z "$(cat $file_task_before | grep "^$config_name_for_other$j")" ]]; then
sed -i "/^$config_name_for_other$j/d" $file_task_before
elif [[ $j -eq 1 ]] && [[ ! -z "$(cat $file_task_before | grep "^$config_name_for_other$j")" ]]; then
sed -i "s/^$config_name_for_other$j=\"\S*\"$/$config_name_for_other$j=\"\"/" $file_task_before
fi
done
}
help_codes_only(){
local envs=$(eval echo "\$JD_COOKIE")
local array=($(echo $envs | sed 's/&/ /g'))
local user_sum=${#array[*]}
local config_name=$1
local config_name_my=My$config_name
local config_name_for_other=ForOther$config_name
local i j k
#更新配置文件中的互助码
if [ -z "$(cat $file_task_before | grep "^$config_name\d")" ]; then
echo -e "\n${config_name}1=''\n" >> $file_task_before
fi
for ((k=1; k<=100; k++)); do
if [[ $k -le $user_sum ]] && [[ ! -z "$(cat $log_path | grep "^$config_name$k=.*'$")" ]]; then
new_code="$(cat $log_path | grep "^$config_name$k=.*'$" | sed "s/.*'\(.*\)'.*/\1/")"
old_code="$(cat $file_task_before | grep "^$config_name$k=.*'$" | sed "s/.*'\(.*\)'.*/\1/")"
if [ -z "$(grep "^$config_name$k" $file_task_before)" ]; then
sed -i "/^$config_name$[$k-1]='.*'/ s/$/\n$config_name$k=\'\'/" $file_task_before
fi
if [ "$new_code" != "$old_code" ]; then
if [[ "$new_code" != "undefined" ]] && [[ "$new_code" != "{}" ]] || [[ "$new_code" = "" ]]; then
sed -i "s/^$config_name$k='$old_code'$/$config_name$k='$new_code'/" $file_task_before
fi
fi
elif [[ $k -gt $user_sum ]] && [[ $k -gt 1 ]] && [[ ! -z "$(cat $file_task_before | grep "^$config_name$k")" ]]; then
sed -i "/^$config_name$k/d" $file_task_before
elif [[ $k -eq 1 ]] && [[ ! -z "$(cat $file_task_before | grep "^$config_name$k")" ]]; then
sed -i "s/^$config_name$k='\S*'$/$config_name$k=''/" $file_task_before
fi
done
}
export_codes_sub_only(){
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 !"
fi
sed -i 's/.*\(c.*log\).*\(${JSON.*token)}\).*/ \1(\`\\n【京东账号${$.index}(${$.UserName})的京喜token好友互助码】\2\\n\`)/g' /ql/scripts/*_jd_cfd.js
local task_name=$1
local config_name=$2
local chinese_name=$3
local i j k m n pt_pin_in_log code tmp_grep tmp_my_code tmp_for_other user_num random_num_list
local envs=$(eval echo "\$JD_COOKIE")
local array=($(echo $envs | sed 's/&/ /g'))
local user_sum=${#array[*]}
if cd $dir_log/$task_name &>/dev/null && [[ $(ls) ]]; then
## 寻找所有互助码以及对应的pt_pin
i=0
pt_pin_in_log=()
code=()
pt_pin_and_code=$(ls -r *.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}')
for line in $pt_pin_and_code; do
pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}')
code[i]=$(echo $line | awk -F "&" '{print $2}')
let i++
done
## 输出互助码
if [[ ${#code[*]} -gt 0 ]]; then
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
tmp_my_code=""
j=$((m + 1))
for ((n = 0; n < ${#code[*]}; n++)); do
if [[ ${pt_pin[m]} == ${pt_pin_in_log[n]} ]]; then
tmp_my_code=${code[n]}
break
fi
done
echo "$config_name$j='$tmp_my_code'"
done
else
echo "#$cur_time 从日志中未找到任何互助码"
fi
fi
}
#更新互助码和互助规则
update_help(){
#latest_log=$(ls -r $dir_code | head -1)
latest_log=$log_path
case $UpdateType in
1)
if [ "$ps_num" -le 7 ] && [ -f $log_path ] && [ -f $file_task_before ]; then
backup_del
echo -e "\n#$cur_time 开始更新配置文件的互助码和互助规则" | tee -a $latest_log
for i in ${name_config[@]}; do
help_codes_rules $i
done
for i in ${name_config_only[@]}; do
help_codes_only $i
done
sed -i "4c ## 上次导入时间:$(date +%Y年%m月%d日\ %X)" /ql/config/task_before.sh
echo -e "\n#$cur_time 配置文件的互助码和互助规则已完成更新" | tee -a $latest_log
elif [ ! -f $log_path ]; then
echo -e "\n#$cur_time 日志文件不存在,请检查后重试!" | tee -a $latest_log
elif [ ! -f $file_task_before ]; then
echo -e "\n#$cur_time 配置文件不存在,请检查后重试!" | tee -a $latest_log
fi
;;
*)
echo -e "\n#$cur_time 您已设置不更新配置文件的互助码和互助规则,跳过更新!" | tee -a $latest_log
;;
esac
}
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
j=$((m + 1))
echo -e "## 用户名 $j:${pt_pin[m]}\n## Cookie$j=\"${array[m]}\""
done
}
backup_del(){
[[ $BACKUP = "1" ]] && mkdir -p $dir_config/bak/ && cp $file_task_before $dir_config/bak/task_before_$log_time.sh
[[ $CLEANBAK = "1" ]] && find $dir_config/bak/ -type f -mtime +$CLEANBAK_DAYS | xargs rm -rvf
}
install_dependencies_normal(){
for i in $@; do
case $i in
canvas)
cd /ql/scripts
if [[ "$(npm ls $i)" =~ (empty) ]]; then
if [[ "echo $(npm ls $i) | grep ERR" != "" ]]; then
npm uninstall $i
fi
apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && npm i $i --prefix /ql/scripts --build-from-source
fi
;;
typescript)
if [[ "$(npm ls $i -g)" =~ (empty) ]]; then
if [[ "echo $(npm ls $i -g) | grep ERR" != "" ]]; then
npm uninstall $i
fi
npm i $i -g --force
fi
;;
*)
if [[ "$(npm ls $i -g)" =~ (empty) ]]; then
if [[ "echo $(npm ls $i -g) | grep ERR" != "" ]]; then
npm uninstall $i
fi
npm i $i -g
fi
;;
esac
done
}
install_dependencies_force(){
for i in $@; do
case $i in
canvas)
cd /ql/scripts
if [[ "$(npm ls $i)" =~ (empty) ]]; then
if [[ "$(npm ls $i)" =~ $i ]] || [[ "echo $(npm ls $i) | grep ERR" != "" ]]; then
npm uninstall $i
fi
rm -rf /ql/scripts/node_modules/$i
rm -rf /usr/local/lib/node_modules/lodash/*
apk add --no-cache build-base g++ cairo-dev pango-dev giflib-dev && npm i $i --prefix /ql/scripts --build-from-source --force
fi
;;
*)
if [[ "$(npm ls $i -g)" =~ (empty) ]]; then
if [[ "$(npm ls $i)" =~ $i ]] || [[ "$(npm ls $i -g)" =~ $i ]] || [[ "echo $(npm ls $i -g) | grep ERR" != "" ]]; then
npm uninstall $i
fi
rm -rf /usr/local/lib/node_modules/$i
rm -rf /usr/local/lib/node_modules/lodash/*
npm i $i -g --force
fi
;;
esac
done
}
install_dependencies_all(){
install_dependencies_normal $package_name
cd /ql/scripts
for i in $package_name; do
install_dependencies_force $i
done
}
## 执行并写入日志
[[ $FixDependType = "1" ]] && install_dependencies_all >/dev/null 2>&1 &
today="$(date +%Y年%m月%d日)"
cur_time="【$(date +%X)】"
log_time=$(date "+%Y-%m-%d-%H-%M-%S")
log_path="$dir_code/$log_time.log"
make_dir "$dir_code"
ps_num="$(ps | grep code.sh | grep -v grep | wc -l)"
#[[ ! -z "$(ps -ef|grep -w 'code.sh'|grep -v grep)" ]] && ps -ef|grep -w 'code.sh'|grep -v grep|awk '{print $1}'|xargs kill -9
export_all_codes | perl -pe "{s|京东种豆|种豆|; s|crazyJoy任务|疯狂的JOY|}" | tee $log_path
sleep 5
update_help
## 修改curtinlv入会领豆配置文件的参数
[[ -f /ql/repo/curtinlv_JD-Script/OpenCard/OpenCardConfig.ini ]] && sed -i "4c JD_COOKIE = '$(echo $JD_COOKIE | sed "s/&/ /g; s/\S*\(pt_key=\S\+;\)\S*\(pt_pin=\S\+;\)\S*/\1\2/g;" | perl -pe "s| |&|g")'" /ql/repo/curtinlv_JD-Script/OpenCard/OpenCardConfig.ini
第一个配置:
## 预设的仓库及默认调用仓库设置
这里需要更改一你拉的库,在这段最后一行中“repo=$repo4 ”中,这里脚本默认是4,因为我拉的是怨念的库,所以更改为4,别人的库自行更改后面的数字即可
第二个配置:
## 定义 jcode 脚本导出的互助码模板样式(选填)
这里需要更改互助码的助力样式,这里默认的是按照ck的顺序助力,即第一个ck助力满后助力第二个,第二个助力满后主力第三个,如有需求请按注解中更改最后一行的“HelpType=”,后面的数字即可
before.sh配置如下(请直接复制,粘贴)
#!/usr/bin/env bash
# Build 20210722-001
## 东东农场:
MyFruit1=''
ForOtherFruit1=""
## 东东萌宠:
MyPet1=''
ForOtherPet1=""
## 种豆得豆:
MyBean1=''
ForOtherBean1=""
## 京喜工厂:
MyDreamFactory1=''
ForOtherDreamFactory1=""
## 东东工厂:
MyJdFactory1=''
ForOtherJdFactory1=""
## 疯狂的JOY:
MyJoy1=''
ForOtherJoy1=""
## 京东赚赚:
MyJdzz1=''
ForOtherJdzz1=""
## 京喜农场:
MyJxnc1=''
ForOtherJxnc1=""
## 口袋书店:
MyBookShop1=''
ForOtherBookShop1=""
## 签到领现金:
MyCash1=''
ForOtherCash1=""
## 闪购盲盒:
MySgmh1=''
ForOtherSgmh1=""
## 京喜财富岛:
MyCfd1=''
ForOtherCfd1=""
## 东东健康社区:
MyHealth1=''
ForOtherHealth1=""
## 京东手机狂欢城:
MyCarni1=''
ForOtherCarni1=""
## 城城领现金:
MyCity1=''
ForOtherCity1=""
## 摇钱树:
MyMoneyTree1=''
ForOtherMoneyTree1=""
## 京喜Token(用于京喜财富岛提现等)
TokenJxnc1=''
env_name=(
FRUITSHARECODES ## 1、东东农场互助码
PETSHARECODES ## 2、东东萌宠互助码
PLANT_BEAN_SHARECODES ## 3、种豆得豆互助码
DREAM_FACTORY_SHARE_CODES ## 4、京喜工厂互助码
DDFACTORY_SHARECODES ## 5、东东工厂互助码
JDJOY_SHARECODES ## 6、疯狂的JOY互助码
JDZZ_SHARECODES ## 7、京东赚赚互助码
JXNC_SHARECODES ## 8、京喜农场助力码
BOOKSHOP_SHARECODES ## 9、口袋书店互助码
JD_CASH_SHARECODES ## 10、签到领现金互助码
JDSGMH_SHARECODES ## 11、闪购盲盒互助码
JDCFD_SHARECODES ## 12、京喜财富岛互助码
JDHEALTH_SHARECODES ## 13、东东健康社区互助码
CITY_SHARECODES ## 14、城城领现金互助码
JD818_SHARECODES ## 15、京东手机狂欢城互助码
MONEYTREE_SHARECODES ## 16、摇钱树
JXNCTOKENS ## 17、京喜Token(京喜财富岛提现用)
)
var_name=(
ForOtherFruit ## 1、东东农场互助规则
ForOtherPet ## 2、东东萌宠互助规则
ForOtherBean ## 3、种豆得豆互助规则
ForOtherDreamFactory ## 4、京喜工厂互助规则
ForOtherJdFactory ## 5、东东工厂互助规则
ForOtherJoy ## 6、疯狂的JOY互助规则
ForOtherJdzz ## 7、京东赚赚互助规则
ForOtherJxnc ## 8、京喜农场助力码
ForOtherBookShop ## 9、口袋书店互助规则
ForOtherCash ## 10、签到领现金互助规则
ForOtherSgmh ## 11、闪购盲盒互助规则
ForOtherCfd ## 12、京喜财富岛互助规则
ForOtherHealth ## 13、东东健康社区互助规则
ForOtherCarni ## 14、城城领现金互助规则
ForOtherCity ## 15、京东手机狂欢城互助规则
ForOtherMoneyTree ## 16、摇钱树
TokenJxnc ## 17、京喜Token(京喜财富岛提现用)
)
combine_sub() {
source $file_env
local what_combine=$1
local combined_all=""
local tmp1 tmp2
local TempBlockCookieArray=($(echo $TempBlockCookie))
local envs=$(eval echo "\$JD_COOKIE")
local array=($(echo $envs | sed 's/&/ /g'))
local user_sum=${#array[*]}
local a b c i j sum
for ((j=1; j <= $user_sum; j++)); do
local tmp1=$what_combine$j
local tmp2=${!tmp1}
[[ ${tmp2} ]] && sum=$j || break
done
for ((i = 1; i <= $user_sum; i++)); do
a=$temp_user_sum
b=${#TempBlockCookieArray[*]}
c=$sum
if [[ $a -ne $c ]]; then
for num in ${TempBlockCookie}; do
[[ $i -eq $num ]] && continue 2
done
fi
local tmp1=$what_combine$i
local tmp2=${!tmp1}
combined_all="$combined_all&$tmp2"
done
echo $combined_all | perl -pe "{s|^&||; s|^@+||; s|&@|&|g; s|@+&|&|g; s|@+|@|g; s|@+$||}"
}
## 正常依次运行时,组合所有账号的Cookie与互助码
combine_all() {
for ((i = 0; i < ${#env_name[*]}; i++)); do
result=$(combine_sub ${var_name[i]})
if [[ $result ]]; then
export ${env_name[i]}="$result"
fi
done
}
## 临时屏蔽某账号运行活动脚本
TempBlock_JD_COOKIE(){
source $file_env
local envs=$(eval echo "\$JD_COOKIE")
local array=($(echo $envs | sed 's/&/ /g'))
for num in ${TempBlockCookie}; do
unset array[$(($num-1))]
done
jdCookie=$(echo ${array[*]} | sed 's/\ /\&/g')
[[ ! -z $jdCookie ]] && export JD_COOKIE="$jdCookie"
temp_user_sum=${#array[*]}
}
TempBlock_JD_COOKIE
#if [[ $(ls $dir_code) ]]; then
# latest_log=$(ls -r $dir_code | head -1)
# . $dir_code/$latest_log
combine_all
#fi
准备好这两个文件后,将code.sh上传到面板下的scripts文件夹中,别问我怎么上传,托入即可
before.sh这个文件需要打开青龙面板,脚本配置选项卡。右上角选择task_before.sh,将里面的替换成准备好的文件,保存即可
最后一步在青龙面板中添加定时任务
名称:格式互助
命令:task code.sh
定时规则:0 0 0 * * *
这里我的定时规则写的是每天12点就会自动获取所有ck的互助码
最后重点:添加完之后需要让脚本跑一天,这样脚本才会生成日志,格式互助才可以替换成你的
别进去直接就跑互助,然后找我问,为什么不互助!!!
感谢一些不知名的大佬提供的教程我只是给详细化,有什么问题联系QQ:14914598呱呱蛙