diff --git a/.gitignore b/.gitignore
index 3b508184..d0bf507a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
/box.dat
/CookieSet.json
/jdCookie.js
+/logs
diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh
index 9841a818..16bc9f6b 100644
--- a/docker/crontab_list.sh
+++ b/docker/crontab_list.sh
@@ -1,5 +1,5 @@
-# 每3天的23:50分清理一次日志
-50 23 */3 * * rm -rf /scripts/logs/*.log
+# 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重)
+50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecode' | xargs rm -rf
##############短期活动##############
# 年货节(活动时间:2021年1月9日-2021年2月9日)
diff --git a/docker/proc_file.sh b/docker/proc_file.sh
index 6def887d..b20de285 100644
--- a/docker/proc_file.sh
+++ b/docker/proc_file.sh
@@ -12,8 +12,6 @@ jdfruit="${logdDir}/jd_fruit.log"
jdpet="${logdDir}/jd_pet.log"
jdcrazyJoy="${logdDir}/jd_crazy_joy.log"
-echo -e >$sharecodeFile
-
sed -n '/京东赚赚好友互助码】.*/'p $jdzzFile | awk '{print $4,$5}' | sort | uniq >>$sharecodeFile
echo "提取京东赚赚助力码完成"
@@ -35,6 +33,12 @@ echo "提取东东萌宠助力码完成"
sed -n '/crazyJoy任务好友互助码】.*/'p $jdcrazyJoy | awk '{print $4,$5}' | sort | uniq >>$sharecodeFile
echo "提取crazyJoy任务助力码完成"
+cp $sharecodeFile ${sharecodeFile}.tmp
+sed -i 's/ //' ${sharecodeFile}.tmp
+cat ${sharecodeFile}.tmp | sort | uniq >$sharecodeFile
+rm ${sharecodeFile}.tmp
+echo "互助码排序和去重完成"
+
echo "==========================================================================="
echo "整理完成,具体结果请查看${sharecodeFile}文件"
diff --git a/githubAction.md b/githubAction.md
index aee7b0ea..731c9a89 100644
--- a/githubAction.md
+++ b/githubAction.md
@@ -51,6 +51,12 @@
| `JDSGMH_SHARECODES` | 闪购盲盒
互助码 | 非必须 | 10/ | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
| `JDNY_SHARECODES` | 京东压岁钱
互助码 | 非必须 | 1588/3 | 填写规则和上面类似,或见下方[互助码的填写规则](#互助码的填写规则) |
+##### 互助码日志文件环境变量
+
+| Name | 归属 | 属性 | 说明 |
+| :---------------: | :------------: | :----: | ------------------------------------------------------------ |
+| `SHARE_CODE_FILE` | 互助码日志文件 | 非必须 | docker-compose下请填写`/scripts/logs/sharecode.log`,其他填写对应的互助码日志文路径 |
+
##### 控制脚本功能环境变量
diff --git a/jdDreamFactoryShareCodes.js b/jdDreamFactoryShareCodes.js
index d55878fe..b7b04382 100644
--- a/jdDreamFactoryShareCodes.js
+++ b/jdDreamFactoryShareCodes.js
@@ -10,6 +10,13 @@ let shareCodes = [
'V5LkjP4WRyjeCKR9VRwcRX0bBuTz7MEK0-E99EJ7u0k=@Bo-jnVs_m9uBvbRzraXcSA==@-OvElMzqeyeGBWazWYjI1Q==',//账号一的好友shareCode,不同好友中间用@符号隔开
'-OvElMzqeyeGBWazWYjI1Q==',//账号二的好友shareCode,不同好友中间用@符号隔开
]
+
+// 从日志获取互助码
+const logShareCodes = require('./jdShareCodes');
+if (logShareCodes.DREAM_FACTORY_SHARE_CODES.length > 0 && !process.env.DREAM_FACTORY_SHARE_CODES) {
+ process.env.DREAM_FACTORY_SHARE_CODES = logShareCodes.DREAM_FACTORY_SHARE_CODES.join('&');
+}
+
// 判断github action里面是否有京喜工厂互助码
if (process.env.DREAM_FACTORY_SHARE_CODES) {
if (process.env.DREAM_FACTORY_SHARE_CODES.indexOf('&') > -1) {
diff --git a/jdFactoryShareCodes.js b/jdFactoryShareCodes.js
index 7a949fbe..3972de84 100644
--- a/jdFactoryShareCodes.js
+++ b/jdFactoryShareCodes.js
@@ -10,6 +10,13 @@ let shareCodes = [
'',//账号一的好友shareCode,不同好友中间用@符号隔开
'',//账号二的好友shareCode,不同好友中间用@符号隔开
]
+
+// 从日志获取互助码
+const logShareCodes = require('./jdShareCodes');
+if (logShareCodes.DDFACTORY_SHARECODES.length > 0 && !process.env.DDFACTORY_SHARECODES) {
+ process.env.DDFACTORY_SHARECODES = logShareCodes.DDFACTORY_SHARECODES.join('&');
+}
+
// 判断github action里面是否有东东工厂互助码
if (process.env.DDFACTORY_SHARECODES) {
if (process.env.DDFACTORY_SHARECODES.indexOf('&') > -1) {
diff --git a/jdFruitShareCodes.js b/jdFruitShareCodes.js
index 4a278b70..e88c517f 100644
--- a/jdFruitShareCodes.js
+++ b/jdFruitShareCodes.js
@@ -10,6 +10,13 @@ let FruitShareCodes = [
'0a74407df5df4fa99672a037eec61f7e@dbb21614667246fabcfd9685b6f448f3@6fbd26cc27ac44d6a7fed34092453f77@61ff5c624949454aa88561f2cd721bf6@56db8e7bc5874668ba7d5195230d067a',//账号一的好友shareCode,不同好友中间用@符号隔开
'6fbd26cc27ac44d6a7fed34092453f77@61ff5c624949454aa88561f2cd721bf6@9c52670d52ad4e1a812f894563c746ea@8175509d82504e96828afc8b1bbb9cb3',//账号二的好友shareCode,不同好友中间用@符号隔开
]
+
+// 从日志获取互助码
+const logShareCodes = require('./jdShareCodes');
+if (logShareCodes.FRUITSHARECODES.length > 0 && !process.env.FRUITSHARECODES) {
+ process.env.FRUITSHARECODES = logShareCodes.FRUITSHARECODES.join('&');
+}
+
// 判断github action里面是否有东东农场互助码
if (process.env.FRUITSHARECODES) {
if (process.env.FRUITSHARECODES.indexOf('&') > -1) {
diff --git a/jdPetShareCodes.js b/jdPetShareCodes.js
index c1e668e7..6168ae5d 100644
--- a/jdPetShareCodes.js
+++ b/jdPetShareCodes.js
@@ -10,6 +10,13 @@ let PetShareCodes = [
'MTAxODc2NTEzNTAwMDAwMDAwMjg3MDg2MA==@MTAxODc2NTEzMzAwMDAwMDAyNzUwMDA4MQ==@MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODc2NTEzNDAwMDAwMDAzMDI2MDI4MQ==',//账号一的好友shareCode,不同好友中间用@符号隔开
'MTAxODc2NTEzMjAwMDAwMDAzMDI3MTMyOQ==@MTAxODcxOTI2NTAwMDAwMDAyNjA4ODQyMQ==@MTAxODc2NTEzOTAwMDAwMDAyNzE2MDY2NQ==',//账号二的好友shareCode,不同好友中间用@符号隔开
]
+
+// 从日志获取互助码
+const logShareCodes = require('./jdShareCodes');
+if (logShareCodes.PETSHARECODES.length > 0 && !process.env.PETSHARECODES) {
+ process.env.PETSHARECODES = logShareCodes.PETSHARECODES.join('&');
+}
+
// 判断github action里面是否有东东萌宠互助码
if (process.env.PETSHARECODES) {
if (process.env.PETSHARECODES.indexOf('&') > -1) {
diff --git a/jdPlantBeanShareCodes.js b/jdPlantBeanShareCodes.js
index 81c5c0cb..f16da901 100644
--- a/jdPlantBeanShareCodes.js
+++ b/jdPlantBeanShareCodes.js
@@ -10,6 +10,13 @@ let PlantBeanShareCodes = [
'66j4yt3ebl5ierjljoszp7e4izzbzaqhi5k2unz2afwlyqsgnasq@olmijoxgmjutyrsovl2xalt2tbtfmg6sqldcb3q@e7lhibzb3zek27amgsvywffxx7hxgtzstrk2lba@olmijoxgmjutyx55upqaqxrblt7f3h26dgj2riy',//账号一的好友shareCode,不同好友中间用@符号隔开
'mlrdw3aw26j3wgzjipsxgonaoyr2evrdsifsziy@mlrdw3aw26j3wgzjipsxgonaoyr2evrdsifsziy',//账号二的好友shareCode,不同好友中间用@符号隔开
]
+
+// 从日志获取互助码
+const logShareCodes = require('./jdShareCodes');
+if (logShareCodes.PLANT_BEAN_SHARECODES.length > 0 && !process.env.PLANT_BEAN_SHARECODES) {
+ process.env.PLANT_BEAN_SHARECODES = logShareCodes.PLANT_BEAN_SHARECODES.join('&');
+}
+
// 判断github action里面是否有种豆得豆互助码
if (process.env.PLANT_BEAN_SHARECODES) {
if (process.env.PLANT_BEAN_SHARECODES.indexOf('&') > -1) {
diff --git a/jdShareCodes.js b/jdShareCodes.js
new file mode 100644
index 00000000..9dbe47f1
--- /dev/null
+++ b/jdShareCodes.js
@@ -0,0 +1,73 @@
+// 从日志中获取互助码
+
+// process.env.SHARE_CODE_FILE = "/scripts/logs/sharecode.log";
+// process.env.JD_COOKIE = "cookie1&cookie2";
+
+exports.JDZZ_SHARECODES = [];
+exports.DDFACTORY_SHARECODES = [];
+exports.DREAM_FACTORY_SHARE_CODES = [];
+exports.PLANT_BEAN_SHARECODES = [];
+exports.FRUITSHARECODES = [];
+exports.PETSHARECODES = [];
+exports.JDJOY_SHARECODES = [];
+
+let fileContent = '';
+if (process.env.SHARE_CODE_FILE) {
+ try {
+ const fs = require('fs');
+ fileContent = fs.readFileSync(process.env.SHARE_CODE_FILE, 'utf8');
+ } catch (err) {
+ console.error(err)
+ }
+}
+let lines = fileContent.split('\n');
+
+let shareCodesMap = {
+ "JDZZ_SHARECODES": [],
+ "DDFACTORY_SHARECODES": [],
+ "DREAM_FACTORY_SHARE_CODES": [],
+ "PLANT_BEAN_SHARECODES": [],
+ "FRUITSHARECODES": [],
+ "PETSHARECODES": [],
+ "JDJOY_SHARECODES": [],
+};
+for (let i = 0; i < lines.length; i++) {
+ if (lines[i].includes('京东赚赚')) {
+ shareCodesMap.JDZZ_SHARECODES.push(lines[i].split('】')[1].trim());
+ } else if (lines[i].includes('东东工厂')) {
+ shareCodesMap.DDFACTORY_SHARECODES.push(lines[i].split('】')[1].trim());
+ } else if (lines[i].includes('京喜工厂')) {
+ shareCodesMap.DREAM_FACTORY_SHARE_CODES.push(lines[i].split('】')[1].trim());
+ } else if (lines[i].includes('京东种豆得豆')) {
+ shareCodesMap.PLANT_BEAN_SHARECODES.push(lines[i].split('】')[1].trim());
+ } else if (lines[i].includes('东东农场')) {
+ shareCodesMap.FRUITSHARECODES.push(lines[i].split('】')[1].trim());
+ } else if (lines[i].includes('东东萌宠')) {
+ shareCodesMap.PETSHARECODES.push(lines[i].split('】')[1].trim());
+ } else if (lines[i].includes('crazyJoy')) {
+ shareCodesMap.JDJOY_SHARECODES.push(lines[i].split('】')[1].trim());
+ }
+}
+for (let key in shareCodesMap) {
+ shareCodesMap[key] = shareCodesMap[key].reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []); // 去重
+}
+let cookieCount = 0;
+if (process.env.JD_COOKIE) {
+ if (process.env.JD_COOKIE.indexOf('&') > -1) {
+ cookieCount = process.env.JD_COOKIE.split('&').length;
+ } else {
+ cookieCount = process.env.JD_COOKIE.split('\n').length;
+ }
+}
+cookieCount = cookieCount === 1 ? 0 : cookieCount; // 只有一个帐号时,获取日志互助码没什么用
+
+for (let key in shareCodesMap) {
+ exports[key] = [];
+ if (shareCodesMap[key].length === 0) {
+ continue;
+ }
+ for (let i = 0; i < cookieCount; i++) {
+ exports[key][i] = shareCodesMap[key].sort(() => Math.random() - 0.5).join('@');
+ }
+}
+