From 61f66423e58b8ec4c1d7d57623d21de909b3eddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=BF=97=E5=86=9B?= Date: Tue, 26 Oct 2021 19:20:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../B5F8E89A-CE33-4a78-A461-E9014B10A3D9.png | Bin 0 -> 66340 bytes pom.xml | 204 ++ readme.md | 32 + src/main/java/additive/ValidTool.java | 10 + src/main/java/entity/CaptchaItem.java | 137 ++ src/main/java/entity/CommonPageResp.java | 74 + src/main/java/entity/FileItem.java | 28 + src/main/java/entity/OriginTimeValue.java | 41 + src/main/java/entity/QRCodeItem.java | 245 ++ src/main/java/entity/TargetTimeValue.java | 30 + .../java/exception/BeanCloneException.java | 34 + .../BeanPropertiesCopyException.java | 35 + .../SerializableDeepCloneException.java | 35 + src/main/java/type/CloneType.java | 33 + src/main/java/util/Base64Util.java | 293 +++ src/main/java/util/FileUtil.java | 263 ++ src/main/java/util/MessageUtils.java | 27 + src/main/java/util/PageUtil.java | 93 + src/main/java/util/PatternUtils.java | 105 + src/main/java/util/ShellUtils.java | 49 + src/main/java/util/StringUtils.java | 197 ++ src/main/java/util/clazz/ClassUtils.java | 356 +++ .../java/util/clazz/ClassVisitorUtils.java | 61 + .../java/util/clazz/MethodVisitorUtils.java | 74 + .../java/util/http/ResponseEntityUtil.java | 46 + src/main/java/util/image/CaptchaUtil.java | 235 ++ .../java/util/image/PicturesCompressUtil.java | 28 + src/main/java/util/image/QRCodeUtil.java | 131 + .../java/util/itext/FillTemplateHelper.java | 196 ++ src/main/java/util/itext/PDFUtils.java | 175 ++ src/main/java/util/redis/RedisUtil.java | 527 ++++ src/main/java/util/time/DateTimeUtil.java | 210 ++ .../java/util/time/FillFullTimeValueUtil.java | 119 + src/main/java/util/transform/JsonBinder.java | 38 + src/main/java/util/transform/XmlBinder.java | 108 + src/main/java/util/tree/TreeNode.java | 61 + src/main/java/util/tree/TreeNode2.java | 49 + src/main/java/util/tree/TreeUtils.java | 129 + src/main/java/util/zip/PrintTool.java | 21 + .../util/zip/TarArchiveGZIPOutputUtil.java | 193 ++ src/main/java/util/zip/ZipOutputUtil.java | 68 + src/main/resources/log4j2.xml | 73 + src/main/resources/test_assets.js | 2183 +++++++++++++++++ src/main/resources/test_assets_new.js | 1216 +++++++++ src/main/resources/test_bean.js | 839 +++++++ src/main/resources/test_egg.js | 303 +++ src/main/resources/test_fruit.js | 1518 ++++++++++++ src/main/resources/test_guochuang.js | 386 +++ src/main/resources/test_lwq.js | 2180 ++++++++++++++++ src/main/resources/test_lwq_new.js | 1213 +++++++++ src/main/resources/test_money_money.js | 710 ++++++ src/main/resources/test_money_tree.js | 937 +++++++ src/main/resources/test_our.js | 2162 ++++++++++++++++ src/main/resources/test_our_new.js | 1195 +++++++++ src/main/resources/test_pet.js | 709 ++++++ src/main/resources/test_shop.js | 279 +++ src/main/resources/test_speed_red.js | 336 +++ src/main/resources/test_speed_sign.js | 942 +++++++ src/main/resources/test_try_joy.js | 1099 +++++++++ src/main/resources/test_trytry.js | 1148 +++++++++ src/main/resources/test_trytry1.js | 1148 +++++++++ src/main/resources/test_trytry2.js | 1146 +++++++++ src/main/resources/test_trytryOne.js | 1226 +++++++++ src/main/test/emptyDirTest/1/11.txt | 10 + src/main/test/emptyDirTest/1/222.png | Bin 0 -> 39383 bytes src/main/test/emptyDirTest/1/233.png | Bin 0 -> 40231 bytes src/main/test/emptyDirTest/1/mmm.png | Bin 0 -> 135598 bytes src/main/test/emptyDirTest/2/1/11.txt | 0 src/main/test/emptyDirTest/2/2222/4/4/111.txt | 0 .../test/emptyDirTest/2/2222/4/4/4/4/1211.txt | 0 src/main/test/emptyDirTest/3/11.txt | 0 src/main/test/util/FileUtilTest.java | 30 + src/main/test/util/FullFillTimeValueTest.java | 52 + src/main/test/util/MessageUtilsTest.java | 29 + src/main/test/util/PageUtilTest.java | 49 + src/main/test/util/StringUtilsTest.java | 82 + src/main/test/util/image/CaptchaUtilTest.java | 13 + .../test/util/image/JpegImager/2002013.jpg | Bin 0 -> 849187 bytes .../test/util/image/JpegImagerUtilTest.java | 17 + src/main/test/util/image/QRCode/log.png | Bin 0 -> 396894 bytes src/main/test/util/image/QRCodeUtilTest.java | 32 + .../test/util/transform/TransformTest.java | 63 + src/main/test/util/tree/TreeUtilTest.java | 19 + src/main/test/util/zip/ZipTest.java | 134 + 84 files changed, 28268 insertions(+) create mode 100644 .readme/B5F8E89A-CE33-4a78-A461-E9014B10A3D9.png create mode 100644 pom.xml create mode 100644 readme.md create mode 100644 src/main/java/additive/ValidTool.java create mode 100644 src/main/java/entity/CaptchaItem.java create mode 100644 src/main/java/entity/CommonPageResp.java create mode 100644 src/main/java/entity/FileItem.java create mode 100644 src/main/java/entity/OriginTimeValue.java create mode 100644 src/main/java/entity/QRCodeItem.java create mode 100644 src/main/java/entity/TargetTimeValue.java create mode 100644 src/main/java/exception/BeanCloneException.java create mode 100644 src/main/java/exception/BeanPropertiesCopyException.java create mode 100644 src/main/java/exception/SerializableDeepCloneException.java create mode 100644 src/main/java/type/CloneType.java create mode 100644 src/main/java/util/Base64Util.java create mode 100644 src/main/java/util/FileUtil.java create mode 100644 src/main/java/util/MessageUtils.java create mode 100644 src/main/java/util/PageUtil.java create mode 100644 src/main/java/util/PatternUtils.java create mode 100644 src/main/java/util/ShellUtils.java create mode 100644 src/main/java/util/StringUtils.java create mode 100644 src/main/java/util/clazz/ClassUtils.java create mode 100644 src/main/java/util/clazz/ClassVisitorUtils.java create mode 100644 src/main/java/util/clazz/MethodVisitorUtils.java create mode 100644 src/main/java/util/http/ResponseEntityUtil.java create mode 100644 src/main/java/util/image/CaptchaUtil.java create mode 100644 src/main/java/util/image/PicturesCompressUtil.java create mode 100644 src/main/java/util/image/QRCodeUtil.java create mode 100644 src/main/java/util/itext/FillTemplateHelper.java create mode 100644 src/main/java/util/itext/PDFUtils.java create mode 100644 src/main/java/util/redis/RedisUtil.java create mode 100644 src/main/java/util/time/DateTimeUtil.java create mode 100644 src/main/java/util/time/FillFullTimeValueUtil.java create mode 100644 src/main/java/util/transform/JsonBinder.java create mode 100644 src/main/java/util/transform/XmlBinder.java create mode 100644 src/main/java/util/tree/TreeNode.java create mode 100644 src/main/java/util/tree/TreeNode2.java create mode 100644 src/main/java/util/tree/TreeUtils.java create mode 100644 src/main/java/util/zip/PrintTool.java create mode 100644 src/main/java/util/zip/TarArchiveGZIPOutputUtil.java create mode 100644 src/main/java/util/zip/ZipOutputUtil.java create mode 100644 src/main/resources/log4j2.xml create mode 100644 src/main/resources/test_assets.js create mode 100644 src/main/resources/test_assets_new.js create mode 100644 src/main/resources/test_bean.js create mode 100644 src/main/resources/test_egg.js create mode 100644 src/main/resources/test_fruit.js create mode 100644 src/main/resources/test_guochuang.js create mode 100644 src/main/resources/test_lwq.js create mode 100644 src/main/resources/test_lwq_new.js create mode 100644 src/main/resources/test_money_money.js create mode 100644 src/main/resources/test_money_tree.js create mode 100644 src/main/resources/test_our.js create mode 100644 src/main/resources/test_our_new.js create mode 100644 src/main/resources/test_pet.js create mode 100644 src/main/resources/test_shop.js create mode 100644 src/main/resources/test_speed_red.js create mode 100644 src/main/resources/test_speed_sign.js create mode 100644 src/main/resources/test_try_joy.js create mode 100644 src/main/resources/test_trytry.js create mode 100644 src/main/resources/test_trytry1.js create mode 100644 src/main/resources/test_trytry2.js create mode 100644 src/main/resources/test_trytryOne.js create mode 100644 src/main/test/emptyDirTest/1/11.txt create mode 100644 src/main/test/emptyDirTest/1/222.png create mode 100644 src/main/test/emptyDirTest/1/233.png create mode 100644 src/main/test/emptyDirTest/1/mmm.png create mode 100644 src/main/test/emptyDirTest/2/1/11.txt create mode 100644 src/main/test/emptyDirTest/2/2222/4/4/111.txt create mode 100644 src/main/test/emptyDirTest/2/2222/4/4/4/4/1211.txt create mode 100644 src/main/test/emptyDirTest/3/11.txt create mode 100644 src/main/test/util/FileUtilTest.java create mode 100644 src/main/test/util/FullFillTimeValueTest.java create mode 100644 src/main/test/util/MessageUtilsTest.java create mode 100644 src/main/test/util/PageUtilTest.java create mode 100644 src/main/test/util/StringUtilsTest.java create mode 100644 src/main/test/util/image/CaptchaUtilTest.java create mode 100644 src/main/test/util/image/JpegImager/2002013.jpg create mode 100644 src/main/test/util/image/JpegImagerUtilTest.java create mode 100644 src/main/test/util/image/QRCode/log.png create mode 100644 src/main/test/util/image/QRCodeUtilTest.java create mode 100644 src/main/test/util/transform/TransformTest.java create mode 100644 src/main/test/util/tree/TreeUtilTest.java create mode 100644 src/main/test/util/zip/ZipTest.java diff --git a/.readme/B5F8E89A-CE33-4a78-A461-E9014B10A3D9.png b/.readme/B5F8E89A-CE33-4a78-A461-E9014B10A3D9.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c4011755ffe1fbdd6250e8fbd4bd45a481044c GIT binary patch literal 66340 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

B4$lZr?+vEH13@h_U)p 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..3d38d29 --- /dev/null +++ b/pom.xml @@ -0,0 +1,204 @@ + + + 4.0.0 + + Java_Utils + Java_Utils + 1.0.0 + war + + + 1.4.9 + UTF-8 + 1.7 + 1.7 + UTF-8 + 1.8 + 7.0 + 3.0 + yyyyMMddHHmmss + + + + + + + + javax.servlet + jstl + 1.2 + + + javax + javaee-web-api + ${javax.version} + provided + + + + com.belerweb + pinyin4j + 2.5.0 + + + org.slf4j + slf4j-api + 1.7.25 + + + com.google.guava + guava + 19.0 + + + com.google.code.google-collections + google-collect + snapshot-20080530 + + + + org.springframework + spring-core + 4.3.1.RELEASE + + + + + + com.itextpdf + itextpdf + 5.5.11 + + + com.itextpdf + itext-asian + 5.2.0 + + + com.itextpdf.tool + xmlworker + 5.5.11 + + + + + + com.fasterxml.jackson.core + jackson-databind + 2.7.2 + + + + + + net.coobird + thumbnailator + 0.4.8 + + + + + + com.google.zxing + core + 2.2 + + + + + org.apache.commons + commons-configuration2 + 2.2 + + + + + org.apache.commons + commons-compress + 1.18 + + + + + com.alibaba + fastjson + 1.2.54 + + + + + redis.clients + jedis + 2.7.1 + + + org.springframework.data + spring-data-redis + 1.6.2.RELEASE + + + org.springframework + spring-web + 4.3.7.RELEASE + + + + + Java_Utils + + + + maven-clean-plugin + 3.0.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.7.0 + + + maven-surefire-plugin + 2.20.1 + + + maven-war-plugin + 3.2.0 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + + + + src/main/java + + **/*.properties + **/*.xml + + false + + + + diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..93df11c --- /dev/null +++ b/readme.md @@ -0,0 +1,32 @@ +# 我的公众号 +![](.readme/B5F8E89A-CE33-4a78-A461-E9014B10A3D9.png) + +# 作用 +保存java遇到的部分工具类写法,在需要的时候可以直接拿出来使用 + +# 更新日志 + +2020/5/11 : 创建工程、添加PageUtil以及单测类,添加PatternUtil,添加StringUtils以及单测类 + +2020/5/12 : 添加部分工具类,未实现单测处理,包括: +- MessageUtils +- ShellUtils +- FileUtil +- Base64Util +- DateTimeUtil +- FillFullTimeValueUtil +- RedisUtil +- PDFUtils +- ResponseEntityUtil +- ClassUtils +- ClassVisitorUtils +- MethodVisitorUtils + +2020/5/15 : 添加zip压缩工具类ZipOutputUtil、TarArchiveGZIPOutputUtil及其单测类ZipTest、添加树节点工具类TreeUtils和单测类 +添加验证码工具类CaptchaUtil和单测、添加二维码工具类QRCodeUtil和单测,修改FileUtil添加部分方法、删除log4j依赖 + +2020/5/18 : 添加xml、json转换工具JsonBinder和XmlBinder,添加测试代码,添加图片压缩工具类PicturesCompressUtil以及单测,增加FileUtil中文件内容读入读出方法 + +2020/5/22 : 添加FullFillTimeValueUtil单测类、添加FileUtil文件夹方法、添加FileUtilTest单测类 + +2020/6/30 :添加FileUtil获取文件夹文件、单测 \ No newline at end of file diff --git a/src/main/java/additive/ValidTool.java b/src/main/java/additive/ValidTool.java new file mode 100644 index 0000000..01ab4e4 --- /dev/null +++ b/src/main/java/additive/ValidTool.java @@ -0,0 +1,10 @@ +package additive; + +public class ValidTool { + + public static void assertIsTrue(boolean expression, String message) { + if (!expression) { + throw new IllegalArgumentException(message); + } + } +} diff --git a/src/main/java/entity/CaptchaItem.java b/src/main/java/entity/CaptchaItem.java new file mode 100644 index 0000000..2fa47cf --- /dev/null +++ b/src/main/java/entity/CaptchaItem.java @@ -0,0 +1,137 @@ +package entity; + +import java.awt.*; + +/** + * 验证码属性设值对象 + */ +public class CaptchaItem { + + /** + * 验证码图片高度 + */ + private double height; + + /** + * 验证码图片宽度 + */ + private double width; + + /** + * 验证码长度 + */ + private int codeLength; + + /** + * 验证码从这里面进行取值 + */ + private String codeValue; + + /** + * 是否使用随机背景颜色 + */ + private boolean backgroundRandom; + + /** + * 是否使用随机验证码颜色 + */ + private boolean captchaColorRandom; + + /** + * 背景颜色 + */ + private int backgroundColor; + + /** + * 验证码颜色 + */ + private int captchaColor; + + /** + * 字体属性 + */ + private Font font; + + public CaptchaItem() { + //直接进行默认值的处理 + this.captchaColorRandom = true; + this.backgroundRandom = true; + this.codeLength = 4; + this.height = 100; + this.width = 200; + this.codeValue = "abcdefghijklmnopqrstuvwxyz1234567890"; + this.font = new Font("Algerian", Font.ITALIC, (int)this.height - 4); + } + + public Font getFont() { + return font; + } + + public void setFont(Font font) { + this.font = font; + } + + public double getHeight() { + return height; + } + + public void setHeight(double height) { + this.height = height; + } + + public double getWidth() { + return width; + } + + public void setWidth(double width) { + this.width = width; + } + + public int getCodeLength() { + return codeLength; + } + + public void setCodeLength(int codeLength) { + this.codeLength = codeLength; + } + + public String getCodeValue() { + return codeValue; + } + + public void setCodeValue(String codeValue) { + this.codeValue = codeValue; + } + + public boolean isBackgroundRandom() { + return backgroundRandom; + } + + public void setBackgroundRandom(boolean backgroundRandom) { + this.backgroundRandom = backgroundRandom; + } + + public boolean isCaptchaColorRandom() { + return captchaColorRandom; + } + + public void setCaptchaColorRandom(boolean captchaColorRandom) { + this.captchaColorRandom = captchaColorRandom; + } + + public int getBackgroundColor() { + return backgroundColor; + } + + public void setBackgroundColor(int backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public int getCaptchaColor() { + return captchaColor; + } + + public void setCaptchaColor(int captchaColor) { + this.captchaColor = captchaColor; + } +} diff --git a/src/main/java/entity/CommonPageResp.java b/src/main/java/entity/CommonPageResp.java new file mode 100644 index 0000000..8348fbf --- /dev/null +++ b/src/main/java/entity/CommonPageResp.java @@ -0,0 +1,74 @@ +/* + * @(#) PagingQueryResp + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-11-24 19:57:07 + */ + +package entity; + + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * 分页返回数据 + * + * @author yexr + */ +public class CommonPageResp { + /** + * 页数 + */ + @Min(0) + @NotNull + private Integer pageIndex; + /** + * 页面大小 + */ + @NotNull + @Min(1) + private Integer pageSize; + + + public Integer getPageIndex() { + return pageIndex; + } + + public void setPageIndex(Integer pageIndex) { + this.pageIndex = pageIndex; + } + + public Integer getPageSize() { + return pageSize; + } + + public void setPageSize(Integer pageSize) { + this.pageSize = pageSize; + } + + private Integer total; + + private List resultList; + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public List getResultList() { + return resultList; + } + + public void setResultList(List resultList) { + this.resultList = resultList; + } +} diff --git a/src/main/java/entity/FileItem.java b/src/main/java/entity/FileItem.java new file mode 100644 index 0000000..91c235c --- /dev/null +++ b/src/main/java/entity/FileItem.java @@ -0,0 +1,28 @@ + + +package entity; + +import java.io.InputStream; + +public class FileItem { + + private String fileName; + + private InputStream inputStream; + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public InputStream getInputStream() { + return inputStream; + } + + public void setInputStream(InputStream inputStream) { + this.inputStream = inputStream; + } +} diff --git a/src/main/java/entity/OriginTimeValue.java b/src/main/java/entity/OriginTimeValue.java new file mode 100644 index 0000000..54819a8 --- /dev/null +++ b/src/main/java/entity/OriginTimeValue.java @@ -0,0 +1,41 @@ + + +package entity; + +/** + * 原始的时间点 + * @author huangzj + */ +public class OriginTimeValue { + + /** + * 时间 + */ + private long time; + + /** + * 数值 + */ + private long value; + + public OriginTimeValue(long time, long value) { + this.time = time; + this.value = value; + } + + public long getTime() { + return time; + } + + public void setTime(long time) { + this.time = time; + } + + public long getValue() { + return value; + } + + public void setValue(long value) { + this.value = value; + } +} diff --git a/src/main/java/entity/QRCodeItem.java b/src/main/java/entity/QRCodeItem.java new file mode 100644 index 0000000..ca6d5aa --- /dev/null +++ b/src/main/java/entity/QRCodeItem.java @@ -0,0 +1,245 @@ +package entity; + +import com.google.zxing.EncodeHintType; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; + +import java.awt.*; +import java.util.HashMap; +import java.util.Map; + +public class QRCodeItem { + + + /** + * 二维码上面的文字内容 + */ + private String content; + + /** + * 文字颜色 + */ + private Color contentColor; + + /** + * 文字字体 + */ + private Font contentFont; + + /** + * 宽度 + */ + private int width; + + /** + * 高度 + */ + private int height; + + /** + * 图片后缀 + */ + private String suffix; + + /** + * logo的文件地址 + */ + private String logoPath; + + /** + * 二维码参数,这边会有默认的配置.具体配置可以参考: + * @see EncodeHintType + */ + private Map hints = new HashMap<>(); + + + /** + * 二维码背景颜色 + */ + private Color backgroundColor; + + /** + * 二维码条纹颜色 + */ + private Color stripeColor; + + + /** + * 是否自定义文字位置,如果false,直接按照程序里面的设定处理 + */ + private boolean isDiyContentPosition; + + /** + * 文字的x轴位置 + */ + private int contentX; + + + /** + * 文字的Y轴位置 + */ + private int contentY; + + + /** + * 是否自定义logo位置,如果false,直接按照程序里面的设定处理 + */ + private boolean isDiyLogoPosition; + + /** + * logo的X轴位置 + */ + private int logoX; + + /** + * logo的Y轴位置 + */ + private int logoY; + + public QRCodeItem() { + this.width= this.height = 300; + this.content = " "; + this.contentColor =Color.BLACK; + this.suffix = "png"; + //设置字符集 + this.hints.put(EncodeHintType.CHARACTER_SET,"UTF-8"); + //设置纠错等级,分为四级 + this.hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q); + //设置边框空白边距 + this.hints.put(EncodeHintType.MARGIN,0); + this.contentFont= new Font("宋体",Font.BOLD, 12); + this.logoPath = "F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\image\\QRCode\\log.png"; + this.backgroundColor = Color.WHITE; + this.stripeColor = Color.BLACK; + this.isDiyContentPosition = false; + this.isDiyLogoPosition = false; + } + + public String getLogoPath() { + return logoPath; + } + + public void setLogoPath(String logoPath) { + this.logoPath = logoPath; + } + + public String getSuffix() { + return suffix; + } + + public void setSuffix(String suffix) { + this.suffix = suffix; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + public Font getContentFont() { + return contentFont; + } + + public void setContentFont(Font contentFont) { + this.contentFont = contentFont; + } + + public Color getContentColor() { + return contentColor; + } + + public void setContentColor(Color contentColor) { + this.contentColor = contentColor; + } + + public Map getHints() { + return hints; + } + + public void setHints(Map hints) { + this.hints = hints; + } + + public Color getBackgroundColor() { + return backgroundColor; + } + + public void setBackgroundColor(Color backgroundColor) { + this.backgroundColor = backgroundColor; + } + + public Color getStripeColor() { + return stripeColor; + } + + public void setStripeColor(Color stripeColor) { + this.stripeColor = stripeColor; + } + + public boolean isDiyContentPosition() { + return isDiyContentPosition; + } + + public void setDiyContentPosition(boolean diyContentPosition) { + isDiyContentPosition = diyContentPosition; + } + + public int getContentX() { + return contentX; + } + + public void setContentX(int contentX) { + this.contentX = contentX; + } + + public int getContentY() { + return contentY; + } + + public void setContentY(int contentY) { + this.contentY = contentY; + } + + public boolean isDiyLogoPosition() { + return isDiyLogoPosition; + } + + public void setDiyLogoPosition(boolean diyLogoPosition) { + isDiyLogoPosition = diyLogoPosition; + } + + public int getLogoX() { + return logoX; + } + + public void setLogoX(int logoX) { + this.logoX = logoX; + } + + public int getLogoY() { + return logoY; + } + + public void setLogoY(int logoY) { + this.logoY = logoY; + } +} diff --git a/src/main/java/entity/TargetTimeValue.java b/src/main/java/entity/TargetTimeValue.java new file mode 100644 index 0000000..bb8025d --- /dev/null +++ b/src/main/java/entity/TargetTimeValue.java @@ -0,0 +1,30 @@ + + +package entity; + +/** + * 补时间点后的对象 + */ +public class TargetTimeValue { + private long time; + /** + * 统计值,其中null值表示没有数据 + */ + private Long value; + + public void setTime(long time) { + this.time = time; + } + + public void setValue(Long value) { + this.value = value; + } + + public long getTime() { + return time; + } + + public Long getValue() { + return value; + } +} diff --git a/src/main/java/exception/BeanCloneException.java b/src/main/java/exception/BeanCloneException.java new file mode 100644 index 0000000..b54da1f --- /dev/null +++ b/src/main/java/exception/BeanCloneException.java @@ -0,0 +1,34 @@ +/* + * @(#) BeanCloneException + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-10-07 17:13:13 + */ + +package exception; + +public class BeanCloneException extends RuntimeException { + public BeanCloneException() { + super(); + } + + public BeanCloneException(String message) { + super(message); + } + + public BeanCloneException(String message, Throwable cause) { + super(message, cause); + } + + public BeanCloneException(Throwable cause) { + super(cause); + } + + protected BeanCloneException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/main/java/exception/BeanPropertiesCopyException.java b/src/main/java/exception/BeanPropertiesCopyException.java new file mode 100644 index 0000000..10ab2bf --- /dev/null +++ b/src/main/java/exception/BeanPropertiesCopyException.java @@ -0,0 +1,35 @@ +/* + * @(#) BeanPropertiesCopyException + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-10-07 17:13:13 + */ + +package exception; + +public class BeanPropertiesCopyException extends RuntimeException { + + public BeanPropertiesCopyException() { + super(); + } + + public BeanPropertiesCopyException(String message) { + super(message); + } + + public BeanPropertiesCopyException(String message, Throwable cause) { + super(message, cause); + } + + public BeanPropertiesCopyException(Throwable cause) { + super(cause); + } + + protected BeanPropertiesCopyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/main/java/exception/SerializableDeepCloneException.java b/src/main/java/exception/SerializableDeepCloneException.java new file mode 100644 index 0000000..09e7a36 --- /dev/null +++ b/src/main/java/exception/SerializableDeepCloneException.java @@ -0,0 +1,35 @@ +/* + * @(#) SerializableDeepCloneException + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-10-07 17:13:13 + */ + +package exception; + +public class SerializableDeepCloneException extends RuntimeException { + + public SerializableDeepCloneException() { + super(); + } + + public SerializableDeepCloneException(String message) { + super(message); + } + + public SerializableDeepCloneException(String message, Throwable cause) { + super(message, cause); + } + + public SerializableDeepCloneException(Throwable cause) { + super(cause); + } + + protected SerializableDeepCloneException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/main/java/type/CloneType.java b/src/main/java/type/CloneType.java new file mode 100644 index 0000000..4fbb0bb --- /dev/null +++ b/src/main/java/type/CloneType.java @@ -0,0 +1,33 @@ +/* + * @(#) CloneType + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-10-07 17:13:13 + */ + +package type; + +/** + * @author selfImpr + */ +public enum CloneType { + + /** + * 基本类型和final的不需要复制的类型 + */ + SIMPLE_TYPE, + + /** + * 数组 + */ + ARRAY, + + /** + * 需要深度克隆的类 + */ + DEEP_CLONE_CLASS +} diff --git a/src/main/java/util/Base64Util.java b/src/main/java/util/Base64Util.java new file mode 100644 index 0000000..5644daa --- /dev/null +++ b/src/main/java/util/Base64Util.java @@ -0,0 +1,293 @@ +package util; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.Writer; + +/** + * 该工具是很久之前在网上找的,现在已经忘记了对应的代码地址 + */ +public class Base64Util { + private static final char[] S_BASE64CHAR = new char[]{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', + 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'}; + private static final char S_BASE64PAD = '='; + private static final byte[] S_DECODETABLE = new byte[128]; + private static final char EQUAL_SIGN = '='; + + public Base64Util() { + } + + private static int decode0(char[] ibuf, byte[] obuf, int wp) { + int outlen = 3; + if (ibuf[3] == EQUAL_SIGN) { + outlen = 2; + } + + if (ibuf[2] ==EQUAL_SIGN ) { + outlen = 1; + } + + int b0 = S_DECODETABLE[ibuf[0]]; + int b1 = S_DECODETABLE[ibuf[1]]; + int b2 = S_DECODETABLE[ibuf[2]]; + int b3 = S_DECODETABLE[ibuf[3]]; + switch (outlen) { + case 1: + obuf[wp] = (byte) (b0 << 2 & 252 | b1 >> 4 & 3); + return 1; + case 2: + obuf[wp++] = (byte) (b0 << 2 & 252 | b1 >> 4 & 3); + obuf[wp] = (byte) (b1 << 4 & 240 | b2 >> 2 & 15); + return 2; + case 3: + obuf[wp++] = (byte) (b0 << 2 & 252 | b1 >> 4 & 3); + obuf[wp++] = (byte) (b1 << 4 & 240 | b2 >> 2 & 15); + obuf[wp] = (byte) (b2 << 6 & 192 | b3 & 63); + return 3; + default: + throw new RuntimeException("Internal Errror"); + } + } + + public static byte[] decode(char[] data, int off, int len) { + char[] ibuf = new char[4]; + int ibufcount = 0; + byte[] obuf = new byte[len / 4 * 3 + 3]; + int obufcount = 0; + + for (int i = off; i < off + len; ++i) { + char ch = data[i]; + if (ch == '=' || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != 127) { + ibuf[ibufcount++] = ch; + if (ibufcount == ibuf.length) { + ibufcount = 0; + obufcount += decode0(ibuf, obuf, obufcount); + } + } + } + return decodeResult(obufcount,obuf); + } + + private static byte[] decodeResult(int obufcount, byte[] obuf) { + if (obufcount == obuf.length) { + return obuf; + } else { + byte[] ret = new byte[obufcount]; + System.arraycopy(obuf, 0, ret, 0, obufcount); + return ret; + } + } + + public static byte[] decode(String data) { + char[] ibuf = new char[4]; + int ibufcount = 0; + byte[] obuf = new byte[data.length() / 4 * 3 + 3]; + int obufcount = 0; + + for (int i = 0; i < data.length(); ++i) { + char ch = data.charAt(i); + if (ch == '=' || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != 127) { + ibuf[ibufcount++] = ch; + if (ibufcount == ibuf.length) { + ibufcount = 0; + obufcount += decode0(ibuf, obuf, obufcount); + } + } + } + + return decodeResult(obufcount,obuf); + } + + public static void decode(char[] data, int off, int len, OutputStream ostream) throws IOException { + char[] ibuf = new char[4]; + int ibufcount = 0; + byte[] obuf = new byte[3]; + + for (int i = off; i < off + len; ++i) { + char ch = data[i]; + decodeProcess(ch,ibuf,ibufcount,ostream,obuf); + } + + } + + private static void decodeProcess(char ch, char[] ibuf, int ibufcount, OutputStream ostream, byte[] obuf) throws IOException { + if (ch == '=' || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != 127) { + ibuf[ibufcount++] = ch; + if (ibufcount == ibuf.length) { + ibufcount = 0; + int obufcount = decode0(ibuf, obuf, 0); + ostream.write(obuf, 0, obufcount); + } + } + } + + public static void decode(String data, OutputStream ostream) throws IOException { + char[] ibuf = new char[4]; + int ibufcount = 0; + byte[] obuf = new byte[3]; + + for (int i = 0; i < data.length(); ++i) { + char ch = data.charAt(i); + decodeProcess(ch,ibuf,ibufcount,ostream,obuf); + } + + } + + public static String encode(byte[] data) { + return encode(data, 0, data.length); + } + + public static String encode(byte[] data, int off, int len) { + if (len <= 0) { + return ""; + } else { + char[] out = new char[len / 3 * 4 + 4]; + int rindex = off; + int windex = 0; + + int rest; + int i; + for (rest = len; rest >= 3; rest -= 3) { + i = ((data[rindex] & 255) << 16) + ((data[rindex + 1] & 255) << 8) + (data[rindex + 2] & 255); + out[windex++] = S_BASE64CHAR[i >> 18]; + out[windex++] = S_BASE64CHAR[i >> 12 & 63]; + out[windex++] = S_BASE64CHAR[i >> 6 & 63]; + out[windex++] = S_BASE64CHAR[i & 63]; + rindex += 3; + } + + if (rest == 1) { + i = data[rindex] & 255; + out[windex++] = S_BASE64CHAR[i >> 2]; + out[windex++] = S_BASE64CHAR[i << 4 & 63]; + out[windex++] = '='; + out[windex++] = '='; + } else if (rest == 2) { + i = ((data[rindex] & 255) << 8) + (data[rindex + 1] & 255); + out[windex++] = S_BASE64CHAR[i >> 10]; + out[windex++] = S_BASE64CHAR[i >> 4 & 63]; + out[windex++] = S_BASE64CHAR[i << 2 & 63]; + out[windex++] = '='; + } + + return new String(out, 0, windex); + } + } + + public static void encode(byte[] data, int off, int len, OutputStream ostream) throws IOException { + if (len > 0) { + byte[] out = new byte[4]; + int rindex = off; + + int rest; + int i; + for (rest = len; rest >= 3; rest -= 3) { + i = ((data[rindex] & 255) << 16) + ((data[rindex + 1] & 255) << 8) + (data[rindex + 2] & 255); + out[0] = (byte) S_BASE64CHAR[i >> 18]; + out[1] = (byte) S_BASE64CHAR[i >> 12 & 63]; + out[2] = (byte) S_BASE64CHAR[i >> 6 & 63]; + out[3] = (byte) S_BASE64CHAR[i & 63]; + ostream.write(out, 0, 4); + rindex += 3; + } + + if (rest == 1) { + i = data[rindex] & 255; + out[0] = (byte) S_BASE64CHAR[i >> 2]; + out[1] = (byte) S_BASE64CHAR[i << 4 & 63]; + out[2] = 61; + out[3] = 61; + ostream.write(out, 0, 4); + } else if (rest == 2) { + i = ((data[rindex] & 255) << 8) + (data[rindex + 1] & 255); + out[0] = (byte) S_BASE64CHAR[i >> 10]; + out[1] = (byte) S_BASE64CHAR[i >> 4 & 63]; + out[2] = (byte) S_BASE64CHAR[i << 2 & 63]; + out[3] = 61; + ostream.write(out, 0, 4); + } + + } + } + + public static void encode(byte[] data, int off, int len, Writer writer) throws IOException { + if (len > 0) { + char[] out = new char[4]; + int rindex = off; + int rest = len; + int output = 0; + + int i; + while (rest >= 3) { + i = ((data[rindex] & 255) << 16) + ((data[rindex + 1] & 255) << 8) + (data[rindex + 2] & 255); + out[0] = S_BASE64CHAR[i >> 18]; + out[1] = S_BASE64CHAR[i >> 12 & 63]; + out[2] = S_BASE64CHAR[i >> 6 & 63]; + out[3] = S_BASE64CHAR[i & 63]; + writer.write(out, 0, 4); + rindex += 3; + rest -= 3; + output += 4; + if (output % 76 == 0) { + writer.write("\n"); + } + } + + if (rest == 1) { + i = data[rindex] & 255; + out[0] = S_BASE64CHAR[i >> 2]; + out[1] = S_BASE64CHAR[i << 4 & 63]; + out[2] = '='; + out[3] = '='; + writer.write(out, 0, 4); + } else if (rest == 2) { + i = ((data[rindex] & 255) << 8) + (data[rindex + 1] & 255); + out[0] = S_BASE64CHAR[i >> 10]; + out[1] = S_BASE64CHAR[i >> 4 & 63]; + out[2] = S_BASE64CHAR[i << 2 & 63]; + out[3] = '='; + writer.write(out, 0, 4); + } + + } + } + + static { + int i; + for (i = 0; i < S_DECODETABLE.length; ++i) { + S_DECODETABLE[i] = 127; + } + + for (i = 0; i < S_BASE64CHAR.length; ++i) { + S_DECODETABLE[S_BASE64CHAR[i]] = (byte) i; + } + + } + + public static byte[] decodeByte(String data) { + + char[] ibuf = new char[4]; + int ibufcount = 0; + byte[] obuf = new byte[data.length() / 4 * 3 + 3]; + int obufcount = 0; + for (int i = 0; i < data.length(); i++) { + char ch = data.charAt(i); + if (ch == S_BASE64PAD || ch < S_DECODETABLE.length && S_DECODETABLE[ch] != Byte.MAX_VALUE) { + ibuf[ibufcount++] = ch; + if (ibufcount == ibuf.length) { + ibufcount = 0; + obufcount += decode0(ibuf, obuf, obufcount); + } + } + } + if (obufcount == obuf.length) { + return obuf; + } + byte[] ret = new byte[obufcount]; + System.arraycopy(obuf, 0, ret, 0, obufcount); + return ret; + } + + +} diff --git a/src/main/java/util/FileUtil.java b/src/main/java/util/FileUtil.java new file mode 100644 index 0000000..4d4899c --- /dev/null +++ b/src/main/java/util/FileUtil.java @@ -0,0 +1,263 @@ + + +package util; + + +import com.google.common.collect.Lists; +import entity.FileItem; +import org.springframework.util.CollectionUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.Objects; + +/** + * + * @author 志军 + */ +public class FileUtil { + + private static final byte[] BUF = new byte[1024]; + + private static final int BUF_SIZE = 1024; + + public static void deleteFile(String filePath) { + File file = new File(filePath); + if (!file.exists()) { + throw new RuntimeException("文件不存在"); + } + + file.delete(); + } + + + /** + * 支持输入流存储到对应文件夹下,仅对文件夹有效 + * @param fileItems 输入流、文件名 数组 + * @param dirPath 文件夹路径 + */ + public static void storeFiles(List fileItems, String dirPath) { + File file = new File(dirPath); + if (!file.exists() && !file.isDirectory()) { + file.mkdir(); + } + + fileItems.forEach(fileItem -> { + File fileItemFile = new File(dirPath + File.separator + fileItem.getFileName()); + FileOutputStream fileOutputStream; + + try { + //创建文件 + fileItemFile.createNewFile(); + fileOutputStream = new FileOutputStream(fileItemFile); + int len; + while ((len = fileItem.getInputStream().read(BUF, 0, BUF_SIZE)) != -1) { + fileOutputStream.write(BUF, 0, len); + } + + fileOutputStream.close(); + fileItem.getInputStream().close(); + } catch (IOException e) { + throw new RuntimeException("生成文件错误"); + } + }); + } + + public static boolean fileExist(String filePath){ + File file = new File(filePath); + return file.exists(); + } + + public static boolean isFile(String filePath){ + File file = new File(filePath); + if ( file.exists()){ + return file.isFile(); + } + return false; + } + + public static boolean isDir(String filePath){ + File file = new File(filePath); + if ( file.exists()){ + return file.isDirectory(); + } + return false; + } + + /** + * 文件已存在或者创建成功返回true + * 文件不存在或者非文件(文件夹)或者创建失败,返回false + */ + public static boolean createFile(String filePath){ + if(fileExist(filePath)){ + return isFile(filePath); + } + File file = new File(filePath); + try { + return file.createNewFile(); + } catch (IOException e) { + return false; + } + } + + /** + * 创建并获取一个File对象 + * 如果是文件、创建成功返回对应的文件对象 + * 其他情况直接返回null. + */ + public static File createGetFile(String filePath){ + if(fileExist(filePath)){ + if ( isFile(filePath)){ + return new File(filePath); + } + } + File file = new File(filePath); + try { + boolean result = file.createNewFile(); + if (result){ + return file; + } + } catch (IOException e) { + return null; + } + return null; + } + + /** + * 文件转换成byte数组 + */ + public static byte[] fileToByte(String filePath) { + FileInputStream in = null; + try { + in = new FileInputStream(new File(filePath)); + byte[] bytes = new byte[in.available()]; + in.read(bytes); + return bytes; + } catch (IOException e) { + throw new RuntimeException("转换失败",e); + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + /** + * byte数组写入文件 + */ + public static void bytesToFile(String filePath,byte[] content){ + FileOutputStream out = null; + try { + out = new FileOutputStream(new File(filePath)); + out.write(content); + out.flush(); + } catch (IOException e) { + throw new RuntimeException("写入失败",e); + } finally { + if (out != null) { + try { + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + + + /** + * 拿到文件夹下面的所有文件夹(包括它自己) + */ + public static List findAllDirFromDir(String dirPath){ + File dir = new File(dirPath); + if(!dir.exists() || !dir.isDirectory()){ + throw new RuntimeException("非文件夹或者文件夹位置错误"); + } + List result = findDir(dir); + result.add(dir); + return result; + } + + private static List findDir(File file ){ + List list = Lists.newArrayList(); + for(File child : Objects.requireNonNull(file.listFiles())){ + if(child.isDirectory()){ + list.add(child); + List tempList = findDir(child); + if(!CollectionUtils.isEmpty(tempList)){ + list.addAll(tempList); + } + } + } + return list; + } + + + /** + * 拿到文件夹下面的所有空文件夹 + */ + public static List findAllEmptyDirFromDir( String dirPath){ + List list = Lists.newArrayList(); + File dir = new File(dirPath); + if(!dir.exists() || !dir.isDirectory()){ + throw new RuntimeException("非文件夹或者文件夹位置错误"); + } + List allList = findAllDirFromDir(dirPath); + for(File dirFile:allList){ + if(isEmptyFile(dirFile)){ + list.add(dirFile); + } + } + return list; + } + + + /** + * 通过目录获取目录下所有的文件 + */ + public static List findAllFile(File dir){ + List list = Lists.newArrayList(); + for (File file : Objects.requireNonNull(dir.listFiles())){ + if(file.isFile()){ + list.add(file); + }else{ + List tempList = findAllFile(file); + if(!CollectionUtils.isEmpty(tempList)){ + list.addAll(tempList); + } + } + } + return list; + } + + private static boolean isEmptyFile(File dir) { + List child = findAllFile(dir); + return CollectionUtils.isEmpty(child); + } + + + /** + * 拿到文件夹下面的所有非空文件夹 + */ + public static List findAllNotEmptyDirFromDir( String dirPath){ + List list = Lists.newArrayList(); + File dir = new File(dirPath); + if(!dir.exists() || !dir.isDirectory()){ + throw new RuntimeException("非文件夹或者文件夹位置错误"); + } + List allList = findAllDirFromDir(dirPath); + for(File dirFile:allList){ + if(!isEmptyFile(dir)){ + list.add(dirFile); + } + } + return list; + } +} diff --git a/src/main/java/util/MessageUtils.java b/src/main/java/util/MessageUtils.java new file mode 100644 index 0000000..c5d5816 --- /dev/null +++ b/src/main/java/util/MessageUtils.java @@ -0,0 +1,27 @@ +package util; + +import org.slf4j.helpers.MessageFormatter; + +import java.text.MessageFormat; + +/** + * Created by huangzj on 2017/8/21. + * @author 志军 + */ +public class MessageUtils { + /** + * 格式化信息,支持message={0}或message={}格式的信息模板。 + * + * @param pattern 信息模板 + * @param parameters 参数值 + * @return 格式化后的信息 + */ + public static String format(String pattern, Object... parameters) { + try { + return MessageFormat.format(pattern, parameters); + } catch (IllegalArgumentException e) { + //上面的MessageFormat报错进来这边的,这边的测试只测试出当格式不正确的情况才会进来 + return MessageFormatter.arrayFormat(pattern, parameters).getMessage(); + } + } +} diff --git a/src/main/java/util/PageUtil.java b/src/main/java/util/PageUtil.java new file mode 100644 index 0000000..2997ca4 --- /dev/null +++ b/src/main/java/util/PageUtil.java @@ -0,0 +1,93 @@ +/* + * @(#) PageUtil + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-11-24 19:55:37 + */ + +package util; + + +import entity.CommonPageResp; + +import java.util.Collections; +import java.util.List; + +import static additive.ValidTool.assertIsTrue; +import static java.lang.Math.min; + + +/** + * 分页工具类 + * + * @author 志军 + * @date + */ +public class PageUtil { + + private static final int ZERO = 0; + + /** + * 前端传,从0开始分页(对list进行分页) + * @param list 列表 + * @param pageIndex 页码 + * @param pageSize 页数 + * @param T + * @return 分页通用对象 + */ + public static CommonPageResp pagingListFromZero(List list, int pageIndex, int pageSize) { + assertIsTrue(pageIndex >= 0, "pageIndex必需大于等于0"); + + if (list == null ) { + return nullPage(pageSize); + } + CommonPageResp pagingQueryResp = new CommonPageResp<>(); + int index = min(((list.size() - 1) / pageSize), pageIndex); + pagingQueryResp.setPageIndex(index); + pagingQueryResp.setPageSize(pageSize); + pagingQueryResp.setTotal(list.size()); + pagingQueryResp.setResultList(list.subList(index * pageSize, min((index + 1) * pageSize, list.size()))); + return pagingQueryResp; + } + + + + /** + * 前端传,从1开始分页(对list进行分页) + * @param list 列表 + * @param pageIndex 页码 + * @param pageSize 页数 + * @param T + * @return 分页通用对象 + */ + static CommonPageResp pagingListFromOne(List list, int pageIndex, int pageSize) { + if ( pageIndex<1){ + pageIndex = 1; + } + CommonPageResp pagingQueryResp = new CommonPageResp<>(); + + if (list == null) { + return nullPage(pageSize); + } + int index = min(((list.size() - 1 )/ pageSize + 1), pageIndex); + pagingQueryResp.setPageIndex(index); + pagingQueryResp.setPageSize(pageSize); + pagingQueryResp.setTotal(list.size()); + pagingQueryResp.setResultList(list.subList((index - 1) * pageSize, min(index * pageSize, list.size()))); + return pagingQueryResp; + } + + private static CommonPageResp nullPage(int pageSize) { + CommonPageResp pagingQueryResp = new CommonPageResp<>(); + pagingQueryResp.setResultList(Collections.emptyList()); + pagingQueryResp.setTotal(ZERO); + pagingQueryResp.setPageIndex(ZERO); + pagingQueryResp.setPageSize(pageSize); + return pagingQueryResp; + } + +} diff --git a/src/main/java/util/PatternUtils.java b/src/main/java/util/PatternUtils.java new file mode 100644 index 0000000..e88bbe0 --- /dev/null +++ b/src/main/java/util/PatternUtils.java @@ -0,0 +1,105 @@ +package util; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 这个就是一个储备的工作工具,不具备学习的用处,反正我是学不来 + * 参考网上的地址:http://tools.jb51.net/regex/create_reg + * https://www.jb51.net/article/115170.htm + * + * @author 志军 + */ +public class PatternUtils { + + /** + * 全是中文 + */ + private static final String ALL_CHINESS_PATTERN = "[\\u4e00-\\u9fa5]+"; + + /** + * 是不是E-mail地址 + */ + private static final String EMAIL_ADDRESS_PATTERN = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}"; + + /** + * 是不是网址 + * + */ + private static final String INTERNET_URL_PATTERN = "^((https|http|ftp|rtsp|mms)?:\\/\\/)[^\\s]+"; + + /** + * 2018目前国内的手机 + */ + private static final String MOBILE_PHONE_PATTERN = "/^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\d{8}$/"; + + /** + * 2018目前国内的电话 + */ + private static final String TEL_PHONE_PATTERN = "[0-9-()()]{7,18}"; + + /** + * qq号码 + */ + private static final String QQ_PATTERN = "[1-9]([0-9]{5,11})"; + + /** + * 邮政编码 + */ + private static final String POSTAL_CODE_PATTERN = "\\d{6}"; + + /** + * 身份证,验证15位和18位 + * https://www.jb51.net/article/109384.htm + */ + private static final String ID_CARD_PATTERN = " ^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)" + + "\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}$"; + + /** + * IPv4地址正则 + */ + private static final String IPV4_PATTERN = "/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}" + + "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/"; + + /** + * 微信号,6至20位,以字母开头,字母,数字,减号,下划线 + */ + private static final String WEIXIN_PATTERN = "/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/"; + + /** + * 车牌号 + */ + private static final String LICENSE_PLATE_PATTERN = " /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/"; + + /** + * 日期正则,复杂判定 + */ + private static final String DATE_PATTERN = "/^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-" + + "(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/"; + + /** + * 用户名正则,,4到16位(字母,数字,下划线,减号) + */ + private static final String USER_NAME_PATTERN = "/^[a-zA-Z0-9_-]{4,16}$/"; + + /** + * 密码正则 最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 + */ + private static final String PASSWORD_PATTERN = "/^.*(?=.{6,})(?=.*\\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/"; + + /** + * 文件路径及拓展名校验 + */ + private static final String FILE_PATH_PATTERN = "([a-zA-Z]\\\\:|\\\\\\\\)\\\\\\\\([^\\\\\\\\]+\\\\\\\\)*[^\\\\/:*?\"<>|]+\\\\.txt(l)?$"; + + /** + * 这边就不一一写出来了,以后要用的时候再说 + * + */ + private static boolean commonPattern(String pattern, String str) { + Pattern r = Pattern.compile(pattern); + Matcher m = r.matcher(str); + return m.matches(); + } + +} diff --git a/src/main/java/util/ShellUtils.java b/src/main/java/util/ShellUtils.java new file mode 100644 index 0000000..32b1d3f --- /dev/null +++ b/src/main/java/util/ShellUtils.java @@ -0,0 +1,49 @@ + + +package util; + + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; + +/** + * 调用shell命令 + * @author 志军 + */ +public class ShellUtils { + + + /** + * 压缩文件 + * @param originPath 源文件位置 + * @param tarPath 新文件位置 + */ + public void compressFile(String originPath, String tarPath) { + InputStream in = null; + try { + Process cd = Runtime.getRuntime().exec(new String[]{"cd", " ", originPath}); + cd.waitFor(); + Process pro = Runtime.getRuntime().exec(new String[]{"tar", " -czf", tarPath, "*.tar.gz"}); + pro.waitFor(); + in = pro.getInputStream(); + BufferedReader read = new BufferedReader(new InputStreamReader(in)); + String result = read.readLine(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void deleteFile(String tempPathOnTime) { + InputStream in = null; + try { + Process pro = Runtime.getRuntime().exec(new String[]{"rm", "-rf", " ", tempPathOnTime}); + pro.waitFor(); + in = pro.getInputStream(); + BufferedReader read = new BufferedReader(new InputStreamReader(in)); + String result = read.readLine(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/util/StringUtils.java b/src/main/java/util/StringUtils.java new file mode 100644 index 0000000..9995ac2 --- /dev/null +++ b/src/main/java/util/StringUtils.java @@ -0,0 +1,197 @@ +/* + * @(#) StringUtils + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-10-07 17:13:13 + */ + +package util; + +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +import java.nio.charset.StandardCharsets; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author 志军 + * 补充Strings的缺失 + */ +class StringUtils { + + private static char A_LETTER = 'a'; + private static char Z_LETTER = 'z'; + private static Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); + + /** + * 首字母小写 + */ + static String lowerFirstLetter(String word) { + char[] chars = word.toCharArray(); + if (chars[0] >= A_LETTER && chars[0] <= Z_LETTER) { + chars[0] += 32; + } + + return String.valueOf(chars); + } + + /** + * 首字母大写 + */ + static String upperFirstLetter(String word) { + char[] chars = word.toCharArray(); + if (chars[0] >= A_LETTER && chars[0] <= Z_LETTER) { + chars[0] -= 32; + } + + return String.valueOf(chars); + } + + static String upperAllLetter(String word){ + StringBuilder stringBuilder = new StringBuilder(); + char[] chars = word.toCharArray(); + for( int i= 0;i= A_LETTER && chars[0] <= Z_LETTER) { + chars[0] -= 32; + } + stringBuilder.append(chars[i]); + } + return stringBuilder.toString(); + } + + static String lowerAllLetter(String word) { + StringBuilder stringBuilder = new StringBuilder(); + char[] chars = word.toCharArray(); + for( int i= 0;i= A_LETTER && chars[0] <= Z_LETTER) { + chars[0] += 32; + } + stringBuilder.append(chars[i]); + } + return stringBuilder.toString(); + } + + + static String appendAll(String... word){ + StringBuilder stringBuilder = new StringBuilder(); + for (String aWord : word) { + stringBuilder.append(aWord); + } + return stringBuilder.toString(); + } + + + /** + * 判断字符串中是否包含中文 + */ + static boolean isContainChinese(String str) { + Matcher m = p.matcher(str); + return m.find(); + } + + + /** + * 校验一个字符是否是汉字 + */ + static boolean isChineseChar(char c) { + try { + return String.valueOf(c).getBytes(StandardCharsets.UTF_8).length > 1; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + + static String toPinyinUpper(String word) throws BadHanyuPinyinOutputFormatCombination { + StringBuilder stringBuilder = new StringBuilder(); + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.UPPERCASE); + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + char[] chars = word.toCharArray(); + buildChars(chars,stringBuilder,format); + return stringBuilder.toString(); + } + + static String toPinyinLower(String word) throws BadHanyuPinyinOutputFormatCombination { + StringBuilder stringBuilder = new StringBuilder(); + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + char[] chars = word.toCharArray(); + buildChars(chars,stringBuilder,format); + return stringBuilder.toString(); + } + + + private static void buildChars(char[] chars,StringBuilder stringBuilder,HanyuPinyinOutputFormat format) throws BadHanyuPinyinOutputFormatCombination { + for (char aChar : chars) { + if (isChineseChar(aChar)) { + String[] result = PinyinHelper.toHanyuPinyinStringArray(aChar, format); + for(String s : result){ + stringBuilder.append(s); + } + continue; + } + //处理非中文的部分 + stringBuilder.append(aChar); + } + } + + + + + static String toPinyinPhoneticSignUpper(String word ) throws BadHanyuPinyinOutputFormatCombination { + StringBuilder stringBuilder = new StringBuilder(); + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); + format.setCaseType(HanyuPinyinCaseType.UPPERCASE); + format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); + char[] chars = word.toCharArray(); + buildChars(chars,stringBuilder,format); + return stringBuilder.toString(); + } + + static String toPinyinPhoneticSignLower(String word ) throws BadHanyuPinyinOutputFormatCombination { + StringBuilder stringBuilder = new StringBuilder(); + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); + format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); + format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); + char[] chars = word.toCharArray(); + buildChars(chars,stringBuilder,format); + return stringBuilder.toString(); + } + + + /** + * 通过正则表达式进行替换 + */ + static String replacePattern(String word,String pattern){ + if (word != null) { + Pattern p = Pattern.compile(pattern); + Matcher m = p.matcher(word); + word = m.replaceAll(""); + } + return word; + } + + static String replacePattern(String word,String replace,String pattern){ + if (word != null) { + Pattern p = Pattern.compile(pattern); + Matcher m = p.matcher(word); + word = m.replaceAll(replace); + } + return word; + } + +} diff --git a/src/main/java/util/clazz/ClassUtils.java b/src/main/java/util/clazz/ClassUtils.java new file mode 100644 index 0000000..4e16700 --- /dev/null +++ b/src/main/java/util/clazz/ClassUtils.java @@ -0,0 +1,356 @@ +package util.clazz; + + +import exception.BeanCloneException; +import jdk.internal.org.objectweb.asm.ClassReader; +import jdk.internal.org.objectweb.asm.Opcodes; +import jdk.internal.org.objectweb.asm.Type; +import type.CloneType; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.lang.reflect.ParameterizedType; +import java.util.*; + + +/** + * 类操作的工具类 + * + * @author selfImpr + */ +public class ClassUtils { + + /** + * final基本类型对象 + */ + private static List basicWrapType; + + + static { + basicWrapType = Arrays.asList(new Class[]{Byte.class, Short.class, Integer.class, Long.class, Float.class, Double.class, Boolean + .class, Character.class, String.class}); + } + + public static CloneType getCloneType(Object object) { + //判断是不是基本类型 + if (object.getClass().isPrimitive()) { + return CloneType.SIMPLE_TYPE; + } + + if (basicWrapType.contains(object.getClass())) { + return CloneType.SIMPLE_TYPE; + } + + if (object.getClass().isArray()) { + return CloneType.ARRAY; + } + + return CloneType.DEEP_CLONE_CLASS; + } + + public static List getAllField(Object object) { + List fields = new ArrayList<>(); + if (object == null) { + return fields; + } + + //TODO 这边的这个类型会不会有问题 + return Arrays.asList(object.getClass().getDeclaredFields()); + } + + public static List getAllFieldName(Object object) { + List attributes = new ArrayList<>(); + Field[] fields = object.getClass().getDeclaredFields(); + for (int i = 0; i < fields.length; i++) { + attributes.add(fields[i].getName()); + } + return attributes; + } + + + /** + * 获取类层面上的泛型类型 + * 但是这边应该是有一个限制条件:因为java是泛型擦出,所以是拿不到具体的类型的.... + * 这边做一个变通就是说去拿里面数据的类型,如果没有数据的话,就统一返回Object + *

+ *

+ * 并且还不能判断自定义的泛型类型。 + * + * @param object + */ + public static List getGenericParamType(Object object) { + List genericParamType = new ArrayList<>(); + + + java.lang.reflect.Type type = object.getClass().getGenericSuperclass(); + if (type instanceof ParameterizedType) { + if (Collection.class.isAssignableFrom(object.getClass())) { + if (((Collection) object).size() == 0) { + genericParamType.add(Object.class); + return genericParamType; + } + + genericParamType.add(((Collection) object).iterator().next().getClass()); + } + + if (Map.class.isAssignableFrom(object.getClass())) { + if (((Map) object).size() == 0) { + genericParamType.add(Object.class); + genericParamType.add(Object.class); + return genericParamType; + } + + //设置key和value的值 + genericParamType.add(((Map) object).keySet().iterator().next().getClass()); + genericParamType.add(((Map) object).values().iterator().next().getClass()); + + } + + } else { + //TODO 怎么判断自定义的类型是不是存在泛型? + } + + return genericParamType; + } + + + /** + * 通过Field去获取泛型的类型 + */ + public static List getGenericParamTypeInField(Field field) { + List genericParamType = new ArrayList<>(); + if (field.getGenericType() instanceof ParameterizedType) { + java.lang.reflect.Type[] types = ((ParameterizedType) field.getGenericType()).getActualTypeArguments(); + for (java.lang.reflect.Type type : types) { + genericParamType.add(type.getClass()); + } + + return genericParamType; + } + + //TODO 这边还是没有解决自定义拥有泛型类型参数的问题啊... + + genericParamType.add(field.getType()); + + return genericParamType; + } + + + /** + * 如果有一个的某个参数为空是处理不了泛型的.... + * + */ + public static boolean isParamterTypeSame(Object originBean, Object newObject) { + //第一个条件就是:两个类型都相同 + if (ClassUtils.getCloneType(originBean) == ClassUtils.getCloneType(newObject)) { + switch (ClassUtils.getCloneType(originBean)) { + case SIMPLE_TYPE: + return isSimpleTypeSame(originBean, newObject); + case ARRAY: + return isArrayTypeSame(originBean, newObject); + case DEEP_CLONE_CLASS: + return isClassTypeSame(originBean, newObject); + default: + throw new BeanCloneException("判断参数类型的时候出错了"); + } + } + return false; + } + + private static boolean isSimpleTypeSame(Object originBean, Object newObject) { + if (originBean.getClass() == Class.class || newObject.getClass() == Class.class) { + return originBean == newObject; + } + return originBean.getClass() == newObject.getClass(); + } + + private static boolean isArrayTypeSame(Object originBean, Object newObject) { + if (originBean.getClass() == Class.class || newObject.getClass() == Class.class) { + return originBean == newObject; + } + return originBean.getClass() == newObject.getClass(); + } + + + /** + * 不处理泛型的问题了,这个太复杂了 + * 这个方法有严重bug... + * + */ + private static boolean isClassTypeSame(Object originBean, Object newObject) { + //这边是为了判断如果传进来的是集合的泛型或者是参数中的域的类型 + if (ClassUtils.getCloneType(originBean) == ClassUtils.getCloneType(newObject)) { + + if (originBean.getClass() == Class.class || newObject.getClass() == Class.class) { + return originBean == newObject; + } + + if (ClassUtils.getCloneType(originBean) == CloneType.SIMPLE_TYPE) { + return isSimpleTypeSame(originBean, newObject); + } + + if (ClassUtils.getCloneType(originBean) == CloneType.ARRAY) { + return isArrayTypeSame(originBean, newObject); + } + + if (Collection.class.isAssignableFrom(originBean.getClass())) { + return isClassTypeSame(ClassUtils.getGenericParamType(originBean).get(0), ClassUtils.getGenericParamType(newObject).get(0)); + } + + if (Map.class.isAssignableFrom(originBean.getClass())) { + return isClassTypeSame(ClassUtils.getGenericParamType(originBean).get(0), ClassUtils.getGenericParamType(newObject).get + (0)) && isClassTypeSame(ClassUtils.getGenericParamType(originBean).get(1), ClassUtils.getGenericParamType(newObject) + .get(1)); + } + + return originBean.getClass() == newObject.getClass(); + } + + return false; + } + + + @SuppressWarnings("unchecked") + public static Set getClassesByInterface(String[] filePath, Class interfaceClass) { + Set interfaceImpClasses = new HashSet<>(); + Set classes = new HashSet<>(); + + for (String path : filePath) { + //把前面那个"/"去掉 + Set set = getAllClass(new File(interfaceClass.getResource("/" + path.replaceAll("\\.", "/")).getPath()), + path); + interfaceImpClasses.addAll(set); + } + + for (Class clazz : interfaceImpClasses) { + if (!interfaceClass.isAssignableFrom(clazz)) { + continue; + } + + if (!clazz.isInterface() && !clazz.isAnnotation() && !Modifier.isAbstract(clazz.getModifiers())) { + classes.add(clazz); + } + } + return classes; + } + + /** + * @param file 查找路径的File对象 -- 不区分是不是抽象类或者是借口 + * @param packageName 查找的路径(根) + */ + public static Set getAllClass(File file, String packageName) { + Set classSet = new HashSet<>(); + for (File f : Objects.requireNonNull(file.listFiles())) { + + if (f.isDirectory()) { + String packageName1 = packageName + "." + f.getName(); + classSet.addAll(getAllClass(f, packageName1)); + } else if (f.getPath().endsWith(".class")) { + try { + classSet.add(Class.forName(packageName + "." + f.getName().replaceAll(".class", ""))); + } catch (ClassNotFoundException e) { + //TODO 内部类也会单独生成一个.class文件,也被加入这里面。怎么办? + throw new RuntimeException("初始化出错了"); + } + } + } + return classSet; + } + + + /** + * 我在做方法的反射的时候会遇到就是说去反射java自定义的那些方法的时候,出错。 + * 那这个方法就是说返回所有父类的java的类的方法,我不去反射他们 + */ + public static List getSuperClassMethod(Class clazz) { + List methods = new ArrayList<>(); + if (clazz.getSuperclass() == null) { + //java自带的类加载器是null + if (clazz.getClassLoader() == null) { + methods.addAll(Arrays.asList(clazz.getMethods())); + return methods; + } else { + return methods; + } + } else { + return getSuperClassMethod(clazz.getSuperclass()); + } + } + + + /** + * 通过这个方法,拿到方法的参数的名称(用户自己定义的) + * 参考地址:https://blog.csdn.net/mhmyqn/article/details/47294485 + */ + public static String[] getParameterNames(Class clazz, Method method) { + final Class[] parameterTypes = method.getParameterTypes(); + System.out.println("method name : " + method.getName()); + if (parameterTypes.length == 0) { + return null; + } + + //应该还要排除一种情况就是说java自带的方法。我们不处理这类的方法 + List methods = getSuperClassMethod(clazz); + if (methods.contains(method)) { + return null; + } + + + //这边有一个需要注意的就是说如果是static的方法,这边的param的数组数量是正常的,非static方法数量要加一 + String[] parameterNames; + parameterNames = new String[parameterTypes.length]; + // if (Modifier.isStatic(method.getModifiers())) { + // } else { + // parameterNames = new String[parameterTypes.length + 1]; + // } + + final Type[] types = new Type[parameterTypes.length]; + for (int i = 0; i < parameterTypes.length; i++) { + types[i] = Type.getType(parameterTypes[i]); + } + + //拿到类名 比如 org.framework.abc 拿到 abc.class + String className = clazz.getName().substring(clazz.getName().lastIndexOf(".") + 1) + ".class"; + InputStream is = clazz.getResourceAsStream(className); + + try { + ClassReader classReader = new ClassReader(is); + //我们重写了这下面的方法 + classReader.accept(new ClassVisitorUtils(Opcodes.ASM4, method, types, parameterNames), 0); + } catch (IOException e) { + throw new RuntimeException("读取类的信息出错了"); + } + + return parameterNames; + } + + + @SuppressWarnings("unchecked") + public static T newInstance(String className,Class superClass){ + Class classType = null; + try { + classType = Class.forName(className); + } catch (ClassNotFoundException e) { + throw new RuntimeException("生成Class出错",e); + } + + if(!superClass.isAssignableFrom(classType)){ + throw new RuntimeException("类必须继承" + superClass.getName()); + } + + Class classes = (Class) classType; + + try { + return classes.newInstance(); + } catch (InstantiationException e) { + throw new RuntimeException("类实例化出错"+e); + } catch (IllegalAccessException e) { + throw new RuntimeException("类实例化出错了" + e); + } + } + +} diff --git a/src/main/java/util/clazz/ClassVisitorUtils.java b/src/main/java/util/clazz/ClassVisitorUtils.java new file mode 100644 index 0000000..fb16111 --- /dev/null +++ b/src/main/java/util/clazz/ClassVisitorUtils.java @@ -0,0 +1,61 @@ +/* + * @(#) ClassVisitorUtils + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-10-07 22:38:38 + */ + +package util.clazz; + +import jdk.internal.org.objectweb.asm.ClassVisitor; +import jdk.internal.org.objectweb.asm.MethodVisitor; +import jdk.internal.org.objectweb.asm.Opcodes; +import jdk.internal.org.objectweb.asm.Type; + +import java.lang.reflect.Method; +import java.util.Arrays; + +public class ClassVisitorUtils extends ClassVisitor { + + /**需要获取到参数名称的方法*/ + private Method method; + + /***/ + private Type[] types; + + /**存放参数名称的数组*/ + private String[] parameterNames; + + public ClassVisitorUtils(int i) { + super(i); + } + + public ClassVisitorUtils(int i, ClassVisitor classVisitor) { + super(i, classVisitor); + } + + public ClassVisitorUtils(int i, Method method, Type[] types, String[] parameterNames) { + super(i); + this.method = method; + this.types = types; + this.parameterNames = parameterNames; + } + + /**我们重写这个方法在我们的ClassUtils里面去使用*/ + @Override + public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { + Type[] argumentTypes = Type.getArgumentTypes(desc); + if (!method.getName().equals(name) || !Arrays.equals(argumentTypes, types)) { + return null; + } + + /**这个地方注意每次调用结束的重置*/ + MethodVisitorUtils methodVisitorUtils = new MethodVisitorUtils(Opcodes.ASM4, argumentTypes, method, parameterNames); + methodVisitorUtils.resetParamLocation(); + return methodVisitorUtils; + } +} diff --git a/src/main/java/util/clazz/MethodVisitorUtils.java b/src/main/java/util/clazz/MethodVisitorUtils.java new file mode 100644 index 0000000..ca5d141 --- /dev/null +++ b/src/main/java/util/clazz/MethodVisitorUtils.java @@ -0,0 +1,74 @@ +/* + * @(#) MethodVisitorUtils + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-10-07 22:55:01 + */ + +package util.clazz; + +import jdk.internal.org.objectweb.asm.Label; +import jdk.internal.org.objectweb.asm.MethodVisitor; +import jdk.internal.org.objectweb.asm.Type; + +import java.lang.reflect.Method; + +public class MethodVisitorUtils extends MethodVisitor { + + /**方法的参数的位置,因为asm返回的参数有一些没看懂,所以这边使用这个方式来标记位置*/ + private int paramLocation = 0; + + private Type[] argumentTypes; + + /**需要获取到参数名称的方法*/ + private Method method; + + /**存放参数名称的数组*/ + private String[] parameterNames; + + public MethodVisitorUtils(int i) { + super(i); + } + + public MethodVisitorUtils(int i, MethodVisitor methodVisitor) { + super(i, methodVisitor); + } + + public MethodVisitorUtils(int i, Type[] argumentTypes, Method method, String[] parameterNames) { + super(i); + this.parameterNames = parameterNames; + this.method = method; + this.argumentTypes = argumentTypes; + } + + /**这个方法好像不需要...其实他每次都是new一下这个玩意。*/ + public void resetParamLocation() { + this.paramLocation = 0; + } + + @Override + public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) { + + //这里还要注意的就是他比较完 ,全部以后还会去比较 + if (paramLocation > argumentTypes.length - 1) { + return; + } + + //他这里会返回一些奇怪的参数,具体我也不知道为什么,所以这边以我们拿到匹配的参数开始计算 + if (argumentTypes[paramLocation].toString().equals(desc)) { + // 静态方法第一个参数就是方法的参数,如果是实例方法,第一个参数是this + // if (Modifier.isStatic(method.getModifiers())) { + parameterNames[paramLocation] = name; + System.out.println(name); + // } else if (index > 0) { + // parameterNames[paramLocation + 1] = name; + // System.out.println(name); + // } + paramLocation++; + } + } +} diff --git a/src/main/java/util/http/ResponseEntityUtil.java b/src/main/java/util/http/ResponseEntityUtil.java new file mode 100644 index 0000000..401c370 --- /dev/null +++ b/src/main/java/util/http/ResponseEntityUtil.java @@ -0,0 +1,46 @@ + +package util.http; + +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; + +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Date; + +/** + * Spring 返回前端对象,主要用于文件下载 + * @author huangzj + */ +public class ResponseEntityUtil { + + public static ResponseEntity getResponseEntity(File file, String fileName) { + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=\"" + fileName + "\";"); + headers.add(HttpHeaders.EXPIRES, "0"); + headers.add(HttpHeaders.LAST_MODIFIED, new Date().toString()); + headers.add(HttpHeaders.ETAG, String.valueOf(System.currentTimeMillis())); + + return ResponseEntity.ok().headers(headers).contentLength(file.length()).contentType(MediaType.APPLICATION_OCTET_STREAM).body(new + FileSystemResource(file)); + } + + + public static String processFileName(HttpServletRequest request, String fileName) throws UnsupportedEncodingException { + //火狐和其他浏览器好像有区别 + if (request.getHeader(HttpHeaders.USER_AGENT).toUpperCase().indexOf("MSIE") > 0) { + fileName = URLEncoder.encode(fileName, "UTF-8"); + } else { + fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1"); + } + return fileName; + } + + // headers.add("Pragma", "no-cache"); + // headers.add("Cache-Control", "no-cache, no-store, must-revalidate"); +} diff --git a/src/main/java/util/image/CaptchaUtil.java b/src/main/java/util/image/CaptchaUtil.java new file mode 100644 index 0000000..f0990e2 --- /dev/null +++ b/src/main/java/util/image/CaptchaUtil.java @@ -0,0 +1,235 @@ +package util.image; + +import entity.CaptchaItem; +import util.FileUtil; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.geom.AffineTransform; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Random; + +/** + * 验证码生成工具 + * 参考地址:http://blog.csdn.net/ruixue0117/article/details/22829557 + * 参考地址:http://www.iteye.com/topic/573456 + */ +public class CaptchaUtil { + /** + * 验证码处理对象,这边直接采用默认的配置,可以通过set方式进行设置 + */ + private CaptchaItem captchaItem = new CaptchaItem(); + + + /** + * 可支持生成随机验证码 + */ + public String generalCode() { + StringBuilder generalCode = new StringBuilder(); + Random random = new Random(); + for (int i = 0; i < captchaItem.getCodeLength(); i++) { + int position = random.nextInt(captchaItem.getCodeValue().length()-1); + generalCode.append(captchaItem.getCodeValue().charAt(position)); + } + return generalCode.toString(); + } + + /** + * 生成验证码图片.这边可支持自定义的code传入 + * @param imagePath 图片地址 + * @param captchaCode 验证码数值 + */ + public void generateCaptchaImage(String imagePath, String captchaCode){ + File imageFile = FileUtil.createGetFile(imagePath); + if(imageFile == null){ + throw new RuntimeException("文件不存在或者生成失败"); + } + BufferedImage image = generateBufferedImage(captchaCode); + try { + ImageIO.write(image, "jpg", new FileOutputStream(imageFile)); + } catch (IOException e) { + throw new RuntimeException("文件生成失败"); + } + } + + /** + * 生成验证码图片.code按照设定的方式进行处理 + * @param imagePath 图片地址 + */ + public void generateCaptchaImage(String imagePath){ + File imageFile = FileUtil.createGetFile(imagePath); + if(imageFile == null){ + throw new RuntimeException("文件不存在或者生成失败"); + } + BufferedImage image = generateBufferedImage(generalCode()); + try { + ImageIO.write(image, "jpg", new FileOutputStream(imageFile)); + } catch (IOException e) { + throw new RuntimeException("文件生成失败"); + } + } + + + /** + * 设置BufferedImage对象,实现图片流的处理 + */ + private BufferedImage generateBufferedImage(String captchaCode){ + BufferedImage bi = new BufferedImage((int)captchaItem.getWidth(), (int)captchaItem.getHeight() , BufferedImage.TYPE_INT_RGB); + Graphics2D g2 = bi.createGraphics(); + //判断是否生成随机颜色还是通过设置的颜色进行处理 + Color backColor =captchaItem.isBackgroundRandom()? getColor(new Random().nextInt(100), new Random().nextInt(200)+100): getColor(captchaItem.getCaptchaColor(),captchaItem.getCaptchaColor()); + //设置背景色 + setColorTone(g2,backColor); + //设置干扰线 + setVictimLine(g2); + // 添加噪点 + setHotPixel(bi); + // 使图片扭曲 + shear(g2, (int)captchaItem.getWidth(), (int)captchaItem.getHeight(), backColor); + //设置写入文字的属性以及验证码 + setCaptchaCode(g2,captchaCode); + g2.dispose(); + return bi; + } + + private void setCaptchaCode(Graphics2D g2, String captchaCode) { + Color fontColor =captchaItem.isCaptchaColorRandom()? getColor(new Random().nextInt(100), new Random().nextInt(200)+100): getColor(captchaItem.getCaptchaColor(),captchaItem.getCaptchaColor()); + g2.setColor(fontColor); + double fontSize = captchaItem.getHeight() - 4; + g2.setFont(captchaItem.getFont()); + char[] chars = captchaCode.toCharArray(); + + for (int i = 0; i < captchaCode.length(); i++) { + AffineTransform transform = new AffineTransform(); + transform.setToRotation(Math.PI / 4 * new Random().nextDouble() * (new Random().nextBoolean() ? 1 : -1), + (captchaItem.getWidth() / captchaCode.length()) * i + fontSize / 2, captchaItem.getHeight() / 2); + g2.setTransform(transform); + g2.drawChars(chars, i, 1, (int)((captchaItem.getWidth() - 10) / captchaCode.length()) * i + 5, (int)(captchaItem.getHeight() / 2 + fontSize / 2 - 10)); + } + } + + private void setHotPixel(BufferedImage bi) { + Random random = new Random(); + // 噪声率 + float yawpRate = 0.05f; + int area = (int) (yawpRate * captchaItem.getWidth() * captchaItem.getHeight()); + for (int i = 0; i < area; i++) { + int x = random.nextInt((int)captchaItem.getWidth()); + int y = random.nextInt((int)captchaItem.getHeight()); + int rgb = getRandomIntColor(); + bi.setRGB(x, y, rgb); + } + } + + private void setVictimLine(Graphics2D g2) { + //绘制干扰线 设置线条的颜色 + Random random = new Random(); + g2.setColor(getColor(160, 200)); + for (int i = 0; i < 20; i++) { + int x = random.nextInt((int)captchaItem.getWidth() - 1); + int y = random.nextInt((int)captchaItem.getHeight() - 1); + int xl = random.nextInt(6) + 1; + int yl = random.nextInt(12) + 1; + g2.drawLine(x, y, x + xl + 40, y + yl + 20); + } + } + + private void setColorTone(Graphics2D g2,Color backColor) { + //设置色调 + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + // 设置边框色 + g2.setColor(Color.GRAY); + g2.fillRect(0, 0,(int)captchaItem.getWidth(), (int)captchaItem.getHeight() ); + // 设置背景色 + g2.setColor(backColor); + g2.fillRect(0, 2,(int)captchaItem.getWidth(), (int)captchaItem.getHeight() - 4); + } + + private int getRandomIntColor() { + int[] rgb = getRandomRgb(); + int color = 0; + for (int c : rgb) { + color = color << 8; + color = color | c; + } + return color; + } + + private int[] getRandomRgb() { + int[] rgb = new int[3]; + for (int i = 0; i < 3; i++) { + rgb[i] = new Random().nextInt(255); + } + return rgb; + } + + + //图片扭曲 + private void shear(Graphics g, int w1, int h1, Color color) { + shearX(g, w1, h1, color); + shearY(g, w1, h1, color); + } + + private void shearX(Graphics g, int w1, int h1, Color color) { + int period = new Random().nextInt(2); + int frames = 1; + int phase = new Random().nextInt(2); + for (int i = 0; i < h1; i++) { + double d = (double) (period >> 1) + * Math.sin((double) i / (double) period + + (6.2831853071795862D * (double) phase) + / (double) frames); + g.copyArea(0, i, w1, 1, (int) d, 0); + g.setColor(color); + g.drawLine((int) d, i, 0, i); + g.drawLine((int) d + w1, i, w1, i); + } + } + + private void shearY(Graphics g, int w1, int h1, Color color) { + int period = new Random().nextInt(40) + 10; + int frames = 20; + int phase = 7; + for (int i = 0; i < w1; i++) { + double d = (double) (period >> 1) + * Math.sin((double) i / (double) period + + (6.2831853071795862D * (double) phase) + / (double) frames); + g.copyArea(i, 0, 1, h1, 0, (int) d); + g.setColor(color); + g.drawLine(i, (int) d, i, 0); + g.drawLine(i, (int) d + h1, i, h1); + } + } + + /** + * 生成随机背景颜色 + */ + private Color getColor(int fc, int bc) { + if (fc > 255){ + fc = 254; + } + if (bc > 255){ + bc = 255; + } + int r = fc + new Random().nextInt(bc - fc); + int g = fc + new Random().nextInt(bc - fc); + int b = fc + new Random().nextInt(bc - fc); + return new Color(r, g, b); + } + + + /** + * -------------------------------对验证码对象进行查看和设置值---------------------- + */ + public CaptchaItem getCaptchaItem() { + return captchaItem; + } + + public void setCaptchaItem(CaptchaItem captchaItem1) { + captchaItem = captchaItem1; + } +} diff --git a/src/main/java/util/image/PicturesCompressUtil.java b/src/main/java/util/image/PicturesCompressUtil.java new file mode 100644 index 0000000..f206e90 --- /dev/null +++ b/src/main/java/util/image/PicturesCompressUtil.java @@ -0,0 +1,28 @@ +package util.image; + +import net.coobird.thumbnailator.Thumbnails; +import util.FileUtil; + +import java.io.IOException; + +public class PicturesCompressUtil { + /** + * 设置压缩之后的图片比例(默认比例是50%) + */ + private float scale = (float)0.5; + + public float getScale() { + return scale; + } + + public void setScale(float scale) { + this.scale = scale; + } + + public void compress(String srcPath, String desPath) throws IOException { + if ( !FileUtil.fileExist(srcPath)){ + throw new RuntimeException("文件路径不存在"); + } + Thumbnails.of(srcPath).scale(scale).toFile(desPath); + } +} diff --git a/src/main/java/util/image/QRCodeUtil.java b/src/main/java/util/image/QRCodeUtil.java new file mode 100644 index 0000000..f42ab5d --- /dev/null +++ b/src/main/java/util/image/QRCodeUtil.java @@ -0,0 +1,131 @@ +package util.image; + +import com.google.zxing.BarcodeFormat; +import com.google.zxing.MultiFormatWriter; +import com.google.zxing.WriterException; +import com.google.zxing.common.BitMatrix; +import entity.QRCodeItem; +import org.apache.commons.lang3.StringUtils; +import util.FileUtil; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +/** + * @author 黄志军 + * 二维码生成工具 + * 参考地址:http://blog.csdn.net/fly_to_the_winds/article/details/62042142 + */ +public class QRCodeUtil { + + private QRCodeItem qrCodeItem = new QRCodeItem(); + + /** + * 生成一个最原始的二维码图片对象,后面的方法可以用于自由组合或者直接该方法输出图片 + */ + public BufferedImage createQrCodeImage(){ + BufferedImage image; + try { + MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); + //这边如果内容为""或者为空会报错,如果没有内容用" "给他 + String content = StringUtils.isBlank(qrCodeItem.getContent())?" ":qrCodeItem.getContent(); + // 参数顺序分别为:编码内容,编码类型,生成图片宽度,生成图片高度,设置参数 (这边会设置参数但是如果不调用logo和content相关的代码,依然不会生成对应的图片和文字) + BitMatrix bm = multiFormatWriter.encode(content, BarcodeFormat.QR_CODE, qrCodeItem.getWidth(), qrCodeItem.getHeight(), qrCodeItem.getHints()); + int w = bm.getWidth(); + int h = bm.getHeight(); + image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); + // 开始利用二维码数据创建Bitmap图片,分别设为黑(0xFFFFFFFF)白(0xFF000000)两色 + for (int x = 0; x < w; x++) { + for (int y = 0; y < h; y++) { + image.setRGB(x, y, bm.get(x, y) ? qrCodeItem.getStripeColor().getRGB() : qrCodeItem.getBackgroundColor().getRGB()); + } + } + } catch (WriterException e) { + throw new RuntimeException("生成BufferedImage失败"); + } + return image; + } + + + /** + * 通过BufferedImage进行logo绘制,这边返回一个携带logo信息的BufferedImage对象 + */ + public BufferedImage drawLogo(BufferedImage image){ + try { + Graphics2D g2 = image.createGraphics(); + //logo + File logoPic = new File(qrCodeItem.getLogoPath()); + BufferedImage logo = ImageIO.read(logoPic); + //设置logo大小 + int widthLogo = logo.getWidth(null)>image.getWidth()*3/10?(image.getWidth()*3/10):logo.getWidth(null), + heightLogo = logo.getHeight(null)>image.getHeight()*3/10?(image.getHeight()*3/10):logo.getWidth(null); + //开始绘制图片 + if (qrCodeItem.isDiyLogoPosition()){ + g2.drawImage(logo, qrCodeItem.getLogoX(),qrCodeItem.getLogoY() ,widthLogo, heightLogo, null); + }else{ + g2.drawImage(logo, (image.getWidth() - widthLogo) / 2, (image.getHeight() - heightLogo) / 2, widthLogo, heightLogo, null); + } + g2.dispose(); + logo.flush(); + return image; + } catch (IOException e) { + throw new RuntimeException("画logo失败了"); + } + } + + /** + * 通过BufferedImage进行内容的绘制,这边返回一个携带内容的BufferedImage对象 + * 这边只是提供一个简单的模板写法,如果需要根据文字内容进行自适应需要修改这么方法的写法 + */ + public BufferedImage drawContent(BufferedImage image){ + BufferedImage image1 = null; + //在文字内容不为空的情况下进行处理 + if(StringUtils.isNotBlank(qrCodeItem.getContent())){ + //生成新的画板 + image1 = new BufferedImage(qrCodeItem.getWidth(),qrCodeItem.getHeight(),BufferedImage.TYPE_4BYTE_ABGR); + Graphics2D g2 = image1.createGraphics(); + //将二维码画在新画板上 + g2.drawImage(image,0,0, qrCodeItem.getWidth(),qrCodeItem.getHeight(),null); + //设置画笔信息 + g2.setColor(qrCodeItem.getContentColor()); + g2.setFont(qrCodeItem.getContentFont()); + //这里不判断文字的长度,只设置书写一行的文字。 + if(qrCodeItem.isDiyContentPosition()){ + g2.drawString(qrCodeItem.getContent(),qrCodeItem.getContentX(),qrCodeItem.getContentY()); + }else{ + int strWidth = g2.getFontMetrics().stringWidth(qrCodeItem.getContent()); + g2.drawString(qrCodeItem.getContent(),(qrCodeItem.getWidth()-strWidth)/2,image.getHeight()-g2.getFont().getSize() -10); + } + g2.dispose(); + image1.flush(); + } + return image1==null? image : image1; + } + + public void createQrCodeWithImage(String filePath, BufferedImage image){ + File file = FileUtil.createGetFile(filePath); + if (file == null){ + throw new RuntimeException("文件不存在或者创建失败"); + } + try { + ImageIO.write(image,qrCodeItem.getSuffix(),file); + } catch (IOException e) { + throw new RuntimeException("文件创建失败"); + } + } + + + /** + * -------------------------------对二维码对象进行查看和设置值---------------------- + */ + public QRCodeItem getQrCodeItem() { + return qrCodeItem; + } + + public void setQrCodeItem(QRCodeItem qrCodeItem) { + this.qrCodeItem = qrCodeItem; + } +} diff --git a/src/main/java/util/itext/FillTemplateHelper.java b/src/main/java/util/itext/FillTemplateHelper.java new file mode 100644 index 0000000..aa2e29f --- /dev/null +++ b/src/main/java/util/itext/FillTemplateHelper.java @@ -0,0 +1,196 @@ +/* + * @(#) FillTemplateHelper + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-11-13 20:19:49 + */ + +package util.itext; + +import com.itextpdf.text.*; +import com.itextpdf.text.pdf.*; +import com.itextpdf.tool.xml.ElementList; +import com.itextpdf.tool.xml.XMLWorker; +import com.itextpdf.tool.xml.XMLWorkerHelper; +import com.itextpdf.tool.xml.css.CssFile; +import com.itextpdf.tool.xml.css.StyleAttrCSSResolver; +import com.itextpdf.tool.xml.html.TagProcessorFactory; +import com.itextpdf.tool.xml.parser.XMLParser; +import com.itextpdf.tool.xml.pipeline.css.CSSResolver; +import com.itextpdf.tool.xml.pipeline.css.CssResolverPipeline; +import com.itextpdf.tool.xml.pipeline.end.ElementHandlerPipeline; +import com.itextpdf.tool.xml.pipeline.html.HtmlPipeline; +import com.itextpdf.tool.xml.pipeline.html.HtmlPipelineContext; + +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +/** + * @author iText + */ +public class FillTemplateHelper extends PdfPageEventHelper { + + // initialized in constructor + protected PdfReader reader; + protected Rectangle pageSize; + protected Rectangle body; + protected float mLeft, mRight, mTop, mBottom; + protected Rectangle to; + protected Rectangle from; + protected Rectangle date; + protected Rectangle footer; + protected BaseFont basefont; + protected Font font; + // initialized with setter + protected String sender = ""; + protected String receiver = ""; + // initialized upon opening the document + protected PdfTemplate background; + protected PdfTemplate total; + + public FillTemplateHelper(String stationery) throws IOException, DocumentException { + reader = new PdfReader(stationery); + AcroFields fields = reader.getAcroFields(); + pageSize = reader.getPageSize(1); + body = fields.getFieldPositions("body").get(0).position; + mLeft = body.getLeft() - pageSize.getLeft(); + mRight = pageSize.getRight() - body.getRight(); + mTop = pageSize.getTop() - body.getTop(); + mBottom = body.getBottom() - pageSize.getBottom(); + footer = fields.getFieldPositions("footer").get(0).position; + basefont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); + font = new Font(basefont, 12); + + } + + public static ElementList parseHtml(String content, String style, TagProcessorFactory tagProcessors) throws IOException { + // CSS + CSSResolver cssResolver = new StyleAttrCSSResolver(); + CssFile cssFile = XMLWorkerHelper.getCSS(new FileInputStream(style)); + cssResolver.addCss(cssFile); + // HTML + HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); + htmlContext.setTagFactory(tagProcessors); + htmlContext.autoBookmark(false); + // Pipelines + ElementList elements = new ElementList(); + ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null); + HtmlPipeline html = new HtmlPipeline(htmlContext, end); + CssResolverPipeline css = new CssResolverPipeline(cssResolver, html); + // XML Worker + XMLWorker worker = new XMLWorker(css, true); + XMLParser p = new XMLParser(worker); + p.parse(new FileInputStream(content), Charset.forName("utf8")); + return elements; + } + + public static ElementList parseHtmlContent(String content, String style, TagProcessorFactory tagProcessors) throws IOException { + // CSS + CSSResolver cssResolver = new StyleAttrCSSResolver(); + CssFile cssFile = XMLWorkerHelper.getCSS(new FileInputStream(style)); + cssResolver.addCss(cssFile); + // HTML + HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); + htmlContext.setTagFactory(tagProcessors); + htmlContext.autoBookmark(false); + // Pipelines + ElementList elements = new ElementList(); + ElementHandlerPipeline end = new ElementHandlerPipeline(elements, null); + HtmlPipeline html = new HtmlPipeline(htmlContext, end); + CssResolverPipeline css = new CssResolverPipeline(cssResolver, html); + // XML Worker + XMLWorker worker = new XMLWorker(css, true); + XMLParser p = new XMLParser(worker); + try { + p.parse(getStringStream(content), Charset.forName("utf8")); + } catch (Exception e) { + e.printStackTrace(); + } + return elements; + } + + public static InputStream getStringStream(String sInputString) { + if (sInputString != null && !sInputString.trim().equals("")) { + try { + ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(sInputString.getBytes("UTF-8")); + return tInputStringStream; + } catch (Exception ex) { + ex.printStackTrace(); + } + } + return null; + } + + public void setSender(String sender) { + this.sender = sender; + } + + public void setReceiver(String receiver) { + this.receiver = receiver; + } + + public Rectangle getPageSize() { + return pageSize; + } + + public float getmLeft() { + return mLeft; + } + + public float getmRight() { + return mRight; + } + + public float getmTop() { + return mTop; + } + + public float getmBottom() { + return mBottom; + } + + public Rectangle getBody() { + return body; + } + + @Override + public void onOpenDocument(PdfWriter writer, Document document) { + background = writer.getImportedPage(reader, 1); + total = writer.getDirectContent().createTemplate(30, 15); + } + + @Override + public void onEndPage(PdfWriter writer, Document document) { + PdfContentByte canvas = writer.getDirectContentUnder(); + // background + canvas.addTemplate(background, 0, 0); + try { + ColumnText ct = new ColumnText(canvas); + ct.setSimpleColumn(footer); + ct.addText(new Chunk(" " + writer.getPageNumber(), font)); + ct.addText(new Chunk(Image.getInstance(total), 0, 0)); + ct.go(); + } catch (DocumentException e) { + // can never happen, but if it does, we want to know! + throw new ExceptionConverter(e); + + } + } + + @Override + public void onCloseDocument(PdfWriter writer, Document document) { + // 关闭时可以知道总页数,写入页码 + String s = "/ " + (writer.getPageNumber()); + Phrase p = new Phrase(12, s, font); + ColumnText.showTextAligned(total, Element.ALIGN_LEFT, p, 0.5f, 0, 0); + } + + +} \ No newline at end of file diff --git a/src/main/java/util/itext/PDFUtils.java b/src/main/java/util/itext/PDFUtils.java new file mode 100644 index 0000000..ba55ab0 --- /dev/null +++ b/src/main/java/util/itext/PDFUtils.java @@ -0,0 +1,175 @@ + + +package util.itext; + +import com.itextpdf.text.*; +import com.itextpdf.text.pdf.*; +import com.itextpdf.tool.xml.ElementList; +import com.itextpdf.tool.xml.html.Tags; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by huangzhijun on 2017/8/22. + * itext 用于生成pdf的工具类 + */ +public class PDFUtils { + /** + * 通过模板生成pdf文件 + * + * @param templatePath 模板路径 + * @param resultPath 生成路径 + * @param cssPath css路径 + * @param content 生成pdf的内容 + * @throws Exception + */ + public static void generalPDF(String templatePath, String resultPath, String cssPath, String content) throws Exception { + // 读取模板 + FillTemplateHelper template = new FillTemplateHelper(templatePath); + Document document = new Document(template.getPageSize(), + template.getmLeft(), template.getmRight(), template.getmTop(), template.getmBottom()); + // 创建pdf写对象 + PdfWriter writer = null; + FileOutputStream outputStream = new FileOutputStream(resultPath); + try { + writer = PdfWriter.getInstance(document, outputStream); + } catch (Exception e) { + e.printStackTrace(); + } + writer.setPageEvent(template); + //打开文件 + document.open(); + // 填充数据到文件中 + ElementList elements = FillTemplateHelper.parseHtmlContent(content, cssPath, Tags.getHtmlTagProcessorFactory()); + for (Element e : elements) { + document.add(e); + } + writer.setPageEmpty(false); + //关闭流操作 + document.close(); + writer.close(); + outputStream.close(); + } + + /** + * PDF盖章操作 + * 在PDF文档的最后一页盖章 + * @param RES 需要盖章的pdf文件地址 + * @param DEST 生成的新pdf文件地址 + * @param SEAL 印章图片的地址 + * @param company 落款名称及部门 + * @param dateName 落款时间名称 + * @throws DocumentException + * @throws IOException + */ + public static void sealDocument(String RES, String DEST, String SEAL, String company, String dateName, String time) throws DocumentException, IOException { + + PdfReader reader = new PdfReader(RES); + int numberOfPages = reader.getNumberOfPages(); + Rectangle pageSize = reader.getPageSize(1); + Document doc = new Document(pageSize); + PdfWriter writer_ = PdfWriter.getInstance(doc, new FileOutputStream(DEST)); + // 打开文档 + doc.open(); + PdfContentByte cb = writer_.getDirectContent(); + for (int i = 0; i < numberOfPages; ) { + { + i++; + //设置指定页的PagSize 包含Rotation(页面旋转度) +// doc.setPageSize(reader.getPageSizeWithRotation(i)); + //创建一个新的页面,需要注意的调用NewPage() ,PdfContentByte cb 对象会默认清空 + doc.newPage(); +// //获取指定页面的旋转度 +// int rotation = reader.getPageRotation(i); + //获取加载PDF的指定页内容 + PdfImportedPage page1 = writer_.getImportedPage(reader, i); + + //添加内容页到新的页面,并更加旋转度设置对应的旋转 + /* switch (rotation) { + case 90: + cb.addTemplate(page1, 0, -1, 1, 0, 0, reader.getPageSizeWithRotation(i).getHeight()); + break; + case 180: + cb.addTemplate(page1, -1, 0, 0, -1, reader.getPageSizeWithRotation(i).getWidth(), reader.getPageSizeWithRotation(i).getHeight()); + break; + case 270: + cb.addTemplate(page1, 0, 1, -1, 0, reader.getPageSizeWithRotation(i).getWidth(), 0); + break; + default: + cb.addTemplate(page1, 1, 0, 0, 1, 0, 0);//等同于 cb.AddTemplate(page1, 0,0) + break; + }*/ + cb.addTemplate(page1, 0, 0); + + if (i == numberOfPages)//如果是最后一页加入指定的图片 + { + //创建一个图片对象 + Image img = Image.getInstance(SEAL); + //设置图片的指定大小 + //img.ScaleToFit(140F, 320F); + //按比例缩放 + img.scalePercent(100); + BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", com.itextpdf.text.pdf.BaseFont.NOT_EMBEDDED); + cb.beginText(); + //设置字体 大小 + cb.setFontAndSize(bf, 13); + //指定添加文字的绝对位置 + cb.setTextMatrix(350, 75); + //增加文本 + cb.showText(company); + //结束 + cb.endText(); + cb.beginText(); + //设置字体 大小 + cb.setFontAndSize(bf, 13); + //指定添加文字的绝对位置 + cb.setTextMatrix(350, 55); + if (org.apache.commons.lang3.StringUtils.isBlank(time)) { + Date date = new Date(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + time = format.format(date); + } + //增加文本 + cb.showText(dateName + ":" + time); + //结束 + cb.endText(); + //把图片增加到内容页的指定位子 b width c height e bottom f left +// use addImage(image, image_width, 0, 0, image_height, x, y) + cb.addImage(img, 130, 0, 0, 130, 400, 55); + } + } + } + System.out.println("盖章成功"); + doc.close(); + writer_.close(); + reader.close(); + + } + + /** + * 将页面传过来的内容重新组装为html + * @param content + * @return + */ + public String transToHtml(String content) { + StringBuffer sb = new StringBuffer(); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append(""); + sb.append("

"); + sb.append("
"); + sb.append(content); + sb.append("
"); + sb.append("
"); + sb.append(""); + sb.append(""); + return sb.toString(); + } + + +} diff --git a/src/main/java/util/redis/RedisUtil.java b/src/main/java/util/redis/RedisUtil.java new file mode 100644 index 0000000..784992c --- /dev/null +++ b/src/main/java/util/redis/RedisUtil.java @@ -0,0 +1,527 @@ + +package util.redis; + +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * 网上copy的别人写的redis的工具 + * @author QLQ + * 基于spring和redis的redisTemplate工具类 + * 针对所有的hash 都是以h开头的方法 + * 针对所有的Set 都是以s开头的方法 不含通用方法 + * 针对所有的List 都是以l开头的方法 + */ +public class RedisUtil { + + private RedisTemplate redisTemplate; + + public void setRedisTemplate(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + //=============================common============================ + + /** + * 指定缓存失效时间 + * @param key 键 + * @param time 时间(秒) + */ + public boolean expire(String key, long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据key 获取过期时间 + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 + */ + public long getExpire(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + + /** + * 判断key是否存在 + * @param key 键 + * @return true 存在 false不存在 + */ + public boolean hasKey(String key) { + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除缓存 + * @param key 可以传一个值 或多个 + */ + @SuppressWarnings("unchecked") + public void del(String... key) { + if (key != null && key.length > 0) { + if (key.length == 1) { + redisTemplate.delete(key[0]); + } else { + redisTemplate.delete(CollectionUtils.arrayToList(key)); + } + } + } + + //============================String============================= + + /** + * 普通缓存获取 + * @param key 键 + * @return 值 + */ + public Object get(String key) { + return key == null ? null : redisTemplate.opsForValue().get(key); + } + + /** + * 普通缓存放入 + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public boolean set(String key, Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + } + + /** + * 普通缓存放入并设置时间 + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public boolean set(String key, Object value, long time) { + try { + if (time > 0) { + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + } else { + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 递增 + * @param key 键 + */ + public long incr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + + /** + * 递减 + * @param key 键 + */ + public long decr(String key, long delta) { + if (delta < 0) { + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + + //================================Map================================= + + /** + * HashGet + * @param key 键 不能为null + * @param item 项 不能为null + * @return 值 + */ + public Object hget(String key, String item) { + return redisTemplate.opsForHash().get(key, item); + } + + /** + * 获取hashKey对应的所有键值 + * @param key 键 + * @return 对应的多个键值 + */ + public Map hmget(String key) { + return redisTemplate.opsForHash().entries(key); + } + + /** + * HashSet + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public boolean hmset(String key, Map map) { + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * HashSet 并设置时间 + * @param key 键 + * @param map 对应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public boolean hmset(String key, Map map, long time) { + try { + redisTemplate.opsForHash().putAll(key, map); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public boolean hset(String key, String item, Object value, long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除hash表中的值 + * @param key 键 不能为null + * @param item 项 可以使多个 不能为null + */ + public void hdel(String key, Object... item) { + redisTemplate.opsForHash().delete(key, item); + } + + /** + * 判断hash表中是否有该项的值 + * @param key 键 不能为null + * @param item 项 不能为null + * @return true 存在 false不存在 + */ + public boolean hHasKey(String key, String item) { + return redisTemplate.opsForHash().hasKey(key, item); + } + + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + */ + public double hincr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, by); + } + + /** + * hash递减 + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + */ + public double hdecr(String key, String item, double by) { + return redisTemplate.opsForHash().increment(key, item, -by); + } + + //============================set============================= + + /** + * 根据key获取Set中的所有值 + * @param key 键 + */ + public Set sGet(String key) { + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 根据value从一个set中查询,是否存在 + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public boolean sHasKey(String key, Object value) { + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将数据放入set缓存 + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSet(String key, Object... values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 将set数据放入缓存 + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSetAndTime(String key, long time, Object... values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if (time > 0){ + expire(key, time); + } + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 获取set缓存的长度 + * @param key 键 + */ + public long sGetSetSize(String key) { + try { + return redisTemplate.opsForSet().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 移除值为value的 + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + */ + public long setRemove(String key, Object... values) { + try { + Long count = redisTemplate.opsForSet().remove(key, values); + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + //===============================list================================= + + /** + * 获取list缓存的内容 + * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + */ + public List lGet(String key, long start, long end) { + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 获取list缓存的长度 + * @param key 键 + */ + public long lGetListSize(String key) { + try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 通过索引 获取list中的值 + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 + */ + public Object lGetIndex(String key, long index) { + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + */ + public boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + */ + public boolean lSet(String key, Object value, long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + */ + public boolean lSet(String key, List value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + */ + public boolean lSet(String key, List value, long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据索引修改list中的某条数据 + * @param key 键 + * @param index 索引 + * @param value 值 + */ + public boolean lUpdateIndex(String key, long index, Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 移除N个值为value + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public long lRemove(String key, long count, Object value) { + try { + Long remove = redisTemplate.opsForList().remove(key, count, value); + return remove; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + +} \ No newline at end of file diff --git a/src/main/java/util/time/DateTimeUtil.java b/src/main/java/util/time/DateTimeUtil.java new file mode 100644 index 0000000..0c75cdb --- /dev/null +++ b/src/main/java/util/time/DateTimeUtil.java @@ -0,0 +1,210 @@ + +package util.time; + + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.TimeZone; + +import static additive.ValidTool.assertIsTrue; + +public class DateTimeUtil { + + private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd"; + private static final String DEFAULT_TIME_PATTERN = "HH:mm:ss"; + private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; + private static final String DEFAULT_PATTERN_CLOSE = "yyyyMMddHHmmss"; + private static final String DATE_TIME_MINUTE_PATTERN = "yyyy-MM-dd HH:mm"; + private static final String ISO_8601_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZZ"; + private static final String lO_G_PARAM_TIME_PATTERN = "yyyy-MM-dd-HHmm"; + + + /** + * 获取当天日期,"yyyy-MM-dd" + */ + public static String getCurrentDate() { + return LocalDate.now().toString(); + } + + /** + * 获取当前时间,yyyy-MM-dd HH:mm:ss + */ + public static String getCurrentDateTime() { + return LocalDateTime.now().format(DateTimeFormatter.ofPattern(DEFAULT_PATTERN)); + } + + + /** + * 获取与所给日期间隔要求天数的日期 + * @param localDate 参考日期, yyyy-MM-dd + * @param dayOffset 间隔天数 + */ + public static String plusDay(final String localDate, final int dayOffset) { + assertIsTrue(dayOffset >= 0, "偏移量必须大于0"); + return LocalDate.parse(localDate).plusDays(dayOffset).format(DateTimeFormatter.ISO_LOCAL_DATE); + } + + /** + * 获取与所给日期间隔要求天数的日期 + * @param localDate 参考日期, yyyy-MM-dd + * @param dayOffset 间隔天数 + */ + public static String minusDay(final String localDate, final int dayOffset) { + assertIsTrue(dayOffset >= 0, "偏移量必须大于0"); + return LocalDate.parse(localDate).minusDays(dayOffset).format(DateTimeFormatter.ISO_LOCAL_DATE); + } + + + /** + * 将日期时间转换成指定格式的时间 + */ + public static String dateToString(String pattern, LocalDateTime dateTime) { + return DateTimeFormatter.ofPattern(pattern).format(dateTime); + } + + /** + * 时间戳转换为指定格式字符串(秒) + */ + public static String dateToString(String pattern, long epochSecond, TimeZone timeZone) { + return dateToString(pattern, LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), timeZone.toZoneId())); + } + + + /** + * 时间戳转成指定格式字符串(毫秒) + */ + public static String timestampToString(String pattern, long timestamp, TimeZone timeZone) { + return dateToString(pattern, LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), timeZone.toZoneId())); + } + + public static String dateToString(String pattern, ZonedDateTime dateTime) { + return DateTimeFormatter.ofPattern(pattern) + .format(dateTime); + } + + /** + * 将LocalDateTime转换成指定格式字符串 + */ + public static String localTimeToString(LocalDateTime localDateTime, String pattern) { + LocalTime localTime = localDateTime.toLocalTime(); + return DateTimeFormatter.ofPattern(pattern).format(localTime); + } + + /** + * 将时间格式换成"HH:mm:ss" 格式 + */ + public static String formatDateToTime(LocalDateTime date) { + return DateTimeUtil.dateToString(DEFAULT_TIME_PATTERN, date); + } + + /** + * 将时间格式换成"yyyy-MM-dd" 格式 + */ + public static String formatDateToDay(LocalDateTime date) { + return DateTimeUtil.dateToString(DEFAULT_DATE_PATTERN, date); + } + + /** + * @param timeString yyyy-MM-dd-HHmm + * @return yyyy-MM-dd HH:mm 格式的时间字符串 + */ + public static String paramTimeFormat(String timeString) throws ParseException { + Date newDate = new SimpleDateFormat(lO_G_PARAM_TIME_PATTERN).parse(timeString); + return new SimpleDateFormat(DATE_TIME_MINUTE_PATTERN).format(newDate); + } + + + /** + * 获取当前时间,yyyy-MM-dd HH:mm:ss + * 注意:使用当前系统默认的时区 + */ + public static LocalDateTime getNow() { + return LocalDateTime.now(); + } + + /** + * 将时间戳(单位:毫秒)转成 LocalDateTime + */ + public static LocalDateTime timeStampToLocalDateTime(long timeStamp) { + return Instant.ofEpochMilli(timeStamp).atZone(ZoneId.systemDefault()).toLocalDateTime(); + } + + /** + * 将时间戳(单位为:秒)转成 LocalDateTime + */ + public static LocalDateTime epochSecondToLocalDateTime(long epochSecond, TimeZone timeZone) { + return epochSecondToLocalDateTime(epochSecond, timeZone.toZoneId()); + } + + + /** + * 将时间戳(单位为:秒)转成 LocalDateTime + */ + public static LocalDateTime epochSecondToLocalDateTime(long epochSecond, ZoneId zoneId) { + return Instant.ofEpochSecond(epochSecond).atZone(zoneId).toLocalDateTime(); + } + + /** + * LocalDateTime转成时间戳:毫秒 + */ + public static long toEpochMilli(LocalDateTime localDateTime, TimeZone timeZone) { + return Instant.from(localDateTime.atZone(timeZone.toZoneId())).toEpochMilli(); + } + + /** + * 将字符串转换为LocalDateTime + */ + public static LocalDateTime stringToLocalDateTime(String dateStr, String pattern) { + DateTimeFormatter df = DateTimeFormatter.ofPattern(pattern); + return LocalDateTime.parse(dateStr, df); + } + + + /** + * 到天的字符串,转成LocalDateTime + * @param dayStr 如"2017-11-16" + * @return 返回0点0分0秒的时间 如 "2017-11-16 00:00:00" + */ + public static LocalDateTime dayStringToLocalDateTime(String dayStr) { + return LocalDate.parse(dayStr, DateTimeFormatter.ofPattern(DEFAULT_DATE_PATTERN)).atTime(0, 0, 0); + } + + /** + * LocalDateTime转成时间戳:秒 + */ + public static long toEpochSecond(LocalDateTime localDateTime, TimeZone timeZone) { + return Instant.from(localDateTime.atZone(timeZone.toZoneId())).getEpochSecond(); + } + + + public static long toEpochSecond(LocalDateTime localDateTime, ZoneId zoneId) { + return localDateTime.atZone(zoneId).toEpochSecond(); + } + + + /** + * 获取当前时间的秒数 + */ + public static long getNowSeconds(){ + return + LocalDateTime.now().toEpochSecond(ZoneOffset.MAX); + } + + /** + * 是否同一个时间点 + */ + public static boolean isTheSameDay(LocalDateTime startDate, LocalDateTime endDate) { + return startDate.toLocalDate() + .isEqual(endDate.toLocalDate()); + } + + /** + * LocalDateTime 转成时间戳 + */ + public static Instant toInstant(LocalDateTime endDate, TimeZone timeZone) { + return endDate.atZone(timeZone.toZoneId()).toInstant(); + } +} diff --git a/src/main/java/util/time/FillFullTimeValueUtil.java b/src/main/java/util/time/FillFullTimeValueUtil.java new file mode 100644 index 0000000..4eff825 --- /dev/null +++ b/src/main/java/util/time/FillFullTimeValueUtil.java @@ -0,0 +1,119 @@ + + +package util.time; + +import com.google.common.collect.Lists; +import entity.OriginTimeValue; +import entity.TargetTimeValue; +import org.springframework.util.CollectionUtils; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 补时间点工具类 + * 之前在ws上班的时候,处理图标数据会遇到某些点没有数据的情况,就需要对这些时间点进行补点处理 + * + * @author huangzj + * @date 2018-11-23 22:43:36 + */ +public enum FillFullTimeValueUtil { + /** + * 分钟粒度 + */ + MINUTE { + @Override + public List fullFillTimeValue(LocalDateTime startDate, LocalDateTime endDate, int timeInterval, + List originTimeValues, TimeZone timeZone) { + //Myview 向前聚合,返回前XX秒为最开始计数时间 + Instant firstInstant = toInstant(startDate, timeZone); + Instant finalInstant = toInstant(endDate, timeZone); + //补时间点--规则一样,间隔转换成秒 + return fullFillRule(originTimeValues, firstInstant, finalInstant, timeInterval * 60); + } + }, + /** + * 小时粒度 + */ + HOUR { + @Override + public List fullFillTimeValue(LocalDateTime startDate, LocalDateTime endDate, int timeInterval, + List originTimeValues, TimeZone timeZone) { + Instant firstInstant = toInstant(startDate, timeZone); + Instant finalInstant = toInstant(endDate, timeZone); + //补时间点--规则一样 + return fullFillRule(originTimeValues, firstInstant, finalInstant, timeInterval * 60 * 60); + } + }, + /** + * 天粒度 + */ + DAY { + @Override + public List fullFillTimeValue(LocalDateTime startDate, LocalDateTime endDate, int timeInterval, + List originTimeValues, TimeZone timeZone) { + //区别,把时间转成天 + Instant firstInstant = toInstant(LocalDateTime.of(startDate.toLocalDate(), LocalTime.of(0, 0, 0)), timeZone); + Instant finalInstant = toInstant(LocalDateTime.of(endDate.toLocalDate(), LocalTime.of(0, 0, 0)), timeZone); + //补时间点--规则一样 + return fullFillRule(originTimeValues, firstInstant, finalInstant, timeInterval * 60 * 60 * 24); + } + }; + + + /** + * 抽象方法,实现补充时间点 + * @param startDate 开始时间 格式如:yyyy-MM-dd 00:00:00 + * @param endDate 结束时间:格式如:yyyy-MM-dd 23:59:59 + * @param timeInterval 数据采集粒度,单位:分钟、小时、天 + * @param originTimeValues 缺少时间点对象(统一处理成long、long) + * @param timeZone 时区 + * @return 补时间点后对象,没有补null + */ + public abstract List fullFillTimeValue(LocalDateTime startDate, LocalDateTime endDate, + int timeInterval, List originTimeValues, TimeZone timeZone); + + + /** + * + * @param dateTime 时间 + * @param timeZone 时区 + * @return Instant,和TimeStamp类似 + */ + private static Instant toInstant(LocalDateTime dateTime, TimeZone timeZone) { + return dateTime.atZone(timeZone.toZoneId()) + .toInstant(); + } + + + private static List fullFillRule(List originTimeValues, Instant firstInstant, Instant finalInstant, + int seconds) { + //转换为Time-value形式的map + if (CollectionUtils.isEmpty(originTimeValues)) { + originTimeValues = Lists.newArrayList(); + } + Map timeValueMap = originTimeValues.stream().collect(Collectors.toMap(OriginTimeValue::getTime, + OriginTimeValue::getValue)); + final List resultList = new ArrayList<>(); + + Instant cursorInstant = firstInstant; + //循环按照时间粒度补充时间点。 + while (cursorInstant.isBefore(finalInstant) || cursorInstant.equals(finalInstant)) { + long epochSecond = cursorInstant.getEpochSecond(); + TargetTimeValue timeValueInRule = new TargetTimeValue(); + timeValueInRule.setValue(timeValueMap.getOrDefault(epochSecond, null)); + timeValueInRule.setTime(epochSecond); + resultList.add(timeValueInRule); + + //移动到下一个数据点 + cursorInstant = cursorInstant.plusSeconds(seconds); + } + //按时间排序,最新的排在最后面 + return resultList.parallelStream() + .sorted(Comparator.comparing(TargetTimeValue::getTime)) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/util/transform/JsonBinder.java b/src/main/java/util/transform/JsonBinder.java new file mode 100644 index 0000000..76d15bb --- /dev/null +++ b/src/main/java/util/transform/JsonBinder.java @@ -0,0 +1,38 @@ +package util.transform; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; + +import java.io.IOException; + +/** + * @author: 志军 + * @description: json对象转java对象,java对象转json + * @date: 2017/12/25 18:01 + */ +public class JsonBinder { + + + public static T fromJson(String json, Class type) { + try { + ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build(); + return objectMapper.readValue(json, type); + } catch (JsonParseException | JsonMappingException e) { + throw new RuntimeException("JsonParseException | JsonMappingException 错误", e); + } catch (IOException e) { + throw new RuntimeException("IOException 错误", e); + } + } + + public static String toJson(Object object) { + try { + ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build(); + return objectMapper.writeValueAsString(object); + } catch (JsonProcessingException e) { + throw new RuntimeException("对象转换为json字符串失败", e); + } + } +} diff --git a/src/main/java/util/transform/XmlBinder.java b/src/main/java/util/transform/XmlBinder.java new file mode 100644 index 0000000..b6371cb --- /dev/null +++ b/src/main/java/util/transform/XmlBinder.java @@ -0,0 +1,108 @@ +package util.transform; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import java.io.*; + +/** + * Xml的转换需要在对象的class上加上@XmlRootElement注释,在属性上加上@XmlElement注释 + * @author 志军 + * {@XmlRootElement(name = "xml") + * @XmlAccessorType(XmlAccessType.FIELD) + * static class JsonObject { + * @XmlElement(name = "x1") + * int x1; + * @XmlElement(name = "x2") + * String x2; + * @XmlElement(name = "x3") + * JsonObject x3; + * get..set... + * } + * + */ +public class XmlBinder { + + + /** + * 将对象转化成xml字符串 + */ + static String convertToXml(Object object) { + //创建输出流 + StringWriter writer = new StringWriter(); + + try { + Marshaller marshaller = getMarshaller(object); + marshaller.marshal(object, writer); + } catch (JAXBException e) { + throw new RuntimeException("解析错误", e); + } + return writer.toString(); + } + + /** + * 将对象转换为xml文件 + */ + static void convertToXml(Object object, String path){ + FileWriter writer; + try { + Marshaller marshaller = getMarshaller(object); + writer = new FileWriter(path); + marshaller.marshal(object,writer); + } catch (JAXBException | IOException e) { + throw new RuntimeException("转换失败",e); + } + } + + /** + * 将字符串形式的xml转化成对象 + */ + @SuppressWarnings("unchecked") + static T convertXmlStrToObject(String xml, Class clazz){ + T xmlObject = null; + try { + Unmarshaller unmarshaller = getUnmarshaller(clazz); + StringReader reader = new StringReader(xml); + xmlObject = (T)unmarshaller.unmarshal(reader); + } catch (JAXBException e) { + throw new RuntimeException("解析错误", e); + } + return xmlObject; + } + + /** + * 从文件中转换出类 + */ + public static Object convertXmlFileToObject(String path,Class clazz){ + try { + Unmarshaller unmarshaller = getUnmarshaller(clazz); + FileReader reader = new FileReader(path); + return unmarshaller.unmarshal(reader); + } catch (JAXBException | FileNotFoundException e) { + throw new RuntimeException("解析错误", e); + } + } + + + /** + * 公共方法 --得到JAXB用于对象转化为xml + */ + private static Marshaller getMarshaller(Object object) throws JAXBException { + //利用java的类生成实例 + JAXBContext jaxbContext = JAXBContext.newInstance(object.getClass()); + Marshaller marshaller = jaxbContext.createMarshaller(); + //格式化xml输出格式 --格式化 + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + marshaller.setProperty(Marshaller.JAXB_ENCODING,"UTF-8"); + return marshaller; + } + + /** + * 公共方法 --得到JAXB用于xml转化为对象 + */ + private static Unmarshaller getUnmarshaller(Class clazz) throws JAXBException { + JAXBContext context = JAXBContext.newInstance(clazz); + return context.createUnmarshaller(); + } +} diff --git a/src/main/java/util/tree/TreeNode.java b/src/main/java/util/tree/TreeNode.java new file mode 100644 index 0000000..e613d74 --- /dev/null +++ b/src/main/java/util/tree/TreeNode.java @@ -0,0 +1,61 @@ +/* + * @(#) TreeNode + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2019 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2019-01-02 22:24:56 + */ + +package util.tree; + +/** + * 树节点,主要是包含了path和parentCode的通用属性 + * @author 黄志军 + */ +public class TreeNode { + + /** + * 当前节点的标识,code + */ + private String code; + + /** + * 父节点标识 + */ + private String parentCode; + + /** + * 包含所有节点的code,包括自己 + * 比如说该节点为1,父节点为2,爷爷节点为3,网上根节点保存的是4. + * path保存的就是4;3;2;1; + */ + private String path; + + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getParentCode() { + return parentCode; + } + + public void setParentCode(String parentCode) { + this.parentCode = parentCode; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } +} diff --git a/src/main/java/util/tree/TreeNode2.java b/src/main/java/util/tree/TreeNode2.java new file mode 100644 index 0000000..75799ac --- /dev/null +++ b/src/main/java/util/tree/TreeNode2.java @@ -0,0 +1,49 @@ +package util.tree; + +import java.util.List; + +/** + * 这个对象主要用于处理从父推子的一条链路的处理 + * @author 黄志军 + */ +public class TreeNode2 { + + /** + * 当前节点的标识,code + */ + private String code; + + /** + * 父节点标识 + */ + private String parentCode; + + /** + * 子节点对象数组 + */ + private List childNodeList; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getParentCode() { + return parentCode; + } + + public void setParentCode(String parentCode) { + this.parentCode = parentCode; + } + + public List getChildNodeList() { + return childNodeList; + } + + public void setChildNodeList(List childNodeList) { + this.childNodeList = childNodeList; + } +} diff --git a/src/main/java/util/tree/TreeUtils.java b/src/main/java/util/tree/TreeUtils.java new file mode 100644 index 0000000..e576e77 --- /dev/null +++ b/src/main/java/util/tree/TreeUtils.java @@ -0,0 +1,129 @@ +/* + * @(#) TreeUtils + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2019 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2019-01-02 22:24:06 + */ + +package util.tree; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 树数据的操作工具 + * 参考SI,兰姐,导入业务(参考ws的业务) + * @author 黄志军 + */ +class TreeUtils { + + private static final String SEMICOLON = ";"; + + /** + * 获取path的值(从根节点到当前节点的路径值),这边这个方法会对对应的code进行path的生成(前提是根节点的parentCode是空,或者用其他的标识也可以) + * + * @param treeNodeList 所有的树节点,因为这个主要是导入业务,所以数据包含文件和数据库中的 + * @param code 节点code + * @return 从根节点到当前节点的路径值 + */ + static String getCodePath(List treeNodeList, String code) { + //对所有的节点进行校验,校验规则是不能存在两个code一样的节点 + validTreeNodeList(treeNodeList); + Map treeNodeMap = Maps.newHashMap(); + //创建 code-节点的键值对关系 + treeNodeList.forEach(treeNode -> treeNodeMap.put(treeNode.getCode(), treeNode)); + //通过 递归函数 获取父节点以上的path关系 + StringBuffer pathStringBuffer = findParentCodes(treeNodeMap, code); + //把父节点code和节点code拼接进去,如果这边本身就不存在这个code,就直接返回空,而不把这个code进行append + if(treeNodeMap.get(code)!=null){ + pathStringBuffer.append(SEMICOLON).append(code).append(SEMICOLON); + } + return pathStringBuffer.toString(); + } + + /** + * + * + * @param treeNodeMap code-节点信息的map + * @param code 节点信息(这个code是作为递归的起点) + * @return 该节点父节点以上的path字符串 + */ + private static StringBuffer findParentCodes(Map treeNodeMap, String code) { + StringBuffer result = new StringBuffer(); + TreeNode treeNode = treeNodeMap.get(code); + //如果当前节点不为空。往下查找他的父节点 + if (treeNode != null) { + TreeNode parentTreeNode = treeNodeMap.get(treeNode.getParentCode()); + //如果父节点不为空 + if (parentTreeNode != null) { + //把父节点的code插入到最前面。 + result.insert(0, SEMICOLON + parentTreeNode.getCode()); + //通过递归,把父节点上面的节点找出来 + result.insert(0, findParentCodes(treeNodeMap, parentTreeNode.getCode())); + } else { + return result; + } + } + //直到当前节点为空,返回拼接的字符串 + return result; + } + + + static TreeNode2 getTreeWithChildNodeList(List treeNodeList ,String code){ + TreeNode2 destNode = validTreeNode2List(treeNodeList,code); + if (destNode == null ){ + return null; + } + Map> treeNodeMap = Maps.newHashMap(); + //创建 父code-节点的键值对关系 + treeNodeList.forEach(treeNode -> { + List list = treeNodeMap.get(treeNode.getParentCode()); + if (list == null ){ + list = Lists.newArrayList(); + } + list.add(treeNode); + treeNodeMap.put(treeNode.getParentCode(),list); + }); + //通过 递归函数 获取父节点以上的path关系 + destNode.setChildNodeList(getChildNodeList(treeNodeMap,code)); + return destNode; + } + + private static List getChildNodeList( Map> treeNodeMap, String code) { + List list = treeNodeMap.get(code); + if( list == null || CollectionUtils.isEmpty(list)){ + return null; + } + for(TreeNode2 treeNode2:list){ + treeNode2.setChildNodeList(getChildNodeList(treeNodeMap,treeNode2.getCode())); + } + + return list; + } + + + private static void validTreeNodeList(List treeNodeList){ + List codeList = treeNodeList.stream().map(TreeNode::getCode).distinct().collect(Collectors.toList()); + if(codeList.size() != treeNodeList.size()){ + throw new RuntimeException("存在相同的code"); + } + } + + private static TreeNode2 validTreeNode2List(List treeNodeList,String code){ + List codeList = treeNodeList.stream().map(TreeNode2::getCode).distinct().collect(Collectors.toList()); + if(codeList.size() != treeNodeList.size()){ + throw new RuntimeException("存在相同的code"); + } + List list = treeNodeList.stream().filter(item->item.getCode().equals(code)).collect(Collectors.toList()); + return CollectionUtils.isEmpty(list) ?null:list.get(0); + } +} diff --git a/src/main/java/util/zip/PrintTool.java b/src/main/java/util/zip/PrintTool.java new file mode 100644 index 0000000..02242d7 --- /dev/null +++ b/src/main/java/util/zip/PrintTool.java @@ -0,0 +1,21 @@ +package util.zip; + +import org.springframework.util.StopWatch; + +import java.io.File; + +class PrintTool { + + static void calculateTimeAndLength(File[] files, StopWatch stopWatch, File resultFile){ + //计算一下文件的大小 + double length = 0.0000; + + for (File file : files) { + length = length + file.length(); + } + + System.out.println( + "文件大小:" + length / 1024.00 / 1024.00 + "M,转换时间:" + stopWatch.getTotalTimeMillis() / 1000.000 + " s," + "压缩后文件大小:" + resultFile + .length() / 1024.00 / 1024.00 + " M"); + } +} diff --git a/src/main/java/util/zip/TarArchiveGZIPOutputUtil.java b/src/main/java/util/zip/TarArchiveGZIPOutputUtil.java new file mode 100644 index 0000000..6493dd6 --- /dev/null +++ b/src/main/java/util/zip/TarArchiveGZIPOutputUtil.java @@ -0,0 +1,193 @@ +package util.zip; + +import org.apache.commons.compress.archivers.tar.TarArchiveEntry; +import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; +import org.apache.commons.compress.utils.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StopWatch; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.zip.GZIPOutputStream; + +import static util.zip.PrintTool.calculateTimeAndLength; + +/** + * 总体思路 + * 1.将文件列表传入,通过tarArchiveOutputStream打包 + * 2.将tarArchiveOutputStream打包的文件,通过GZIPOutputStream进行压缩 + * + * @author selfImpr + * 参考地址:https://www.cnblogs.com/guochunyi/p/5311261.html + */ +public class TarArchiveGZIPOutputUtil { + + /** + * 设定读入缓冲区尺寸 + */ + private static final byte[] BUF = new byte[1024]; + + private static final int BUF_SIZE = 1024; + + private static final Logger LOGGER = LoggerFactory.getLogger(TarArchiveGZIPOutputUtil.class); + + private static final String GZ_SUFFIX = ".gz"; + + + /** + * 根据传入的文件夹位置,打包对应的所有文件 + * @param dirPath 文件夹位置 + * @param zipFilePath 生成gz文件的位置 + * @return .tar.gz文件 + * @throws IOException io异常 + */ + static File compress(String dirPath, String zipFilePath) throws IOException { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + File dir = new File(dirPath); + if (dir.exists() && dir.isDirectory()) { + //遍历文件夹的所有文件 + File[] files = dir.listFiles(); + assert files != null; + return compress(Arrays.asList(files), zipFilePath); + } + return null; + } + + /** + * 压缩成gzip格式,最后的文件格式为 tar.gz + * + * @param files 文件 + * @param tarPath 存储位置 + * @throws IOException Io异常 + * @return tar.gz结尾的文件 + */ + static File compress(List files, String tarPath) throws IOException { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + //先进行打包 + packToTar(tarPath, files); + //在进行压缩 + File file = compressToGz(tarPath); + stopWatch.stop(); + + //输出文件大小和运行时间 + calculateTimeAndLength(files.toArray(new File[]{}),stopWatch,file); + return file; + } + + /** + * 只打包成tar文件,最后的格式为.tar + * + * @param files 文件 + * @param tarPath 存储位置 + * @throws IOException Io异常 + * @return tar结尾的文件 + */ + static File compressToTar(List files, String tarPath) throws IOException { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + //先进行打包 + File file = packToTar(tarPath, files); + stopWatch.stop(); + //输出文件大小和运行时间 + calculateTimeAndLength(files.toArray(new File[]{}),stopWatch,file); + return file; + } + + /** + * 根据地址找到所有的文件进行打包 + * @param dirPath 文件夹位置 + * @param tarFilePath 生成tar文件位置 + * @return .tar文件 + * @throws IOException io异常 + */ + static File compressToTar(String dirPath, String tarFilePath) throws IOException { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + File dir = new File(dirPath); + if (dir.exists() && dir.isDirectory()) { + //遍历文件夹的所有文件 + File[] files = dir.listFiles(); + assert files != null; + return compressToTar(Arrays.asList(files), tarFilePath); + } + return null; + } + + /** + * 打包成tar格式 + * + * @param tarPath 存储位置 这边传入的存储地址必须是.tar结尾的才会被转换成对应的格式,否则转换出来需要自己去重命名 + * @param files 文件 + * @throws IOException io异常 + * @return 返回打包对应的文件对象 + */ + private static File packToTar(String tarPath, List files) throws IOException { + //建立压缩文件输出流 + FileOutputStream fileOutputStream = new FileOutputStream(tarPath); + TarArchiveOutputStream tarArchiveOutputStream = new TarArchiveOutputStream(fileOutputStream); + FileInputStream fin = null; + try { + //建立tar压缩输出流 + for (File file : files) { + //打开需压缩文件作为文件输入流 + fin = new FileInputStream(file); + TarArchiveEntry tarEn = new TarArchiveEntry(file); + //此处需重置名称,默认是带全路径的,否则打包后会带全路径 + tarEn.setName(file.getName()); + tarArchiveOutputStream.putArchiveEntry(tarEn); + //IOUtils只是写入 + IOUtils.copy(fin, tarArchiveOutputStream); + tarArchiveOutputStream.closeArchiveEntry(); + fin.close(); + } + tarArchiveOutputStream.close(); + return new File(tarPath); + } catch (IOException ex) { + LOGGER.info("", ex); + } finally { + if (fin != null) { + fin.close(); + } + fileOutputStream.close(); + } + return null; + } + + /** + * 压缩成GZIP格式 + * + * @param tarPath 压缩路径 + * @throws IOException 压缩失败,文件路径找不到 + */ + private static File compressToGz(String tarPath) throws IOException { + //建立压缩文件输出流 + String zipPath = tarPath + GZ_SUFFIX; + FileOutputStream gzFileOutputStream = new FileOutputStream(zipPath); + GZIPOutputStream gzipOutputStream = new GZIPOutputStream(gzFileOutputStream); + FileInputStream tarFileInputStream = new FileInputStream(tarPath); + try { + //建立gzip压缩输出流,这个不能使用IOUtils的copy,可以具体看一下方法 + int len; + while ((len = tarFileInputStream.read(BUF, 0, BUF_SIZE)) != -1) { + gzipOutputStream.write(BUF, 0, len); + } + gzipOutputStream.close(); + return new File(zipPath); + } catch (IOException e) { + LOGGER.info("e"); + } finally { + gzFileOutputStream.close(); + tarFileInputStream.close(); + } + return null; + } +} diff --git a/src/main/java/util/zip/ZipOutputUtil.java b/src/main/java/util/zip/ZipOutputUtil.java new file mode 100644 index 0000000..7dba2a1 --- /dev/null +++ b/src/main/java/util/zip/ZipOutputUtil.java @@ -0,0 +1,68 @@ + + +package util.zip; + +import org.apache.commons.compress.utils.IOUtils; +import org.springframework.util.StopWatch; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import static util.zip.PrintTool.calculateTimeAndLength; + +/** + * 压缩成ZIP文件,这边主要是通过 zipOutputStream 这个类进行对应的实现,所以其实也算是一个使用的实现例子 + * @author 黄志军 + */ +class ZipOutputUtil { + /** + * @param originPath 此方法只压缩文件夹 + * @param zipFilePath 压缩文件的路径 + * @return 压缩之后的文件对象 + */ + static File compress(String originPath, String zipFilePath) throws IOException { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + File dir = new File(originPath); + if (dir.exists() && dir.isDirectory()) { + //遍历文件夹的所有文件 + File[] files = dir.listFiles(); + assert files != null; + //进行ZipOutputStream的压缩操作 + File file = compress(files, zipFilePath); + stopWatch.stop(); + //输出文件大小和运行时间 + calculateTimeAndLength(files,stopWatch,file); + return file; + } + System.out.println("文件夹不存在或者非文件夹"); + return null; + } + + + + + private static File compress(File[] files, String zipFilePath) throws IOException { + File zipFile = new File(zipFilePath); + // 文件输出流 + FileOutputStream outputStream = new FileOutputStream(zipFile); + // 压缩流 + ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream); + for (File file : files) { + FileInputStream inputStream = new FileInputStream(file); + ZipEntry zipEntry = new ZipEntry(file.getName()); + zipOutputStream.putNextEntry(zipEntry); + IOUtils.copy(inputStream, zipOutputStream); + inputStream.close(); + zipOutputStream.closeEntry(); + } + zipOutputStream.close(); + outputStream.close(); + return zipFile; + } +} diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml new file mode 100644 index 0000000..32cab36 --- /dev/null +++ b/src/main/resources/log4j2.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/test_assets.js b/src/main/resources/test_assets.js new file mode 100644 index 0000000..8bf6aa5 --- /dev/null +++ b/src/main/resources/test_assets.js @@ -0,0 +1,2183 @@ +/* +京东资产变动通知脚本:https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js +Modified time: 2021-05-17 15:25:41 +统计昨日京豆的变化情况,包括收入,支出,以及显示当前京豆数量,目前小问题:下单使用京豆后,退款重新购买,计算统计会出现异常 +统计红包以及过期红包 +网页查看地址 : https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean +支持京东双账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============QuantumultX============== +[task_local] +#京东资产变动通知 +2 9 * * * https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, tag=京东资产变动通知, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +================Loon=============== +[Script] +cron "2 9 * * *" script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, tag=京东资产变动通知 +=============Surge=========== +[Script] +京东资产变动通知 = type=cron,cronexp="2 9 * * *",wake-system=1,timeout=3600,script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js +============小火箭========= +京东资产变动通知 = type=cron,script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, cronexpr="2 9 * * *", timeout=3600, enable=true + */ +let roleMap = { + "jd_4521b375ebb5d":"锟子怪", + "jd_542c10c0222bc":"康子怪", + "jd_66dcb31363ef6":"涛子怪", + "jd_45d917547c763":"跑腿小怪", + "417040678_m":"斌子怪", + "jd_73d88459d908e":"杰杰子", + "381550701lol":"漪漪子", +} +let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" +const $ = new Env('京东资产变动通知'); +let jdFruitShareArr = [], isBox = false, notify, newShareCodes; +//助力好友分享码(最多4个,否则后面的助力失败),原因:动动农场每人每天只有四次助力机会 +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一动动账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个动动账号) +let shareCodes = + [ // 这个列表填入你要助力的好友的shareCode +] +let subTitle = '', option = {}, isFruitFinished = false; +const retainWater = 100;//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +let randomCount = $.isNode() ? 0 : 0; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; + +let allMessage = ''; +let message = ""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +!(async () => { + await requireConfig(); + message += "[通知] 资产变动 \n\n --- \n\n" + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + let count = 0 + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.balance = 0; + $.expiredBalance = 0; + + username = $.UserName + if (roleMap[username] == undefined){ + continue + } + username = roleMap[username] + + await TotalBean(); + //加上名称 + message = message + "【羊毛姐妹】" + username + `( ${$.nickName} )`+ " \n\n " + + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await bean(); + await showMsg(); + await shareCodesFormat(); + await jdFruit(); + await jdWish() + } + message += "----\n\n" + if( (count+1)%4 ==0 || i == cookiesArr.length -1 ){ + message = message + getPic() + postToDingTalk(message) + message = "" + } + count ++ + } + + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + if (message != ""){ + postToDingTalk(message) + } + $.done(); + }) + + + function requireConfig() { + return new Promise(resolve => { + that.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写动动ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdFruitShareCodes = $.isNode() ? require('./jdFruitShareCodes.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; + } else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); + } + that.log(`共${cookiesArr.length}个动动账号\n`) + resolve() + }) + } + +async function showMsg() { + // if ($.errorMsg) return + allMessage += `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆 🐶${$.message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + message += "" + `【总京豆】:${$.beanCount}( 今日将过期${$.expirejingdou} )京豆 🐶` +"\n\n" + message += "" + `【今日收入】:${$.todayIncomeBean}京豆 🐶` +"\n\n" + message += "" + `【昨日收入】:${$.incomeBean}京豆 🐶` +"\n\n" + message += "" + `【昨日支出】:${$.expenseBean}京豆 🐶` +"\n\n" + + + + message += "" + `【当前总红包】:${$.balance}( 今日总过期${$.expiredBalance} )元 🧧` +"\n\n" + message += "" + `【京喜红包】:${$.jxRed}( 今日将过期${$.jxRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【极速红包】:${$.jsRed}( 今日将过期${$.jsRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【京东红包】:${$.jdRed}( 今日将过期${$.jdRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【健康红包】:${$.jdhRed}( 今日将过期${$.jdhRedExpire.toFixed(2)} )元 🧧` +"\n\n" + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + $.msg($.name, '', `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶${$.message}`, {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} + +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } + } + await queryexpirejingdou();//过期京豆 + await redPacket();//过期红包 + // console.log(`昨日收入:${$.incomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + }) + $.expirejingdou = data['expirejingdou'][0]['expireamount']; + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data + $.jxRed = 0, $.jsRed = 0, $.jdRed = 0, $.jdhRed = 0, $.jxRedExpire = 0, $.jsRedExpire = 0, $.jdRedExpire = 0, $.jdhRedExpire = 0; + let t = new Date() + t.setDate(t.getDate() + 1) + t.setHours(0, 0, 0, 0) + t = parseInt((t - 1) / 1000) + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2) + $.jsRed = $.jsRed.toFixed(2) + $.jdRed = $.jdRed.toFixed(2) + $.jdhRed = $.jdhRed.toFixed(2) + $.balance = data.balance + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2) + $.message += `\n当前总红包:${$.balance}(今日总过期${$.expiredBalance})元 🧧\n京喜红包:${$.jxRed}(今日将过期${$.jxRedExpire.toFixed(2)})元 🧧\n极速红包:${$.jsRed}(今日将过期${$.jsRedExpire.toFixed(2)})元 🧧\n京东红包:${$.jdRed}(今日将过期${$.jdRedExpire.toFixed(2)})元 🧧\n健康红包:${$.jdhRed}(今日将过期${$.jdhRedExpire.toFixed(2)})元 🧧`; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + +//农场代码 + +async function jdFruit() { + subTitle = `【动动账号${$.index}】${$.nickName}`; + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + // option['media-url'] = $.farmInfo.farmUserPro.goodsImage; + message = message + "【水果名称】 " + `${$.farmInfo.farmUserPro.name}` + "\n\n"; + // message += "【已兑换水果】" + `${$.farmInfo.farmUserPro.winTimes}` + "次\n\n"; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.farmInfo.farmUserPro.shareCode}\n`); + that.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); + await getHelp(); + await masterHelpShare();//助力好友 + await setHelp(); + if ($.farmInfo.treeState === 2 || $.farmInfo.treeState === 3) { + option['open-url'] = urlSchema; + message = message + " " + $.UserName + "\n【提醒⏰】" + fruitName + "已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达" + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看`); + } + return + } else if ($.farmInfo.treeState === 1) { + that.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`) + } else if ($.farmInfo.treeState === 0) { + //已下单购买, 但未开始种植新的水果 + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】 ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达`, option); + message = message + " " + $.UserName + " \n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达" + "" + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 您忘了种植新的水果`, `动动账号${$.index} ${$.nickName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果`); + } + return + } + await doDailyTask(); + await doTenWater();//浇水十次 + await getFirstWaterAward();//领取首次浇水奖励 + await getTenWaterAward();//领取10浇水奖励 + await getWaterFriendGotAward();//领取为2好友浇水奖励 + await duck(); + await doTenWaterAgain();//再次浇水 + await predictionFruit();//预测水果成熟时间 + } else { + that.log(`初始化农场数据异常, 请登录动动 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify($.farmInfo)}`); + } + } catch (e) { + that.log(`任务执行异常,请检查执行日志 ‼️‼️`); + $.logErr(e); + } + } + async function doDailyTask() { + await taskInitForFarm(); + that.log(`开始签到`); + if (!$.farmTask.signInit.todaySigned) { + await signForFarm(); //签到 + if ($.signResult.code === "0") { + that.log(`【签到成功】获得${$.signResult.amount}g💧\\n`) + //message += `【签到成功】获得${$.signResult.amount}g💧\n`//连续签到${signResult.signDay}天 + } else { + // message += `签到失败,详询日志\n`; + that.log(`签到结果: ${JSON.stringify($.signResult)}`); + } + } else { + that.log(`今天已签到,连续签到${$.farmTask.signInit.totalSigned},下次签到可得${$.farmTask.signInit.signEnergyEachAmount}g\n`); + } + // 被水滴砸中 + that.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? '是' : '否'}`); + if ($.farmInfo.todayGotWaterGoalTask.canPop) { + await gotWaterGoalTaskForFarm(); + if ($.goalResult.code === '0') { + that.log(`【被水滴砸中】获得${$.goalResult.addEnergy}g💧\\n`); + // message += `【被水滴砸中】获得${$.goalResult.addEnergy}g💧\n` + } + } + that.log(`签到结束,开始广告浏览任务`); + if (!$.farmTask.gotBrowseTaskAdInit.f) { + let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds + let browseReward = 0 + let browseSuccess = 0 + let browseFail = 0 + for (let advert of adverts) { //开始浏览广告 + if (advert.limit <= advert.hadFinishedTimes) { + // browseReward+=advert.reward + that.log(`${advert.mainTitle}+ ' 已完成`);//,获得${advert.reward}g + continue; + } + that.log('正在进行广告浏览任务: ' + advert.mainTitle); + await browseAdTaskForFarm(advert.advertId, 0); + if ($.browseResult.code === '0') { + that.log(`${advert.mainTitle}浏览任务完成`); + //领取奖励 + await browseAdTaskForFarm(advert.advertId, 1); + if ($.browseRwardResult.code === '0') { + that.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`) + browseReward += $.browseRwardResult.amount + browseSuccess++ + } else { + browseFail++ + that.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`) + } + } else { + browseFail++ + that.log(`广告浏览任务结果: ${JSON.stringify($.browseResult)}`); + } + } + if (browseFail > 0) { + that.log(`【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\\n`); + // message += `【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\n`; + } else { + that.log(`【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`); + // message += `【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`; + } + } else { + that.log(`今天已经做过浏览广告任务\n`); + } + //定时领水 + if (!$.farmTask.gotThreeMealInit.f) { + // + await gotThreeMealForFarm(); + if ($.threeMeal.code === "0") { + that.log(`【定时领水】获得${$.threeMeal.amount}g💧\n`); + // message += `【定时领水】获得${$.threeMeal.amount}g💧\n`; + } else { + // message += `【定时领水】失败,详询日志\n`; + that.log(`定时领水成功结果: ${JSON.stringify($.threeMeal)}`); + } + } else { + that.log('当前不在定时领水时间断或者已经领过\n') + } + //给好友浇水 + if (!$.farmTask.waterFriendTaskInit.f) { + if ($.farmTask.waterFriendTaskInit.waterFriendCountKey < $.farmTask.waterFriendTaskInit.waterFriendMax) { + await doFriendsWater(); + } + } else { + that.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`) + } + // await Promise.all([ + // clockInIn(),//打卡领水 + // executeWaterRains(),//水滴雨 + // masterHelpShare(),//助力好友 + // getExtraAward(),//领取额外水滴奖励 + // turntableFarm()//天天抽奖得好礼 + // ]) + // await getAwardInviteFriend(); + await clockInIn();//打卡领水 + await executeWaterRains();//水滴雨 + await getExtraAward();//领取额外水滴奖励 + await turntableFarm()//天天抽奖得好礼 + } + async function predictionFruit() { + that.log('开始预测水果成熟时间\n'); + await initForFarm(); + await taskInitForFarm(); + let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes;//今天到到目前为止,浇了多少次水 + // message += "【今日共浇水】" + `${waterEveryDayT}` + "次 \n\n" + message += "【剩余 水滴】" + `${$.farmInfo.farmUserPro.totalEnergy}` + "g💧 \n\n" + message += "【水果🍉进度】" + `${(($.farmInfo.farmUserPro.treeEnergy / + $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}` + "%,已浇水" +`${$.farmInfo.farmUserPro.treeEnergy / 10}` + "次,还需"+`${($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10}` +"次 \n\n" + if ($.farmInfo.toFlowTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n\n` +"\n\n" + } else if ($.farmInfo.toFruitTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n\n` + "\n\n" + } + // 预测n天后水果课可兑换功能 + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + message = message + "" + `【预测🍉收获时间】${waterD === 1 ? '明天' : waterD === 2 ? '后天' : waterD + '天之后'}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉` +"\n\n"; + } + //浇水十次 + async function doTenWater() { + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { + that.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`) + return + } + if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + that.log(`\n准备浇水十次`); + let waterCount = 0; + isFruitFinished = false; + for (; waterCount < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit - $.farmTask.totalWaterTaskInit.totalWaterTaskTimes; waterCount++) { + that.log(`第${waterCount + 1}次浇水`); + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`剩余水滴${$.waterResult.totalEnergy}g`); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + if ($.waterResult.totalEnergy < 10) { + that.log(`水滴不够,结束浇水`) + break + } + await gotStageAward();//领取阶段性水滴奖励 + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log('\n今日已完成10次浇水任务\n'); + } + } + //领取首次浇水奖励 + async function getFirstWaterAward() { + await taskInitForFarm(); + //领取首次浇水奖励 + if (!$.farmTask.firstWaterInit.f && $.farmTask.firstWaterInit.totalWaterTimes > 0) { + await firstWaterTaskForFarm(); + if ($.firstWaterReward.code === '0') { + that.log(`【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`); + // message += `【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`; + } else { + // message += '【首次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取首次浇水奖励结果: ${JSON.stringify($.firstWaterReward)}`); + } + } else { + that.log('首次浇水奖励已领取\n') + } + } + //领取十次浇水奖励 + async function getTenWaterAward() { + //领取10次浇水奖励 + if (!$.farmTask.totalWaterTaskInit.f && $.farmTask.totalWaterTaskInit.totalWaterTaskTimes >= $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + await totalWaterTaskForFarm(); + if ($.totalWaterReward.code === '0') { + that.log(`【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`); + // message += `【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`; + } else { + // message += '【十次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取10次浇水奖励结果: ${JSON.stringify($.totalWaterReward)}`); + } + } else if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + // message += `【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`; + that.log(`【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`); + } + that.log('finished 水果任务完成!'); + } + //再次浇水 + async function doTenWaterAgain() { + that.log('开始检查剩余水滴能否再次浇水再次浇水\n'); + await initForFarm(); + let totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + that.log(`剩余水滴${totalEnergy}g\n`); + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + that.log(`背包已有道具:\n快速浇水卡:${fastCard === -1 ? '未解锁': fastCard + '张'}\n水滴翻倍卡:${doubleCard === -1 ? '未解锁': doubleCard + '张'}\n水滴换京豆卡:${beanCard === -1 ? '未解锁' : beanCard + '张'}\n加签卡:${signCard === -1 ? '未解锁' : signCard + '张'}\n`) + if (totalEnergy >= 100 && doubleCard > 0) { + //使用翻倍水滴卡 + for (let i = 0; i < new Array(doubleCard).fill('').length; i++) { + await userMyCardForFarm('doubleCard'); + that.log(`使用翻倍水滴卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + if (signCard > 0) { + //使用加签卡 + for (let i = 0; i < new Array(signCard).fill('').length; i++) { + await userMyCardForFarm('signCard'); + that.log(`使用加签卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match('限时翻倍')) { + that.log(`\n您设置的是水滴换豆功能,现在为您换豆`); + if (totalEnergy >= 100 && $.myCardInfoRes.beanCard > 0) { + //使用水滴换豆卡 + await userMyCardForFarm('beanCard'); + that.log(`使用水滴换豆卡结果:${JSON.stringify($.userMyCardRes)}`); + if ($.userMyCardRes.code === '0') { + // message +="【水果🍉进度】" + `【水滴换豆卡】获得${$.userMyCardRes.beanCount}个京豆\n` + "\n\n"; + return + } + } else { + that.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`) + } + } + // if (totalEnergy > 100 && $.myCardInfoRes.fastCard > 0) { + // //使用快速浇水卡 + // await userMyCardForFarm('fastCard'); + // that.log(`使用快速浇水卡结果:${JSON.stringify($.userMyCardRes)}`); + // if ($.userMyCardRes.code === '0') { + // that.log(`已使用快速浇水卡浇水${$.userMyCardRes.waterEnergy}g`); + // } + // await initForFarm(); + // totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + // } + // 所有的浇水(10次浇水)任务,获取水滴任务完成后,如果剩余水滴大于等于60g,则继续浇水(保留部分水滴是用于完成第二天的浇水10次的任务) + let overageEnergy = totalEnergy - retainWater; + if (totalEnergy >= ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy)) { + //如果现有的水滴,大于水果可兑换所需的对滴(也就是把水滴浇完,水果就能兑换了) + isFruitFinished = false; + for (let i = 0; i < ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10; i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果(水果马上就可兑换了): ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log('\n浇水10g成功\n'); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + that.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`) + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else if (overageEnergy >= 10) { + that.log("目前剩余水滴:【" + totalEnergy + "】g,可继续浇水"); + isFruitFinished = false; + for (let i = 0; i < parseInt(overageEnergy / 10); i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`) + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + await gotStageAward() + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务") + } + } + //领取阶段性水滴奖励 + function gotStageAward() { + return new Promise(async resolve => { + if ($.waterResult.waterStatus === 0 && $.waterResult.treeEnergy === 10) { + that.log('果树发芽了,奖励30g水滴'); + await gotStageAwardForFarm('1'); + that.log(`浇水阶段奖励1领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`; + that.log(`【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`); + } + } else if ($.waterResult.waterStatus === 1) { + that.log('果树开花了,奖励40g水滴'); + await gotStageAwardForFarm('2'); + that.log(`浇水阶段奖励2领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } else if ($.waterResult.waterStatus === 2) { + that.log('果树长出小果子啦, 奖励50g水滴'); + await gotStageAwardForFarm('3'); + that.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`) + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } + resolve() + }) + } + //天天抽奖活动 + async function turntableFarm() { + await initForTurntableFarm(); + if ($.initForTurntableFarmRes.code === '0') { + //领取定时奖励 //4小时一次 + let {timingIntervalHours, timingLastSysTime, sysTime, timingGotStatus, remainLotteryTimes, turntableInfos} = $.initForTurntableFarmRes; + + if (!timingGotStatus) { + that.log(`是否到了领取免费赠送的抽奖机会----${sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)}`) + if (sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)) { + await timingAwardForTurntableFarm(); + that.log(`领取定时奖励结果${JSON.stringify($.timingAwardRes)}`); + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } else { + that.log(`免费赠送的抽奖机会未到时间`) + } + } else { + that.log('4小时候免费赠送的抽奖机会已领取') + } + if ($.initForTurntableFarmRes.turntableBrowserAds && $.initForTurntableFarmRes.turntableBrowserAds.length > 0) { + for (let index = 0; index < $.initForTurntableFarmRes.turntableBrowserAds.length; index++) { + if (!$.initForTurntableFarmRes.turntableBrowserAds[index].status) { + that.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`) + await browserForTurntableFarm(1, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0' && $.browserForTurntableFarmRes.status) { + that.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`) + await browserForTurntableFarm(2, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0') { + that.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`) + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } + } + } else { + that.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`) + } + } + } + //天天抽奖助力 + that.log('开始天天抽奖--好友助力--每人每天只有三次助力机会.') + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('天天抽奖-不能自己给自己助力\n') + continue + } + await lotteryMasterHelp(code); + // that.log('天天抽奖助力结果',lotteryMasterHelpRes.helpResult) + if ($.lotteryMasterHelpRes.helpResult.code === '0') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '11') { + that.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '13') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}失败,助力次数耗尽\n`); + break; + } + } + that.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`) + //抽奖 + if (remainLotteryTimes > 0) { + that.log('开始抽奖') + let lotteryResult = ''; + for (let i = 0; i < new Array(remainLotteryTimes).fill('').length; i++) { + await lotteryForTurntableFarm() + that.log(`第${i + 1}次抽奖结果${JSON.stringify($.lotteryRes)}`); + if ($.lotteryRes.code === '0') { + turntableInfos.map((item) => { + if (item.type === $.lotteryRes.type) { + that.log(`lotteryRes.type${$.lotteryRes.type}`); + if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === 'bean') { + lotteryResult += `${item.name}个,`; + } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === 'water') { + lotteryResult += `${item.name},`; + } else { + lotteryResult += `${item.name},`; + } + } + }) + //没有次数了 + if ($.lotteryRes.remainLotteryTimes === 0) { + break + } + } + } + if (lotteryResult) { + that.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`) + // message += `【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`; + } + } else { + that.log('天天抽奖--抽奖机会为0次') + } + } else { + that.log('初始化天天抽奖得好礼失败') + } + } + //领取额外奖励水滴 + async function getExtraAward() { + await masterHelpTaskInitForFarm(); + if ($.masterHelpResult.code === '0') { + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length >= 5) { + // 已有五人助力。领取助力后的奖励 + if (!$.masterHelpResult.masterGotFinal) { + await masterGotFinishedTaskForFarm(); + if ($.masterGotFinished.code === '0') { + that.log(`已成功领取好友助力奖励:【${$.masterGotFinished.amount}】g水`); + // message += "【额外奖励】" + `${$.masterGotFinished.amount}` + "g水领取成功\n\n"; + } + } else { + that.log("已经领取过5好友助力额外奖励"); + // message += "【水果🍉进度】" + `【额外奖励】已被领取过\n` + "\n\n"; + } + } else { + that.log("助力好友未达到5个"); + // message += "【额外奖励】领取失败,原因:给您助力的人未达5个\n\n"; + } + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length > 0) { + let str = ''; + $.masterHelpResult.masterHelpPeoples.map((item, index) => { + if (index === ($.masterHelpResult.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + that.log(`\n动动昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + // message += "【助力您的好友】 " + `${str}` + "\n\n" + } + that.log('领取额外奖励水滴结束\n'); + } + } + + function getHelp() { + newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jd_fruit/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.farmInfo.farmUserPro.shareCode) { + $.get({ + url: "http://api.tyh52.com/act/set/jd_fruit/" + $.farmInfo.farmUserPro.shareCode + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + //助力好友 + async function masterHelpShare() { + that.log('开始助力好友') + let salveHelpAddWater = 0; + let remainTimes = 4;//今日剩余助力次数,默认4次(动动农场每人每天4次助力机会)。 + let helpSuccessPeoples = '';//成功助力好友 + that.log(`格式化后的助力码::${JSON.stringify(newShareCodes)}\n`); + + for (let code of newShareCodes) { + that.log(`开始助力动动账号${$.index} - ${$.nickName}的好友: ${code}`); + if (!code) continue; + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('不能为自己助力哦,跳过自己的shareCode\n') + continue + } + await masterHelp(code); + if ($.helpResult.code === '0') { + if ($.helpResult.helpResult.code === '0') { + //助力成功 + salveHelpAddWater += $.helpResult.helpResult.salveHelpAddWater; + that.log(`【助力好友结果】: 已成功给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力`); + that.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`) + helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || '匿名用户') + ','; + } else if ($.helpResult.helpResult.code === '8') { + that.log(`【助力好友结果】: 助力【${$.helpResult.helpResult.masterUserInfo.nickName}】失败,您今天助力次数已耗尽`); + } else if ($.helpResult.helpResult.code === '9') { + that.log(`【助力好友结果】: 之前给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力过了`); + } else if ($.helpResult.helpResult.code === '10') { + that.log(`【助力好友结果】: 好友【${$.helpResult.helpResult.masterUserInfo.nickName}】已满五人助力`); + } else { + that.log(`助力其他情况:${JSON.stringify($.helpResult.helpResult)}`); + } + that.log(`【今日助力次数还剩】${$.helpResult.helpResult.remainTimes}次\n`); + remainTimes = $.helpResult.helpResult.remainTimes; + if ($.helpResult.helpResult.remainTimes === 0) { + that.log(`您当前助力次数已耗尽,跳出助力`); + break + } + } else { + that.log(`助力失败::${JSON.stringify($.helpResult)}`); + } + } + if (helpSuccessPeoples && helpSuccessPeoples.length > 0) { + // message += " " + `【您助力的好友👬】${helpSuccessPeoples.substr(0, helpSuccessPeoples.length - 1)}\n` + "\n\n"; + } + if (salveHelpAddWater > 0) { + // message += `【助力好友👬】获得${salveHelpAddWater}g💧\n`; + that.log(`【助力好友👬】获得${salveHelpAddWater}g💧\n`); + } + // message += "" + `【今日剩余助力👬】${remainTimes}次\n` + "\n\n"; + that.log('助力好友结束,即将开始领取额外水滴奖励\n'); + } + //水滴雨 + async function executeWaterRains() { + let executeWaterRain = !$.farmTask.waterRainInit.f; + if (executeWaterRain) { + that.log(`水滴雨任务,每天两次,最多可得10g水滴`); + that.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? '是' : '否'}`); + if ($.farmTask.waterRainInit.lastTime) { + if (Date.now() < ($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000)) { + executeWaterRain = false; + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`; + that.log(`\`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`); + } + } + if (executeWaterRain) { + that.log(`开始水滴雨任务,这是第${$.farmTask.waterRainInit.winTimes + 1}次,剩余${2 - ($.farmTask.waterRainInit.winTimes + 1)}次`); + await waterRainForFarm(); + that.log('水滴雨waterRain'); + if ($.waterRain.code === '0') { + that.log('水滴雨任务执行成功,获得水滴:' + $.waterRain.addEnergy + 'g'); + that.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`); + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`; + } + } + } else { + // message += `【水滴雨】已全部完成,获得20g💧\n`; + } + } + //打卡领水活动 + async function clockInIn() { + that.log('开始打卡领水活动(签到,关注,领券)'); + await clockInInitForFarm(); + if ($.clockInInit.code === '0') { + // 签到得水滴 + if (!$.clockInInit.todaySigned) { + that.log('开始今日签到'); + await clockInForFarm(); + that.log(`打卡结果${JSON.stringify($.clockInForFarmRes)}`); + if ($.clockInForFarmRes.code === '0') { + // message += `【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`; + that.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`) + if ($.clockInForFarmRes.signDay === 7) { + //可以领取惊喜礼包 + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + } + } + if ($.clockInInit.todaySigned && $.clockInInit.totalSigned === 7) { + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + // 限时关注得水滴 + if ($.clockInInit.themes && $.clockInInit.themes.length > 0) { + for (let item of $.clockInInit.themes) { + if (!item.hadGot) { + that.log(`关注ID${item.id}`); + await clockInFollowForFarm(item.id, "theme", "1"); + that.log(`themeStep1--结果${JSON.stringify($.themeStep1)}`); + if ($.themeStep1.code === '0') { + await clockInFollowForFarm(item.id, "theme", "2"); + that.log(`themeStep2--结果${JSON.stringify($.themeStep2)}`); + if ($.themeStep2.code === '0') { + that.log(`关注${item.name},获得水滴${$.themeStep2.amount}g`); + } + } + } + } + } + // 限时领券得水滴 + if ($.clockInInit.venderCoupons && $.clockInInit.venderCoupons.length > 0) { + for (let item of $.clockInInit.venderCoupons) { + if (!item.hadGot) { + that.log(`领券的ID${item.id}`); + await clockInFollowForFarm(item.id, "venderCoupon", "1"); + that.log(`venderCouponStep1--结果${JSON.stringify($.venderCouponStep1)}`); + if ($.venderCouponStep1.code === '0') { + await clockInFollowForFarm(item.id, "venderCoupon", "2"); + if ($.venderCouponStep2.code === '0') { + that.log(`venderCouponStep2--结果${JSON.stringify($.venderCouponStep2)}`); + that.log(`从${item.name}领券,获得水滴${$.venderCouponStep2.amount}g`); + } + } + } + } + } + } + that.log('开始打卡领水活动(签到,关注,领券)结束\n'); + } + // + async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + that.log(`查询好友列表数据:\n`) + if ($.friendList) { + that.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + that.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + that.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`,"version":8,"channel":1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + that.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + that.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + that.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + that.log('今日未邀请过好友') + } + } else { + that.log(`查询好友列表失败\n`); + } + } + //给好友浇水 + async function doFriendsWater() { + await friendListInitForFarm(); + that.log('开始给好友浇水...'); + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax } = $.farmTask.waterFriendTaskInit; + that.log(`今日已给${waterFriendCountKey}个好友浇水`); + if (waterFriendCountKey < waterFriendMax) { + let needWaterFriends = []; + if ($.friendList.friends && $.friendList.friends.length > 0) { + $.friendList.friends.map((item, index) => { + if (item.friendState === 1) { + if (needWaterFriends.length < (waterFriendMax - waterFriendCountKey)) { + needWaterFriends.push(item.shareCode); + } + } + }); + //TODO ,发现bug,github action运行发现有些账号第一次没有给3个好友浇水 + that.log(`需要浇水的好友列表shareCodes:${JSON.stringify(needWaterFriends)}`); + let waterFriendsCount = 0, cardInfoStr = ''; + for (let index = 0; index < needWaterFriends.length; index ++) { + await waterFriendForFarm(needWaterFriends[index]); + that.log(`为第${index+1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`) + if ($.waterFriendForFarmRes.code === '0') { + waterFriendsCount ++; + if ($.waterFriendForFarmRes.cardInfo) { + that.log('为好友浇水获得道具了'); + if ($.waterFriendForFarmRes.cardInfo.type === 'beanCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴换豆卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'fastCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `快速浇水卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'doubleCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴翻倍卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'signCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `加签卡,`; + } + } + } else if ($.waterFriendForFarmRes.code === '11') { + that.log('水滴不够,跳出浇水') + } + } + // message += `【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`; + that.log(`【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`); + if (cardInfoStr && cardInfoStr.length > 0) { + // message += `【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`; + that.log(`【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`); + } + } else { + that.log('您的好友列表暂无好友,快去邀请您的好友吧!') + } + } else { + that.log(`今日已为好友浇水量已达${waterFriendMax}个`) + } + } + //领取给3个好友浇水后的奖励水滴 + async function getWaterFriendGotAward() { + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit + if (waterFriendCountKey >= waterFriendMax) { + if (!waterFriendGotAward) { + await waterFriendGotAwardForFarm(); + that.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`) + if ($.waterFriendGotAwardRes.code === '0') { + // message += `【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`; + that.log(`【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`); + } + } else { + that.log(`给好友浇水的${waterFriendSendWater}g水滴奖励已领取\n`); + // message += `【给${waterFriendMax}好友浇水】奖励${waterFriendSendWater}g水滴已领取\n`; + } + } else { + that.log(`暂未给${waterFriendMax}个好友浇水\n`); + } + } + //接收成为对方好友的邀请 + async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + if ($.inviteFriendRes.helpResult.code === '0') { + that.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes.helpResult.code === '17') { + that.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } + // that.log(`开始接受6fbd26cc27ac44d6a7fed34092453f77的邀请\n`) + // await inviteFriend('6fbd26cc27ac44d6a7fed34092453f77'); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + // if ($.inviteFriendRes.helpResult.code === '0') { + // that.log(`您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + // } else if ($.inviteFriendRes.helpResult.code === '17') { + // that.log(`对方已是您的好友`) + // } + } + async function duck() { + for (let i = 0; i < 10; i++) { + //这里循环十次 + await getFullCollectionReward(); + if ($.duckRes.code === '0') { + if (!$.duckRes.hasLimit) { + that.log(`小鸭子游戏:${$.duckRes.title}`); + // if ($.duckRes.type !== 3) { + // that.log(`${$.duckRes.title}`); + // if ($.duckRes.type === 1) { + // message += `【小鸭子】为你带回了水滴\n`; + // } else if ($.duckRes.type === 2) { + // message += `【小鸭子】为你带回快速浇水卡\n` + // } + // } + } else { + that.log(`${$.duckRes.title}`) + break; + } + } else if ($.duckRes.code === '10') { + that.log(`小鸭子游戏达到上限`) + break; + } + } + } + // ========================API调用接口======================== + //鸭子,点我有惊喜 + async function getFullCollectionReward() { + return new Promise(resolve => { + const body = {"type": 2, "version": 6, "channel": 2}; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + + /** + * 领取10次浇水奖励API + */ + async function totalWaterTaskForFarm() { + const functionId = 'totalWaterTaskForFarm'; + $.totalWaterReward = await request(functionId); + } + //领取首次浇水奖励API + async function firstWaterTaskForFarm() { + const functionId = 'firstWaterTaskForFarm'; + $.firstWaterReward = await request(functionId); + } + //领取给3个好友浇水后的奖励水滴API + async function waterFriendGotAwardForFarm() { + const functionId = 'waterFriendGotAwardForFarm'; + $.waterFriendGotAwardRes = await request(functionId, {"version": 4, "channel": 1}); + } + // 查询背包道具卡API + async function myCardInfoForFarm() { + const functionId = 'myCardInfoForFarm'; + $.myCardInfoRes = await request(functionId, {"version": 5, "channel": 1}); + } + //使用道具卡API + async function userMyCardForFarm(cardType) { + const functionId = 'userMyCardForFarm'; + $.userMyCardRes = await request(functionId, {"cardType": cardType}); + } + /** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ + async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request('gotStageAwardForFarm', {'type': type}); + } + //浇水API + async function waterGoodForFarm() { + await $.wait(1000); + that.log('等待了1秒'); + + const functionId = 'waterGoodForFarm'; + $.waterResult = await request(functionId); + } + // 初始化集卡抽奖活动数据API + async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request('initForTurntableFarm', {version: 4, channel: 1}); + } + async function lotteryForTurntableFarm() { + await $.wait(2000); + that.log('等待了2秒'); + $.lotteryRes = await request('lotteryForTurntableFarm', {type: 1, version: 4, channel: 1}); + } + + async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request('timingAwardForTurntableFarm', {version: 4, channel: 1}); + } + + async function browserForTurntableFarm(type, adId) { + if (type === 1) { + that.log('浏览爆品会场'); + } + if (type === 2) { + that.log('天天抽奖浏览任务领取水滴'); + } + const body = {"type": type,"adId": adId,"version":4,"channel":1}; + $.browserForTurntableFarmRes = await request('browserForTurntableFarm', body); + // 浏览爆品会场8秒 + } + //天天抽奖浏览任务领取水滴API + async function browserForTurntableFarm2(type) { + const body = {"type":2,"adId": type,"version":4,"channel":1}; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); + } + /** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ + async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); + } + + //领取5人助力后的额外奖励API + async function masterGotFinishedTaskForFarm() { + const functionId = 'masterGotFinishedTaskForFarm'; + $.masterGotFinished = await request(functionId); + } + //助力好友信息API + async function masterHelpTaskInitForFarm() { + const functionId = 'masterHelpTaskInitForFarm'; + $.masterHelpResult = await request(functionId); + } + //接受对方邀请,成为对方好友的API + async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); + } + // 助力好友API + async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); + } + /** + * 水滴雨API + */ + async function waterRainForFarm() { + const functionId = 'waterRainForFarm'; + const body = {"type": 1, "hongBaoTimes": 100, "version": 3}; + $.waterRain = await request(functionId, body); + } + /** + * 打卡领水API + */ + async function clockInInitForFarm() { + const functionId = 'clockInInitForFarm'; + $.clockInInit = await request(functionId); + } + + // 连续签到API + async function clockInForFarm() { + const functionId = 'clockInForFarm'; + $.clockInForFarmRes = await request(functionId, {"type": 1}); + } + + //关注,领券等API + async function clockInFollowForFarm(id, type, step) { + const functionId = 'clockInFollowForFarm'; + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } + } + + // 领取连续签到7天的惊喜礼包API + async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', {"type": 2}) + } + + //定时领水API + async function gotThreeMealForFarm() { + const functionId ='gotThreeMealForFarm'; + $.threeMeal = await request(functionId); + } + /** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ + async function browseAdTaskForFarm(advertId, type) { + const functionId = 'browseAdTaskForFarm'; + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } + } + // 被水滴砸中API + async function gotWaterGoalTaskForFarm() { + $.goalResult = await request('gotWaterGoalTaskForFarm', {type: 3}); + } + //签到API + async function signForFarm() { + const functionId = 'signForFarm'; + $.signResult = await request(functionId); + } + /** + * 初始化农场, 可获取果树及用户信息API + */ + async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + + // 初始化任务列表API + async function taskInitForFarm() { + that.log('\n初始化任务列表') + const functionId = 'taskInitForFarm'; + $.farmTask = await request(functionId); + } + //获取好友列表API + async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', {"version": 4, "channel": 1}); + // that.log('aa', aa); + } + // 领取邀请好友的奖励API + async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); + } + //为好友浇水API + async function waterFriendForFarm(shareCode) { + const body = {"shareCode": shareCode, "version": 6, "channel": 1} + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); + } + + + function readShareCode() { + return new Promise(async resolve => { + $.get({url: `http://jd.turinglabs.net/api/v2/jd/farm/read/${randomCount}/`, timeout: 10000,}, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + that.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) + } + function shareCodesFormat() { + return new Promise(async resolve => { + // that.log(`第${$.index}个动动账号的助力码:::${jdFruitShareArr[$.index - 1]}`) + newShareCodes = []; + // if (jdFruitShareArr[$.index - 1]) { + // newShareCodes = jdFruitShareArr[$.index - 1].split('@'); + // } else { + // that.log(`由于您第${$.index}个动动账号未提供shareCode,将采纳本脚本自带的助力码\n`) + // const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); + // newShareCodes = shareCodes[tempIndex].split('@'); + // } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // // newShareCodes = newShareCodes.concat(readShareCodeRes.data || []); + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + // that.log(`第${$.index}个动动账号将要助力的好友${JSON.stringify(newShareCodes)}`) + resolve(); + }) + } + + function request(function_id, body = {}, timeout = 1000){ + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️') + that.log(JSON.stringify(err)); + that.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) + } + function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + that.log(e); + that.log(`动动服务器访问数据为空,请检查自身设备网络情况`); + return false; + } + } + function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, + headers: { + Cookie: cookie, + UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + }, + timeout: 10000, + } + } + //-------------------------------------------------东东赚赚------------------------------------------------------------ + + +async function jdWish() { + $.bean = 0 + $.tuan = null + $.hasOpen = false + await getTaskList(true) + await getUserTuanInfo() + if (!$.tuan) { + await openTuan() + if ($.hasOpen) await getUserTuanInfo() + } + if ($.tuan) $.tuanList.push($.tuan) + await helpFriends() + await getUserInfo() + $.nowBean = parseInt($.totalBeanNum) + $.nowNum = parseInt($.totalNum) + for (let i = 0; i < $.taskList.length; ++i) { + let task = $.taskList[i] + if (task['taskId'] === 1 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + } else if (task['taskId'] !== 3 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + if(task['itemId']) + await doTask({"itemId":task['itemId'],"taskId":task['taskId'],"mpVersion":"3.4.0"}) + else + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + await $.wait(3000) + } + } + await getTaskList(); + await showMsg1(); + } + + + function helpFriendTuan(body) { + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_assist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success) { + that.log('助力成功') + } else { + if (data.resultCode === '9200008') that.log('不能助力自己') + else if (data.resultCode === '9200011') that.log('已经助力过') + else if (data.resultCode === '2400205') that.log('团已满') + else if (data.resultCode === '2400203') {that.log('助力次数已耗尽');$.canHelp = false} + else that.log(`未知错误`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getUserTuanInfo() { + let body = {"paramData": {"channel": "FISSION_BEAN"}} + return new Promise(resolve => { + $.get(taskTuanUrl("distributeBeanActivityInfo", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && !data.data.canStartNewAssist) { + $.tuan = { + "activityIdEncrypted": data.data.id, + "assistStartRecordId": data.data.assistStartRecordId, + "assistedPinEncrypted": data.data.encPin, + "channel": "FISSION_BEAN" + } + $.tuanActId = data.data.id + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function openTuan() { + let body = {"activityIdEncrypted": $.tuanActId, "channel": "FISSION_BEAN"} + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_startAssist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['success']) { + $.hasOpen = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl1("interactIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data.data.shareTaskRes) { + // that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${data.data.shareTaskRes.itemId}\n`); + // } else { + // that.log(`\n\n已满5人助力或助力功能已下线,故暂时无${$.name}好友助力码\n\n`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getTaskList(flag = false) { + return new Promise(resolve => { + $.get(taskUrl1("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.taskList = data.data.taskDetailResList + $.totalNum = data.data.totalNum + $.totalBeanNum = data.data.totalBeanNum + if (flag && $.taskList.filter(item => !!item && item['taskId']=== 3) && $.taskList.filter(item => !!item && item['taskId']=== 3).length) { + $.shareId=$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + // 完成 + function doTask(body, func = "doInteractTask") { + // that.log(taskUrl("doInteractTask", body)) + return new Promise(resolve => { + $.get(taskUrl1(func, body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // that.log(data) + if (func === "doInteractTask") { + if (data.subCode === "S000") { + that.log(`任务完成,获得 ${data.data.taskDetailResList[0].incomeAmountConf} 金币,${data.data.taskDetailResList[0].beanNum} 京豆`) + $.bean += parseInt(data.data.taskDetailResList[0].beanNum) + } else { + that.log(`任务失败,错误信息:${data.message}`) + } + } else { + that.log(`${data.data.helpResDesc}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + async function helpFriends() { + await getHelp(); + for (let code of $.newShareCodes) { + if (!code) continue + await doTask({"itemId": code, "taskId": "3", "mpVersion": "3.4.0"}, "doHelpTask") + } + await setHelp(); + } + + function getHelp() { + $.newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzz/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + $.newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.shareId) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzz/" + $.shareId + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + function getHelpTuan() { + $.tuanList = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzzTuan/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var item of list) { + let its=item.split('@'); + if(its.length==2){ + let tuan={ + "activityIdEncrypted": $.tuanActId, + "assistStartRecordId": its[0], + "assistedPinEncrypted": its[1], + "channel": "FISSION_BEAN" + } + $.tuanList.push(tuan); + } + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelpTuan() { + return new Promise(resolve => { + if ($.tuan) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzzTuan/" + $.tuan.assistStartRecordId+'@'+$.tuan.assistedPinEncrypted + }, (err, resp, data) => { + try { + if (data) { + that.log(data); + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的开团碼成功"); + }else{ + that.log("提交开团码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + function taskUrl1(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + + function taskTuanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=swat_miniprogram&osVersion=5.0.0&clientVersion=3.1.3&fromType=wxapp×tamp=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://servicewechat.com/wxa5bf5ee667d91626/108/page-frame.html", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + } + } + } + + + + function showMsg1() { + return new Promise(async resolve => { + that.log( "" + `本次获得${parseInt($.totalBeanNum) - $.nowBean}京豆,${parseInt($.totalNum) - $.nowNum}金币\n` + "\n\n") + message += "" + `累计获得${$.totalBeanNum}京豆,${$.totalNum}金币\n可兑换${$.totalNum / 10000}元无门槛红包` + "\n\n" + if (parseInt($.totalBeanNum) - $.nowBean > 0) { + $.msg($.name, '', `动动账号${$.index} ${$.nickName}\n${message}`); + } else { + $.log(message) + } + // 云端大于10元无门槛红包时进行通知推送 + if ($.isNode() && $.totalNum >= 1000000) await notify.sendNotify(`${$.name} - 动动账号${$.index} - ${$.nickName}`, `动动账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n`,) + resolve(); + }) + } + + + + + +//我加的函数 +function postToDingTalk(messgae) { + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"资产变动", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_assets_new.js b/src/main/resources/test_assets_new.js new file mode 100644 index 0000000..2aae754 --- /dev/null +++ b/src/main/resources/test_assets_new.js @@ -0,0 +1,1216 @@ +/* +cron "30 10,22 * * *" jd_bean_change.js, tag:资产变化强化版by-ccwav +*/ +let roleMap = { + "jd_4521b375ebb5d":"锟子怪", + "jd_542c10c0222bc":"康子怪", + "jd_66dcb31363ef6":"涛子怪", + "jd_45d917547c763":"跑腿小怪", + "417040678_m":"斌子怪", + "jd_73d88459d908e":"杰杰子", + "381550701lol":"漪漪子", +} +let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" +//更新by ccwav,20210821 +const $ = new Env('京东资产变动通知'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const JXUserAgent = $.isNode() ? (process.env.JX_USER_AGENT ? process.env.JX_USER_AGENT : ``):``; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let allMessage = ''; +let message = ""; +let ReturnMessage = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + message += "[通知] 资产变动 \n\n --- \n\n" + let count = 0 + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + $.JdzzNum=0; + $.JdMsScore = 0; + $.JdFarmProdName = ''; + $.JdtreeEnergy=0; + $.JdtreeTotalEnergy=0; + $.JdwaterTotalT = 0; + $.JdwaterD = 0; + $.JDwaterEveryDayT=0; + $.JDtotalcash=0; + $.JDEggcnt=0; + $.Jxmctoken=''; + await TotalBean(); + + username = $.UserName + if (roleMap[username] == undefined){ + continue + } + username = roleMap[username] + + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getJdZZ(); + await getMs(); + await jdfruitRequest('taskInitForFarm', {"version":14,"channel":1,"babelChannel":"120"}); + await getjdfruit(); + await cash(); + await requestAlgo(); + await JxmcGetRequest(); + await bean(); + await getJxFactory(); //惊喜工厂 + await getDdFactoryInfo(); // 京东工厂 + await showMsg(); + message += "----\n\n" + } + + if( (count+1)%4 ==0 ){ + postToDingTalk(message) + message = "" + } + count ++ + } + + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + if (message != ""){ + postToDingTalk(message) + } + $.done(); + }) +async function showMsg() { + if ($.errorMsg) return + //allMessage += `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆 🐶${$.message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + + ReturnMessage=`📣=============账号${$.index}=============📣\n` + ReturnMessage+=`账号名称:${$.nickName || $.UserName}\n`; + ReturnMessage+=`今日收入:${$.todayIncomeBean}京豆 🐶\n`; + ReturnMessage+=`昨日支出:${$.expenseBean}京豆 🐶\n`; + ReturnMessage+=`昨日收入:${$.incomeBean}京豆 🐶\n`; + ReturnMessage+=`当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶\n`; + + message += "" + `当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶\n` +"\n\n" + message += "" +`今日收入:${$.todayIncomeBean}京豆 🐶\n` + "\n\n" + message += "" + `昨日收入:${$.incomeBean}京豆 🐶\n` +"\n\n" + message += "" +`昨日支出:${$.expenseBean}京豆 🐶\n` +"\n\n" + // message += "" +`🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶` +"\n\n" + + + if(typeof $.JDtotalcash !== "undefined"){ + ReturnMessage+=`极速金币:${$.JDtotalcash}金币(≈${$.JDtotalcash / 10000}元)\n`; + message += "" + `极速金币:${$.JDtotalcash}金币(≈${$.JDtotalcash / 10000}元)\n` +"\n\n" + } + if(typeof $.JdzzNum !== "undefined"){ + ReturnMessage+=`京东赚赚:${$.JdzzNum}金币(≈${$.JdzzNum / 10000}元)\n`; + message += "" + `京东赚赚:${$.JdzzNum}金币(≈${$.JdzzNum / 10000}元)\n` +"\n\n" + } + if($.JdMsScore!=0){ + ReturnMessage+=`京东秒杀:${$.JdMsScore}秒秒币(≈${$.JdMsScore / 1000}元)\n`; + message += "" + `京东秒杀:${$.JdMsScore}秒秒币(≈${$.JdMsScore / 1000}元)\n` +"\n\n" + } + + // message += "" +`🏭🏭🏭🏭🏭🏭🏭🏭🏭🏭` +"\n\n" + + + if(typeof $.JDEggcnt !== "undefined"){ + ReturnMessage+=`京喜牧场:${$.JDEggcnt}枚鸡蛋\n`; + message += "" + `京喜牧场:${$.JDEggcnt}枚鸡蛋\n` +"\n\n" + } + if($.JdFarmProdName != ""){ + if($.JdtreeEnergy!=0){ + ReturnMessage+=`东东农场:${$.JdFarmProdName},进度${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(2)}%`; + message += "" + `东东农场:${$.JdFarmProdName},进度${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(2)}%` + if($.JdwaterD!='Infinity' && $.JdwaterD!='-Infinity'){ + ReturnMessage+=`,${$.JdwaterD === 1 ? '明天' : $.JdwaterD === 2 ? '后天' : $.JdwaterD + '天后'}可兑🍉\n`; + message += "" + `,${$.JdwaterD === 1 ? '明天' : $.JdwaterD === 2 ? '后天' : $.JdwaterD + '天后'}可兑🍉\n` +"\n\n" + } else { + ReturnMessage+=`\n` + "\n\n"; + } + } else { + ReturnMessage+=`东东农场:${$.JdFarmProdName}\n`; + message += "" +`东东农场:${$.JdFarmProdName}\n` +"\n\n" + } + } + if ($.jxFactoryInfo) { + ReturnMessage += `京喜工厂:${$.jxFactoryInfo}🏭\n` + message += "" + `京喜工厂:${$.jxFactoryInfo}🏭\n` +"\n\n" + } + if ($.ddFactoryInfo) { + ReturnMessage += `东东工厂:${$.ddFactoryInfo}🏭\n` + message += "" + `东东工厂:${$.ddFactoryInfo}🏭\n` +"\n\n" + } + + const response = await await PetRequest('energyCollect'); + const initPetTownRes = await PetRequest('initPetTown'); + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if (response.resultCode === '0') { + ReturnMessage += `东东萌宠:${$.petInfo.goodsInfo.goodsName},`; + ReturnMessage += `勋章${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块(${response.result.medalPercent}%)\n`; + //ReturnMessage += ` 已有${response.result.medalNum}块勋章,还需${response.result.needCollectMedalNum}块\n`; + message += "" +`东东萌宠:${$.petInfo.goodsInfo.goodsName},` + message += "" + `勋章${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块(${response.result.medalPercent}%)\n` +"\n\n" + + } + } + ReturnMessage+=`🧧🧧🧧🧧红包明细🧧🧧🧧🧧`; + message += "" +`🧧🧧🧧🧧红包明细🧧🧧🧧🧧` + "\n\n" + ReturnMessage+=`${$.message}\n\n`; + message += "" + `${$.message}\n\n` +"\n\n" + allMessage+=ReturnMessage; + $.msg($.name, '', ReturnMessage , {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + //$.errorMsg = `数据异常`; + //$.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } + } + await queryexpirejingdou();//过期京豆 + await redPacket();//过期红包 + // console.log(`昨日收入:${$.incomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + }) + $.expirejingdou = data['expirejingdou'][0]['expireamount']; + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data + $.jxRed = 0, $.jsRed = 0, $.jdRed = 0, $.jdhRed = 0, $.jxRedExpire = 0, $.jsRedExpire = 0, $.jdRedExpire = 0, $.jdhRedExpire = 0; + let t = new Date() + t.setDate(t.getDate() + 1) + t.setHours(0, 0, 0, 0) + t = parseInt((t - 1) / 1000) + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2) + $.jsRed = $.jsRed.toFixed(2) + $.jdRed = $.jdRed.toFixed(2) + $.jdhRed = $.jdhRed.toFixed(2) + $.balance = data.balance + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2) + // $.message += `\n当前总红包:${$.balance}(今日总过期${$.expiredBalance})元 🧧\n京喜红包:${$.jxRed}(今日将过期${$.jxRedExpire.toFixed(2)})元 🧧\n极速红包:${$.jsRed}(今日将过期${$.jsRedExpire.toFixed(2)})元 🧧\n京东红包:${$.jdRed}(今日将过期${$.jdRedExpire.toFixed(2)})元 🧧\n健康红包:${$.jdhRed}(今日将过期${$.jdhRedExpire.toFixed(2)})元 🧧`; + + $.message += "" + `【当前总红包】:${$.balance}( 今日总过期${$.expiredBalance} )元 🧧` +"\n\n" + $.message += "" + `【京喜红包】:${$.jxRed}( 今日将过期${$.jxRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【极速红包】:${$.jsRed}( 今日将过期${$.jsRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【京东红包】:${$.jdRed}( 今日将过期${$.jdRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【健康红包】:${$.jdhRed}( 今日将过期${$.jdhRedExpire.toFixed(2)} )元 🧧` +"\n\n" + + + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getJdZZ() { + return new Promise(resolve => { + $.get(taskJDZZUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JdzzNum = data.data.totalNum + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskJDZZUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function getMs() { + return new Promise(resolve => { + $.post(taskMsPostUrl('homePageV2', {}, 'appid=SecKill2020'), (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === 2041) { + $.JdMsScore = data.result.assignment.assignmentPoints || 0 + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function taskMsPostUrl(function_id, body = {}, extra = '', function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&${extra}`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/babelDiy/Zeus/2NUvze9e1uWf4amBhe1AV6ynmSuH/index.html", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +async function getjdfruit() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + if ($.farmInfo.farmUserPro) { + $.JdFarmProdName=$.farmInfo.farmUserPro.name; + $.JdtreeEnergy=$.farmInfo.farmUserPro.treeEnergy; + $.JdtreeTotalEnergy=$.farmInfo.farmUserPro.treeTotalEnergy; + + let waterEveryDayT = $.JDwaterEveryDayT; + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + $.JdwaterTotalT = waterTotalT; + $.JdwaterD = waterD; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jdfruitRequest(function_id, body = {}, timeout = 1000){ + return new Promise(resolve => { + setTimeout(() => { + $.get(taskfruitUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDwaterEveryDayT = data.totalWaterTaskInit.totalWaterTaskTimes; + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} + + +async function PetRequest(function_id, body = {}) { + await $.wait(3000); + return new Promise((resolve, reject) => { + $.post(taskPetUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data) + } + }) + }) +} +function taskPetUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} + +function taskfruitUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, + headers: { + Cookie: cookie, + UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000, + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function cash() { + return new Promise(resolve => { + $.get(taskcashUrl('MyAssetsService.execute', + {"method": "userCashRecord", "data": {"channel": 1, "pageNum": 1, "pageSize": 20}}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDtotalcash = data.data.goldBalance ; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +var __Oxb24bc = ["lite-android&", "stringify", "&android&3.1.0&", "&", "&846c4c32dae910ef", "12aea658f76e453faf803d15c40a72e0", "isNode", "crypto-js", "", "api?functionId=", "&body=", "&appid=lite-android&client=android&uuid=846c4c32dae910ef&clientVersion=3.1.0&t=", "&sign=", "api.m.jd.com", "*/*", "RN", "JDMobileLite/3.1.0 (iPad; iOS 14.4; Scale/2.00)", "zh-Hans-CN;q=1, ja-CN;q=0.9", "undefined", "log", "", "", "", "", "jsjia", "mi.com"]; + +function taskcashUrl(_0x7683x2, _0x7683x3 = {}) { + let _0x7683x4 = +new Date(); + let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; + let _0x7683x6 = __Oxb24bc[0x5]; + const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : $.CryptoJS; + let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); + return { + url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, + headers: { + 'Host': __Oxb24bc[0xd], + 'accept': __Oxb24bc[0xe], + 'kernelplatform': __Oxb24bc[0xf], + 'user-agent': __Oxb24bc[0x10], + 'accept-language': __Oxb24bc[0x11], + 'Cookie': cookie + } + } +}(function(_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { + _0x7683xe = __Oxb24bc[0x12]; + _0x7683xc = function(_0x7683xf) { + if (typeof alert !== _0x7683xe) { + alert(_0x7683xf) + }; + if (typeof console !== _0x7683xe) { + console[__Oxb24bc[0x13]](_0x7683xf) + } + }; + _0x7683xb = function(_0x7683x7, _0x7683x9) { + return _0x7683x7 + _0x7683x9 + }; + _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); + try { + _0x7683x9 = __encode; + if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { + _0x7683xc(_0x7683xd) + } + } catch (e) { + _0x7683xc(_0x7683xd) + } +})({}) + +async function JxmcGetRequest() { + let url = ``; + let myRequest = ``; + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + + + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.JDEggcnt=data.data.eggcnt; + } + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 惊喜工厂信息查询 +function getJxFactory() { + return new Promise(async resolve => { + let infoMsg = ""; + await $.get(jxTaskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + $.jxFactoryInfo = "查询失败!"; + //console.log("jx工厂查询失败" + err) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + //const productionStage = data.productionStage; + $.commodityDimId = production.commodityDimId; + // subTitle = data.user.pin; + await GetCommodityDetails();//获取已选购的商品信息 + infoMsg = `${$.jxProductName} ,进度:${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) { + infoMsg = `${$.productName} ,已经可兑换,请手动兑换`; + } + if (production['exchangeStatus'] === 3) { + if (new Date().getHours() === 9) { + infoMsg = `${$.productName} ,兑换已超时,请选择新商品进行制造`; + } + } + // await exchangeProNotify() + } else { + infoMsg += ` ,预计:${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(2)}天可兑换` + } + if (production.status === 3) { + infoMsg = "${$.productName} ,已经超时失效, 请选择新商品进行制造" + } + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + // infoMsg = "当前未开始生产商品,请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动" + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + // infoMsg = "当前未开始生产商品,请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动" + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + $.jxFactoryInfo = infoMsg; + // console.log(infoMsg); + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + } + ) +} + +// 惊喜的Taskurl +function jxTaskurl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +//惊喜查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(jxTaskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.jxProductName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 东东工厂信息查询 +async function getDdFactoryInfo() { + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + let infoMsg = ""; + return new Promise(resolve => { + $.post(ddFactoryTaskUrl('jdfactory_getHomeData'), async (err, resp, data) => { + try { + if (err) { + $.ddFactoryInfo = "获取失败!" + /*console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`)*/ + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + // $.newUser = data.data.result.newUser; + //let wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { + totalScore, + useScore, + produceScore, + remainScore, + couponCount, + name + } = data.data.result.factoryInfo; + infoMsg = `${name} 剩余${couponCount};电力投入情况 ${useScore}/${totalScore};当前总电力:${remainScore * 1 + useScore * 1} ;完成度:${((remainScore * 1 + useScore * 1) / (totalScore * 1)).toFixed(2) * 100}%` + + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + // await jdfactory_addEnergy(); + infoMsg = `${name} ,目前数量:${couponCount},当前总电量为:${remainScore * 1 + useScore * 1},已经可以兑换此商品所需总电量:${totalScore},请🔥速去活动页面查看` + } + + } else { + // infoMsg = `当前未选择商品(或未开启活动) , 请到京东APP=>首页=>京东电器=>(底栏)东东工厂 选择商品!` + } + } else { + $.ddFactoryInfo = "获取失败!" + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + $.ddFactoryInfo = infoMsg; + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function ddFactoryTaskUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000, + } +} +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getGetRequest(type, url) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + + const method = `GET`; + let headers = { + 'Origin': `https://st.jingxi.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json`, + 'Referer': `https://st.jingxi.com/pingou/jxmc/index.html`, + 'Host': `m.jingxi.com`, + 'User-Agent': UA, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` + }; + return {url: url, method: method, headers: headers}; +} + + +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function decrypt(time, stk, type, url) { + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.Jxmctoken).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + $.appId = 10028; + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent':$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.Jxmctoken = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + // if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + eval(enCryptMethodJDString+';$.enCryptMethodJD=test'); + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + + +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + +//我加的函数 +function postToDingTalk(messgae) { + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"资产变动", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} diff --git a/src/main/resources/test_bean.js b/src/main/resources/test_bean.js new file mode 100644 index 0000000..72a38c1 --- /dev/null +++ b/src/main/resources/test_bean.js @@ -0,0 +1,839 @@ +/* +种豆得豆 脚本更新地址:https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js +更新时间:2021-04-9 +活动入口:动动APP我的-更多工具-种豆得豆 +已支持IOS动动多账号,云端多动动账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +注:会自动关注任务中的店铺跟商品,介意者勿使用。 +互助码shareCode请先手动运行脚本查看打印可看到 +每个动动账号每天只能帮助3个人。多出的助力码将会助力失败。 +=====================================Quantumult X================================= +[task_local] +1 7-21/2 * * * https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js, tag=种豆得豆, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png, enabled=true + +=====================================Loon================================ +[Script] +cron "1 7-21/2 * * *" script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js,tag=动动种豆得豆 + +======================================Surge========================== +动动种豆得豆 = type=cron,cronexp="1 7-21/2 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js + +====================================小火箭============================= +动动种豆得豆 = type=cron,script-path=https://raw.githubusercontent.com/Aaron-lv/sync/jd_scripts/jd_plantBean.js, cronexpr="1 7-21/2 * * *", timeout=3600, enable=true + +*/ +const $ = new Env('动动种豆得豆'); +//Node.js用户请在jdCookie.js处填写动动ck; +//ios等软件用户直接用NobyDa的jd cookie +let jdNotify = true;//是否开启静默运行。默认true开启 +let cookiesArr = [], cookie = '', jdPlantBeanShareArr = [], isBox = false, notify, newShareCodes, option,subTitle; +let message = "" +//动动接口地址 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +//助力好友分享码(最多3个,否则后面的助力失败) +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一动动账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个动动账号) +let shareCodes = [''] +let allMessage = ``; +let currentRoundId = null;//本期活动id +let lastRoundId = null;//上期id +let roundList = []; +let awardState = '';//上期活动的豆豆是否收取 +let randomCount = $.isNode() ? 20 : 5; +let num; +!(async () => { + message += "[通知] 种豆得豆 \n\n --- \n\n" + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + + + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + await TotalBean(); + console.log(`\n开始【动动账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + subTitle = ''; + option = {}; + await shareCodesFormat(); + await jdPlantBean(); + await showMsg(); + } + + message += "----\n\n" + } + + that.log(message) + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})().catch((e) => { + message += " " + `❌ ${$.name}, 失败! 原因: ${e}!` + "\n\n" + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') +}).finally(() => { + // message += getPic() + that.log(message) + postToDingTalk(message) + $.done(); +}) + +async function jdPlantBean() { + try { + console.log(`获取任务及基本信息`) + await plantBeanIndex(); + for (let i = 0; i < $.plantBeanIndexResult.data.roundList.length; i++) { + if ($.plantBeanIndexResult.data.roundList[i].roundState === "2") { + num = i + break + } + } + // console.log(plantBeanIndexResult.data.taskList); + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0' && $.plantBeanIndexResult.data) { + const shareUrl = $.plantBeanIndexResult.data.jwordShareInfo.shareUrl + $.myPlantUuid = getParam(shareUrl, 'plantUuid') + console.log(`\n【动动账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.myPlantUuid}\n`); + roundList = $.plantBeanIndexResult.data.roundList; + currentRoundId = roundList[num].roundId;//本期的roundId + lastRoundId = roundList[num - 1].roundId;//上期的roundId + awardState = roundList[num - 1].awardState; + $.taskList = $.plantBeanIndexResult.data.taskList; + subTitle = `【动动昵称】${$.plantBeanIndexResult.data.plantUserInfo.plantNickName}`; + message += " " + `【上期时间】${roundList[num - 1].dateDesc.replace('上期 ', '')}\n` + "\n\n"; + message += " " + `【上期成长值】${roundList[num - 1].growth}\n` + "\n\n"; + await receiveNutrients();//定时领取营养液 + await doHelp();//助力 + await doTask();//做日常任务 + await doEgg(); + await stealFriendWater(); + await doCultureBean(); + await doGetReward(); + await showTaskProcess(); + await plantShareSupportList(); + } else { + console.log(`种豆得豆-初始失败: ${JSON.stringify($.plantBeanIndexResult)}`); + } + } catch (e) { + $.logErr(e); + const errMsg = `动动账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `${errMsg}`) + } +} +async function doGetReward() { + console.log(`【上轮豆豆】${awardState === '4' ? '采摘中' : awardState === '5' ? '可收获了' : '已领取'}`); + if (awardState === '4') { + //豆豆采摘中... + message += "" + `【上期状态】${roundList[num - 1].tipBeanEndTitle}\n` + "\n\n"; + } else if (awardState === '5') { + //收获 + await getReward(); + console.log('开始领取豆豆'); + if ($.getReward && $.getReward.code === '0') { + console.log('豆豆领取成功'); + message += "" + `【上期兑换豆豆】${$.getReward.data.awardBean}个\n` + "\n\n"; + $.msg($.name, subTitle, message); + allMessage += `动动账号${$.index} ${$.nickName}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}`, `动动账号${$.index} ${$.nickName}\n${message}`); + // } + } else { + console.log(`$.getReward 异常:${JSON.stringify($.getReward)}`) + } + } else if (awardState === '6') { + //豆豆已领取 + message += "" + `【上期兑换豆豆】${roundList[num - 1].awardBeans}个\n` + "\n\n"; + } + if (roundList[num].dateDesc.indexOf('本期 ') > -1) { + roundList[num].dateDesc = roundList[num].dateDesc.substr(roundList[num].dateDesc.indexOf('本期 ') + 3, roundList[num].dateDesc.length); + } + message += "" + `【本期时间】${roundList[num].dateDesc}\n` + "\n\n"; + message += "" + `【本期成长值】${roundList[num].growth}\n` + "\n\n"; +} +async function doCultureBean() { + await plantBeanIndex(); + if ($.plantBeanIndexResult && $.plantBeanIndexResult.code === '0') { + const plantBeanRound = $.plantBeanIndexResult.data.roundList[num] + if (plantBeanRound.roundState === '2') { + //收取营养液 + if (plantBeanRound.bubbleInfos && plantBeanRound.bubbleInfos.length) console.log(`开始收取营养液`) + for (let bubbleInfo of plantBeanRound.bubbleInfos) { + console.log(`收取-${bubbleInfo.name}-的营养液`) + await cultureBean(plantBeanRound.roundId, bubbleInfo.nutrientsType) + console.log(`收取营养液结果:${JSON.stringify($.cultureBeanRes)}`) + } + } + } else { + console.log(`plantBeanIndexResult:${JSON.stringify($.plantBeanIndexResult)}`) + } +} +async function stealFriendWater() { + await stealFriendList(); + if ($.stealFriendList && $.stealFriendList.code === '0') { + if ($.stealFriendList.data && $.stealFriendList.data.tips) { + console.log('\n\n今日偷取好友营养液已达上限\n\n'); + return + } + if ($.stealFriendList.data && $.stealFriendList.data.friendInfoList && $.stealFriendList.data.friendInfoList.length > 0) { + let nowTimes = new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000); + for (let item of $.stealFriendList.data.friendInfoList) { + if (new Date(nowTimes).getHours() === 20) { + if (item.nutrCount >= 2) { + // console.log(`可以偷的好友的信息::${JSON.stringify(item)}`); + console.log(`可以偷的好友的信息paradiseUuid::${JSON.stringify(item.paradiseUuid)}`); + await collectUserNutr(item.paradiseUuid); + console.log(`偷取好友营养液情况:${JSON.stringify($.stealFriendRes)}`) + if ($.stealFriendRes && $.stealFriendRes.code === '0') { + console.log(`偷取好友营养液成功`) + } + } + } else { + if (item.nutrCount >= 3) { + // console.log(`可以偷的好友的信息::${JSON.stringify(item)}`); + console.log(`可以偷的好友的信息paradiseUuid::${JSON.stringify(item.paradiseUuid)}`); + await collectUserNutr(item.paradiseUuid); + console.log(`偷取好友营养液情况:${JSON.stringify($.stealFriendRes)}`) + if ($.stealFriendRes && $.stealFriendRes.code === '0') { + console.log(`偷取好友营养液成功`) + } + } + } + } + } + } else { + console.log(`$.stealFriendList 异常: ${JSON.stringify($.stealFriendList)}`) + } +} +async function doEgg() { + await egg(); + if ($.plantEggLotteryRes && $.plantEggLotteryRes.code === '0') { + if ($.plantEggLotteryRes.data.restLotteryNum > 0) { + const eggL = new Array($.plantEggLotteryRes.data.restLotteryNum).fill(''); + console.log(`目前共有${eggL.length}次扭蛋的机会`) + for (let i = 0; i < eggL.length; i++) { + console.log(`开始第${i + 1}次扭蛋`); + await plantEggDoLottery(); + console.log(`天天扭蛋成功:${JSON.stringify($.plantEggDoLotteryResult)}`); + } + } else { + console.log('暂无扭蛋机会') + } + } else { + console.log('查询天天扭蛋的机会失败' + JSON.stringify($.plantEggLotteryRes)) + } +} +async function doTask() { + if ($.taskList && $.taskList.length > 0) { + for (let item of $.taskList) { + if (item.isFinished === 1) { + console.log(`${item.taskName} 任务已完成\n`); + continue; + } else { + if (item.taskType === 8) { + console.log(`\n【${item.taskName}】任务未完成,需自行手动去动动APP完成,${item.desc}营养液\n`) + } else { + console.log(`\n【${item.taskName}】任务未完成,${item.desc}营养液\n`) + } + } + if (item.dailyTimes === 1 && item.taskType !== 8) { + console.log(`\n开始做 ${item.taskName}任务`); + // $.receiveNutrientsTaskRes = await receiveNutrientsTask(item.taskType); + await receiveNutrientsTask(item.taskType); + console.log(`做 ${item.taskName}任务结果:${JSON.stringify($.receiveNutrientsTaskRes)}\n`); + } + if (item.taskType === 3) { + //浏览店铺 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedShopNum = item.totalNum - item.gainedNum; + if (unFinishedShopNum === 0) { + continue + } + await shopTaskList(); + const { data } = $.shopTaskListRes; + let goodShopListARR = [], moreShopListARR = [], shopList = []; + const { goodShopList, moreShopList } = data; + for (let i of goodShopList) { + if (i.taskState === '2') { + goodShopListARR.push(i); + } + } + for (let j of moreShopList) { + if (j.taskState === '2') { + moreShopListARR.push(j); + } + } + shopList = goodShopListARR.concat(moreShopListARR); + for (let shop of shopList) { + const { shopId, shopTaskId } = shop; + const body = { + "monitor_refer": "plant_shopNutrientsTask", + "shopId": shopId, + "shopTaskId": shopTaskId + } + const shopRes = await requestGet('shopNutrientsTask', body); + console.log(`shopRes结果:${JSON.stringify(shopRes)}`); + if (shopRes && shopRes.code === '0') { + if (shopRes.data && shopRes.data.nutrState && shopRes.data.nutrState === '1') { + unFinishedShopNum --; + } + } + if (unFinishedShopNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + if (item.taskType === 5) { + //挑选商品 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedProductNum = item.totalNum - item.gainedNum; + if (unFinishedProductNum === 0) { + continue + } + await productTaskList(); + // console.log('productTaskList', $.productTaskList); + const { data } = $.productTaskList; + let productListARR = [], productList = []; + const { productInfoList } = data; + for (let i = 0; i < productInfoList.length; i++) { + for (let j = 0; j < productInfoList[i].length; j++){ + productListARR.push(productInfoList[i][j]); + } + } + for (let i of productListARR) { + if (i.taskState === '2') { + productList.push(i); + } + } + for (let product of productList) { + const { skuId, productTaskId } = product; + const body = { + "monitor_refer": "plant_productNutrientsTask", + "productTaskId": productTaskId, + "skuId": skuId + } + const productRes = await requestGet('productNutrientsTask', body); + if (productRes && productRes.code === '0') { + // console.log('nutrState', productRes) + //这里添加多重判断,有时候会出现活动太火爆的问题,导致nutrState没有 + if (productRes.data && productRes.data.nutrState && productRes.data.nutrState === '1') { + unFinishedProductNum --; + } + } + if (unFinishedProductNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + if (item.taskType === 10) { + //关注频道 + console.log(`开始做 ${item.taskName}任务`); + let unFinishedChannelNum = item.totalNum - item.gainedNum; + if (unFinishedChannelNum === 0) { + continue + } + await plantChannelTaskList(); + const { data } = $.plantChannelTaskList; + // console.log('goodShopList', data.goodShopList); + // console.log('moreShopList', data.moreShopList); + let goodChannelListARR = [], normalChannelListARR = [], channelList = []; + const { goodChannelList, normalChannelList } = data; + for (let i of goodChannelList) { + if (i.taskState === '2') { + goodChannelListARR.push(i); + } + } + for (let j of normalChannelList) { + if (j.taskState === '2') { + normalChannelListARR.push(j); + } + } + channelList = goodChannelListARR.concat(normalChannelListARR); + for (let channelItem of channelList) { + const { channelId, channelTaskId } = channelItem; + const body = { + "channelId": channelId, + "channelTaskId": channelTaskId + } + const channelRes = await requestGet('plantChannelNutrientsTask', body); + console.log(`channelRes结果:${JSON.stringify(channelRes)}`); + if (channelRes && channelRes.code === '0') { + if (channelRes.data && channelRes.data.nutrState && channelRes.data.nutrState === '1') { + unFinishedChannelNum --; + } + } + if (unFinishedChannelNum <= 0) { + console.log(`${item.taskName}任务已做完\n`) + break; + } + } + } + } + } +} +function showTaskProcess() { + return new Promise(async resolve => { + await plantBeanIndex(); + $.taskList = $.plantBeanIndexResult.data.taskList; + if ($.taskList && $.taskList.length > 0) { + console.log(" 任务 进度"); + for (let item of $.taskList) { + console.log(`[${item["taskName"]}] ${item["gainedNum"]}/${item["totalNum"]} ${item["isFinished"]}`); + } + } + resolve() + }) +} +//助力好友 +async function doHelp() { + for (let plantUuid of newShareCodes) { + console.log(`开始助力动动账号${$.index} - ${$.nickName}的好友: ${plantUuid}`); + if (!plantUuid) continue; + if (plantUuid === $.myPlantUuid) { + console.log(`\n跳过自己的plantUuid\n`) + continue + } + await helpShare(plantUuid); + if ($.helpResult && $.helpResult.code === '0') { + // console.log(`助力好友结果: ${JSON.stringify($.helpResult.data.helpShareRes)}`); + if ($.helpResult.data.helpShareRes) { + if ($.helpResult.data.helpShareRes.state === '1') { + console.log(`助力好友${plantUuid}成功`) + console.log(`${$.helpResult.data.helpShareRes.promptText}\n`); + } else if ($.helpResult.data.helpShareRes.state === '2') { + console.log('您今日助力的机会已耗尽,已不能再帮助好友助力了\n'); + break; + } else if ($.helpResult.data.helpShareRes.state === '3') { + console.log('该好友今日已满9人助力/20瓶营养液,明天再来为Ta助力吧\n') + } else if ($.helpResult.data.helpShareRes.state === '4') { + console.log(`${$.helpResult.data.helpShareRes.promptText}\n`) + } else { + console.log(`助力其他情况:${JSON.stringify($.helpResult.data.helpShareRes)}`); + } + } + } else { + console.log(`助力好友失败: ${JSON.stringify($.helpResult)}`); + } + } +} +function showMsg() { + $.log(`\n${message}\n`); + jdNotify = $.getdata('jdPlantBeanNotify') ? $.getdata('jdPlantBeanNotify') : jdNotify; + if (!jdNotify || jdNotify === 'false') { + $.msg($.name, subTitle, message); + } +} +// ================================================此处是API================================= +//每轮种豆活动获取结束后,自动收取豆豆 +async function getReward() { + const body = { + "roundId": lastRoundId + } + $.getReward = await request('receivedBean', body); +} +//收取营养液 +async function cultureBean(currentRoundId, nutrientsType) { + let functionId = arguments.callee.name.toString(); + let body = { + "roundId": currentRoundId, + "nutrientsType": nutrientsType, + } + $.cultureBeanRes = await request(functionId, body); +} +//偷营养液大于等于3瓶的好友 +//①查询好友列表 +async function stealFriendList() { + const body = { + pageNum: '1' + } + $.stealFriendList = await request('plantFriendList', body); +} + +//②执行偷好友营养液的动作 +async function collectUserNutr(paradiseUuid) { + console.log('开始偷好友'); + // console.log(paradiseUuid); + let functionId = arguments.callee.name.toString(); + const body = { + "paradiseUuid": paradiseUuid, + "roundId": currentRoundId + } + $.stealFriendRes = await request(functionId, body); +} +async function receiveNutrients() { + $.receiveNutrientsRes = await request('receiveNutrients', {"roundId": currentRoundId, "monitor_refer": "plant_receiveNutrients"}) + // console.log(`定时领取营养液结果:${JSON.stringify($.receiveNutrientsRes)}`) +} +async function plantEggDoLottery() { + $.plantEggDoLotteryResult = await requestGet('plantEggDoLottery'); +} +//查询天天扭蛋的机会 +async function egg() { + $.plantEggLotteryRes = await requestGet('plantEggLotteryIndex'); +} +async function productTaskList() { + let functionId = arguments.callee.name.toString(); + $.productTaskList = await requestGet(functionId, {"monitor_refer": "plant_productTaskList"}); +} +async function plantChannelTaskList() { + let functionId = arguments.callee.name.toString(); + $.plantChannelTaskList = await requestGet(functionId); + // console.log('$.plantChannelTaskList', $.plantChannelTaskList) +} +async function shopTaskList() { + let functionId = arguments.callee.name.toString(); + $.shopTaskListRes = await requestGet(functionId, {"monitor_refer": "plant_receiveNutrients"}); + // console.log('$.shopTaskListRes', $.shopTaskListRes) +} +async function receiveNutrientsTask(awardType) { + const functionId = arguments.callee.name.toString(); + const body = { + "monitor_refer": "receiveNutrientsTask", + "awardType": `${awardType}`, + } + $.receiveNutrientsTaskRes = await requestGet(functionId, body); +} +async function plantShareSupportList() { + $.shareSupportList = await requestGet('plantShareSupportList', {"roundId": ""}); + if ($.shareSupportList && $.shareSupportList.code === '0') { + const { data } = $.shareSupportList; + //当日北京时间0点时间戳 + const UTC8_Zero_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + //次日北京时间0点时间戳 + const UTC8_End_Time = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 + (24 * 60 * 60 * 1000); + let friendList = []; + data.map(item => { + if (UTC8_Zero_Time <= item['createTime'] && item['createTime'] < UTC8_End_Time) { + friendList.push(item); + } + }) + message += "" `【助力您的好友】共${friendList.length}人` + "\n\n"; + } else { + console.log(`异常情况:${JSON.stringify($.shareSupportList)}`) + } +} +//助力好友的api +async function helpShare(plantUuid) { + console.log(`\n开始助力好友: ${plantUuid}`); + const body = { + "plantUuid": plantUuid, + "wxHeadImgUrl": "", + "shareUuid": "", + "followType": "1", + } + $.helpResult = await request(`plantBeanIndex`, body); + console.log(`助力结果的code:${$.helpResult && $.helpResult.code}`); +} +async function plantBeanIndex() { + $.plantBeanIndexResult = await request('plantBeanIndex');//plantBeanIndexBody +} +function readShareCode() { + return new Promise(async resolve => { + $.get({url: ``, timeout: 10000}, (err, resp, data) => { + try { + if (err) { + //console.log(`${JSON.stringify(err)}`) + //console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + console.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(15000); + resolve() + }) +} +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // console.log(`第${$.index}个动动账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + newShareCodes = []; + if ($.shareCodesArr[$.index - 1]) { + newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + } else { + console.log(`由于您第${$.index}个动动账号未提供shareCode,将采纳本脚本自带的助力码\n`) + const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); + newShareCodes = shareCodes[tempIndex].split('@'); + } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + console.log(`第${$.index}个动动账号将要助力的好友${JSON.stringify(newShareCodes)}`) + resolve(); + }) +} +function requireConfig() { + return new Promise(resolve => { + console.log('开始获取种豆得豆配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写动动ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdPlantBeanShareCodes = $.isNode() ? require('./jdPlantBeanShareCodes.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${cookiesArr.length}个动动账号\n`) + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(jdPlantBeanShareCodes).forEach((item) => { + if (jdPlantBeanShareCodes[item]) { + $.shareCodesArr.push(jdPlantBeanShareCodes[item]) + } + }) + } else { + if ($.getdata('jd_plantbean_inviter')) $.shareCodesArr = $.getdata('jd_plantbean_inviter').split('\n').filter(item => !!item); + console.log(`\nBoxJs设置的${$.name}好友邀请码:${$.getdata('jd_plantbean_inviter') ? $.getdata('jd_plantbean_inviter') : '暂无'}\n`); + } + // console.log(`\n种豆得豆助力码::${JSON.stringify($.shareCodesArr)}`); + console.log(`您提供了${$.shareCodesArr.length}个账号的种豆得豆助力码\n`); + resolve() + }) +} +function requestGet(function_id, body = {}) { + if (!body.version) { + body["version"] = "9.0.0.1"; + } + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return new Promise(async resolve => { + await $.wait(2000); + const option = { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': 'JD4iPhone/167283 (iPhone;iOS 13.6.1;Scale/3.00)', + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}){ + return new Promise(async resolve => { + await $.wait(2000); + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n种豆得豆: API查询请求失败 ‼️‼️') + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function taskUrl(function_id, body) { + body["version"] = "9.2.4.0"; + body["monitor_source"] = "plant_app_plant_index"; + body["monitor_refer"] = ""; + return { + url: JD_API_HOST, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=ld&client=apple&area=19_1601_50258_51885&build=167490&clientVersion=9.3.2`, + headers: { + "Cookie": cookie, + "Host": "api.m.jd.com", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-Hans-CN;q=1,en-CN;q=0.9", + "Accept-Encoding": "gzip, deflate, br", + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + } +} +function getParam(url, name) { + const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i") + const r = url.match(reg) + if (r != null) return unescape(r[2]); + return null; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +// prettier-ignore +function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + + + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"种豆得豆", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} + +// function getPic(){ +// let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] +// let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + +// pos = parseInt(11*Math.random()) +// address = address + code[pos] + ")" +// return address +// } \ No newline at end of file diff --git a/src/main/resources/test_egg.js b/src/main/resources/test_egg.js new file mode 100644 index 0000000..c842428 --- /dev/null +++ b/src/main/resources/test_egg.js @@ -0,0 +1,303 @@ +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +const notify = $.isNode() ? require('./sendNotify') : ''; +let message = "" +//Node.js用户请在jdCookie.js处填写动动ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + + message += "[通知] 天天提鹅 \n\n --- \n\n" + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + that.log(`\n***********开始【动动账号${$.index}】${$.nickName || $.UserName}********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdDailyEgg(); + } + message = message +"----\n\n" + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + that.log(message) + postToDingTalk(message) + $.done(); + }) +async function jdDailyEgg() { + await toDailyHome() + await toWithdraw() + await toGoldExchange(); +} +function toGoldExchange() { + return new Promise(async resolve => { + const body = { + "timeSign": 0, + "environment": "jrApp", + "riskDeviceInfo": "{}" + } + $.post(taskUrl('toGoldExchange', body), (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // that.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '0000') { + that.log(`兑换金币:${data.resultData.data.cnumber}`); + message += "" + `兑换金币:${data.resultData.data.cnumber}` + "\n\n" + that.log(`当前总金币:${data.resultData.data.goldTotal}`); + message += "" + `当前总金币:${data.resultData.data.goldTotal}` +"\n\n" + } else if (data.resultData.code !== '0000') { + that.log(`兑换金币失败:${data.resultData.msg}`) + } + } + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function toWithdraw() { + return new Promise(async resolve => { + const body = { + "timeSign": 0, + "environment": "jrApp", + "riskDeviceInfo": "{}" + } + $.post(taskUrl('toWithdraw', body), (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // that.log(data) + data = JSON.parse(data); + if (data.resultCode === 0) { + if (data.resultData.code === '0000') { + message += "" +`收取鹅蛋:${data.resultData.data.eggTotal}个成功` + "\n\n" + message += "" + `当前总鹅蛋数量:${data.resultData.data.userLevelDto.userHaveEggNum}` + "\n\n" + that.log(`收取鹅蛋:${data.resultData.data.eggTotal}个成功`); + that.log(`当前总鹅蛋数量:${data.resultData.data.userLevelDto.userHaveEggNum}`); + } else if (data.resultData.code !== '0000') { + that.log(`收取鹅蛋失败:${data.resultData.msg}`) + message += "" + `收取鹅蛋失败:${data.resultData.msg}` + "\n\n" + } + } + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function toDailyHome() { + return new Promise(async resolve => { + const body = { + "timeSign": 0, + "environment": "jrApp", + "riskDeviceInfo": "{}" + } + $.post(taskUrl('toDailyHome', body), (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // that.log(data) + data = JSON.parse(data); + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function taskUrl(function_id, body) { + return { + url: `${JD_API_HOST}/${function_id}`, + body: `reqData=${encodeURIComponent(JSON.stringify(body))}`, + headers: { + 'Accept' : `application/json`, + 'Origin' : `https://uua.jr.jd.com`, + 'Cookie' : cookie, + 'Content-Type' : `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host' : `ms.jr.jd.com`, + 'Connection' : `keep-alive`, + 'User-Agent' : $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer' : `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, + 'Accept-Language' : `zh-cn` + } + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"天天提鹅", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} + +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_fruit.js b/src/main/resources/test_fruit.js new file mode 100644 index 0000000..cc86ec7 --- /dev/null +++ b/src/main/resources/test_fruit.js @@ -0,0 +1,1518 @@ +let cookiesArr = [], cookie = '', jdFruitShareArr = [], isBox = false, notify, newShareCodes; +//助力好友分享码(最多4个,否则后面的助力失败),原因:动动农场每人每天只有四次助力机会 +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一动动账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个动动账号) +let shareCodes = + [ // 这个列表填入你要助力的好友的shareCode +] +let message = '', subTitle = '', option = {}, isFruitFinished = false; +const retainWater = 100;//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +let randomCount = $.isNode() ? 0 : 0; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; +!(async () => { + await requireConfig(); + message += "[通知] 动动农场 \n\n --- \n\n" + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + + + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + that.log(`\n开始【动动账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + subTitle = ''; + option = {}; + await shareCodesFormat(); + await jdFruit(); + } + message += "----\n\n" + } + + that.log(message) + +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + that.log(message) + message = message + getPic() + postToDingTalk(message) + $.done(); + }) + + + +async function jdFruit() { + subTitle = `【动动账号${$.index}】${$.nickName}`; + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + // option['media-url'] = $.farmInfo.farmUserPro.goodsImage; + message = message + "【水果名称】 " + `${$.farmInfo.farmUserPro.name}` + "\n\n"; + message += "【已兑换水果】" + `${$.farmInfo.farmUserPro.winTimes}` + "次\n\n"; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.farmInfo.farmUserPro.shareCode}\n`); + that.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); + await getHelp(); + await masterHelpShare();//助力好友 + await setHelp(); + if ($.farmInfo.treeState === 2 || $.farmInfo.treeState === 3) { + option['open-url'] = urlSchema; + message = message + " " + $.UserName + "\n【提醒⏰】" + fruitName + "已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达" + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看`); + } + return + } else if ($.farmInfo.treeState === 1) { + that.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`) + } else if ($.farmInfo.treeState === 0) { + //已下单购买, 但未开始种植新的水果 + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】 ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达`, option); + message = message + " " + $.UserName + " \n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达" + "" + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 您忘了种植新的水果`, `动动账号${$.index} ${$.nickName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果`); + } + return + } + await doDailyTask(); + await doTenWater();//浇水十次 + await getFirstWaterAward();//领取首次浇水奖励 + await getTenWaterAward();//领取10浇水奖励 + await getWaterFriendGotAward();//领取为2好友浇水奖励 + await duck(); + await doTenWaterAgain();//再次浇水 + await predictionFruit();//预测水果成熟时间 + message = message + "----\n\n" + } else { + that.log(`初始化农场数据异常, 请登录动动 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify($.farmInfo)}`); + message = message + " " + `初始化农场数据异常, 请登录动动 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify($.farmInfo)}` + "\n\n"; + } + } catch (e) { + that.log(`任务执行异常,请检查执行日志 ‼️‼️`); + message = message + " " + `任务执行异常,请检查执行日志 ‼️‼️` + e + "\n\n"; + $.logErr(e); + } + await showMsg(); +} +async function doDailyTask() { + await taskInitForFarm(); + that.log(`开始签到`); + if (!$.farmTask.signInit.todaySigned) { + await signForFarm(); //签到 + if ($.signResult.code === "0") { + that.log(`【签到成功】获得${$.signResult.amount}g💧\\n`) + //message += `【签到成功】获得${$.signResult.amount}g💧\n`//连续签到${signResult.signDay}天 + } else { + // message += `签到失败,详询日志\n`; + that.log(`签到结果: ${JSON.stringify($.signResult)}`); + } + } else { + that.log(`今天已签到,连续签到${$.farmTask.signInit.totalSigned},下次签到可得${$.farmTask.signInit.signEnergyEachAmount}g\n`); + } + // 被水滴砸中 + that.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? '是' : '否'}`); + if ($.farmInfo.todayGotWaterGoalTask.canPop) { + await gotWaterGoalTaskForFarm(); + if ($.goalResult.code === '0') { + that.log(`【被水滴砸中】获得${$.goalResult.addEnergy}g💧\\n`); + // message += `【被水滴砸中】获得${$.goalResult.addEnergy}g💧\n` + } + } + that.log(`签到结束,开始广告浏览任务`); + if (!$.farmTask.gotBrowseTaskAdInit.f) { + let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds + let browseReward = 0 + let browseSuccess = 0 + let browseFail = 0 + for (let advert of adverts) { //开始浏览广告 + if (advert.limit <= advert.hadFinishedTimes) { + // browseReward+=advert.reward + that.log(`${advert.mainTitle}+ ' 已完成`);//,获得${advert.reward}g + continue; + } + that.log('正在进行广告浏览任务: ' + advert.mainTitle); + await browseAdTaskForFarm(advert.advertId, 0); + if ($.browseResult.code === '0') { + that.log(`${advert.mainTitle}浏览任务完成`); + //领取奖励 + await browseAdTaskForFarm(advert.advertId, 1); + if ($.browseRwardResult.code === '0') { + that.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`) + browseReward += $.browseRwardResult.amount + browseSuccess++ + } else { + browseFail++ + that.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`) + } + } else { + browseFail++ + that.log(`广告浏览任务结果: ${JSON.stringify($.browseResult)}`); + } + } + if (browseFail > 0) { + that.log(`【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\\n`); + // message += `【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\n`; + } else { + that.log(`【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`); + // message += `【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`; + } + } else { + that.log(`今天已经做过浏览广告任务\n`); + } + //定时领水 + if (!$.farmTask.gotThreeMealInit.f) { + // + await gotThreeMealForFarm(); + if ($.threeMeal.code === "0") { + that.log(`【定时领水】获得${$.threeMeal.amount}g💧\n`); + // message += `【定时领水】获得${$.threeMeal.amount}g💧\n`; + } else { + // message += `【定时领水】失败,详询日志\n`; + that.log(`定时领水成功结果: ${JSON.stringify($.threeMeal)}`); + } + } else { + that.log('当前不在定时领水时间断或者已经领过\n') + } + //给好友浇水 + if (!$.farmTask.waterFriendTaskInit.f) { + if ($.farmTask.waterFriendTaskInit.waterFriendCountKey < $.farmTask.waterFriendTaskInit.waterFriendMax) { + await doFriendsWater(); + } + } else { + that.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`) + } + // await Promise.all([ + // clockInIn(),//打卡领水 + // executeWaterRains(),//水滴雨 + // masterHelpShare(),//助力好友 + // getExtraAward(),//领取额外水滴奖励 + // turntableFarm()//天天抽奖得好礼 + // ]) + // await getAwardInviteFriend(); + await clockInIn();//打卡领水 + await executeWaterRains();//水滴雨 + await getExtraAward();//领取额外水滴奖励 + await turntableFarm()//天天抽奖得好礼 +} +async function predictionFruit() { + that.log('开始预测水果成熟时间\n'); + await initForFarm(); + await taskInitForFarm(); + let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes;//今天到到目前为止,浇了多少次水 + message += "【今日共浇水】" + `${waterEveryDayT}` + "次 \n\n" + message += "【剩余 水滴】" + `${$.farmInfo.farmUserPro.totalEnergy}` + "g💧 \n\n" + message += "【水果🍉进度】" + `${(($.farmInfo.farmUserPro.treeEnergy / + $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}` + "%,已浇水" +`${$.farmInfo.farmUserPro.treeEnergy / 10}` + "次,还需"+`${($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10}` +"次 \n\n" + if ($.farmInfo.toFlowTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n\n` +"\n\n" + } else if ($.farmInfo.toFruitTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n\n` + "\n\n" + } + // 预测n天后水果课可兑换功能 + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + message = message + "" + `【预测】${waterD === 1 ? '明天' : waterD === 2 ? '后天' : waterD + '天之后'}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉` +"\n\n"; +} +//浇水十次 +async function doTenWater() { + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { + that.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`) + return + } + if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + that.log(`\n准备浇水十次`); + let waterCount = 0; + isFruitFinished = false; + for (; waterCount < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit - $.farmTask.totalWaterTaskInit.totalWaterTaskTimes; waterCount++) { + that.log(`第${waterCount + 1}次浇水`); + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`剩余水滴${$.waterResult.totalEnergy}g`); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + if ($.waterResult.totalEnergy < 10) { + that.log(`水滴不够,结束浇水`) + break + } + await gotStageAward();//领取阶段性水滴奖励 + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log('\n今日已完成10次浇水任务\n'); + } +} +//领取首次浇水奖励 +async function getFirstWaterAward() { + await taskInitForFarm(); + //领取首次浇水奖励 + if (!$.farmTask.firstWaterInit.f && $.farmTask.firstWaterInit.totalWaterTimes > 0) { + await firstWaterTaskForFarm(); + if ($.firstWaterReward.code === '0') { + that.log(`【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`); + // message += `【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`; + } else { + // message += '【首次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取首次浇水奖励结果: ${JSON.stringify($.firstWaterReward)}`); + } + } else { + that.log('首次浇水奖励已领取\n') + } +} +//领取十次浇水奖励 +async function getTenWaterAward() { + //领取10次浇水奖励 + if (!$.farmTask.totalWaterTaskInit.f && $.farmTask.totalWaterTaskInit.totalWaterTaskTimes >= $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + await totalWaterTaskForFarm(); + if ($.totalWaterReward.code === '0') { + that.log(`【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`); + // message += `【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`; + } else { + // message += '【十次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取10次浇水奖励结果: ${JSON.stringify($.totalWaterReward)}`); + } + } else if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + // message += `【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`; + that.log(`【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`); + } + that.log('finished 水果任务完成!'); +} +//再次浇水 +async function doTenWaterAgain() { + that.log('开始检查剩余水滴能否再次浇水再次浇水\n'); + await initForFarm(); + let totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + that.log(`剩余水滴${totalEnergy}g\n`); + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + that.log(`背包已有道具:\n快速浇水卡:${fastCard === -1 ? '未解锁': fastCard + '张'}\n水滴翻倍卡:${doubleCard === -1 ? '未解锁': doubleCard + '张'}\n水滴换京豆卡:${beanCard === -1 ? '未解锁' : beanCard + '张'}\n加签卡:${signCard === -1 ? '未解锁' : signCard + '张'}\n`) + if (totalEnergy >= 100 && doubleCard > 0) { + //使用翻倍水滴卡 + for (let i = 0; i < new Array(doubleCard).fill('').length; i++) { + await userMyCardForFarm('doubleCard'); + that.log(`使用翻倍水滴卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + if (signCard > 0) { + //使用加签卡 + for (let i = 0; i < new Array(signCard).fill('').length; i++) { + await userMyCardForFarm('signCard'); + that.log(`使用加签卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match('限时翻倍')) { + that.log(`\n您设置的是水滴换豆功能,现在为您换豆`); + if (totalEnergy >= 100 && $.myCardInfoRes.beanCard > 0) { + //使用水滴换豆卡 + await userMyCardForFarm('beanCard'); + that.log(`使用水滴换豆卡结果:${JSON.stringify($.userMyCardRes)}`); + if ($.userMyCardRes.code === '0') { + message +="【水果🍉进度】" + `【水滴换豆卡】获得${$.userMyCardRes.beanCount}个京豆\n` + "\n\n"; + return + } + } else { + that.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`) + } + } + // if (totalEnergy > 100 && $.myCardInfoRes.fastCard > 0) { + // //使用快速浇水卡 + // await userMyCardForFarm('fastCard'); + // that.log(`使用快速浇水卡结果:${JSON.stringify($.userMyCardRes)}`); + // if ($.userMyCardRes.code === '0') { + // that.log(`已使用快速浇水卡浇水${$.userMyCardRes.waterEnergy}g`); + // } + // await initForFarm(); + // totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + // } + // 所有的浇水(10次浇水)任务,获取水滴任务完成后,如果剩余水滴大于等于60g,则继续浇水(保留部分水滴是用于完成第二天的浇水10次的任务) + let overageEnergy = totalEnergy - retainWater; + if (totalEnergy >= ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy)) { + //如果现有的水滴,大于水果可兑换所需的对滴(也就是把水滴浇完,水果就能兑换了) + isFruitFinished = false; + for (let i = 0; i < ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10; i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果(水果马上就可兑换了): ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log('\n浇水10g成功\n'); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + that.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`) + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else if (overageEnergy >= 10) { + that.log("目前剩余水滴:【" + totalEnergy + "】g,可继续浇水"); + isFruitFinished = false; + for (let i = 0; i < parseInt(overageEnergy / 10); i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`) + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + await gotStageAward() + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务") + } +} +//领取阶段性水滴奖励 +function gotStageAward() { + return new Promise(async resolve => { + if ($.waterResult.waterStatus === 0 && $.waterResult.treeEnergy === 10) { + that.log('果树发芽了,奖励30g水滴'); + await gotStageAwardForFarm('1'); + that.log(`浇水阶段奖励1领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`; + that.log(`【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`); + } + } else if ($.waterResult.waterStatus === 1) { + that.log('果树开花了,奖励40g水滴'); + await gotStageAwardForFarm('2'); + that.log(`浇水阶段奖励2领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } else if ($.waterResult.waterStatus === 2) { + that.log('果树长出小果子啦, 奖励50g水滴'); + await gotStageAwardForFarm('3'); + that.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`) + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } + resolve() + }) +} +//天天抽奖活动 +async function turntableFarm() { + await initForTurntableFarm(); + if ($.initForTurntableFarmRes.code === '0') { + //领取定时奖励 //4小时一次 + let {timingIntervalHours, timingLastSysTime, sysTime, timingGotStatus, remainLotteryTimes, turntableInfos} = $.initForTurntableFarmRes; + + if (!timingGotStatus) { + that.log(`是否到了领取免费赠送的抽奖机会----${sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)}`) + if (sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)) { + await timingAwardForTurntableFarm(); + that.log(`领取定时奖励结果${JSON.stringify($.timingAwardRes)}`); + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } else { + that.log(`免费赠送的抽奖机会未到时间`) + } + } else { + that.log('4小时候免费赠送的抽奖机会已领取') + } + if ($.initForTurntableFarmRes.turntableBrowserAds && $.initForTurntableFarmRes.turntableBrowserAds.length > 0) { + for (let index = 0; index < $.initForTurntableFarmRes.turntableBrowserAds.length; index++) { + if (!$.initForTurntableFarmRes.turntableBrowserAds[index].status) { + that.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`) + await browserForTurntableFarm(1, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0' && $.browserForTurntableFarmRes.status) { + that.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`) + await browserForTurntableFarm(2, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0') { + that.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`) + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } + } + } else { + that.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`) + } + } + } + //天天抽奖助力 + that.log('开始天天抽奖--好友助力--每人每天只有三次助力机会.') + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('天天抽奖-不能自己给自己助力\n') + continue + } + await lotteryMasterHelp(code); + // that.log('天天抽奖助力结果',lotteryMasterHelpRes.helpResult) + if ($.lotteryMasterHelpRes.helpResult.code === '0') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '11') { + that.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '13') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}失败,助力次数耗尽\n`); + break; + } + } + that.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`) + //抽奖 + if (remainLotteryTimes > 0) { + that.log('开始抽奖') + let lotteryResult = ''; + for (let i = 0; i < new Array(remainLotteryTimes).fill('').length; i++) { + await lotteryForTurntableFarm() + that.log(`第${i + 1}次抽奖结果${JSON.stringify($.lotteryRes)}`); + if ($.lotteryRes.code === '0') { + turntableInfos.map((item) => { + if (item.type === $.lotteryRes.type) { + that.log(`lotteryRes.type${$.lotteryRes.type}`); + if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === 'bean') { + lotteryResult += `${item.name}个,`; + } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === 'water') { + lotteryResult += `${item.name},`; + } else { + lotteryResult += `${item.name},`; + } + } + }) + //没有次数了 + if ($.lotteryRes.remainLotteryTimes === 0) { + break + } + } + } + if (lotteryResult) { + that.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`) + // message += `【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`; + } + } else { + that.log('天天抽奖--抽奖机会为0次') + } + } else { + that.log('初始化天天抽奖得好礼失败') + } +} +//领取额外奖励水滴 +async function getExtraAward() { + await masterHelpTaskInitForFarm(); + if ($.masterHelpResult.code === '0') { + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length >= 5) { + // 已有五人助力。领取助力后的奖励 + if (!$.masterHelpResult.masterGotFinal) { + await masterGotFinishedTaskForFarm(); + if ($.masterGotFinished.code === '0') { + that.log(`已成功领取好友助力奖励:【${$.masterGotFinished.amount}】g水`); + message += "【额外奖励】" + `${$.masterGotFinished.amount}` + "g水领取成功\n\n"; + } + } else { + that.log("已经领取过5好友助力额外奖励"); + message += "【水果🍉进度】" + `【额外奖励】已被领取过\n` + "\n\n"; + } + } else { + that.log("助力好友未达到5个"); + message += "【额外奖励】领取失败,原因:给您助力的人未达5个\n\n"; + } + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length > 0) { + let str = ''; + $.masterHelpResult.masterHelpPeoples.map((item, index) => { + if (index === ($.masterHelpResult.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + that.log(`\n动动昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + message += "【助力您的好友】 " + `${str}` + "\n\n" + } + that.log('领取额外奖励水滴结束\n'); + } +} + +function getHelp() { + newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jd_fruit/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.farmInfo.farmUserPro.shareCode) { + $.get({ + url: "http://api.tyh52.com/act/set/jd_fruit/" + $.farmInfo.farmUserPro.shareCode + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + +//助力好友 +async function masterHelpShare() { + that.log('开始助力好友') + let salveHelpAddWater = 0; + let remainTimes = 4;//今日剩余助力次数,默认4次(动动农场每人每天4次助力机会)。 + let helpSuccessPeoples = '';//成功助力好友 + that.log(`格式化后的助力码::${JSON.stringify(newShareCodes)}\n`); + + for (let code of newShareCodes) { + that.log(`开始助力动动账号${$.index} - ${$.nickName}的好友: ${code}`); + if (!code) continue; + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('不能为自己助力哦,跳过自己的shareCode\n') + continue + } + await masterHelp(code); + if ($.helpResult.code === '0') { + if ($.helpResult.helpResult.code === '0') { + //助力成功 + salveHelpAddWater += $.helpResult.helpResult.salveHelpAddWater; + that.log(`【助力好友结果】: 已成功给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力`); + that.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`) + helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || '匿名用户') + ','; + } else if ($.helpResult.helpResult.code === '8') { + that.log(`【助力好友结果】: 助力【${$.helpResult.helpResult.masterUserInfo.nickName}】失败,您今天助力次数已耗尽`); + } else if ($.helpResult.helpResult.code === '9') { + that.log(`【助力好友结果】: 之前给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力过了`); + } else if ($.helpResult.helpResult.code === '10') { + that.log(`【助力好友结果】: 好友【${$.helpResult.helpResult.masterUserInfo.nickName}】已满五人助力`); + } else { + that.log(`助力其他情况:${JSON.stringify($.helpResult.helpResult)}`); + } + that.log(`【今日助力次数还剩】${$.helpResult.helpResult.remainTimes}次\n`); + remainTimes = $.helpResult.helpResult.remainTimes; + if ($.helpResult.helpResult.remainTimes === 0) { + that.log(`您当前助力次数已耗尽,跳出助力`); + break + } + } else { + that.log(`助力失败::${JSON.stringify($.helpResult)}`); + } + } + if (helpSuccessPeoples && helpSuccessPeoples.length > 0) { + message += " " + `【您助力的好友👬】${helpSuccessPeoples.substr(0, helpSuccessPeoples.length - 1)}\n` + "\n\n"; + } + if (salveHelpAddWater > 0) { + // message += `【助力好友👬】获得${salveHelpAddWater}g💧\n`; + that.log(`【助力好友👬】获得${salveHelpAddWater}g💧\n`); + } + message += "" + `【今日剩余助力👬】${remainTimes}次\n` + "\n\n"; + that.log('助力好友结束,即将开始领取额外水滴奖励\n'); +} +//水滴雨 +async function executeWaterRains() { + let executeWaterRain = !$.farmTask.waterRainInit.f; + if (executeWaterRain) { + that.log(`水滴雨任务,每天两次,最多可得10g水滴`); + that.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? '是' : '否'}`); + if ($.farmTask.waterRainInit.lastTime) { + if (Date.now() < ($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000)) { + executeWaterRain = false; + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`; + that.log(`\`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`); + } + } + if (executeWaterRain) { + that.log(`开始水滴雨任务,这是第${$.farmTask.waterRainInit.winTimes + 1}次,剩余${2 - ($.farmTask.waterRainInit.winTimes + 1)}次`); + await waterRainForFarm(); + that.log('水滴雨waterRain'); + if ($.waterRain.code === '0') { + that.log('水滴雨任务执行成功,获得水滴:' + $.waterRain.addEnergy + 'g'); + that.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`); + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`; + } + } + } else { + // message += `【水滴雨】已全部完成,获得20g💧\n`; + } +} +//打卡领水活动 +async function clockInIn() { + that.log('开始打卡领水活动(签到,关注,领券)'); + await clockInInitForFarm(); + if ($.clockInInit.code === '0') { + // 签到得水滴 + if (!$.clockInInit.todaySigned) { + that.log('开始今日签到'); + await clockInForFarm(); + that.log(`打卡结果${JSON.stringify($.clockInForFarmRes)}`); + if ($.clockInForFarmRes.code === '0') { + // message += `【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`; + that.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`) + if ($.clockInForFarmRes.signDay === 7) { + //可以领取惊喜礼包 + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + } + } + if ($.clockInInit.todaySigned && $.clockInInit.totalSigned === 7) { + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + // 限时关注得水滴 + if ($.clockInInit.themes && $.clockInInit.themes.length > 0) { + for (let item of $.clockInInit.themes) { + if (!item.hadGot) { + that.log(`关注ID${item.id}`); + await clockInFollowForFarm(item.id, "theme", "1"); + that.log(`themeStep1--结果${JSON.stringify($.themeStep1)}`); + if ($.themeStep1.code === '0') { + await clockInFollowForFarm(item.id, "theme", "2"); + that.log(`themeStep2--结果${JSON.stringify($.themeStep2)}`); + if ($.themeStep2.code === '0') { + that.log(`关注${item.name},获得水滴${$.themeStep2.amount}g`); + } + } + } + } + } + // 限时领券得水滴 + if ($.clockInInit.venderCoupons && $.clockInInit.venderCoupons.length > 0) { + for (let item of $.clockInInit.venderCoupons) { + if (!item.hadGot) { + that.log(`领券的ID${item.id}`); + await clockInFollowForFarm(item.id, "venderCoupon", "1"); + that.log(`venderCouponStep1--结果${JSON.stringify($.venderCouponStep1)}`); + if ($.venderCouponStep1.code === '0') { + await clockInFollowForFarm(item.id, "venderCoupon", "2"); + if ($.venderCouponStep2.code === '0') { + that.log(`venderCouponStep2--结果${JSON.stringify($.venderCouponStep2)}`); + that.log(`从${item.name}领券,获得水滴${$.venderCouponStep2.amount}g`); + } + } + } + } + } + } + that.log('开始打卡领水活动(签到,关注,领券)结束\n'); +} +// +async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + that.log(`查询好友列表数据:\n`) + if ($.friendList) { + that.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + that.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + that.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`,"version":8,"channel":1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + that.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + that.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + that.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + that.log('今日未邀请过好友') + } + } else { + that.log(`查询好友列表失败\n`); + } +} +//给好友浇水 +async function doFriendsWater() { + await friendListInitForFarm(); + that.log('开始给好友浇水...'); + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax } = $.farmTask.waterFriendTaskInit; + that.log(`今日已给${waterFriendCountKey}个好友浇水`); + if (waterFriendCountKey < waterFriendMax) { + let needWaterFriends = []; + if ($.friendList.friends && $.friendList.friends.length > 0) { + $.friendList.friends.map((item, index) => { + if (item.friendState === 1) { + if (needWaterFriends.length < (waterFriendMax - waterFriendCountKey)) { + needWaterFriends.push(item.shareCode); + } + } + }); + //TODO ,发现bug,github action运行发现有些账号第一次没有给3个好友浇水 + that.log(`需要浇水的好友列表shareCodes:${JSON.stringify(needWaterFriends)}`); + let waterFriendsCount = 0, cardInfoStr = ''; + for (let index = 0; index < needWaterFriends.length; index ++) { + await waterFriendForFarm(needWaterFriends[index]); + that.log(`为第${index+1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`) + if ($.waterFriendForFarmRes.code === '0') { + waterFriendsCount ++; + if ($.waterFriendForFarmRes.cardInfo) { + that.log('为好友浇水获得道具了'); + if ($.waterFriendForFarmRes.cardInfo.type === 'beanCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴换豆卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'fastCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `快速浇水卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'doubleCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴翻倍卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'signCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `加签卡,`; + } + } + } else if ($.waterFriendForFarmRes.code === '11') { + that.log('水滴不够,跳出浇水') + } + } + // message += `【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`; + that.log(`【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`); + if (cardInfoStr && cardInfoStr.length > 0) { + // message += `【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`; + that.log(`【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`); + } + } else { + that.log('您的好友列表暂无好友,快去邀请您的好友吧!') + } + } else { + that.log(`今日已为好友浇水量已达${waterFriendMax}个`) + } +} +//领取给3个好友浇水后的奖励水滴 +async function getWaterFriendGotAward() { + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit + if (waterFriendCountKey >= waterFriendMax) { + if (!waterFriendGotAward) { + await waterFriendGotAwardForFarm(); + that.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`) + if ($.waterFriendGotAwardRes.code === '0') { + // message += `【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`; + that.log(`【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`); + } + } else { + that.log(`给好友浇水的${waterFriendSendWater}g水滴奖励已领取\n`); + // message += `【给${waterFriendMax}好友浇水】奖励${waterFriendSendWater}g水滴已领取\n`; + } + } else { + that.log(`暂未给${waterFriendMax}个好友浇水\n`); + } +} +//接收成为对方好友的邀请 +async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + if ($.inviteFriendRes.helpResult.code === '0') { + that.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes.helpResult.code === '17') { + that.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } + // that.log(`开始接受6fbd26cc27ac44d6a7fed34092453f77的邀请\n`) + // await inviteFriend('6fbd26cc27ac44d6a7fed34092453f77'); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + // if ($.inviteFriendRes.helpResult.code === '0') { + // that.log(`您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + // } else if ($.inviteFriendRes.helpResult.code === '17') { + // that.log(`对方已是您的好友`) + // } +} +async function duck() { + for (let i = 0; i < 10; i++) { + //这里循环十次 + await getFullCollectionReward(); + if ($.duckRes.code === '0') { + if (!$.duckRes.hasLimit) { + that.log(`小鸭子游戏:${$.duckRes.title}`); + // if ($.duckRes.type !== 3) { + // that.log(`${$.duckRes.title}`); + // if ($.duckRes.type === 1) { + // message += `【小鸭子】为你带回了水滴\n`; + // } else if ($.duckRes.type === 2) { + // message += `【小鸭子】为你带回快速浇水卡\n` + // } + // } + } else { + that.log(`${$.duckRes.title}`) + break; + } + } else if ($.duckRes.code === '10') { + that.log(`小鸭子游戏达到上限`) + break; + } + } +} +// ========================API调用接口======================== +//鸭子,点我有惊喜 +async function getFullCollectionReward() { + return new Promise(resolve => { + const body = {"type": 2, "version": 6, "channel": 2}; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +/** + * 领取10次浇水奖励API + */ +async function totalWaterTaskForFarm() { + const functionId = 'totalWaterTaskForFarm'; + $.totalWaterReward = await request(functionId); +} +//领取首次浇水奖励API +async function firstWaterTaskForFarm() { + const functionId = 'firstWaterTaskForFarm'; + $.firstWaterReward = await request(functionId); +} +//领取给3个好友浇水后的奖励水滴API +async function waterFriendGotAwardForFarm() { + const functionId = 'waterFriendGotAwardForFarm'; + $.waterFriendGotAwardRes = await request(functionId, {"version": 4, "channel": 1}); +} +// 查询背包道具卡API +async function myCardInfoForFarm() { + const functionId = 'myCardInfoForFarm'; + $.myCardInfoRes = await request(functionId, {"version": 5, "channel": 1}); +} +//使用道具卡API +async function userMyCardForFarm(cardType) { + const functionId = 'userMyCardForFarm'; + $.userMyCardRes = await request(functionId, {"cardType": cardType}); +} +/** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ +async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request('gotStageAwardForFarm', {'type': type}); +} +//浇水API +async function waterGoodForFarm() { + await $.wait(1000); + that.log('等待了1秒'); + + const functionId = 'waterGoodForFarm'; + $.waterResult = await request(functionId); +} +// 初始化集卡抽奖活动数据API +async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request('initForTurntableFarm', {version: 4, channel: 1}); +} +async function lotteryForTurntableFarm() { + await $.wait(2000); + that.log('等待了2秒'); + $.lotteryRes = await request('lotteryForTurntableFarm', {type: 1, version: 4, channel: 1}); +} + +async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request('timingAwardForTurntableFarm', {version: 4, channel: 1}); +} + +async function browserForTurntableFarm(type, adId) { + if (type === 1) { + that.log('浏览爆品会场'); + } + if (type === 2) { + that.log('天天抽奖浏览任务领取水滴'); + } + const body = {"type": type,"adId": adId,"version":4,"channel":1}; + $.browserForTurntableFarmRes = await request('browserForTurntableFarm', body); + // 浏览爆品会场8秒 +} +//天天抽奖浏览任务领取水滴API +async function browserForTurntableFarm2(type) { + const body = {"type":2,"adId": type,"version":4,"channel":1}; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); +} +/** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ +async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); +} + +//领取5人助力后的额外奖励API +async function masterGotFinishedTaskForFarm() { + const functionId = 'masterGotFinishedTaskForFarm'; + $.masterGotFinished = await request(functionId); +} +//助力好友信息API +async function masterHelpTaskInitForFarm() { + const functionId = 'masterHelpTaskInitForFarm'; + $.masterHelpResult = await request(functionId); +} +//接受对方邀请,成为对方好友的API +async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); +} +// 助力好友API +async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); +} +/** + * 水滴雨API + */ +async function waterRainForFarm() { + const functionId = 'waterRainForFarm'; + const body = {"type": 1, "hongBaoTimes": 100, "version": 3}; + $.waterRain = await request(functionId, body); +} +/** + * 打卡领水API + */ +async function clockInInitForFarm() { + const functionId = 'clockInInitForFarm'; + $.clockInInit = await request(functionId); +} + +// 连续签到API +async function clockInForFarm() { + const functionId = 'clockInForFarm'; + $.clockInForFarmRes = await request(functionId, {"type": 1}); +} + +//关注,领券等API +async function clockInFollowForFarm(id, type, step) { + const functionId = 'clockInFollowForFarm'; + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } +} + +// 领取连续签到7天的惊喜礼包API +async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', {"type": 2}) +} + +//定时领水API +async function gotThreeMealForFarm() { + const functionId ='gotThreeMealForFarm'; + $.threeMeal = await request(functionId); +} +/** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ +async function browseAdTaskForFarm(advertId, type) { + const functionId = 'browseAdTaskForFarm'; + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } +} +// 被水滴砸中API +async function gotWaterGoalTaskForFarm() { + $.goalResult = await request('gotWaterGoalTaskForFarm', {type: 3}); +} +//签到API +async function signForFarm() { + const functionId = 'signForFarm'; + $.signResult = await request(functionId); +} +/** + * 初始化农场, 可获取果树及用户信息API + */ +async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 初始化任务列表API +async function taskInitForFarm() { + that.log('\n初始化任务列表') + const functionId = 'taskInitForFarm'; + $.farmTask = await request(functionId); +} +//获取好友列表API +async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', {"version": 4, "channel": 1}); + // that.log('aa', aa); +} +// 领取邀请好友的奖励API +async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); +} +//为好友浇水API +async function waterFriendForFarm(shareCode) { + const body = {"shareCode": shareCode, "version": 6, "channel": 1} + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); +} +async function showMsg() { + let ctrTemp; + if ($.isNode() && process.env.FRUIT_NOTIFY_CONTROL) { + ctrTemp = `${process.env.FRUIT_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdFruitNotify')) { + ctrTemp = $.getdata('jdFruitNotify') === 'false'; + } else { + ctrTemp = `${jdNotify}` === 'false'; + } + if (ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} + +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} +function readShareCode() { + return new Promise(async resolve => { + $.get({url: `http://jd.turinglabs.net/api/v2/jd/farm/read/${randomCount}/`, timeout: 10000,}, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + that.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +function shareCodesFormat() { + return new Promise(async resolve => { + // that.log(`第${$.index}个动动账号的助力码:::${jdFruitShareArr[$.index - 1]}`) + newShareCodes = []; + // if (jdFruitShareArr[$.index - 1]) { + // newShareCodes = jdFruitShareArr[$.index - 1].split('@'); + // } else { + // that.log(`由于您第${$.index}个动动账号未提供shareCode,将采纳本脚本自带的助力码\n`) + // const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); + // newShareCodes = shareCodes[tempIndex].split('@'); + // } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // // newShareCodes = newShareCodes.concat(readShareCodeRes.data || []); + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + // that.log(`第${$.index}个动动账号将要助力的好友${JSON.stringify(newShareCodes)}`) + resolve(); + }) +} +function requireConfig() { + return new Promise(resolve => { + that.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写动动ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdFruitShareCodes = $.isNode() ? require('./jdFruitShareCodes.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; + } else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); + } + that.log(`共${cookiesArr.length}个动动账号\n`) + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + //$.nickName = data['base'].nickname; + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function request(function_id, body = {}, timeout = 1000){ + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️') + that.log(JSON.stringify(err)); + that.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + that.log(e); + that.log(`动动服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} +function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, + headers: { + Cookie: cookie, + UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + }, + timeout: 10000, + } +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动农场", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} + +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_guochuang.js b/src/main/resources/test_guochuang.js new file mode 100644 index 0000000..d58e87e --- /dev/null +++ b/src/main/resources/test_guochuang.js @@ -0,0 +1,386 @@ + +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +const randomCount = $.isNode() ? 20 : 5; +const notify = $.isNode() ? require('./sendNotify') : ''; +let merge = {} +let codeList = [] +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [],message =- "",timeout,l, + cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = `https://api.m.jd.com/client.action`; + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }); + return; + } + message += "[通知] 动动国创 \n\n --- \n\n" + + + for (let i = 0; i < cookiesArr.length; i++) { + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + $.beans = 0 + $.cando = true + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + that.log(`\n******开始【动动账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + let actdata= await getid("superBrandSecondFloorMainPage","secondfloor") + if($.cando){ + $.actid = actdata.actid + $.enpid = actdata.enpid + //{actid,actname,enpid} + // await doTask("44spR7W6XFhQXzMvPva99WYLTscr", "1000000157", "3") //关注 + // await superBrandTaskLottery() + await getCode() + + await doTask("secondfloor",$.enpid,$.taskList[0].encryptAssignmentId,$.taskList[0].ext.followShop[0].itemId,$.taskList[0].assignmentType) + await doTask("secondfloor",$.enpid,$.taskList[2].encryptAssignmentId,$.taskList[2].ext.brandMemberList[0].itemId,$.taskList[2].assignmentType) + let signdata= await getid("showSecondFloorSignInfo","sign") + await doTask("sign",signdata.enpid,signdata.eid,1,5) + that.log("开始抽奖") + await superBrandTaskLottery() + await superBrandTaskLottery() + await superBrandTaskLottery() + } + + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + // $.beans = 0 + // message = '' + + // await shareCodesFormat(); + that.log(`\n******开始【动动账号${$.index}】\n`); + + for (l = 0; l < codeList.length; l++) { + that.log(`为 ${codeList[l]}助力中`) + await doTask("secondfloor",$.enpid,$.inviteenaid, codeList[l], 2) + } + } + + cookie = cookiesArr[i]; + if (cookie) { + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + // await shareCodesFormat(); + that.log(`\n******开始【动动账号${$.index}】抽奖\n`); + await superBrandTaskLottery() + await superBrandTaskLottery() + await superBrandTaskLottery() + // that.log(`共获得${$.beans} 京豆`) + } + message = message + "" + `共获得${$.beans} 京豆\n` + "\n\n" + } + message = message +"----\n\n" + } +})() +.catch((e) => { + $.logErr(e) + message = message + "" + e + "\n\n" + }) + .finally(() => { + message = message + getPic() + that.log(message) + // postToDingTalk(message) + $.done() + }) +//获取活动信息 + +function getid(functionid,source) { + return new Promise(async (resolve) => { + const options = taskPostUrl(functionid, `{"source":"${source}"}`) + // that.log(options) + $.post(options, async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`); + that.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // that.log(data) + if ( data.data && data.code === "0"&&data.data.result) { + let json = {} + let result =data.data.result + json.actid = result.activityBaseInfo.activityId + json.actname= result.activityBaseInfo.activityName + json.enpid = result.activityBaseInfo.encryptProjectId + if(source === "sign"){json.eid=result.activitySign1Info.encryptAssignmentId} + resolve(json) + that.log(`当前活动:${json.actname} ${json.actid}`) + }else{ + that.log("获取失败") + $.cando = false + resolve() + } + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} +function getsignid() { + return new Promise(async (resolve) => { + const options = taskPostUrl("superBrandSecondFloorMainPage", `{"source":"secondfloor"}`) + // that.log(options) + $.post(options, async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`); + that.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // that.log(data) + if ( data.data && data.code === "0") { + $.actid = data.data.result.activityBaseInfo.activityId + $.actname=data.data.result.activityBaseInfo.activityName + $.enpid = data.data.result.activityBaseInfo.encryptProjectId + that.log(`当前活动:${actname} ${$.actid}`) + } + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function getCode() { + return new Promise(async (resolve) => { + const options = taskPostUrl("superBrandTaskList", `{"source":"secondfloor","activityId":${$.actid},"assistInfoFlag":1}`) + // that.log(options) + $.post(options, async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`); + that.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // that.log(data.data.result) + if (data && data.data && data.code === "0") { + if (data.data.result && data.data.result.taskList && data.data.result.taskList[3]) { + $.taskList = data.data.result.taskList + let result = data.data.result.taskList[3] + let encryptAssignmentId = result.encryptAssignmentId + let itemid = result.ext.assistTaskDetail.itemId + $.inviteenaid=result.encryptAssignmentId + codeList[codeList.length] = itemid + that.log(`获取邀请码成功 ${itemid}`); + } else { + that.log(data) + } + } + + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function doTask(source,pid,encryptAssignmentId, id, type) { + return new Promise(async (resolve) => { + const options = taskPostUrl(`superBrandDoTask`, `{"source":"${source}","activityId":${$.actid},"encryptProjectId":"${pid}","encryptAssignmentId":"${encryptAssignmentId}","assignmentType":${type},"itemId":"${id}","actionType":0}`) + // that.log(options) + $.post(options, async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`); + that.log(`${$.name} API请求失败,请检查网路重试`); + } else { + // that.log(data) + data = JSON.parse(data); + if (data && data.code === "0") { + if (data.data.bizCode === "0") { + that.log("任务成功啦~") + } else { + that.log(data.data.bizMsg) + } + resolve(data.data.bizCode) + } else { + that.log(data) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + +function superBrandTaskLottery() { + return new Promise(async (resolve) => { + const options = taskPostUrl("superBrandTaskLottery", `{"source":"secondfloor","activityId":${$.actid}}`) + $.post(options, async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`); + that.log(`${$.name} API请求失败,请检查网路重试`); + } else { + data = JSON.parse(data); + // that.log(data) + if (data && data.code === "0") { + if (data.data.bizCode === "TK000") { + that.log(`获得 你猜获得了啥🐶 ${data.data.bizMsg}`) + message += "" + `获得 你猜获得了啥🐶 ${data.data.bizMsg}` + "\n\n" + } else { + that.log(data.data.bizMsg) + } + } else { + that.log(data) + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(); + } + }); + }); +} + + + +function taskPostUrl(functionid, body) { + const time = Date.now(); + return { + url: `https://api.m.jd.com/api?functionId=${functionid}&appid=ProductZ4Brand&client=wh5&t=${time}&body=${encodeURIComponent(body)}`, + body: "", + headers: { + Accept: "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + Connection: "keep-alive", + Cookie: cookie, + Host: "api.m.jd.com", + Referer: "https://prodev.m.jd.com/mall/active/NrHM6Egy96gxeG4eb7vFX7fYXf3/index.html?activityId=1000007&encryptProjectId=cUNnf3E6aMLQcEQbTVxn8AyhjXb&assistEncryptAssignmentId=2jpJFvC9MBNC7Qsqrt8WzEEcVoiT&assistItemId=S5ijz_8ukVww&tttparams=GgS7lUeyJnTGF0IjoiMzMuMjUyNzYyIiwiZ0xuZyI6IjEwNy4xNjA1MDcifQ6%3D%3D&lng=107.147022&lat=33.255229&sid=e5150a3fdd017952350b4b41294b145w&un_area=27_2442_2444_31912", + "User-Agent": "jdapp;android;9.4.4;10;3b78ecc3f490c7ba;network/UNKNOWN;model/M2006J10C;addressid/138543439;aid/3b78ecc3f490c7ba;oaid/7d5870c5a1696881;osVer/29;appBuild/85576;psn/3b78ecc3f490c7ba|541;psq/2;uid/3b78ecc3f490c7ba;adk/;ads/;pap/JA2015_311210|9.2.4|ANDROID 10;osv/10;pv/548.2;jdv/0|iosapp|t_335139774|appshare|CopyURL|1606277982178|1606277986;ref/com.jd.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi001;apprpd/MyJD_Main;Mozilla/5.0 (Linux; Android 10; M2006J10C Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045227 Mobile Safari/537.36", + } + } +} + + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=fa87e34729eaa6113fddfa857efebb477dea0a433d6eecfe93b1d3f5e24847b9" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动国创", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} diff --git a/src/main/resources/test_lwq.js b/src/main/resources/test_lwq.js new file mode 100644 index 0000000..f4da1a7 --- /dev/null +++ b/src/main/resources/test_lwq.js @@ -0,0 +1,2180 @@ +/* +京东资产变动通知脚本:https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js +Modified time: 2021-05-17 15:25:41 +统计昨日京豆的变化情况,包括收入,支出,以及显示当前京豆数量,目前小问题:下单使用京豆后,退款重新购买,计算统计会出现异常 +统计红包以及过期红包 +网页查看地址 : https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean +支持京东双账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============QuantumultX============== +[task_local] +#京东资产变动通知 +2 9 * * * https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, tag=京东资产变动通知, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +================Loon=============== +[Script] +cron "2 9 * * *" script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, tag=京东资产变动通知 +=============Surge=========== +[Script] +京东资产变动通知 = type=cron,cronexp="2 9 * * *",wake-system=1,timeout=3600,script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js +============小火箭========= +京东资产变动通知 = type=cron,script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, cronexpr="2 9 * * *", timeout=3600, enable=true + */ +let roleMap = { + "好吧好吧5577":"wq_好吧好吧5577", + "jd_qapvwBDaRqgW":"wgh_19970291531", + "18070420956_p":"刘吴奇", +} +let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" +const $ = new Env('京东资产变动通知'); +let jdFruitShareArr = [], isBox = false, notify, newShareCodes; +//助力好友分享码(最多4个,否则后面的助力失败),原因:动动农场每人每天只有四次助力机会 +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一动动账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个动动账号) +let shareCodes = + [ // 这个列表填入你要助力的好友的shareCode +] +let subTitle = '', option = {}, isFruitFinished = false; +const retainWater = 100;//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +let randomCount = $.isNode() ? 0 : 0; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; + +let allMessage = ''; +let message = ""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +!(async () => { + await requireConfig(); + message += "[通知] 资产变动 \n\n --- \n\n" + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + let count = 0 + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.balance = 0; + $.expiredBalance = 0; + + username = $.UserName + if (roleMap[username] == undefined){ + continue + } + username = roleMap[username] + + await TotalBean(); + //加上名称 + message = message + "【羊毛姐妹】" + username + `( ${$.nickName} )`+ " \n\n " + + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await bean(); + await showMsg(); + await shareCodesFormat(); + await jdFruit(); + await jdWish() + } + message += "----\n\n" + if( (count+1)%4 ==0 || i == cookiesArr.length -1 ){ + message = message + getPic() + postToDingTalk(message) + message = "" + } + count ++ + } + + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + if (message != ""){ + postToDingTalk(message) + + } + $.done(); + }) + + + function requireConfig() { + return new Promise(resolve => { + that.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写动动ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdFruitShareCodes = $.isNode() ? require('./jdFruitShareCodes.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; + } else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); + } + that.log(`共${cookiesArr.length}个动动账号\n`) + resolve() + }) + } + +async function showMsg() { + // if ($.errorMsg) return + allMessage += `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆 🐶${$.message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + message += "" + `【总京豆】:${$.beanCount}( 今日将过期${$.expirejingdou} )京豆 🐶` +"\n\n" + message += "" + `【今日收入】:${$.todayIncomeBean}京豆 🐶` +"\n\n" + message += "" + `【昨日收入】:${$.incomeBean}京豆 🐶` +"\n\n" + message += "" + `【昨日支出】:${$.expenseBean}京豆 🐶` +"\n\n" + + + + message += "" + `【当前总红包】:${$.balance}( 今日总过期${$.expiredBalance} )元 🧧` +"\n\n" + message += "" + `【京喜红包】:${$.jxRed}( 今日将过期${$.jxRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【极速红包】:${$.jsRed}( 今日将过期${$.jsRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【京东红包】:${$.jdRed}( 今日将过期${$.jdRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【健康红包】:${$.jdhRed}( 今日将过期${$.jdhRedExpire.toFixed(2)} )元 🧧` +"\n\n" + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + $.msg($.name, '', `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶${$.message}`, {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} + +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } + } + await queryexpirejingdou();//过期京豆 + await redPacket();//过期红包 + // console.log(`昨日收入:${$.incomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + }) + $.expirejingdou = data['expirejingdou'][0]['expireamount']; + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data + $.jxRed = 0, $.jsRed = 0, $.jdRed = 0, $.jdhRed = 0, $.jxRedExpire = 0, $.jsRedExpire = 0, $.jdRedExpire = 0, $.jdhRedExpire = 0; + let t = new Date() + t.setDate(t.getDate() + 1) + t.setHours(0, 0, 0, 0) + t = parseInt((t - 1) / 1000) + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2) + $.jsRed = $.jsRed.toFixed(2) + $.jdRed = $.jdRed.toFixed(2) + $.jdhRed = $.jdhRed.toFixed(2) + $.balance = data.balance + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2) + $.message += `\n当前总红包:${$.balance}(今日总过期${$.expiredBalance})元 🧧\n京喜红包:${$.jxRed}(今日将过期${$.jxRedExpire.toFixed(2)})元 🧧\n极速红包:${$.jsRed}(今日将过期${$.jsRedExpire.toFixed(2)})元 🧧\n京东红包:${$.jdRed}(今日将过期${$.jdRedExpire.toFixed(2)})元 🧧\n健康红包:${$.jdhRed}(今日将过期${$.jdhRedExpire.toFixed(2)})元 🧧`; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + +//农场代码 + +async function jdFruit() { + subTitle = `【动动账号${$.index}】${$.nickName}`; + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + // option['media-url'] = $.farmInfo.farmUserPro.goodsImage; + message = message + "【水果名称】 " + `${$.farmInfo.farmUserPro.name}` + "\n\n"; + // message += "【已兑换水果】" + `${$.farmInfo.farmUserPro.winTimes}` + "次\n\n"; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.farmInfo.farmUserPro.shareCode}\n`); + that.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); + await getHelp(); + await masterHelpShare();//助力好友 + await setHelp(); + if ($.farmInfo.treeState === 2 || $.farmInfo.treeState === 3) { + option['open-url'] = urlSchema; + message = message + " " + $.UserName + "\n【提醒⏰】" + fruitName + "已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达" + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看`); + } + return + } else if ($.farmInfo.treeState === 1) { + that.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`) + } else if ($.farmInfo.treeState === 0) { + //已下单购买, 但未开始种植新的水果 + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】 ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达`, option); + message = message + " " + $.UserName + " \n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达" + "" + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 您忘了种植新的水果`, `动动账号${$.index} ${$.nickName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果`); + } + return + } + await doDailyTask(); + await doTenWater();//浇水十次 + await getFirstWaterAward();//领取首次浇水奖励 + await getTenWaterAward();//领取10浇水奖励 + await getWaterFriendGotAward();//领取为2好友浇水奖励 + await duck(); + await doTenWaterAgain();//再次浇水 + await predictionFruit();//预测水果成熟时间 + } else { + that.log(`初始化农场数据异常, 请登录动动 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify($.farmInfo)}`); + } + } catch (e) { + that.log(`任务执行异常,请检查执行日志 ‼️‼️`); + $.logErr(e); + } + } + async function doDailyTask() { + await taskInitForFarm(); + that.log(`开始签到`); + if (!$.farmTask.signInit.todaySigned) { + await signForFarm(); //签到 + if ($.signResult.code === "0") { + that.log(`【签到成功】获得${$.signResult.amount}g💧\\n`) + //message += `【签到成功】获得${$.signResult.amount}g💧\n`//连续签到${signResult.signDay}天 + } else { + // message += `签到失败,详询日志\n`; + that.log(`签到结果: ${JSON.stringify($.signResult)}`); + } + } else { + that.log(`今天已签到,连续签到${$.farmTask.signInit.totalSigned},下次签到可得${$.farmTask.signInit.signEnergyEachAmount}g\n`); + } + // 被水滴砸中 + that.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? '是' : '否'}`); + if ($.farmInfo.todayGotWaterGoalTask.canPop) { + await gotWaterGoalTaskForFarm(); + if ($.goalResult.code === '0') { + that.log(`【被水滴砸中】获得${$.goalResult.addEnergy}g💧\\n`); + // message += `【被水滴砸中】获得${$.goalResult.addEnergy}g💧\n` + } + } + that.log(`签到结束,开始广告浏览任务`); + if (!$.farmTask.gotBrowseTaskAdInit.f) { + let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds + let browseReward = 0 + let browseSuccess = 0 + let browseFail = 0 + for (let advert of adverts) { //开始浏览广告 + if (advert.limit <= advert.hadFinishedTimes) { + // browseReward+=advert.reward + that.log(`${advert.mainTitle}+ ' 已完成`);//,获得${advert.reward}g + continue; + } + that.log('正在进行广告浏览任务: ' + advert.mainTitle); + await browseAdTaskForFarm(advert.advertId, 0); + if ($.browseResult.code === '0') { + that.log(`${advert.mainTitle}浏览任务完成`); + //领取奖励 + await browseAdTaskForFarm(advert.advertId, 1); + if ($.browseRwardResult.code === '0') { + that.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`) + browseReward += $.browseRwardResult.amount + browseSuccess++ + } else { + browseFail++ + that.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`) + } + } else { + browseFail++ + that.log(`广告浏览任务结果: ${JSON.stringify($.browseResult)}`); + } + } + if (browseFail > 0) { + that.log(`【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\\n`); + // message += `【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\n`; + } else { + that.log(`【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`); + // message += `【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`; + } + } else { + that.log(`今天已经做过浏览广告任务\n`); + } + //定时领水 + if (!$.farmTask.gotThreeMealInit.f) { + // + await gotThreeMealForFarm(); + if ($.threeMeal.code === "0") { + that.log(`【定时领水】获得${$.threeMeal.amount}g💧\n`); + // message += `【定时领水】获得${$.threeMeal.amount}g💧\n`; + } else { + // message += `【定时领水】失败,详询日志\n`; + that.log(`定时领水成功结果: ${JSON.stringify($.threeMeal)}`); + } + } else { + that.log('当前不在定时领水时间断或者已经领过\n') + } + //给好友浇水 + if (!$.farmTask.waterFriendTaskInit.f) { + if ($.farmTask.waterFriendTaskInit.waterFriendCountKey < $.farmTask.waterFriendTaskInit.waterFriendMax) { + await doFriendsWater(); + } + } else { + that.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`) + } + // await Promise.all([ + // clockInIn(),//打卡领水 + // executeWaterRains(),//水滴雨 + // masterHelpShare(),//助力好友 + // getExtraAward(),//领取额外水滴奖励 + // turntableFarm()//天天抽奖得好礼 + // ]) + // await getAwardInviteFriend(); + await clockInIn();//打卡领水 + await executeWaterRains();//水滴雨 + await getExtraAward();//领取额外水滴奖励 + await turntableFarm()//天天抽奖得好礼 + } + async function predictionFruit() { + that.log('开始预测水果成熟时间\n'); + await initForFarm(); + await taskInitForFarm(); + let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes;//今天到到目前为止,浇了多少次水 + // message += "【今日共浇水】" + `${waterEveryDayT}` + "次 \n\n" + message += "【剩余 水滴】" + `${$.farmInfo.farmUserPro.totalEnergy}` + "g💧 \n\n" + message += "【水果🍉进度】" + `${(($.farmInfo.farmUserPro.treeEnergy / + $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}` + "%,已浇水" +`${$.farmInfo.farmUserPro.treeEnergy / 10}` + "次,还需"+`${($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10}` +"次 \n\n" + if ($.farmInfo.toFlowTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n\n` +"\n\n" + } else if ($.farmInfo.toFruitTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n\n` + "\n\n" + } + // 预测n天后水果课可兑换功能 + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + message = message + "" + `【预测🍉收获时间】${waterD === 1 ? '明天' : waterD === 2 ? '后天' : waterD + '天之后'}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉` +"\n\n"; + } + //浇水十次 + async function doTenWater() { + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { + that.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`) + return + } + if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + that.log(`\n准备浇水十次`); + let waterCount = 0; + isFruitFinished = false; + for (; waterCount < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit - $.farmTask.totalWaterTaskInit.totalWaterTaskTimes; waterCount++) { + that.log(`第${waterCount + 1}次浇水`); + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`剩余水滴${$.waterResult.totalEnergy}g`); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + if ($.waterResult.totalEnergy < 10) { + that.log(`水滴不够,结束浇水`) + break + } + await gotStageAward();//领取阶段性水滴奖励 + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log('\n今日已完成10次浇水任务\n'); + } + } + //领取首次浇水奖励 + async function getFirstWaterAward() { + await taskInitForFarm(); + //领取首次浇水奖励 + if (!$.farmTask.firstWaterInit.f && $.farmTask.firstWaterInit.totalWaterTimes > 0) { + await firstWaterTaskForFarm(); + if ($.firstWaterReward.code === '0') { + that.log(`【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`); + // message += `【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`; + } else { + // message += '【首次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取首次浇水奖励结果: ${JSON.stringify($.firstWaterReward)}`); + } + } else { + that.log('首次浇水奖励已领取\n') + } + } + //领取十次浇水奖励 + async function getTenWaterAward() { + //领取10次浇水奖励 + if (!$.farmTask.totalWaterTaskInit.f && $.farmTask.totalWaterTaskInit.totalWaterTaskTimes >= $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + await totalWaterTaskForFarm(); + if ($.totalWaterReward.code === '0') { + that.log(`【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`); + // message += `【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`; + } else { + // message += '【十次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取10次浇水奖励结果: ${JSON.stringify($.totalWaterReward)}`); + } + } else if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + // message += `【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`; + that.log(`【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`); + } + that.log('finished 水果任务完成!'); + } + //再次浇水 + async function doTenWaterAgain() { + that.log('开始检查剩余水滴能否再次浇水再次浇水\n'); + await initForFarm(); + let totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + that.log(`剩余水滴${totalEnergy}g\n`); + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + that.log(`背包已有道具:\n快速浇水卡:${fastCard === -1 ? '未解锁': fastCard + '张'}\n水滴翻倍卡:${doubleCard === -1 ? '未解锁': doubleCard + '张'}\n水滴换京豆卡:${beanCard === -1 ? '未解锁' : beanCard + '张'}\n加签卡:${signCard === -1 ? '未解锁' : signCard + '张'}\n`) + if (totalEnergy >= 100 && doubleCard > 0) { + //使用翻倍水滴卡 + for (let i = 0; i < new Array(doubleCard).fill('').length; i++) { + await userMyCardForFarm('doubleCard'); + that.log(`使用翻倍水滴卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + if (signCard > 0) { + //使用加签卡 + for (let i = 0; i < new Array(signCard).fill('').length; i++) { + await userMyCardForFarm('signCard'); + that.log(`使用加签卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match('限时翻倍')) { + that.log(`\n您设置的是水滴换豆功能,现在为您换豆`); + if (totalEnergy >= 100 && $.myCardInfoRes.beanCard > 0) { + //使用水滴换豆卡 + await userMyCardForFarm('beanCard'); + that.log(`使用水滴换豆卡结果:${JSON.stringify($.userMyCardRes)}`); + if ($.userMyCardRes.code === '0') { + // message +="【水果🍉进度】" + `【水滴换豆卡】获得${$.userMyCardRes.beanCount}个京豆\n` + "\n\n"; + return + } + } else { + that.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`) + } + } + // if (totalEnergy > 100 && $.myCardInfoRes.fastCard > 0) { + // //使用快速浇水卡 + // await userMyCardForFarm('fastCard'); + // that.log(`使用快速浇水卡结果:${JSON.stringify($.userMyCardRes)}`); + // if ($.userMyCardRes.code === '0') { + // that.log(`已使用快速浇水卡浇水${$.userMyCardRes.waterEnergy}g`); + // } + // await initForFarm(); + // totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + // } + // 所有的浇水(10次浇水)任务,获取水滴任务完成后,如果剩余水滴大于等于60g,则继续浇水(保留部分水滴是用于完成第二天的浇水10次的任务) + let overageEnergy = totalEnergy - retainWater; + if (totalEnergy >= ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy)) { + //如果现有的水滴,大于水果可兑换所需的对滴(也就是把水滴浇完,水果就能兑换了) + isFruitFinished = false; + for (let i = 0; i < ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10; i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果(水果马上就可兑换了): ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log('\n浇水10g成功\n'); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + that.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`) + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else if (overageEnergy >= 10) { + that.log("目前剩余水滴:【" + totalEnergy + "】g,可继续浇水"); + isFruitFinished = false; + for (let i = 0; i < parseInt(overageEnergy / 10); i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`) + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + await gotStageAward() + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务") + } + } + //领取阶段性水滴奖励 + function gotStageAward() { + return new Promise(async resolve => { + if ($.waterResult.waterStatus === 0 && $.waterResult.treeEnergy === 10) { + that.log('果树发芽了,奖励30g水滴'); + await gotStageAwardForFarm('1'); + that.log(`浇水阶段奖励1领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`; + that.log(`【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`); + } + } else if ($.waterResult.waterStatus === 1) { + that.log('果树开花了,奖励40g水滴'); + await gotStageAwardForFarm('2'); + that.log(`浇水阶段奖励2领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } else if ($.waterResult.waterStatus === 2) { + that.log('果树长出小果子啦, 奖励50g水滴'); + await gotStageAwardForFarm('3'); + that.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`) + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } + resolve() + }) + } + //天天抽奖活动 + async function turntableFarm() { + await initForTurntableFarm(); + if ($.initForTurntableFarmRes.code === '0') { + //领取定时奖励 //4小时一次 + let {timingIntervalHours, timingLastSysTime, sysTime, timingGotStatus, remainLotteryTimes, turntableInfos} = $.initForTurntableFarmRes; + + if (!timingGotStatus) { + that.log(`是否到了领取免费赠送的抽奖机会----${sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)}`) + if (sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)) { + await timingAwardForTurntableFarm(); + that.log(`领取定时奖励结果${JSON.stringify($.timingAwardRes)}`); + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } else { + that.log(`免费赠送的抽奖机会未到时间`) + } + } else { + that.log('4小时候免费赠送的抽奖机会已领取') + } + if ($.initForTurntableFarmRes.turntableBrowserAds && $.initForTurntableFarmRes.turntableBrowserAds.length > 0) { + for (let index = 0; index < $.initForTurntableFarmRes.turntableBrowserAds.length; index++) { + if (!$.initForTurntableFarmRes.turntableBrowserAds[index].status) { + that.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`) + await browserForTurntableFarm(1, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0' && $.browserForTurntableFarmRes.status) { + that.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`) + await browserForTurntableFarm(2, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0') { + that.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`) + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } + } + } else { + that.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`) + } + } + } + //天天抽奖助力 + that.log('开始天天抽奖--好友助力--每人每天只有三次助力机会.') + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('天天抽奖-不能自己给自己助力\n') + continue + } + await lotteryMasterHelp(code); + // that.log('天天抽奖助力结果',lotteryMasterHelpRes.helpResult) + if ($.lotteryMasterHelpRes.helpResult.code === '0') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '11') { + that.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '13') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}失败,助力次数耗尽\n`); + break; + } + } + that.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`) + //抽奖 + if (remainLotteryTimes > 0) { + that.log('开始抽奖') + let lotteryResult = ''; + for (let i = 0; i < new Array(remainLotteryTimes).fill('').length; i++) { + await lotteryForTurntableFarm() + that.log(`第${i + 1}次抽奖结果${JSON.stringify($.lotteryRes)}`); + if ($.lotteryRes.code === '0') { + turntableInfos.map((item) => { + if (item.type === $.lotteryRes.type) { + that.log(`lotteryRes.type${$.lotteryRes.type}`); + if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === 'bean') { + lotteryResult += `${item.name}个,`; + } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === 'water') { + lotteryResult += `${item.name},`; + } else { + lotteryResult += `${item.name},`; + } + } + }) + //没有次数了 + if ($.lotteryRes.remainLotteryTimes === 0) { + break + } + } + } + if (lotteryResult) { + that.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`) + // message += `【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`; + } + } else { + that.log('天天抽奖--抽奖机会为0次') + } + } else { + that.log('初始化天天抽奖得好礼失败') + } + } + //领取额外奖励水滴 + async function getExtraAward() { + await masterHelpTaskInitForFarm(); + if ($.masterHelpResult.code === '0') { + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length >= 5) { + // 已有五人助力。领取助力后的奖励 + if (!$.masterHelpResult.masterGotFinal) { + await masterGotFinishedTaskForFarm(); + if ($.masterGotFinished.code === '0') { + that.log(`已成功领取好友助力奖励:【${$.masterGotFinished.amount}】g水`); + // message += "【额外奖励】" + `${$.masterGotFinished.amount}` + "g水领取成功\n\n"; + } + } else { + that.log("已经领取过5好友助力额外奖励"); + // message += "【水果🍉进度】" + `【额外奖励】已被领取过\n` + "\n\n"; + } + } else { + that.log("助力好友未达到5个"); + // message += "【额外奖励】领取失败,原因:给您助力的人未达5个\n\n"; + } + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length > 0) { + let str = ''; + $.masterHelpResult.masterHelpPeoples.map((item, index) => { + if (index === ($.masterHelpResult.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + that.log(`\n动动昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + // message += "【助力您的好友】 " + `${str}` + "\n\n" + } + that.log('领取额外奖励水滴结束\n'); + } + } + + function getHelp() { + newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jd_fruit/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.farmInfo.farmUserPro.shareCode) { + $.get({ + url: "http://api.tyh52.com/act/set/jd_fruit/" + $.farmInfo.farmUserPro.shareCode + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + //助力好友 + async function masterHelpShare() { + that.log('开始助力好友') + let salveHelpAddWater = 0; + let remainTimes = 4;//今日剩余助力次数,默认4次(动动农场每人每天4次助力机会)。 + let helpSuccessPeoples = '';//成功助力好友 + that.log(`格式化后的助力码::${JSON.stringify(newShareCodes)}\n`); + + for (let code of newShareCodes) { + that.log(`开始助力动动账号${$.index} - ${$.nickName}的好友: ${code}`); + if (!code) continue; + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('不能为自己助力哦,跳过自己的shareCode\n') + continue + } + await masterHelp(code); + if ($.helpResult.code === '0') { + if ($.helpResult.helpResult.code === '0') { + //助力成功 + salveHelpAddWater += $.helpResult.helpResult.salveHelpAddWater; + that.log(`【助力好友结果】: 已成功给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力`); + that.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`) + helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || '匿名用户') + ','; + } else if ($.helpResult.helpResult.code === '8') { + that.log(`【助力好友结果】: 助力【${$.helpResult.helpResult.masterUserInfo.nickName}】失败,您今天助力次数已耗尽`); + } else if ($.helpResult.helpResult.code === '9') { + that.log(`【助力好友结果】: 之前给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力过了`); + } else if ($.helpResult.helpResult.code === '10') { + that.log(`【助力好友结果】: 好友【${$.helpResult.helpResult.masterUserInfo.nickName}】已满五人助力`); + } else { + that.log(`助力其他情况:${JSON.stringify($.helpResult.helpResult)}`); + } + that.log(`【今日助力次数还剩】${$.helpResult.helpResult.remainTimes}次\n`); + remainTimes = $.helpResult.helpResult.remainTimes; + if ($.helpResult.helpResult.remainTimes === 0) { + that.log(`您当前助力次数已耗尽,跳出助力`); + break + } + } else { + that.log(`助力失败::${JSON.stringify($.helpResult)}`); + } + } + if (helpSuccessPeoples && helpSuccessPeoples.length > 0) { + // message += " " + `【您助力的好友👬】${helpSuccessPeoples.substr(0, helpSuccessPeoples.length - 1)}\n` + "\n\n"; + } + if (salveHelpAddWater > 0) { + // message += `【助力好友👬】获得${salveHelpAddWater}g💧\n`; + that.log(`【助力好友👬】获得${salveHelpAddWater}g💧\n`); + } + // message += "" + `【今日剩余助力👬】${remainTimes}次\n` + "\n\n"; + that.log('助力好友结束,即将开始领取额外水滴奖励\n'); + } + //水滴雨 + async function executeWaterRains() { + let executeWaterRain = !$.farmTask.waterRainInit.f; + if (executeWaterRain) { + that.log(`水滴雨任务,每天两次,最多可得10g水滴`); + that.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? '是' : '否'}`); + if ($.farmTask.waterRainInit.lastTime) { + if (Date.now() < ($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000)) { + executeWaterRain = false; + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`; + that.log(`\`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`); + } + } + if (executeWaterRain) { + that.log(`开始水滴雨任务,这是第${$.farmTask.waterRainInit.winTimes + 1}次,剩余${2 - ($.farmTask.waterRainInit.winTimes + 1)}次`); + await waterRainForFarm(); + that.log('水滴雨waterRain'); + if ($.waterRain.code === '0') { + that.log('水滴雨任务执行成功,获得水滴:' + $.waterRain.addEnergy + 'g'); + that.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`); + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`; + } + } + } else { + // message += `【水滴雨】已全部完成,获得20g💧\n`; + } + } + //打卡领水活动 + async function clockInIn() { + that.log('开始打卡领水活动(签到,关注,领券)'); + await clockInInitForFarm(); + if ($.clockInInit.code === '0') { + // 签到得水滴 + if (!$.clockInInit.todaySigned) { + that.log('开始今日签到'); + await clockInForFarm(); + that.log(`打卡结果${JSON.stringify($.clockInForFarmRes)}`); + if ($.clockInForFarmRes.code === '0') { + // message += `【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`; + that.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`) + if ($.clockInForFarmRes.signDay === 7) { + //可以领取惊喜礼包 + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + } + } + if ($.clockInInit.todaySigned && $.clockInInit.totalSigned === 7) { + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + // 限时关注得水滴 + if ($.clockInInit.themes && $.clockInInit.themes.length > 0) { + for (let item of $.clockInInit.themes) { + if (!item.hadGot) { + that.log(`关注ID${item.id}`); + await clockInFollowForFarm(item.id, "theme", "1"); + that.log(`themeStep1--结果${JSON.stringify($.themeStep1)}`); + if ($.themeStep1.code === '0') { + await clockInFollowForFarm(item.id, "theme", "2"); + that.log(`themeStep2--结果${JSON.stringify($.themeStep2)}`); + if ($.themeStep2.code === '0') { + that.log(`关注${item.name},获得水滴${$.themeStep2.amount}g`); + } + } + } + } + } + // 限时领券得水滴 + if ($.clockInInit.venderCoupons && $.clockInInit.venderCoupons.length > 0) { + for (let item of $.clockInInit.venderCoupons) { + if (!item.hadGot) { + that.log(`领券的ID${item.id}`); + await clockInFollowForFarm(item.id, "venderCoupon", "1"); + that.log(`venderCouponStep1--结果${JSON.stringify($.venderCouponStep1)}`); + if ($.venderCouponStep1.code === '0') { + await clockInFollowForFarm(item.id, "venderCoupon", "2"); + if ($.venderCouponStep2.code === '0') { + that.log(`venderCouponStep2--结果${JSON.stringify($.venderCouponStep2)}`); + that.log(`从${item.name}领券,获得水滴${$.venderCouponStep2.amount}g`); + } + } + } + } + } + } + that.log('开始打卡领水活动(签到,关注,领券)结束\n'); + } + // + async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + that.log(`查询好友列表数据:\n`) + if ($.friendList) { + that.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + that.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + that.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`,"version":8,"channel":1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + that.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + that.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + that.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + that.log('今日未邀请过好友') + } + } else { + that.log(`查询好友列表失败\n`); + } + } + //给好友浇水 + async function doFriendsWater() { + await friendListInitForFarm(); + that.log('开始给好友浇水...'); + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax } = $.farmTask.waterFriendTaskInit; + that.log(`今日已给${waterFriendCountKey}个好友浇水`); + if (waterFriendCountKey < waterFriendMax) { + let needWaterFriends = []; + if ($.friendList.friends && $.friendList.friends.length > 0) { + $.friendList.friends.map((item, index) => { + if (item.friendState === 1) { + if (needWaterFriends.length < (waterFriendMax - waterFriendCountKey)) { + needWaterFriends.push(item.shareCode); + } + } + }); + //TODO ,发现bug,github action运行发现有些账号第一次没有给3个好友浇水 + that.log(`需要浇水的好友列表shareCodes:${JSON.stringify(needWaterFriends)}`); + let waterFriendsCount = 0, cardInfoStr = ''; + for (let index = 0; index < needWaterFriends.length; index ++) { + await waterFriendForFarm(needWaterFriends[index]); + that.log(`为第${index+1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`) + if ($.waterFriendForFarmRes.code === '0') { + waterFriendsCount ++; + if ($.waterFriendForFarmRes.cardInfo) { + that.log('为好友浇水获得道具了'); + if ($.waterFriendForFarmRes.cardInfo.type === 'beanCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴换豆卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'fastCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `快速浇水卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'doubleCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴翻倍卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'signCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `加签卡,`; + } + } + } else if ($.waterFriendForFarmRes.code === '11') { + that.log('水滴不够,跳出浇水') + } + } + // message += `【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`; + that.log(`【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`); + if (cardInfoStr && cardInfoStr.length > 0) { + // message += `【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`; + that.log(`【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`); + } + } else { + that.log('您的好友列表暂无好友,快去邀请您的好友吧!') + } + } else { + that.log(`今日已为好友浇水量已达${waterFriendMax}个`) + } + } + //领取给3个好友浇水后的奖励水滴 + async function getWaterFriendGotAward() { + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit + if (waterFriendCountKey >= waterFriendMax) { + if (!waterFriendGotAward) { + await waterFriendGotAwardForFarm(); + that.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`) + if ($.waterFriendGotAwardRes.code === '0') { + // message += `【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`; + that.log(`【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`); + } + } else { + that.log(`给好友浇水的${waterFriendSendWater}g水滴奖励已领取\n`); + // message += `【给${waterFriendMax}好友浇水】奖励${waterFriendSendWater}g水滴已领取\n`; + } + } else { + that.log(`暂未给${waterFriendMax}个好友浇水\n`); + } + } + //接收成为对方好友的邀请 + async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + if ($.inviteFriendRes.helpResult.code === '0') { + that.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes.helpResult.code === '17') { + that.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } + // that.log(`开始接受6fbd26cc27ac44d6a7fed34092453f77的邀请\n`) + // await inviteFriend('6fbd26cc27ac44d6a7fed34092453f77'); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + // if ($.inviteFriendRes.helpResult.code === '0') { + // that.log(`您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + // } else if ($.inviteFriendRes.helpResult.code === '17') { + // that.log(`对方已是您的好友`) + // } + } + async function duck() { + for (let i = 0; i < 10; i++) { + //这里循环十次 + await getFullCollectionReward(); + if ($.duckRes.code === '0') { + if (!$.duckRes.hasLimit) { + that.log(`小鸭子游戏:${$.duckRes.title}`); + // if ($.duckRes.type !== 3) { + // that.log(`${$.duckRes.title}`); + // if ($.duckRes.type === 1) { + // message += `【小鸭子】为你带回了水滴\n`; + // } else if ($.duckRes.type === 2) { + // message += `【小鸭子】为你带回快速浇水卡\n` + // } + // } + } else { + that.log(`${$.duckRes.title}`) + break; + } + } else if ($.duckRes.code === '10') { + that.log(`小鸭子游戏达到上限`) + break; + } + } + } + // ========================API调用接口======================== + //鸭子,点我有惊喜 + async function getFullCollectionReward() { + return new Promise(resolve => { + const body = {"type": 2, "version": 6, "channel": 2}; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + + /** + * 领取10次浇水奖励API + */ + async function totalWaterTaskForFarm() { + const functionId = 'totalWaterTaskForFarm'; + $.totalWaterReward = await request(functionId); + } + //领取首次浇水奖励API + async function firstWaterTaskForFarm() { + const functionId = 'firstWaterTaskForFarm'; + $.firstWaterReward = await request(functionId); + } + //领取给3个好友浇水后的奖励水滴API + async function waterFriendGotAwardForFarm() { + const functionId = 'waterFriendGotAwardForFarm'; + $.waterFriendGotAwardRes = await request(functionId, {"version": 4, "channel": 1}); + } + // 查询背包道具卡API + async function myCardInfoForFarm() { + const functionId = 'myCardInfoForFarm'; + $.myCardInfoRes = await request(functionId, {"version": 5, "channel": 1}); + } + //使用道具卡API + async function userMyCardForFarm(cardType) { + const functionId = 'userMyCardForFarm'; + $.userMyCardRes = await request(functionId, {"cardType": cardType}); + } + /** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ + async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request('gotStageAwardForFarm', {'type': type}); + } + //浇水API + async function waterGoodForFarm() { + await $.wait(1000); + that.log('等待了1秒'); + + const functionId = 'waterGoodForFarm'; + $.waterResult = await request(functionId); + } + // 初始化集卡抽奖活动数据API + async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request('initForTurntableFarm', {version: 4, channel: 1}); + } + async function lotteryForTurntableFarm() { + await $.wait(2000); + that.log('等待了2秒'); + $.lotteryRes = await request('lotteryForTurntableFarm', {type: 1, version: 4, channel: 1}); + } + + async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request('timingAwardForTurntableFarm', {version: 4, channel: 1}); + } + + async function browserForTurntableFarm(type, adId) { + if (type === 1) { + that.log('浏览爆品会场'); + } + if (type === 2) { + that.log('天天抽奖浏览任务领取水滴'); + } + const body = {"type": type,"adId": adId,"version":4,"channel":1}; + $.browserForTurntableFarmRes = await request('browserForTurntableFarm', body); + // 浏览爆品会场8秒 + } + //天天抽奖浏览任务领取水滴API + async function browserForTurntableFarm2(type) { + const body = {"type":2,"adId": type,"version":4,"channel":1}; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); + } + /** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ + async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); + } + + //领取5人助力后的额外奖励API + async function masterGotFinishedTaskForFarm() { + const functionId = 'masterGotFinishedTaskForFarm'; + $.masterGotFinished = await request(functionId); + } + //助力好友信息API + async function masterHelpTaskInitForFarm() { + const functionId = 'masterHelpTaskInitForFarm'; + $.masterHelpResult = await request(functionId); + } + //接受对方邀请,成为对方好友的API + async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); + } + // 助力好友API + async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); + } + /** + * 水滴雨API + */ + async function waterRainForFarm() { + const functionId = 'waterRainForFarm'; + const body = {"type": 1, "hongBaoTimes": 100, "version": 3}; + $.waterRain = await request(functionId, body); + } + /** + * 打卡领水API + */ + async function clockInInitForFarm() { + const functionId = 'clockInInitForFarm'; + $.clockInInit = await request(functionId); + } + + // 连续签到API + async function clockInForFarm() { + const functionId = 'clockInForFarm'; + $.clockInForFarmRes = await request(functionId, {"type": 1}); + } + + //关注,领券等API + async function clockInFollowForFarm(id, type, step) { + const functionId = 'clockInFollowForFarm'; + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } + } + + // 领取连续签到7天的惊喜礼包API + async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', {"type": 2}) + } + + //定时领水API + async function gotThreeMealForFarm() { + const functionId ='gotThreeMealForFarm'; + $.threeMeal = await request(functionId); + } + /** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ + async function browseAdTaskForFarm(advertId, type) { + const functionId = 'browseAdTaskForFarm'; + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } + } + // 被水滴砸中API + async function gotWaterGoalTaskForFarm() { + $.goalResult = await request('gotWaterGoalTaskForFarm', {type: 3}); + } + //签到API + async function signForFarm() { + const functionId = 'signForFarm'; + $.signResult = await request(functionId); + } + /** + * 初始化农场, 可获取果树及用户信息API + */ + async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + + // 初始化任务列表API + async function taskInitForFarm() { + that.log('\n初始化任务列表') + const functionId = 'taskInitForFarm'; + $.farmTask = await request(functionId); + } + //获取好友列表API + async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', {"version": 4, "channel": 1}); + // that.log('aa', aa); + } + // 领取邀请好友的奖励API + async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); + } + //为好友浇水API + async function waterFriendForFarm(shareCode) { + const body = {"shareCode": shareCode, "version": 6, "channel": 1} + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); + } + + + function readShareCode() { + return new Promise(async resolve => { + $.get({url: `http://jd.turinglabs.net/api/v2/jd/farm/read/${randomCount}/`, timeout: 10000,}, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + that.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) + } + function shareCodesFormat() { + return new Promise(async resolve => { + // that.log(`第${$.index}个动动账号的助力码:::${jdFruitShareArr[$.index - 1]}`) + newShareCodes = []; + // if (jdFruitShareArr[$.index - 1]) { + // newShareCodes = jdFruitShareArr[$.index - 1].split('@'); + // } else { + // that.log(`由于您第${$.index}个动动账号未提供shareCode,将采纳本脚本自带的助力码\n`) + // const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); + // newShareCodes = shareCodes[tempIndex].split('@'); + // } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // // newShareCodes = newShareCodes.concat(readShareCodeRes.data || []); + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + // that.log(`第${$.index}个动动账号将要助力的好友${JSON.stringify(newShareCodes)}`) + resolve(); + }) + } + + function request(function_id, body = {}, timeout = 1000){ + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️') + that.log(JSON.stringify(err)); + that.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) + } + function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + that.log(e); + that.log(`动动服务器访问数据为空,请检查自身设备网络情况`); + return false; + } + } + function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, + headers: { + Cookie: cookie, + UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + }, + timeout: 10000, + } + } + //-------------------------------------------------东东赚赚------------------------------------------------------------ + + +async function jdWish() { + $.bean = 0 + $.tuan = null + $.hasOpen = false + await getTaskList(true) + await getUserTuanInfo() + if (!$.tuan) { + await openTuan() + if ($.hasOpen) await getUserTuanInfo() + } + if ($.tuan) $.tuanList.push($.tuan) + await helpFriends() + await getUserInfo() + $.nowBean = parseInt($.totalBeanNum) + $.nowNum = parseInt($.totalNum) + for (let i = 0; i < $.taskList.length; ++i) { + let task = $.taskList[i] + if (task['taskId'] === 1 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + } else if (task['taskId'] !== 3 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + if(task['itemId']) + await doTask({"itemId":task['itemId'],"taskId":task['taskId'],"mpVersion":"3.4.0"}) + else + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + await $.wait(3000) + } + } + await getTaskList(); + await showMsg1(); + } + + + function helpFriendTuan(body) { + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_assist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success) { + that.log('助力成功') + } else { + if (data.resultCode === '9200008') that.log('不能助力自己') + else if (data.resultCode === '9200011') that.log('已经助力过') + else if (data.resultCode === '2400205') that.log('团已满') + else if (data.resultCode === '2400203') {that.log('助力次数已耗尽');$.canHelp = false} + else that.log(`未知错误`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getUserTuanInfo() { + let body = {"paramData": {"channel": "FISSION_BEAN"}} + return new Promise(resolve => { + $.get(taskTuanUrl("distributeBeanActivityInfo", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && !data.data.canStartNewAssist) { + $.tuan = { + "activityIdEncrypted": data.data.id, + "assistStartRecordId": data.data.assistStartRecordId, + "assistedPinEncrypted": data.data.encPin, + "channel": "FISSION_BEAN" + } + $.tuanActId = data.data.id + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function openTuan() { + let body = {"activityIdEncrypted": $.tuanActId, "channel": "FISSION_BEAN"} + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_startAssist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['success']) { + $.hasOpen = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl1("interactIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data.data.shareTaskRes) { + // that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${data.data.shareTaskRes.itemId}\n`); + // } else { + // that.log(`\n\n已满5人助力或助力功能已下线,故暂时无${$.name}好友助力码\n\n`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getTaskList(flag = false) { + return new Promise(resolve => { + $.get(taskUrl1("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.taskList = data.data.taskDetailResList + $.totalNum = data.data.totalNum + $.totalBeanNum = data.data.totalBeanNum + if (flag && $.taskList.filter(item => !!item && item['taskId']=== 3) && $.taskList.filter(item => !!item && item['taskId']=== 3).length) { + $.shareId=$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + // 完成 + function doTask(body, func = "doInteractTask") { + // that.log(taskUrl("doInteractTask", body)) + return new Promise(resolve => { + $.get(taskUrl1(func, body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // that.log(data) + if (func === "doInteractTask") { + if (data.subCode === "S000") { + that.log(`任务完成,获得 ${data.data.taskDetailResList[0].incomeAmountConf} 金币,${data.data.taskDetailResList[0].beanNum} 京豆`) + $.bean += parseInt(data.data.taskDetailResList[0].beanNum) + } else { + that.log(`任务失败,错误信息:${data.message}`) + } + } else { + that.log(`${data.data.helpResDesc}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + async function helpFriends() { + await getHelp(); + for (let code of $.newShareCodes) { + if (!code) continue + await doTask({"itemId": code, "taskId": "3", "mpVersion": "3.4.0"}, "doHelpTask") + } + await setHelp(); + } + + function getHelp() { + $.newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzz/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + $.newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.shareId) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzz/" + $.shareId + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + function getHelpTuan() { + $.tuanList = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzzTuan/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var item of list) { + let its=item.split('@'); + if(its.length==2){ + let tuan={ + "activityIdEncrypted": $.tuanActId, + "assistStartRecordId": its[0], + "assistedPinEncrypted": its[1], + "channel": "FISSION_BEAN" + } + $.tuanList.push(tuan); + } + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelpTuan() { + return new Promise(resolve => { + if ($.tuan) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzzTuan/" + $.tuan.assistStartRecordId+'@'+$.tuan.assistedPinEncrypted + }, (err, resp, data) => { + try { + if (data) { + that.log(data); + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的开团碼成功"); + }else{ + that.log("提交开团码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + function taskUrl1(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + + function taskTuanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=swat_miniprogram&osVersion=5.0.0&clientVersion=3.1.3&fromType=wxapp×tamp=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://servicewechat.com/wxa5bf5ee667d91626/108/page-frame.html", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + } + } + } + + + + function showMsg1() { + return new Promise(async resolve => { + that.log( "" + `本次获得${parseInt($.totalBeanNum) - $.nowBean}京豆,${parseInt($.totalNum) - $.nowNum}金币\n` + "\n\n") + message += "" + `累计获得${$.totalBeanNum}京豆,${$.totalNum}金币\n可兑换${$.totalNum / 10000}元无门槛红包` + "\n\n" + if (parseInt($.totalBeanNum) - $.nowBean > 0) { + $.msg($.name, '', `动动账号${$.index} ${$.nickName}\n${message}`); + } else { + $.log(message) + } + // 云端大于10元无门槛红包时进行通知推送 + if ($.isNode() && $.totalNum >= 1000000) await notify.sendNotify(`${$.name} - 动动账号${$.index} - ${$.nickName}`, `动动账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n`,) + resolve(); + }) + } + + + + + +//我加的函数 +function postToDingTalk(messgae) { + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"资产变动", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_lwq_new.js b/src/main/resources/test_lwq_new.js new file mode 100644 index 0000000..278ce33 --- /dev/null +++ b/src/main/resources/test_lwq_new.js @@ -0,0 +1,1213 @@ +/* +cron "30 10,22 * * *" jd_bean_change.js, tag:资产变化强化版by-ccwav +*/ +let roleMap = { + "好吧好吧5577":"wq_好吧好吧5577", + "jd_qapvwBDaRqgW":"wgh_19970291531", + "18070420956_p":"刘吴奇", +} + +let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" +//更新by ccwav,20210821 +const $ = new Env('京东资产变动通知'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const JXUserAgent = $.isNode() ? (process.env.JX_USER_AGENT ? process.env.JX_USER_AGENT : ``):``; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let allMessage = ''; +let message = ""; +let ReturnMessage = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + message += "[通知] 资产变动 \n\n --- \n\n" + let count = 0 + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + $.JdzzNum=0; + $.JdMsScore = 0; + $.JdFarmProdName = ''; + $.JdtreeEnergy=0; + $.JdtreeTotalEnergy=0; + $.JdwaterTotalT = 0; + $.JdwaterD = 0; + $.JDwaterEveryDayT=0; + $.JDtotalcash=0; + $.JDEggcnt=0; + $.Jxmctoken=''; + await TotalBean(); + + username = $.UserName + if (roleMap[username] == undefined){ + continue + } + username = roleMap[username] + + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getJdZZ(); + await getMs(); + await jdfruitRequest('taskInitForFarm', {"version":14,"channel":1,"babelChannel":"120"}); + await getjdfruit(); + await cash(); + await requestAlgo(); + await JxmcGetRequest(); + await bean(); + await getJxFactory(); //惊喜工厂 + await getDdFactoryInfo(); // 京东工厂 + await showMsg(); + message += "----\n\n" + } + + if( (count+1)%4 ==0 ){ + postToDingTalk(message) + message = "" + } + count ++ + } + + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + if (message != ""){ + postToDingTalk(message) + } + $.done(); + }) +async function showMsg() { + if ($.errorMsg) return + //allMessage += `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆 🐶${$.message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + + ReturnMessage=`📣=============账号${$.index}=============📣\n` + ReturnMessage+=`账号名称:${$.nickName || $.UserName}\n`; + ReturnMessage+=`今日收入:${$.todayIncomeBean}京豆 🐶\n`; + ReturnMessage+=`昨日支出:${$.expenseBean}京豆 🐶\n`; + ReturnMessage+=`昨日收入:${$.incomeBean}京豆 🐶\n`; + ReturnMessage+=`当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶\n`; + + message += "" + `当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶\n` +"\n\n" + message += "" +`今日收入:${$.todayIncomeBean}京豆 🐶\n` + "\n\n" + message += "" + `昨日收入:${$.incomeBean}京豆 🐶\n` +"\n\n" + message += "" +`昨日支出:${$.expenseBean}京豆 🐶\n` +"\n\n" + // message += "" +`🐶🐶🐶🐶🐶🐶🐶🐶🐶🐶` +"\n\n" + + + if(typeof $.JDtotalcash !== "undefined"){ + ReturnMessage+=`极速金币:${$.JDtotalcash}金币(≈${$.JDtotalcash / 10000}元)\n`; + message += "" + `极速金币:${$.JDtotalcash}金币(≈${$.JDtotalcash / 10000}元)\n` +"\n\n" + } + if(typeof $.JdzzNum !== "undefined"){ + ReturnMessage+=`京东赚赚:${$.JdzzNum}金币(≈${$.JdzzNum / 10000}元)\n`; + message += "" + `京东赚赚:${$.JdzzNum}金币(≈${$.JdzzNum / 10000}元)\n` +"\n\n" + } + if($.JdMsScore!=0){ + ReturnMessage+=`京东秒杀:${$.JdMsScore}秒秒币(≈${$.JdMsScore / 1000}元)\n`; + message += "" + `京东秒杀:${$.JdMsScore}秒秒币(≈${$.JdMsScore / 1000}元)\n` +"\n\n" + } + + // message += "" +`🏭🏭🏭🏭🏭🏭🏭🏭🏭🏭` +"\n\n" + + + if(typeof $.JDEggcnt !== "undefined"){ + ReturnMessage+=`京喜牧场:${$.JDEggcnt}枚鸡蛋\n`; + message += "" + `京喜牧场:${$.JDEggcnt}枚鸡蛋\n` +"\n\n" + } + if($.JdFarmProdName != ""){ + if($.JdtreeEnergy!=0){ + ReturnMessage+=`东东农场:${$.JdFarmProdName},进度${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(2)}%`; + message += "" + `东东农场:${$.JdFarmProdName},进度${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(2)}%` + if($.JdwaterD!='Infinity' && $.JdwaterD!='-Infinity'){ + ReturnMessage+=`,${$.JdwaterD === 1 ? '明天' : $.JdwaterD === 2 ? '后天' : $.JdwaterD + '天后'}可兑🍉\n`; + message += "" + `,${$.JdwaterD === 1 ? '明天' : $.JdwaterD === 2 ? '后天' : $.JdwaterD + '天后'}可兑🍉\n` +"\n\n" + } else { + ReturnMessage+=`\n` + "\n\n"; + } + } else { + ReturnMessage+=`东东农场:${$.JdFarmProdName}\n`; + message += "" +`东东农场:${$.JdFarmProdName}\n` +"\n\n" + } + } + if ($.jxFactoryInfo) { + ReturnMessage += `京喜工厂:${$.jxFactoryInfo}🏭\n` + message += "" + `京喜工厂:${$.jxFactoryInfo}🏭\n` +"\n\n" + } + if ($.ddFactoryInfo) { + ReturnMessage += `东东工厂:${$.ddFactoryInfo}🏭\n` + message += "" + `东东工厂:${$.ddFactoryInfo}🏭\n` +"\n\n" + } + + const response = await await PetRequest('energyCollect'); + const initPetTownRes = await PetRequest('initPetTown'); + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if (response.resultCode === '0') { + ReturnMessage += `东东萌宠:${$.petInfo.goodsInfo.goodsName},`; + ReturnMessage += `勋章${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块(${response.result.medalPercent}%)\n`; + //ReturnMessage += ` 已有${response.result.medalNum}块勋章,还需${response.result.needCollectMedalNum}块\n`; + message += "" +`东东萌宠:${$.petInfo.goodsInfo.goodsName},` + message += "" + `勋章${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块(${response.result.medalPercent}%)\n` +"\n\n" + + } + } + ReturnMessage+=`🧧🧧🧧🧧红包明细🧧🧧🧧🧧`; + message += "" +`🧧🧧🧧🧧红包明细🧧🧧🧧🧧` + "\n\n" + ReturnMessage+=`${$.message}\n\n`; + message += "" + `${$.message}\n\n` +"\n\n" + allMessage+=ReturnMessage; + $.msg($.name, '', ReturnMessage , {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + //$.errorMsg = `数据异常`; + //$.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } + } + await queryexpirejingdou();//过期京豆 + await redPacket();//过期红包 + // console.log(`昨日收入:${$.incomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + }) + $.expirejingdou = data['expirejingdou'][0]['expireamount']; + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data + $.jxRed = 0, $.jsRed = 0, $.jdRed = 0, $.jdhRed = 0, $.jxRedExpire = 0, $.jsRedExpire = 0, $.jdRedExpire = 0, $.jdhRedExpire = 0; + let t = new Date() + t.setDate(t.getDate() + 1) + t.setHours(0, 0, 0, 0) + t = parseInt((t - 1) / 1000) + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2) + $.jsRed = $.jsRed.toFixed(2) + $.jdRed = $.jdRed.toFixed(2) + $.jdhRed = $.jdhRed.toFixed(2) + $.balance = data.balance + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2) + // $.message += `\n当前总红包:${$.balance}(今日总过期${$.expiredBalance})元 🧧\n京喜红包:${$.jxRed}(今日将过期${$.jxRedExpire.toFixed(2)})元 🧧\n极速红包:${$.jsRed}(今日将过期${$.jsRedExpire.toFixed(2)})元 🧧\n京东红包:${$.jdRed}(今日将过期${$.jdRedExpire.toFixed(2)})元 🧧\n健康红包:${$.jdhRed}(今日将过期${$.jdhRedExpire.toFixed(2)})元 🧧`; + + $.message += "" + `【当前总红包】:${$.balance}( 今日总过期${$.expiredBalance} )元 🧧` +"\n\n" + $.message += "" + `【京喜红包】:${$.jxRed}( 今日将过期${$.jxRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【极速红包】:${$.jsRed}( 今日将过期${$.jsRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【京东红包】:${$.jdRed}( 今日将过期${$.jdRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【健康红包】:${$.jdhRed}( 今日将过期${$.jdhRedExpire.toFixed(2)} )元 🧧` +"\n\n" + + + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getJdZZ() { + return new Promise(resolve => { + $.get(taskJDZZUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JdzzNum = data.data.totalNum + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskJDZZUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function getMs() { + return new Promise(resolve => { + $.post(taskMsPostUrl('homePageV2', {}, 'appid=SecKill2020'), (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === 2041) { + $.JdMsScore = data.result.assignment.assignmentPoints || 0 + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function taskMsPostUrl(function_id, body = {}, extra = '', function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&${extra}`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/babelDiy/Zeus/2NUvze9e1uWf4amBhe1AV6ynmSuH/index.html", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +async function getjdfruit() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + if ($.farmInfo.farmUserPro) { + $.JdFarmProdName=$.farmInfo.farmUserPro.name; + $.JdtreeEnergy=$.farmInfo.farmUserPro.treeEnergy; + $.JdtreeTotalEnergy=$.farmInfo.farmUserPro.treeTotalEnergy; + + let waterEveryDayT = $.JDwaterEveryDayT; + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + $.JdwaterTotalT = waterTotalT; + $.JdwaterD = waterD; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jdfruitRequest(function_id, body = {}, timeout = 1000){ + return new Promise(resolve => { + setTimeout(() => { + $.get(taskfruitUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDwaterEveryDayT = data.totalWaterTaskInit.totalWaterTaskTimes; + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} + + +async function PetRequest(function_id, body = {}) { + await $.wait(3000); + return new Promise((resolve, reject) => { + $.post(taskPetUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data) + } + }) + }) +} +function taskPetUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} + +function taskfruitUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, + headers: { + Cookie: cookie, + UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000, + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function cash() { + return new Promise(resolve => { + $.get(taskcashUrl('MyAssetsService.execute', + {"method": "userCashRecord", "data": {"channel": 1, "pageNum": 1, "pageSize": 20}}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDtotalcash = data.data.goldBalance ; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +var __Oxb24bc = ["lite-android&", "stringify", "&android&3.1.0&", "&", "&846c4c32dae910ef", "12aea658f76e453faf803d15c40a72e0", "isNode", "crypto-js", "", "api?functionId=", "&body=", "&appid=lite-android&client=android&uuid=846c4c32dae910ef&clientVersion=3.1.0&t=", "&sign=", "api.m.jd.com", "*/*", "RN", "JDMobileLite/3.1.0 (iPad; iOS 14.4; Scale/2.00)", "zh-Hans-CN;q=1, ja-CN;q=0.9", "undefined", "log", "", "", "", "", "jsjia", "mi.com"]; + +function taskcashUrl(_0x7683x2, _0x7683x3 = {}) { + let _0x7683x4 = +new Date(); + let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; + let _0x7683x6 = __Oxb24bc[0x5]; + const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : $.CryptoJS; + let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); + return { + url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, + headers: { + 'Host': __Oxb24bc[0xd], + 'accept': __Oxb24bc[0xe], + 'kernelplatform': __Oxb24bc[0xf], + 'user-agent': __Oxb24bc[0x10], + 'accept-language': __Oxb24bc[0x11], + 'Cookie': cookie + } + } +}(function(_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { + _0x7683xe = __Oxb24bc[0x12]; + _0x7683xc = function(_0x7683xf) { + if (typeof alert !== _0x7683xe) { + alert(_0x7683xf) + }; + if (typeof console !== _0x7683xe) { + console[__Oxb24bc[0x13]](_0x7683xf) + } + }; + _0x7683xb = function(_0x7683x7, _0x7683x9) { + return _0x7683x7 + _0x7683x9 + }; + _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); + try { + _0x7683x9 = __encode; + if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { + _0x7683xc(_0x7683xd) + } + } catch (e) { + _0x7683xc(_0x7683xd) + } +})({}) + +async function JxmcGetRequest() { + let url = ``; + let myRequest = ``; + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + + + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.JDEggcnt=data.data.eggcnt; + } + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 惊喜工厂信息查询 +function getJxFactory() { + return new Promise(async resolve => { + let infoMsg = ""; + await $.get(jxTaskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + $.jxFactoryInfo = "查询失败!"; + //console.log("jx工厂查询失败" + err) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + //const productionStage = data.productionStage; + $.commodityDimId = production.commodityDimId; + // subTitle = data.user.pin; + await GetCommodityDetails();//获取已选购的商品信息 + infoMsg = `${$.jxProductName} ,进度:${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) { + infoMsg = `${$.productName} ,已经可兑换,请手动兑换`; + } + if (production['exchangeStatus'] === 3) { + if (new Date().getHours() === 9) { + infoMsg = `${$.productName} ,兑换已超时,请选择新商品进行制造`; + } + } + // await exchangeProNotify() + } else { + infoMsg += ` ,预计:${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(2)}天可兑换` + } + if (production.status === 3) { + infoMsg = "${$.productName} ,已经超时失效, 请选择新商品进行制造" + } + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + // infoMsg = "当前未开始生产商品,请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动" + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + // infoMsg = "当前未开始生产商品,请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动" + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + $.jxFactoryInfo = infoMsg; + // console.log(infoMsg); + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + } + ) +} + +// 惊喜的Taskurl +function jxTaskurl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +//惊喜查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(jxTaskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.jxProductName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 东东工厂信息查询 +async function getDdFactoryInfo() { + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + let infoMsg = ""; + return new Promise(resolve => { + $.post(ddFactoryTaskUrl('jdfactory_getHomeData'), async (err, resp, data) => { + try { + if (err) { + $.ddFactoryInfo = "获取失败!" + /*console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`)*/ + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + // $.newUser = data.data.result.newUser; + //let wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { + totalScore, + useScore, + produceScore, + remainScore, + couponCount, + name + } = data.data.result.factoryInfo; + infoMsg = `${name} 剩余${couponCount};电力投入情况 ${useScore}/${totalScore};当前总电力:${remainScore * 1 + useScore * 1} ;完成度:${((remainScore * 1 + useScore * 1) / (totalScore * 1)).toFixed(2) * 100}%` + + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + // await jdfactory_addEnergy(); + infoMsg = `${name} ,目前数量:${couponCount},当前总电量为:${remainScore * 1 + useScore * 1},已经可以兑换此商品所需总电量:${totalScore},请🔥速去活动页面查看` + } + + } else { + // infoMsg = `当前未选择商品(或未开启活动) , 请到京东APP=>首页=>京东电器=>(底栏)东东工厂 选择商品!` + } + } else { + $.ddFactoryInfo = "获取失败!" + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + $.ddFactoryInfo = infoMsg; + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function ddFactoryTaskUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000, + } +} +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getGetRequest(type, url) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + + const method = `GET`; + let headers = { + 'Origin': `https://st.jingxi.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json`, + 'Referer': `https://st.jingxi.com/pingou/jxmc/index.html`, + 'Host': `m.jingxi.com`, + 'User-Agent': UA, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` + }; + return {url: url, method: method, headers: headers}; +} + + +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function decrypt(time, stk, type, url) { + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.Jxmctoken).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + $.appId = 10028; + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent':$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.Jxmctoken = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + // if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + eval(enCryptMethodJDString+';$.enCryptMethodJD=test'); + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + + +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + +//我加的函数 +function postToDingTalk(messgae) { + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"资产变动", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} diff --git a/src/main/resources/test_money_money.js b/src/main/resources/test_money_money.js new file mode 100644 index 0000000..6c03835 --- /dev/null +++ b/src/main/resources/test_money_money.js @@ -0,0 +1,710 @@ +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写动动ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let helpAuthor=true; // 帮助作者 +const randomCount = $.isNode() ? 0 : 5; +let jdNotify = true; // 是否关闭通知,false打开通知推送,true关闭通知推送 +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', message = ""; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const inviteCodes = [ +] +!(async () => { + message += "[通知] 动动赚赚 \n\n --- \n\n" + $.tuanList = [] + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + that.log(`\n******开始【动动账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await shareCodesFormat() + await jdWish() + } + message += "----\n\n" + } + + for (let i = 0; i < cookiesArr.length; i++) { + $.canHelp = true + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + await getUserTuanInfo() + await getHelpTuan(); + for (let j = 0; j < $.tuanList.length; ++j) { + await helpFriendTuan($.tuanList[j]) + if(!$.canHelp) break + } + await setHelpTuan(); + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + message = message + getPic() + that.log(message) + postToDingTalk(message) + $.done(); + }) + +async function jdWish() { + $.bean = 0 + $.tuan = null + $.hasOpen = false + await getTaskList(true) + await getUserTuanInfo() + if (!$.tuan) { + await openTuan() + if ($.hasOpen) await getUserTuanInfo() + } + if ($.tuan) $.tuanList.push($.tuan) + await helpFriends() + await getUserInfo() + $.nowBean = parseInt($.totalBeanNum) + $.nowNum = parseInt($.totalNum) + for (let i = 0; i < $.taskList.length; ++i) { + let task = $.taskList[i] + if (task['taskId'] === 1 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + } else if (task['taskId'] !== 3 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + if(task['itemId']) + await doTask({"itemId":task['itemId'],"taskId":task['taskId'],"mpVersion":"3.4.0"}) + else + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + await $.wait(3000) + } + } + await getTaskList(); + await showMsg(); +} + +function showMsg() { + return new Promise(async resolve => { + message += "" + `本次获得${parseInt($.totalBeanNum) - $.nowBean}京豆,${parseInt($.totalNum) - $.nowNum}金币\n` + "\n\n" + message += "" + `累计获得${$.totalBeanNum}京豆,${$.totalNum}金币\n可兑换${$.totalNum / 10000}元无门槛红包` + "\n\n" + if (parseInt($.totalBeanNum) - $.nowBean > 0) { + $.msg($.name, '', `动动账号${$.index} ${$.nickName}\n${message}`); + } else { + $.log(message) + } + // 云端大于10元无门槛红包时进行通知推送 + if ($.isNode() && $.totalNum >= 1000000) await notify.sendNotify(`${$.name} - 动动账号${$.index} - ${$.nickName}`, `动动账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n`,) + resolve(); + }) +} +// function getAuthorShareCode(url) { +// return new Promise(resolve => { +// $.get({url: `${url}?${new Date()}`, +// headers:{ +// "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/87.0.4280.88" +// }}, async (err, resp, data) => { +// try { +// if (err) { +// } else { +// $.tuanList = $.tuanList.concat(JSON.parse(data)) +// that.log(`作者助力码获取成功`) +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(); +// } +// }) +// }) +// } +function helpFriendTuan(body) { + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_assist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success) { + that.log('助力成功') + } else { + if (data.resultCode === '9200008') that.log('不能助力自己') + else if (data.resultCode === '9200011') that.log('已经助力过') + else if (data.resultCode === '2400205') that.log('团已满') + else if (data.resultCode === '2400203') {that.log('助力次数已耗尽');$.canHelp = false} + else that.log(`未知错误`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getUserTuanInfo() { + let body = {"paramData": {"channel": "FISSION_BEAN"}} + return new Promise(resolve => { + $.get(taskTuanUrl("distributeBeanActivityInfo", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && !data.data.canStartNewAssist) { + $.tuan = { + "activityIdEncrypted": data.data.id, + "assistStartRecordId": data.data.assistStartRecordId, + "assistedPinEncrypted": data.data.encPin, + "channel": "FISSION_BEAN" + } + $.tuanActId = data.data.id + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function openTuan() { + let body = {"activityIdEncrypted": $.tuanActId, "channel": "FISSION_BEAN"} + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_startAssist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['success']) { + $.hasOpen = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl("interactIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data.data.shareTaskRes) { + // that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${data.data.shareTaskRes.itemId}\n`); + // } else { + // that.log(`\n\n已满5人助力或助力功能已下线,故暂时无${$.name}好友助力码\n\n`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getTaskList(flag = false) { + return new Promise(resolve => { + $.get(taskUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.taskList = data.data.taskDetailResList + $.totalNum = data.data.totalNum + $.totalBeanNum = data.data.totalBeanNum + if (flag && $.taskList.filter(item => !!item && item['taskId']=== 3) && $.taskList.filter(item => !!item && item['taskId']=== 3).length) { + $.shareId=$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// 完成 +function doTask(body, func = "doInteractTask") { + // that.log(taskUrl("doInteractTask", body)) + return new Promise(resolve => { + $.get(taskUrl(func, body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // that.log(data) + if (func === "doInteractTask") { + if (data.subCode === "S000") { + that.log(`任务完成,获得 ${data.data.taskDetailResList[0].incomeAmountConf} 金币,${data.data.taskDetailResList[0].beanNum} 京豆`) + $.bean += parseInt(data.data.taskDetailResList[0].beanNum) + } else { + that.log(`任务失败,错误信息:${data.message}`) + } + } else { + that.log(`${data.data.helpResDesc}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function helpFriends() { + await getHelp(); + for (let code of $.newShareCodes) { + if (!code) continue + await doTask({"itemId": code, "taskId": "3", "mpVersion": "3.4.0"}, "doHelpTask") + } + await setHelp(); +} +// function readShareCode() { +// that.log(`开始`) +// return new Promise(async resolve => { +// $.get({url: `https://code.chiang.fun/api/v1/jd/jdzz/read/${randomCount}/`, 'timeout': 10000}, (err, resp, data) => { +// try { +// if (err) { +// that.log(`${JSON.stringify(err)}`) +// that.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (data) { +// that.log(`随机取${randomCount}个码放到您固定的互助码后面(不影响已有固定互助)`) +// data = JSON.parse(data); +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// await $.wait(10000); +// resolve() +// }) +// } +function getHelp() { + $.newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzz/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + $.newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.shareId) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzz/" + $.shareId + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + function getHelpTuan() { + $.tuanList = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzzTuan/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var item of list) { + let its=item.split('@'); + if(its.length==2){ + let tuan={ + "activityIdEncrypted": $.tuanActId, + "assistStartRecordId": its[0], + "assistedPinEncrypted": its[1], + "channel": "FISSION_BEAN" + } + $.tuanList.push(tuan); + } + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelpTuan() { + return new Promise(resolve => { + if ($.tuan) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzzTuan/" + $.tuan.assistStartRecordId+'@'+$.tuan.assistedPinEncrypted + }, (err, resp, data) => { + try { + if (data) { + that.log(data); + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的开团碼成功"); + }else{ + that.log("提交开团码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } +//格式化助力码 +function shareCodesFormat() { + return new Promise(async resolve => { + // that.log(`第${$.index}个动动账号的助力码:::${$.shareCodesArr[$.index - 1]}`) + $.newShareCodes = []; + // if ($.shareCodesArr[$.index - 1]) { + // $.newShareCodes = $.shareCodesArr[$.index - 1].split('@'); + // } else { + // that.log(`由于您第${$.index}个动动账号未提供shareCode,将采纳本脚本自带的助力码\n`) + // const tempIndex = $.index > inviteCodes.length ? (inviteCodes.length - 1) : ($.index - 1); + // $.newShareCodes = inviteCodes[tempIndex].split('@'); + // } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // $.newShareCodes = [...new Set([...$.newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + // that.log(`第${$.index}个动动账号将要助力的好友${JSON.stringify($.newShareCodes)}`) + resolve(); + }) +} + +function requireConfig() { + return new Promise(resolve => { + that.log(`开始获取${$.name}配置文件\n`); + //Node.js用户请在jdCookie.js处填写动动ck; + let shareCodes = []; + if ($.isNode()) { + if (process.env.JDZZ_SHARECODES) { + if (process.env.JDZZ_SHARECODES.indexOf('\n') > -1) { + shareCodes = process.env.JDZZ_SHARECODES.split('\n'); + } else { + shareCodes = process.env.JDZZ_SHARECODES.split('&'); + } + } + } + that.log(`共${cookiesArr.length}个动动账号\n`); + $.shareCodesArr = []; + if ($.isNode()) { + Object.keys(shareCodes).forEach((item) => { + if (shareCodes[item]) { + $.shareCodesArr.push(shareCodes[item]) + } + }) + } + that.log(`您提供了${$.shareCodesArr.length}个账号的${$.name}助力码\n`); + resolve() + }) +} + +function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function taskTuanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=swat_miniprogram&osVersion=5.0.0&clientVersion=3.1.3&fromType=wxapp×tamp=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://servicewechat.com/wxa5bf5ee667d91626/108/page-frame.html", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + } + } +} + +function taskPostUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: body, + headers: { + "Cookie": cookie, + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + that.log(e); + that.log(`动动服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + + + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动赚赚", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} + +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_money_tree.js b/src/main/resources/test_money_tree.js new file mode 100644 index 0000000..b755ebf --- /dev/null +++ b/src/main/resources/test_money_tree.js @@ -0,0 +1,937 @@ +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = '', allMsg = ``; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +let jdNotify = true;//是否开启静默运行,默认true +let sellFruit = true;//是否卖出金果得到金币,默认'false' +const JD_API_HOST = 'https://ms.jr.jd.com/gw/generic/uc/h5/m'; +let userInfo = null, taskInfo = [], message = "", subTitle = '', fruitTotal = 0; +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + } + message += "[通知] 动动摇钱树 \n\n --- \n\n" + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + + await TotalBean(); + that.log(`\n****开始【京东账号${$.index}】${$.nickName || $.UserName}****\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + subTitle = ''; + await jd_moneyTree(); + } + } + if (allMsg) { + jdNotify = $.isNode() ? (process.env.MONEYTREE_NOTIFY_CONTROL ? process.env.MONEYTREE_NOTIFY_CONTROL : jdNotify) : ($.getdata('jdMoneyTreeNotify') ? $.getdata('jdMoneyTreeNotify') : jdNotify); + if (!jdNotify || jdNotify === 'false') { + if ($.isNode()) await notify.sendNotify($.name, allMsg); + $.msg($.name, '', allMsg) + } + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + message += getPic() + taht.log(message) + postToDingTalk(message) + $.done(); + }) + +async function jd_moneyTree() { + try { + const userRes = await user_info(); + if (!userRes || !userRes.realName) return + await signEveryDay(); + await dayWork(); + await harvest(); + await sell(); + await myWealth(); + await stealFriendFruit() + + $.log(`\n${message}\n`); + } catch (e) { + $.logErr(e) + } +} + +function user_info() { + that.log('初始化摇钱树个人信息'); + const params = { + "sharePin": "", + "shareType": 1, + "channelLV": "", + "source": 2, + "riskDeviceParam": { + "eid": "", + "fp": "", + "sdkToken": "", + "token": "", + "jstub": "", + "appType": "2", + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam); + await $.wait(5000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskurl('login', params), async (err, resp, data) => { + try { + if (err) { + that.log("\n摇钱树京东API请求失败 ‼️‼️") + that.log(JSON.stringify(err)); + } else { + if (data) { + const res = JSON.parse(data); + if (res && res.resultCode === 0) { + $.isLogin = true; + that.log('resultCode为0') + if (res.resultData.data) { + userInfo = res.resultData.data; + // userInfo.realName = null; + if (userInfo.realName) { + // that.log(`助力码sharePin为::${userInfo.sharePin}`); + $.treeMsgTime = userInfo.sharePin; + subTitle = `【${userInfo.nick}】${userInfo.treeInfo.treeName}`; + message += "" + `【我的金果数量】${userInfo.treeInfo.fruit}\n` + "\n\n"; + message += "" + `【我的金币数量】${userInfo.treeInfo.coin}\n` + "\n\n"; + message += "" + `【距离${userInfo.treeInfo.level + 1}级摇钱树还差】${userInfo.treeInfo.progressLeft}\n` + "\n\n"; + } else { + $.log(`京东账号${$.index}${$.UserName}运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证`) + // $.msg($.name, `【提示】京东账号${$.index}${$.UserName}运行失败`, '此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证', {"open-url": "openApp.jdMobile://"}); + message += "" + `运行失败\n此账号未实名认证或者未参与过此活动\n①如未参与活动,请先去京东app参加摇钱树活动\n入口:我的->游戏与互动->查看更多\n②如未实名认证,请进行实名认证` + "\n\n" + } + } + } else { + that.log(`其他情况::${JSON.stringify(res)}`); + } + } else { + that.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(userInfo) + } + }) + }) +} + +async function dayWork() { + that.log(`开始做任务userInfo了\n`) + return new Promise(async resolve => { + const data = { + "source": 0, + "linkMissionIds": ["666", "667"], + "LinkMissionIdValues": [7, 7], + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + }; + let response = await request('dayWork', data); + // that.log(`获取任务的信息:${JSON.stringify(response)}\n`) + let canTask = []; + taskInfo = []; + if (response && response.resultCode === 0) { + if (response.resultData.code === '200') { + response.resultData.data.map((item) => { + if (item.prizeType === 2) { + canTask.push(item); + } + if (item.workType === 7 && item.prizeType === 0) { + // missionId.push(item.mid); + taskInfo.push(item); + } + // if (item.workType === 7 && item.prizeType === 0) { + // missionId2 = item.mid; + // } + }) + } + } + that.log(`canTask::${JSON.stringify(canTask)}\n`) + that.log(`浏览任务列表taskInfo::${JSON.stringify(taskInfo)}\n`) + for (let item of canTask) { + if (item.workType === 1) { + // 签到任务 + // let signRes = await sign(); + // that.log(`签到结果:${JSON.stringify(signRes)}`); + if (item.workStatus === 0) { + // const data = {"source":2,"workType":1,"opType":2}; + // let signRes = await request('doWork', data); + let signRes = await sign(); + that.log(`三餐签到结果:${JSON.stringify(signRes)}`); + } else if (item.workStatus === 2) { + that.log(`三餐签到任务已经做过`) + } else if (item.workStatus === -1) { + that.log(`三餐签到任务不在时间范围内`) + } + } else if (item.workType === 2) { + // 分享任务 + if (item.workStatus === 0) { + // share(); + const data = {"source": 0, "workType": 2, "opType": 1}; + //开始分享 + // let shareRes = await request('doWork', data); + let shareRes = await share(data); + that.log(`开始分享的动作:${JSON.stringify(shareRes)}`); + const b = {"source": 0, "workType": 2, "opType": 2}; + // let shareResJL = await request('doWork', b); + let shareResJL = await share(b); + that.log(`领取分享后的奖励:${JSON.stringify(shareResJL)}`) + } else if (item.workStatus === 2) { + that.log(`分享任务已经做过`) + } + } + } + for (let task of taskInfo) { + if (task.mid && task.workStatus === 0) { + that.log('开始做浏览任务'); + // yield setUserLinkStatus(task.mid); + let aa = await setUserLinkStatus(task.mid); + that.log(`aaa${JSON.stringify(aa)}`); + } else if (task.mid && task.workStatus === 1) { + that.log(`workStatus === 1开始领取浏览后的奖励:mid:${task.mid}`); + let receiveAwardRes = await receiveAward(task.mid); + that.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) + } else if (task.mid && task.workStatus === 2) { + that.log('所有的浏览任务都做完了') + } + } + resolve(); + }); +} + +function harvest() { + if (!userInfo) return + const data = { + "source": 2, + "sharePin": "", + "userId": userInfo.userInfo, + "userToken": userInfo.userToken, + "shareType": 1, + "channel": "", + "riskDeviceParam": { + "eid": "", + "appType": 2, + "fp": "", + "jstub": "", + "sdkToken": "", + "token": "" + } + } + data.riskDeviceParam = JSON.stringify(data.riskDeviceParam); + return new Promise((rs, rj) => { + request('harvest', data).then((harvestRes) => { + if (harvestRes && harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { + that.log(`\n收获金果成功:${JSON.stringify(harvestRes)}\n`) + let data = harvestRes.resultData.data; + message +="" + `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n` + "\n\n"; + fruitTotal = data.treeInfo.fruit; + } else { + that.log(`\n收获金果异常:${JSON.stringify(harvestRes)}`) + } + rs() + // gen.next(); + }) + }) + // request('harvest', data).then((harvestRes) => { + // if (harvestRes.resultCode === 0 && harvestRes.resultData.code === '200') { + // let data = harvestRes.resultData.data; + // message += `【距离${data.treeInfo.level + 1}级摇钱树还差】${data.treeInfo.progressLeft}\n`; + // fruitTotal = data.treeInfo.fruit; + // gen.next(); + // } + // }) +} + +//卖出金果,得到金币 +function sell() { + return new Promise((rs, rj) => { + const params = { + "source": 2, + "jtCount": 7.000000000000001, + "riskDeviceParam": { + "eid": "", + "fp": "", + "sdkToken": "", + "token": "", + "jstub": "", + "appType": 2, + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + that.log(`目前金果数量${fruitTotal}`) + sellFruit = $.isNode() ? (process.env.MONEY_TREE_SELL_FRUIT ? process.env.MONEY_TREE_SELL_FRUIT : `${sellFruit}`) : ($.getdata('MONEY_TREE_SELL_FRUIT') ? $.getdata('MONEY_TREE_SELL_FRUIT') : `${sellFruit}`); + if (sellFruit && sellFruit === 'false') { + that.log(`\n设置的不卖出金果\n`) + rs() + return + } + if (fruitTotal >= 8000 * 7) { + if (userInfo['jtRest'] === 0) { + that.log(`\n今日已卖出5.6万金果(已达上限),获得0.07金贴\n`) + rs() + return + } + request('sell', params).then((sellRes) => { + if (sellRes && sellRes['resultCode'] === 0) { + if (sellRes['resultData']['code'] === '200') { + if (sellRes['resultData']['data']['sell'] === 0) { + that.log(`卖出金果成功,获得0.07金贴\n`); + allMsg += `账号${$.index}:${$.nickName || $.UserName}\n今日成功卖出5.6万金果,获得0.07金贴${$.index !== cookiesArr.length ? '\n\n' : ''}` + } else { + that.log(`卖出金果失败:${JSON.stringify(sellRes)}\n`) + } + } + } + rs() + }) + } else { + that.log(`当前金果数量不够兑换 0.07金贴\n`); + rs() + } + // request('sell', params).then(response => { + // rs(response); + // }) + }) + // request('sell', params).then((sellRes) => { + // that.log(`卖出金果结果:${JSON.stringify(sellRes)}\n`) + // gen.next(); + // }) +} + +//获取金币和金果数量 +function myWealth() { + return new Promise((resolve) => { + const params = { + "source": 2, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + request('myWealth', params).then(res => { + if (res && res.resultCode === 0 && res.resultData.code === '200') { + that.log(`金贴和金果数量::${JSON.stringify(res)}`); + message += "" + `【我的金果数量】${res.resultData.data.gaAmount}\n` + "\n\n"; + message += "" + `【我的金贴数量】${res.resultData.data.gcAmount / 100}\n` + "\n\n"; + } + resolve(); + }) + }); +} + +function sign() { + that.log('开始三餐签到') + const data = {"source": 2, "workType": 1, "opType": 2}; + return new Promise((rs, rj) => { + request('doWork', data).then(response => { + rs(response); + }) + }) +} + +function signIndex() { + const params = { + "source": 0, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('signIndex', params).then(response => { + rs(response); + }) + }) +} + +async function signEveryDay() { + return new Promise(async (resolve) => { + try { + let signIndexRes = await signIndex(); + if (signIndexRes.resultCode === 0) { + that.log(`每日签到条件查询:${signIndexRes.resultData.data.canSign === 2 ? '可以签到' : '已经签到过了'}`); + if (signIndexRes.resultData && signIndexRes.resultData.data.canSign == 2) { + that.log('准备每日签到') + let signOneRes = await signOne(signIndexRes.resultData.data.signDay); + that.log(`第${signIndexRes.resultData.data.signDay}日签到结果:${JSON.stringify(signOneRes)}`); + if (signIndexRes.resultData.data.signDay === 7) { + let getSignAwardRes = await getSignAward(); + that.log(`店铺券(49-10)领取结果:${JSON.stringify(getSignAwardRes)}`) + if (getSignAwardRes.resultCode === 0 && getSignAwardRes.data.code === 0) { + message += "" + `【7日签到奖励领取】${getSignAwardRes.datamessage}\n` + "\n\n" + } + } + } + } + } catch (e) { + $.logErr(e); + } finally { + resolve() + } + }) +} + +function signOne(signDay) { + const params = { + "source": 0, + "signDay": signDay, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('signOne', params).then(response => { + rs(response); + }) + }) +} + +// 领取七日签到后的奖励(店铺优惠券) +function getSignAward() { + const params = { + "source": 2, + "awardType": 2, + "deviceRiskParam": 1, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('getSignAward', params).then(response => { + rs(response); + }) + }) +} + +// 浏览任务 +async function setUserLinkStatus(missionId) { + let index = 0; + do { + const params = { + "missionId": missionId, + "pushStatus": 1, + "keyValue": index, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + let response = await request('setUserLinkStatus', params) + that.log(`missionId为${missionId}::第${index + 1}次浏览活动完成: ${JSON.stringify(response)}`); + // if (resultCode === 0) { + // let sportRevardResult = await getSportReward(); + // that.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + // } + index++; + } while (index < 7) //不知道结束的条件,目前写死循环7次吧 + that.log('浏览店铺任务结束'); + that.log('开始领取浏览后的奖励'); + let receiveAwardRes = await receiveAward(missionId); + that.log(`领取浏览任务奖励成功:${JSON.stringify(receiveAwardRes)}`) + return new Promise((resolve, reject) => { + resolve(receiveAwardRes); + }) + // gen.next(); +} + +// 领取浏览后的奖励 +function receiveAward(mid) { + if (!mid) return + mid = mid + ""; + const params = { + "source": 0, + "workType": 7, + "opType": 2, + "mid": mid, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + return new Promise((rs, rj) => { + request('doWork', params).then(response => { + rs(response); + }) + }) +} + +function share(data) { + if (data.opType === 1) { + that.log(`开始做分享任务\n`) + } else { + that.log(`开始做领取分享后的奖励\n`) + } + return new Promise((rs, rj) => { + request('doWork', data).then(response => { + rs(response); + }) + }) +} + +async function stealFriendFruit() { + await friendRank(); + if ($.friendRankList && $.friendRankList.length > 0) { + const canSteal = $.friendRankList.some((item) => { + const boxShareCode = item.steal + return (boxShareCode === true); + }); + if (canSteal) { + $.amount = 0; + for (let item of $.friendRankList) { + if (!item.self && item.steal) { + await friendTreeRoom(item.encryPin); + const stealFruitRes = await stealFruit(item.encryPin, $.friendTree.stoleInfo); + if (stealFruitRes && stealFruitRes.resultCode === 0 && stealFruitRes.resultData.code === '200') { + $.amount += stealFruitRes.resultData.data.amount; + } + } + } + message +="" + `【偷取好友金果】共${$.amount}个\n` + "\n\n"; + } else { + that.log(`今日已偷过好友的金果了,暂无好友可偷,请明天再来\n`) + } + } else { + that.log(`您暂无好友,故跳过`); + } +} + +//获取好友列表API +async function friendRank() { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('friendRank', params), (err, resp, data) => { + try { + if (err) { + that.log("\n摇钱树京东API请求失败 ‼️‼️"); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + $.friendRankList = data.resultData.data; + } else { + that.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve() + } + }) + }) +} + +// 进入好友房间API +async function friendTreeRoom(friendPin) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "friendPin": friendPin, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('friendTree', params), (err, resp, data) => { + try { + if (err) { + that.log("\n摇钱树京东API请求失败 ‼️‼️"); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + $.friendTree = data.resultData.data; + } else { + that.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve() + } + }) + }) +} + +//偷好友金果API +async function stealFruit(friendPin, stoleId) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + const params = { + "source": 2, + "friendPin": friendPin, + "stoleId": stoleId, + "riskDeviceParam": { + "eid": "", + "dt": "", + "ma": "", + "im": "", + "os": "", + "osv": "", + "ip": "", + "apid": "", + "ia": "", + "uu": "", + "cv": "", + "nt": "", + "at": "1", + "fp": "", + "token": "" + } + } + params.riskDeviceParam = JSON.stringify(params.riskDeviceParam);//这一步,不可省略,否则提交会报错(和login接口一样) + return new Promise((resolve, reject) => { + $.post(taskurl('stealFruit', params), (err, resp, data) => { + try { + if (err) { + that.log("\n摇钱树京东API请求失败 ‼️‼️"); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + } else { + that.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.logErr(eor, err) + } finally { + resolve(data) + } + }) + }) +} + + +async function request(function_id, body = {}) { + await $.wait(1000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskurl(function_id, body), (err, resp, data) => { + try { + if (err) { + that.log("\n摇钱树京东API请求失败 ‼️‼️"); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (data) { + data = JSON.parse(data); + } else { + that.log(`京豆api返回数据为空,请检查自身原因`) + } + } + } catch (eor) { + $.msg("摇钱树-初始化个人信息" + eor.name + "‼️", JSON.stringify(eor), eor.message) + } finally { + resolve(data) + } + }) + }) +} + +function taskurl(function_id, body) { + return { + url: JD_API_HOST + '/' + function_id + '?_=' + new Date().getTime() * 1000, + body: `reqData=${function_id === 'harvest' || function_id === 'login' || function_id === 'signIndex' || function_id === 'signOne' || function_id === 'setUserLinkStatus' || function_id === 'dayWork' || function_id === 'getSignAward' || function_id === 'sell' || function_id === 'friendRank' || function_id === 'friendTree' || function_id === 'stealFruit' ? encodeURIComponent(JSON.stringify(body)) : JSON.stringify(body)}`, + headers: { + 'Accept': `application/json`, + 'Origin': `https://uua.jr.jd.com`, + 'Accept-Encoding': `gzip, deflate, br`, + 'Cookie': cookie, + 'Content-Type': `application/x-www-form-urlencoded;charset=UTF-8`, + 'Host': `ms.jr.jd.com`, + 'Connection': `keep-alive`, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Referer': `https://uua.jr.jd.com/uc-fe-wxgrowing/moneytree/index`, + 'Accept-Language': `zh-cn` + } + } +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} + + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动摇钱树", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} diff --git a/src/main/resources/test_our.js b/src/main/resources/test_our.js new file mode 100644 index 0000000..1f09910 --- /dev/null +++ b/src/main/resources/test_our.js @@ -0,0 +1,2162 @@ +/* +京东资产变动通知脚本:https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js +Modified time: 2021-05-17 15:25:41 +统计昨日京豆的变化情况,包括收入,支出,以及显示当前京豆数量,目前小问题:下单使用京豆后,退款重新购买,计算统计会出现异常 +统计红包以及过期红包 +网页查看地址 : https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean +支持京东双账号 +脚本兼容: QuantumultX, Surge, Loon, JSBox, Node.js +============QuantumultX============== +[task_local] +#京东资产变动通知 +2 9 * * * https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, tag=京东资产变动通知, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/jd.png, enabled=true +================Loon=============== +[Script] +cron "2 9 * * *" script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, tag=京东资产变动通知 +=============Surge=========== +[Script] +京东资产变动通知 = type=cron,cronexp="2 9 * * *",wake-system=1,timeout=3600,script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js +============小火箭========= +京东资产变动通知 = type=cron,script-path=https://jdsharedresourcescdn.azureedge.net/jdresource/jd_bean_change.js, cronexpr="2 9 * * *", timeout=3600, enable=true + */ +let roleMap = { + "jd_66ea783827d30":"军军酱", + "jd_4311ac0ff4456":"居居酱" +} +let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" +const $ = new Env('京东资产变动通知'); +let jdFruitShareArr = [], isBox = false, notify, newShareCodes; +//助力好友分享码(最多4个,否则后面的助力失败),原因:动动农场每人每天只有四次助力机会 +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一动动账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个动动账号) +let shareCodes = + [ // 这个列表填入你要助力的好友的shareCode +] +let subTitle = '', option = {}, isFruitFinished = false; +const retainWater = 100;//保留水滴大于多少g,默认100g; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +let jdFruitBeanCard = false;//农场使用水滴换豆卡(如果出现限时活动时100g水换20豆,此时比浇水划算,推荐换豆),true表示换豆(不浇水),false表示不换豆(继续浇水),脚本默认是浇水 +let randomCount = $.isNode() ? 0 : 0; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +const urlSchema = `openjd://virtual?params=%7B%20%22category%22:%20%22jump%22,%20%22des%22:%20%22m%22,%20%22url%22:%20%22https://h5.m.jd.com/babelDiy/Zeus/3KSjXqQabiTuD1cJ28QskrpWoBKT/index.html%22%20%7D`; + +let allMessage = ''; +let message = ""; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +!(async () => { + await requireConfig(); + message += "[通知] 资产变动 \n\n --- \n\n" + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.balance = 0; + $.expiredBalance = 0; + + username = $.UserName + if (roleMap[username] == undefined){ + continue + } + username = roleMap[username] + + await TotalBean(); + //加上名称 + message = message + "【羊毛姐妹】" + username + `( ${$.nickName} )`+ " \n\n " + + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await bean(); + await showMsg(); + await shareCodesFormat(); + await jdFruit(); + await jdWish() + } + message += "----\n\n" + } + + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + message = message + postToDingTalk(message) + $.done(); + }) + + + function requireConfig() { + return new Promise(resolve => { + that.log('开始获取配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写动动ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdFruitShareCodes = $.isNode() ? require('./jdFruitShareCodes.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; + } else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); + } + that.log(`共${cookiesArr.length}个动动账号\n`) + resolve() + }) + } + +async function showMsg() { + // if ($.errorMsg) return + allMessage += `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆 🐶${$.message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + message += "" + `【总京豆】:${$.beanCount}( 今日将过期${$.expirejingdou} )京豆 🐶` +"\n\n" + message += "" + `【今日收入】:${$.todayIncomeBean}京豆 🐶` +"\n\n" + message += "" + `【昨日收入】:${$.incomeBean}京豆 🐶` +"\n\n" + message += "" + `【昨日支出】:${$.expenseBean}京豆 🐶` +"\n\n" + + + + message += "" + `【当前总红包】:${$.balance}( 今日总过期${$.expiredBalance} )元 🧧` +"\n\n" + message += "" + `【京喜红包】:${$.jxRed}( 今日将过期${$.jxRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【极速红包】:${$.jsRed}( 今日将过期${$.jsRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【京东红包】:${$.jdRed}( 今日将过期${$.jdRedExpire.toFixed(2)} )元 🧧` +"\n\n" + message += "" + `【健康红包】:${$.jdhRed}( 今日将过期${$.jdhRedExpire.toFixed(2)} )元 🧧` +"\n\n" + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + $.msg($.name, '', `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶${$.message}`, {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} + +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + $.errorMsg = `数据异常`; + $.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } + } + await queryexpirejingdou();//过期京豆 + await redPacket();//过期红包 + // console.log(`昨日收入:${$.incomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + }) + $.expirejingdou = data['expirejingdou'][0]['expireamount']; + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data + $.jxRed = 0, $.jsRed = 0, $.jdRed = 0, $.jdhRed = 0, $.jxRedExpire = 0, $.jsRedExpire = 0, $.jdRedExpire = 0, $.jdhRedExpire = 0; + let t = new Date() + t.setDate(t.getDate() + 1) + t.setHours(0, 0, 0, 0) + t = parseInt((t - 1) / 1000) + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2) + $.jsRed = $.jsRed.toFixed(2) + $.jdRed = $.jdRed.toFixed(2) + $.jdhRed = $.jdhRed.toFixed(2) + $.balance = data.balance + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2) + $.message += `\n当前总红包:${$.balance}(今日总过期${$.expiredBalance})元 🧧\n京喜红包:${$.jxRed}(今日将过期${$.jxRedExpire.toFixed(2)})元 🧧\n极速红包:${$.jsRed}(今日将过期${$.jsRedExpire.toFixed(2)})元 🧧\n京东红包:${$.jdRed}(今日将过期${$.jdRedExpire.toFixed(2)})元 🧧\n健康红包:${$.jdhRed}(今日将过期${$.jdhRedExpire.toFixed(2)})元 🧧`; + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + +//农场代码 + +async function jdFruit() { + subTitle = `【动动账号${$.index}】${$.nickName}`; + try { + await initForFarm(); + if ($.farmInfo.farmUserPro) { + // option['media-url'] = $.farmInfo.farmUserPro.goodsImage; + message = message + "【水果名称】 " + `${$.farmInfo.farmUserPro.name}` + "\n\n"; + // message += "【已兑换水果】" + `${$.farmInfo.farmUserPro.winTimes}` + "次\n\n"; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.farmInfo.farmUserPro.shareCode}\n`); + that.log(`\n【已成功兑换水果】${$.farmInfo.farmUserPro.winTimes}次\n`); + await getHelp(); + await masterHelpShare();//助力好友 + await setHelp(); + if ($.farmInfo.treeState === 2 || $.farmInfo.treeState === 3) { + option['open-url'] = urlSchema; + message = message + " " + $.UserName + "\n【提醒⏰】" + fruitName + "已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达" + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看`); + } + return + } else if ($.farmInfo.treeState === 1) { + that.log(`\n${$.farmInfo.farmUserPro.name}种植中...\n`) + } else if ($.farmInfo.treeState === 0) { + //已下单购买, 但未开始种植新的水果 + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】 ${$.nickName || $.UserName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达`, option); + message = message + " " + $.UserName + " \n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果\n点击弹窗即达" + "" + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 您忘了种植新的水果`, `动动账号${$.index} ${$.nickName}\n【提醒⏰】您忘了种植新的水果\n请去动动APP或微信小程序选购并种植新的水果`); + } + return + } + await doDailyTask(); + await doTenWater();//浇水十次 + await getFirstWaterAward();//领取首次浇水奖励 + await getTenWaterAward();//领取10浇水奖励 + await getWaterFriendGotAward();//领取为2好友浇水奖励 + await duck(); + await doTenWaterAgain();//再次浇水 + await predictionFruit();//预测水果成熟时间 + } else { + that.log(`初始化农场数据异常, 请登录动动 app查看农场0元水果功能是否正常,农场初始化数据: ${JSON.stringify($.farmInfo)}`); + } + } catch (e) { + that.log(`任务执行异常,请检查执行日志 ‼️‼️`); + $.logErr(e); + } + } + async function doDailyTask() { + await taskInitForFarm(); + that.log(`开始签到`); + if (!$.farmTask.signInit.todaySigned) { + await signForFarm(); //签到 + if ($.signResult.code === "0") { + that.log(`【签到成功】获得${$.signResult.amount}g💧\\n`) + //message += `【签到成功】获得${$.signResult.amount}g💧\n`//连续签到${signResult.signDay}天 + } else { + // message += `签到失败,详询日志\n`; + that.log(`签到结果: ${JSON.stringify($.signResult)}`); + } + } else { + that.log(`今天已签到,连续签到${$.farmTask.signInit.totalSigned},下次签到可得${$.farmTask.signInit.signEnergyEachAmount}g\n`); + } + // 被水滴砸中 + that.log(`被水滴砸中: ${$.farmInfo.todayGotWaterGoalTask.canPop ? '是' : '否'}`); + if ($.farmInfo.todayGotWaterGoalTask.canPop) { + await gotWaterGoalTaskForFarm(); + if ($.goalResult.code === '0') { + that.log(`【被水滴砸中】获得${$.goalResult.addEnergy}g💧\\n`); + // message += `【被水滴砸中】获得${$.goalResult.addEnergy}g💧\n` + } + } + that.log(`签到结束,开始广告浏览任务`); + if (!$.farmTask.gotBrowseTaskAdInit.f) { + let adverts = $.farmTask.gotBrowseTaskAdInit.userBrowseTaskAds + let browseReward = 0 + let browseSuccess = 0 + let browseFail = 0 + for (let advert of adverts) { //开始浏览广告 + if (advert.limit <= advert.hadFinishedTimes) { + // browseReward+=advert.reward + that.log(`${advert.mainTitle}+ ' 已完成`);//,获得${advert.reward}g + continue; + } + that.log('正在进行广告浏览任务: ' + advert.mainTitle); + await browseAdTaskForFarm(advert.advertId, 0); + if ($.browseResult.code === '0') { + that.log(`${advert.mainTitle}浏览任务完成`); + //领取奖励 + await browseAdTaskForFarm(advert.advertId, 1); + if ($.browseRwardResult.code === '0') { + that.log(`领取浏览${advert.mainTitle}广告奖励成功,获得${$.browseRwardResult.amount}g`) + browseReward += $.browseRwardResult.amount + browseSuccess++ + } else { + browseFail++ + that.log(`领取浏览广告奖励结果: ${JSON.stringify($.browseRwardResult)}`) + } + } else { + browseFail++ + that.log(`广告浏览任务结果: ${JSON.stringify($.browseResult)}`); + } + } + if (browseFail > 0) { + that.log(`【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\\n`); + // message += `【广告浏览】完成${browseSuccess}个,失败${browseFail},获得${browseReward}g💧\n`; + } else { + that.log(`【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`); + // message += `【广告浏览】完成${browseSuccess}个,获得${browseReward}g💧\n`; + } + } else { + that.log(`今天已经做过浏览广告任务\n`); + } + //定时领水 + if (!$.farmTask.gotThreeMealInit.f) { + // + await gotThreeMealForFarm(); + if ($.threeMeal.code === "0") { + that.log(`【定时领水】获得${$.threeMeal.amount}g💧\n`); + // message += `【定时领水】获得${$.threeMeal.amount}g💧\n`; + } else { + // message += `【定时领水】失败,详询日志\n`; + that.log(`定时领水成功结果: ${JSON.stringify($.threeMeal)}`); + } + } else { + that.log('当前不在定时领水时间断或者已经领过\n') + } + //给好友浇水 + if (!$.farmTask.waterFriendTaskInit.f) { + if ($.farmTask.waterFriendTaskInit.waterFriendCountKey < $.farmTask.waterFriendTaskInit.waterFriendMax) { + await doFriendsWater(); + } + } else { + that.log(`给${$.farmTask.waterFriendTaskInit.waterFriendMax}个好友浇水任务已完成\n`) + } + // await Promise.all([ + // clockInIn(),//打卡领水 + // executeWaterRains(),//水滴雨 + // masterHelpShare(),//助力好友 + // getExtraAward(),//领取额外水滴奖励 + // turntableFarm()//天天抽奖得好礼 + // ]) + // await getAwardInviteFriend(); + await clockInIn();//打卡领水 + await executeWaterRains();//水滴雨 + await getExtraAward();//领取额外水滴奖励 + await turntableFarm()//天天抽奖得好礼 + } + async function predictionFruit() { + that.log('开始预测水果成熟时间\n'); + await initForFarm(); + await taskInitForFarm(); + let waterEveryDayT = $.farmTask.totalWaterTaskInit.totalWaterTaskTimes;//今天到到目前为止,浇了多少次水 + // message += "【今日共浇水】" + `${waterEveryDayT}` + "次 \n\n" + message += "【剩余 水滴】" + `${$.farmInfo.farmUserPro.totalEnergy}` + "g💧 \n\n" + message += "【水果🍉进度】" + `${(($.farmInfo.farmUserPro.treeEnergy / + $.farmInfo.farmUserPro.treeTotalEnergy) * 100).toFixed(2)}` + "%,已浇水" +`${$.farmInfo.farmUserPro.treeEnergy / 10}` + "次,还需"+`${($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10}` +"次 \n\n" + if ($.farmInfo.toFlowTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【开花进度】再浇水${$.farmInfo.toFlowTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次开花\n\n` +"\n\n" + } else if ($.farmInfo.toFruitTimes > ($.farmInfo.farmUserPro.treeEnergy / 10)) { + message += "【水果🍉进度】" + `【结果进度】再浇水${$.farmInfo.toFruitTimes - $.farmInfo.farmUserPro.treeEnergy / 10}次结果\n\n` + "\n\n" + } + // 预测n天后水果课可兑换功能 + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + message = message + "" + `【预测🍉收获时间】${waterD === 1 ? '明天' : waterD === 2 ? '后天' : waterD + '天之后'}(${timeFormat(24 * 60 * 60 * 1000 * waterD + Date.now())}日)可兑换水果🍉` +"\n\n"; + } + //浇水十次 + async function doTenWater() { + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match(`限时翻倍`) && beanCard > 0) { + that.log(`您设置的是使用水滴换豆卡,且背包有水滴换豆卡${beanCard}张, 跳过10次浇水任务`) + return + } + if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + that.log(`\n准备浇水十次`); + let waterCount = 0; + isFruitFinished = false; + for (; waterCount < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit - $.farmTask.totalWaterTaskInit.totalWaterTaskTimes; waterCount++) { + that.log(`第${waterCount + 1}次浇水`); + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`剩余水滴${$.waterResult.totalEnergy}g`); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + if ($.waterResult.totalEnergy < 10) { + that.log(`水滴不够,结束浇水`) + break + } + await gotStageAward();//领取阶段性水滴奖励 + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log('\n今日已完成10次浇水任务\n'); + } + } + //领取首次浇水奖励 + async function getFirstWaterAward() { + await taskInitForFarm(); + //领取首次浇水奖励 + if (!$.farmTask.firstWaterInit.f && $.farmTask.firstWaterInit.totalWaterTimes > 0) { + await firstWaterTaskForFarm(); + if ($.firstWaterReward.code === '0') { + that.log(`【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`); + // message += `【首次浇水奖励】获得${$.firstWaterReward.amount}g💧\n`; + } else { + // message += '【首次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取首次浇水奖励结果: ${JSON.stringify($.firstWaterReward)}`); + } + } else { + that.log('首次浇水奖励已领取\n') + } + } + //领取十次浇水奖励 + async function getTenWaterAward() { + //领取10次浇水奖励 + if (!$.farmTask.totalWaterTaskInit.f && $.farmTask.totalWaterTaskInit.totalWaterTaskTimes >= $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + await totalWaterTaskForFarm(); + if ($.totalWaterReward.code === '0') { + that.log(`【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`); + // message += `【十次浇水奖励】获得${$.totalWaterReward.totalWaterTaskEnergy}g💧\n`; + } else { + // message += '【十次浇水奖励】领取奖励失败,详询日志\n'; + that.log(`领取10次浇水奖励结果: ${JSON.stringify($.totalWaterReward)}`); + } + } else if ($.farmTask.totalWaterTaskInit.totalWaterTaskTimes < $.farmTask.totalWaterTaskInit.totalWaterTaskLimit) { + // message += `【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`; + that.log(`【十次浇水奖励】任务未完成,今日浇水${$.farmTask.totalWaterTaskInit.totalWaterTaskTimes}次\n`); + } + that.log('finished 水果任务完成!'); + } + //再次浇水 + async function doTenWaterAgain() { + that.log('开始检查剩余水滴能否再次浇水再次浇水\n'); + await initForFarm(); + let totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + that.log(`剩余水滴${totalEnergy}g\n`); + await myCardInfoForFarm(); + const { fastCard, doubleCard, beanCard, signCard } = $.myCardInfoRes; + that.log(`背包已有道具:\n快速浇水卡:${fastCard === -1 ? '未解锁': fastCard + '张'}\n水滴翻倍卡:${doubleCard === -1 ? '未解锁': doubleCard + '张'}\n水滴换京豆卡:${beanCard === -1 ? '未解锁' : beanCard + '张'}\n加签卡:${signCard === -1 ? '未解锁' : signCard + '张'}\n`) + if (totalEnergy >= 100 && doubleCard > 0) { + //使用翻倍水滴卡 + for (let i = 0; i < new Array(doubleCard).fill('').length; i++) { + await userMyCardForFarm('doubleCard'); + that.log(`使用翻倍水滴卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + if (signCard > 0) { + //使用加签卡 + for (let i = 0; i < new Array(signCard).fill('').length; i++) { + await userMyCardForFarm('signCard'); + that.log(`使用加签卡结果:${JSON.stringify($.userMyCardRes)}`); + } + await initForFarm(); + totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + } + jdFruitBeanCard = $.getdata('jdFruitBeanCard') ? $.getdata('jdFruitBeanCard') : jdFruitBeanCard; + if ($.isNode() && process.env.FRUIT_BEAN_CARD) { + jdFruitBeanCard = process.env.FRUIT_BEAN_CARD; + } + if (`${jdFruitBeanCard}` === 'true' && JSON.stringify($.myCardInfoRes).match('限时翻倍')) { + that.log(`\n您设置的是水滴换豆功能,现在为您换豆`); + if (totalEnergy >= 100 && $.myCardInfoRes.beanCard > 0) { + //使用水滴换豆卡 + await userMyCardForFarm('beanCard'); + that.log(`使用水滴换豆卡结果:${JSON.stringify($.userMyCardRes)}`); + if ($.userMyCardRes.code === '0') { + // message +="【水果🍉进度】" + `【水滴换豆卡】获得${$.userMyCardRes.beanCount}个京豆\n` + "\n\n"; + return + } + } else { + that.log(`您目前水滴:${totalEnergy}g,水滴换豆卡${$.myCardInfoRes.beanCard}张,暂不满足水滴换豆的条件,为您继续浇水`) + } + } + // if (totalEnergy > 100 && $.myCardInfoRes.fastCard > 0) { + // //使用快速浇水卡 + // await userMyCardForFarm('fastCard'); + // that.log(`使用快速浇水卡结果:${JSON.stringify($.userMyCardRes)}`); + // if ($.userMyCardRes.code === '0') { + // that.log(`已使用快速浇水卡浇水${$.userMyCardRes.waterEnergy}g`); + // } + // await initForFarm(); + // totalEnergy = $.farmInfo.farmUserPro.totalEnergy; + // } + // 所有的浇水(10次浇水)任务,获取水滴任务完成后,如果剩余水滴大于等于60g,则继续浇水(保留部分水滴是用于完成第二天的浇水10次的任务) + let overageEnergy = totalEnergy - retainWater; + if (totalEnergy >= ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy)) { + //如果现有的水滴,大于水果可兑换所需的对滴(也就是把水滴浇完,水果就能兑换了) + isFruitFinished = false; + for (let i = 0; i < ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy) / 10; i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果(水果马上就可兑换了): ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log('\n浇水10g成功\n'); + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + that.log(`目前水滴【${$.waterResult.totalEnergy}】g,继续浇水,水果马上就可以兑换了`) + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else if (overageEnergy >= 10) { + that.log("目前剩余水滴:【" + totalEnergy + "】g,可继续浇水"); + isFruitFinished = false; + for (let i = 0; i < parseInt(overageEnergy / 10); i++) { + await waterGoodForFarm(); + that.log(`本次浇水结果: ${JSON.stringify($.waterResult)}`); + if ($.waterResult.code === '0') { + that.log(`\n浇水10g成功,剩余${$.waterResult.totalEnergy}\n`) + if ($.waterResult.finished) { + // 已证实,waterResult.finished为true,表示水果可以去领取兑换了 + isFruitFinished = true; + break + } else { + await gotStageAward() + } + } else { + that.log('浇水出现失败异常,跳出不在继续浇水') + break; + } + } + if (isFruitFinished) { + option['open-url'] = urlSchema; + $.msg($.name, ``, `【动动账号${$.index}】${$.nickName || $.UserName}\n【提醒⏰】${$.farmInfo.farmUserPro.name}已可领取\n请去动动APP或微信小程序查看\n点击弹窗即达`, option); + $.done(); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}水果已可领取`, `动动账号${$.index} ${$.nickName}\n${$.farmInfo.farmUserPro.name}已可领取`); + } + } + } else { + that.log("目前剩余水滴:【" + totalEnergy + "】g,不再继续浇水,保留部分水滴用于完成第二天【十次浇水得水滴】任务") + } + } + //领取阶段性水滴奖励 + function gotStageAward() { + return new Promise(async resolve => { + if ($.waterResult.waterStatus === 0 && $.waterResult.treeEnergy === 10) { + that.log('果树发芽了,奖励30g水滴'); + await gotStageAwardForFarm('1'); + that.log(`浇水阶段奖励1领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`; + that.log(`【果树发芽了】奖励${$.gotStageAwardForFarmRes.addEnergy}\n`); + } + } else if ($.waterResult.waterStatus === 1) { + that.log('果树开花了,奖励40g水滴'); + await gotStageAwardForFarm('2'); + that.log(`浇水阶段奖励2领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`); + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树开花了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } else if ($.waterResult.waterStatus === 2) { + that.log('果树长出小果子啦, 奖励50g水滴'); + await gotStageAwardForFarm('3'); + that.log(`浇水阶段奖励3领取结果 ${JSON.stringify($.gotStageAwardForFarmRes)}`) + if ($.gotStageAwardForFarmRes.code === '0') { + // message += `【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`; + that.log(`【果树结果了】奖励${$.gotStageAwardForFarmRes.addEnergy}g💧\n`); + } + } + resolve() + }) + } + //天天抽奖活动 + async function turntableFarm() { + await initForTurntableFarm(); + if ($.initForTurntableFarmRes.code === '0') { + //领取定时奖励 //4小时一次 + let {timingIntervalHours, timingLastSysTime, sysTime, timingGotStatus, remainLotteryTimes, turntableInfos} = $.initForTurntableFarmRes; + + if (!timingGotStatus) { + that.log(`是否到了领取免费赠送的抽奖机会----${sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)}`) + if (sysTime > (timingLastSysTime + 60*60*timingIntervalHours*1000)) { + await timingAwardForTurntableFarm(); + that.log(`领取定时奖励结果${JSON.stringify($.timingAwardRes)}`); + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } else { + that.log(`免费赠送的抽奖机会未到时间`) + } + } else { + that.log('4小时候免费赠送的抽奖机会已领取') + } + if ($.initForTurntableFarmRes.turntableBrowserAds && $.initForTurntableFarmRes.turntableBrowserAds.length > 0) { + for (let index = 0; index < $.initForTurntableFarmRes.turntableBrowserAds.length; index++) { + if (!$.initForTurntableFarmRes.turntableBrowserAds[index].status) { + that.log(`开始浏览天天抽奖的第${index + 1}个逛会场任务`) + await browserForTurntableFarm(1, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0' && $.browserForTurntableFarmRes.status) { + that.log(`第${index + 1}个逛会场任务完成,开始领取水滴奖励\n`) + await browserForTurntableFarm(2, $.initForTurntableFarmRes.turntableBrowserAds[index].adId); + if ($.browserForTurntableFarmRes.code === '0') { + that.log(`第${index + 1}个逛会场任务领取水滴奖励完成\n`) + await initForTurntableFarm(); + remainLotteryTimes = $.initForTurntableFarmRes.remainLotteryTimes; + } + } + } else { + that.log(`浏览天天抽奖的第${index + 1}个逛会场任务已完成`) + } + } + } + //天天抽奖助力 + that.log('开始天天抽奖--好友助力--每人每天只有三次助力机会.') + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('天天抽奖-不能自己给自己助力\n') + continue + } + await lotteryMasterHelp(code); + // that.log('天天抽奖助力结果',lotteryMasterHelpRes.helpResult) + if ($.lotteryMasterHelpRes.helpResult.code === '0') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}成功\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '11') { + that.log(`天天抽奖-不要重复助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}\n`) + } else if ($.lotteryMasterHelpRes.helpResult.code === '13') { + that.log(`天天抽奖-助力${$.lotteryMasterHelpRes.helpResult.masterUserInfo.nickName}失败,助力次数耗尽\n`); + break; + } + } + that.log(`---天天抽奖次数remainLotteryTimes----${remainLotteryTimes}次`) + //抽奖 + if (remainLotteryTimes > 0) { + that.log('开始抽奖') + let lotteryResult = ''; + for (let i = 0; i < new Array(remainLotteryTimes).fill('').length; i++) { + await lotteryForTurntableFarm() + that.log(`第${i + 1}次抽奖结果${JSON.stringify($.lotteryRes)}`); + if ($.lotteryRes.code === '0') { + turntableInfos.map((item) => { + if (item.type === $.lotteryRes.type) { + that.log(`lotteryRes.type${$.lotteryRes.type}`); + if ($.lotteryRes.type.match(/bean/g) && $.lotteryRes.type.match(/bean/g)[0] === 'bean') { + lotteryResult += `${item.name}个,`; + } else if ($.lotteryRes.type.match(/water/g) && $.lotteryRes.type.match(/water/g)[0] === 'water') { + lotteryResult += `${item.name},`; + } else { + lotteryResult += `${item.name},`; + } + } + }) + //没有次数了 + if ($.lotteryRes.remainLotteryTimes === 0) { + break + } + } + } + if (lotteryResult) { + that.log(`【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`) + // message += `【天天抽奖】${lotteryResult.substr(0, lotteryResult.length - 1)}\n`; + } + } else { + that.log('天天抽奖--抽奖机会为0次') + } + } else { + that.log('初始化天天抽奖得好礼失败') + } + } + //领取额外奖励水滴 + async function getExtraAward() { + await masterHelpTaskInitForFarm(); + if ($.masterHelpResult.code === '0') { + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length >= 5) { + // 已有五人助力。领取助力后的奖励 + if (!$.masterHelpResult.masterGotFinal) { + await masterGotFinishedTaskForFarm(); + if ($.masterGotFinished.code === '0') { + that.log(`已成功领取好友助力奖励:【${$.masterGotFinished.amount}】g水`); + // message += "【额外奖励】" + `${$.masterGotFinished.amount}` + "g水领取成功\n\n"; + } + } else { + that.log("已经领取过5好友助力额外奖励"); + // message += "【水果🍉进度】" + `【额外奖励】已被领取过\n` + "\n\n"; + } + } else { + that.log("助力好友未达到5个"); + // message += "【额外奖励】领取失败,原因:给您助力的人未达5个\n\n"; + } + if ($.masterHelpResult.masterHelpPeoples && $.masterHelpResult.masterHelpPeoples.length > 0) { + let str = ''; + $.masterHelpResult.masterHelpPeoples.map((item, index) => { + if (index === ($.masterHelpResult.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + let date = new Date(item.time); + let time = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getMinutes(); + that.log(`\n动动昵称【${item.nickName || "匿名用户"}】 在 ${time} 给您助过力\n`); + }) + // message += "【助力您的好友】 " + `${str}` + "\n\n" + } + that.log('领取额外奖励水滴结束\n'); + } + } + + function getHelp() { + newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jd_fruit/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.farmInfo.farmUserPro.shareCode) { + $.get({ + url: "http://api.tyh52.com/act/set/jd_fruit/" + $.farmInfo.farmUserPro.shareCode + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + //助力好友 + async function masterHelpShare() { + that.log('开始助力好友') + let salveHelpAddWater = 0; + let remainTimes = 4;//今日剩余助力次数,默认4次(动动农场每人每天4次助力机会)。 + let helpSuccessPeoples = '';//成功助力好友 + that.log(`格式化后的助力码::${JSON.stringify(newShareCodes)}\n`); + + for (let code of newShareCodes) { + that.log(`开始助力动动账号${$.index} - ${$.nickName}的好友: ${code}`); + if (!code) continue; + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('不能为自己助力哦,跳过自己的shareCode\n') + continue + } + await masterHelp(code); + if ($.helpResult.code === '0') { + if ($.helpResult.helpResult.code === '0') { + //助力成功 + salveHelpAddWater += $.helpResult.helpResult.salveHelpAddWater; + that.log(`【助力好友结果】: 已成功给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力`); + that.log(`给好友【${$.helpResult.helpResult.masterUserInfo.nickName}】助力获得${$.helpResult.helpResult.salveHelpAddWater}g水滴`) + helpSuccessPeoples += ($.helpResult.helpResult.masterUserInfo.nickName || '匿名用户') + ','; + } else if ($.helpResult.helpResult.code === '8') { + that.log(`【助力好友结果】: 助力【${$.helpResult.helpResult.masterUserInfo.nickName}】失败,您今天助力次数已耗尽`); + } else if ($.helpResult.helpResult.code === '9') { + that.log(`【助力好友结果】: 之前给【${$.helpResult.helpResult.masterUserInfo.nickName}】助力过了`); + } else if ($.helpResult.helpResult.code === '10') { + that.log(`【助力好友结果】: 好友【${$.helpResult.helpResult.masterUserInfo.nickName}】已满五人助力`); + } else { + that.log(`助力其他情况:${JSON.stringify($.helpResult.helpResult)}`); + } + that.log(`【今日助力次数还剩】${$.helpResult.helpResult.remainTimes}次\n`); + remainTimes = $.helpResult.helpResult.remainTimes; + if ($.helpResult.helpResult.remainTimes === 0) { + that.log(`您当前助力次数已耗尽,跳出助力`); + break + } + } else { + that.log(`助力失败::${JSON.stringify($.helpResult)}`); + } + } + if (helpSuccessPeoples && helpSuccessPeoples.length > 0) { + // message += " " + `【您助力的好友👬】${helpSuccessPeoples.substr(0, helpSuccessPeoples.length - 1)}\n` + "\n\n"; + } + if (salveHelpAddWater > 0) { + // message += `【助力好友👬】获得${salveHelpAddWater}g💧\n`; + that.log(`【助力好友👬】获得${salveHelpAddWater}g💧\n`); + } + // message += "" + `【今日剩余助力👬】${remainTimes}次\n` + "\n\n"; + that.log('助力好友结束,即将开始领取额外水滴奖励\n'); + } + //水滴雨 + async function executeWaterRains() { + let executeWaterRain = !$.farmTask.waterRainInit.f; + if (executeWaterRain) { + that.log(`水滴雨任务,每天两次,最多可得10g水滴`); + that.log(`两次水滴雨任务是否全部完成:${$.farmTask.waterRainInit.f ? '是' : '否'}`); + if ($.farmTask.waterRainInit.lastTime) { + if (Date.now() < ($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000)) { + executeWaterRain = false; + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`; + that.log(`\`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】未到时间,请${new Date($.farmTask.waterRainInit.lastTime + 3 * 60 * 60 * 1000).toLocaleTimeString()}再试\n`); + } + } + if (executeWaterRain) { + that.log(`开始水滴雨任务,这是第${$.farmTask.waterRainInit.winTimes + 1}次,剩余${2 - ($.farmTask.waterRainInit.winTimes + 1)}次`); + await waterRainForFarm(); + that.log('水滴雨waterRain'); + if ($.waterRain.code === '0') { + that.log('水滴雨任务执行成功,获得水滴:' + $.waterRain.addEnergy + 'g'); + that.log(`【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`); + // message += `【第${$.farmTask.waterRainInit.winTimes + 1}次水滴雨】获得${$.waterRain.addEnergy}g水滴\n`; + } + } + } else { + // message += `【水滴雨】已全部完成,获得20g💧\n`; + } + } + //打卡领水活动 + async function clockInIn() { + that.log('开始打卡领水活动(签到,关注,领券)'); + await clockInInitForFarm(); + if ($.clockInInit.code === '0') { + // 签到得水滴 + if (!$.clockInInit.todaySigned) { + that.log('开始今日签到'); + await clockInForFarm(); + that.log(`打卡结果${JSON.stringify($.clockInForFarmRes)}`); + if ($.clockInForFarmRes.code === '0') { + // message += `【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`; + that.log(`【第${$.clockInForFarmRes.signDay}天签到】获得${$.clockInForFarmRes.amount}g💧\n`) + if ($.clockInForFarmRes.signDay === 7) { + //可以领取惊喜礼包 + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + } + } + if ($.clockInInit.todaySigned && $.clockInInit.totalSigned === 7) { + that.log('开始领取--惊喜礼包38g水滴'); + await gotClockInGift(); + if ($.gotClockInGiftRes.code === '0') { + // message += `【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`; + that.log(`【惊喜礼包】获得${$.gotClockInGiftRes.amount}g💧\n`); + } + } + // 限时关注得水滴 + if ($.clockInInit.themes && $.clockInInit.themes.length > 0) { + for (let item of $.clockInInit.themes) { + if (!item.hadGot) { + that.log(`关注ID${item.id}`); + await clockInFollowForFarm(item.id, "theme", "1"); + that.log(`themeStep1--结果${JSON.stringify($.themeStep1)}`); + if ($.themeStep1.code === '0') { + await clockInFollowForFarm(item.id, "theme", "2"); + that.log(`themeStep2--结果${JSON.stringify($.themeStep2)}`); + if ($.themeStep2.code === '0') { + that.log(`关注${item.name},获得水滴${$.themeStep2.amount}g`); + } + } + } + } + } + // 限时领券得水滴 + if ($.clockInInit.venderCoupons && $.clockInInit.venderCoupons.length > 0) { + for (let item of $.clockInInit.venderCoupons) { + if (!item.hadGot) { + that.log(`领券的ID${item.id}`); + await clockInFollowForFarm(item.id, "venderCoupon", "1"); + that.log(`venderCouponStep1--结果${JSON.stringify($.venderCouponStep1)}`); + if ($.venderCouponStep1.code === '0') { + await clockInFollowForFarm(item.id, "venderCoupon", "2"); + if ($.venderCouponStep2.code === '0') { + that.log(`venderCouponStep2--结果${JSON.stringify($.venderCouponStep2)}`); + that.log(`从${item.name}领券,获得水滴${$.venderCouponStep2.amount}g`); + } + } + } + } + } + } + that.log('开始打卡领水活动(签到,关注,领券)结束\n'); + } + // + async function getAwardInviteFriend() { + await friendListInitForFarm();//查询好友列表 + that.log(`查询好友列表数据:\n`) + if ($.friendList) { + that.log(`\n今日已邀请好友${$.friendList.inviteFriendCount}个 / 每日邀请上限${$.friendList.inviteFriendMax}个`); + that.log(`开始删除${$.friendList.friends && $.friendList.friends.length}个好友,可拿每天的邀请奖励`); + if ($.friendList.friends && $.friendList.friends.length > 0) { + for (let friend of $.friendList.friends) { + that.log(`\n开始删除好友 [${friend.shareCode}]`); + const deleteFriendForFarm = await request('deleteFriendForFarm', { "shareCode": `${friend.shareCode}`,"version":8,"channel":1 }); + if (deleteFriendForFarm && deleteFriendForFarm.code === '0') { + that.log(`删除好友 [${friend.shareCode}] 成功\n`); + } + } + } + await receiveFriendInvite();//为他人助力,接受邀请成为别人的好友 + if ($.friendList.inviteFriendCount > 0) { + if ($.friendList.inviteFriendCount > $.friendList.inviteFriendGotAwardCount) { + that.log('开始领取邀请好友的奖励'); + await awardInviteFriendForFarm(); + that.log(`领取邀请好友的奖励结果::${JSON.stringify($.awardInviteFriendRes)}`); + } + } else { + that.log('今日未邀请过好友') + } + } else { + that.log(`查询好友列表失败\n`); + } + } + //给好友浇水 + async function doFriendsWater() { + await friendListInitForFarm(); + that.log('开始给好友浇水...'); + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax } = $.farmTask.waterFriendTaskInit; + that.log(`今日已给${waterFriendCountKey}个好友浇水`); + if (waterFriendCountKey < waterFriendMax) { + let needWaterFriends = []; + if ($.friendList.friends && $.friendList.friends.length > 0) { + $.friendList.friends.map((item, index) => { + if (item.friendState === 1) { + if (needWaterFriends.length < (waterFriendMax - waterFriendCountKey)) { + needWaterFriends.push(item.shareCode); + } + } + }); + //TODO ,发现bug,github action运行发现有些账号第一次没有给3个好友浇水 + that.log(`需要浇水的好友列表shareCodes:${JSON.stringify(needWaterFriends)}`); + let waterFriendsCount = 0, cardInfoStr = ''; + for (let index = 0; index < needWaterFriends.length; index ++) { + await waterFriendForFarm(needWaterFriends[index]); + that.log(`为第${index+1}个好友浇水结果:${JSON.stringify($.waterFriendForFarmRes)}\n`) + if ($.waterFriendForFarmRes.code === '0') { + waterFriendsCount ++; + if ($.waterFriendForFarmRes.cardInfo) { + that.log('为好友浇水获得道具了'); + if ($.waterFriendForFarmRes.cardInfo.type === 'beanCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴换豆卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'fastCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `快速浇水卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'doubleCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `水滴翻倍卡,`; + } else if ($.waterFriendForFarmRes.cardInfo.type === 'signCard') { + that.log(`获取道具卡:${$.waterFriendForFarmRes.cardInfo.rule}`); + cardInfoStr += `加签卡,`; + } + } + } else if ($.waterFriendForFarmRes.code === '11') { + that.log('水滴不够,跳出浇水') + } + } + // message += `【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`; + that.log(`【好友浇水】已给${waterFriendsCount}个好友浇水,消耗${waterFriendsCount * 10}g水\n`); + if (cardInfoStr && cardInfoStr.length > 0) { + // message += `【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`; + that.log(`【好友浇水奖励】${cardInfoStr.substr(0, cardInfoStr.length - 1)}\n`); + } + } else { + that.log('您的好友列表暂无好友,快去邀请您的好友吧!') + } + } else { + that.log(`今日已为好友浇水量已达${waterFriendMax}个`) + } + } + //领取给3个好友浇水后的奖励水滴 + async function getWaterFriendGotAward() { + await taskInitForFarm(); + const { waterFriendCountKey, waterFriendMax, waterFriendSendWater, waterFriendGotAward } = $.farmTask.waterFriendTaskInit + if (waterFriendCountKey >= waterFriendMax) { + if (!waterFriendGotAward) { + await waterFriendGotAwardForFarm(); + that.log(`领取给${waterFriendMax}个好友浇水后的奖励水滴::${JSON.stringify($.waterFriendGotAwardRes)}`) + if ($.waterFriendGotAwardRes.code === '0') { + // message += `【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`; + that.log(`【给${waterFriendMax}好友浇水】奖励${$.waterFriendGotAwardRes.addWater}g水滴\n`); + } + } else { + that.log(`给好友浇水的${waterFriendSendWater}g水滴奖励已领取\n`); + // message += `【给${waterFriendMax}好友浇水】奖励${waterFriendSendWater}g水滴已领取\n`; + } + } else { + that.log(`暂未给${waterFriendMax}个好友浇水\n`); + } + } + //接收成为对方好友的邀请 + async function receiveFriendInvite() { + for (let code of newShareCodes) { + if (code === $.farmInfo.farmUserPro.shareCode) { + that.log('自己不能邀请自己成为好友噢\n') + continue + } + await inviteFriend(code); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + if ($.inviteFriendRes.helpResult.code === '0') { + that.log(`接收邀请成为好友结果成功,您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + } else if ($.inviteFriendRes.helpResult.code === '17') { + that.log(`接收邀请成为好友结果失败,对方已是您的好友`) + } + } + // that.log(`开始接受6fbd26cc27ac44d6a7fed34092453f77的邀请\n`) + // await inviteFriend('6fbd26cc27ac44d6a7fed34092453f77'); + // that.log(`接收邀请成为好友结果:${JSON.stringify($.inviteFriendRes.helpResult)}`) + // if ($.inviteFriendRes.helpResult.code === '0') { + // that.log(`您已成为${$.inviteFriendRes.helpResult.masterUserInfo.nickName}的好友`) + // } else if ($.inviteFriendRes.helpResult.code === '17') { + // that.log(`对方已是您的好友`) + // } + } + async function duck() { + for (let i = 0; i < 10; i++) { + //这里循环十次 + await getFullCollectionReward(); + if ($.duckRes.code === '0') { + if (!$.duckRes.hasLimit) { + that.log(`小鸭子游戏:${$.duckRes.title}`); + // if ($.duckRes.type !== 3) { + // that.log(`${$.duckRes.title}`); + // if ($.duckRes.type === 1) { + // message += `【小鸭子】为你带回了水滴\n`; + // } else if ($.duckRes.type === 2) { + // message += `【小鸭子】为你带回快速浇水卡\n` + // } + // } + } else { + that.log(`${$.duckRes.title}`) + break; + } + } else if ($.duckRes.code === '10') { + that.log(`小鸭子游戏达到上限`) + break; + } + } + } + // ========================API调用接口======================== + //鸭子,点我有惊喜 + async function getFullCollectionReward() { + return new Promise(resolve => { + const body = {"type": 2, "version": 6, "channel": 2}; + $.post(taskUrl("getFullCollectionReward", body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + + /** + * 领取10次浇水奖励API + */ + async function totalWaterTaskForFarm() { + const functionId = 'totalWaterTaskForFarm'; + $.totalWaterReward = await request(functionId); + } + //领取首次浇水奖励API + async function firstWaterTaskForFarm() { + const functionId = 'firstWaterTaskForFarm'; + $.firstWaterReward = await request(functionId); + } + //领取给3个好友浇水后的奖励水滴API + async function waterFriendGotAwardForFarm() { + const functionId = 'waterFriendGotAwardForFarm'; + $.waterFriendGotAwardRes = await request(functionId, {"version": 4, "channel": 1}); + } + // 查询背包道具卡API + async function myCardInfoForFarm() { + const functionId = 'myCardInfoForFarm'; + $.myCardInfoRes = await request(functionId, {"version": 5, "channel": 1}); + } + //使用道具卡API + async function userMyCardForFarm(cardType) { + const functionId = 'userMyCardForFarm'; + $.userMyCardRes = await request(functionId, {"cardType": cardType}); + } + /** + * 领取浇水过程中的阶段性奖励 + * @param type + * @returns {Promise} + */ + async function gotStageAwardForFarm(type) { + $.gotStageAwardForFarmRes = await request('gotStageAwardForFarm', {'type': type}); + } + //浇水API + async function waterGoodForFarm() { + await $.wait(1000); + that.log('等待了1秒'); + + const functionId = 'waterGoodForFarm'; + $.waterResult = await request(functionId); + } + // 初始化集卡抽奖活动数据API + async function initForTurntableFarm() { + $.initForTurntableFarmRes = await request('initForTurntableFarm', {version: 4, channel: 1}); + } + async function lotteryForTurntableFarm() { + await $.wait(2000); + that.log('等待了2秒'); + $.lotteryRes = await request('lotteryForTurntableFarm', {type: 1, version: 4, channel: 1}); + } + + async function timingAwardForTurntableFarm() { + $.timingAwardRes = await request('timingAwardForTurntableFarm', {version: 4, channel: 1}); + } + + async function browserForTurntableFarm(type, adId) { + if (type === 1) { + that.log('浏览爆品会场'); + } + if (type === 2) { + that.log('天天抽奖浏览任务领取水滴'); + } + const body = {"type": type,"adId": adId,"version":4,"channel":1}; + $.browserForTurntableFarmRes = await request('browserForTurntableFarm', body); + // 浏览爆品会场8秒 + } + //天天抽奖浏览任务领取水滴API + async function browserForTurntableFarm2(type) { + const body = {"type":2,"adId": type,"version":4,"channel":1}; + $.browserForTurntableFarm2Res = await request('browserForTurntableFarm', body); + } + /** + * 天天抽奖拿好礼-助力API(每人每天三次助力机会) + */ + async function lotteryMasterHelp() { + $.lotteryMasterHelpRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-3', + babelChannel: "3", + version: 4, + channel: 1 + }); + } + + //领取5人助力后的额外奖励API + async function masterGotFinishedTaskForFarm() { + const functionId = 'masterGotFinishedTaskForFarm'; + $.masterGotFinished = await request(functionId); + } + //助力好友信息API + async function masterHelpTaskInitForFarm() { + const functionId = 'masterHelpTaskInitForFarm'; + $.masterHelpResult = await request(functionId); + } + //接受对方邀请,成为对方好友的API + async function inviteFriend() { + $.inviteFriendRes = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0] + '-inviteFriend', + version: 4, + channel: 2 + }); + } + // 助力好友API + async function masterHelp() { + $.helpResult = await request(`initForFarm`, { + imageUrl: "", + nickName: "", + shareCode: arguments[0], + babelChannel: "3", + version: 2, + channel: 1 + }); + } + /** + * 水滴雨API + */ + async function waterRainForFarm() { + const functionId = 'waterRainForFarm'; + const body = {"type": 1, "hongBaoTimes": 100, "version": 3}; + $.waterRain = await request(functionId, body); + } + /** + * 打卡领水API + */ + async function clockInInitForFarm() { + const functionId = 'clockInInitForFarm'; + $.clockInInit = await request(functionId); + } + + // 连续签到API + async function clockInForFarm() { + const functionId = 'clockInForFarm'; + $.clockInForFarmRes = await request(functionId, {"type": 1}); + } + + //关注,领券等API + async function clockInFollowForFarm(id, type, step) { + const functionId = 'clockInFollowForFarm'; + let body = { + id, + type, + step + } + if (type === 'theme') { + if (step === '1') { + $.themeStep1 = await request(functionId, body); + } else if (step === '2') { + $.themeStep2 = await request(functionId, body); + } + } else if (type === 'venderCoupon') { + if (step === '1') { + $.venderCouponStep1 = await request(functionId, body); + } else if (step === '2') { + $.venderCouponStep2 = await request(functionId, body); + } + } + } + + // 领取连续签到7天的惊喜礼包API + async function gotClockInGift() { + $.gotClockInGiftRes = await request('clockInForFarm', {"type": 2}) + } + + //定时领水API + async function gotThreeMealForFarm() { + const functionId ='gotThreeMealForFarm'; + $.threeMeal = await request(functionId); + } + /** + * 浏览广告任务API + * type为0时, 完成浏览任务 + * type为1时, 领取浏览任务奖励 + */ + async function browseAdTaskForFarm(advertId, type) { + const functionId = 'browseAdTaskForFarm'; + if (type === 0) { + $.browseResult = await request(functionId, {advertId, type}); + } else if (type === 1) { + $.browseRwardResult = await request(functionId, {advertId, type}); + } + } + // 被水滴砸中API + async function gotWaterGoalTaskForFarm() { + $.goalResult = await request('gotWaterGoalTaskForFarm', {type: 3}); + } + //签到API + async function signForFarm() { + const functionId = 'signForFarm'; + $.signResult = await request(functionId); + } + /** + * 初始化农场, 可获取果树及用户信息API + */ + async function initForFarm() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + + // 初始化任务列表API + async function taskInitForFarm() { + that.log('\n初始化任务列表') + const functionId = 'taskInitForFarm'; + $.farmTask = await request(functionId); + } + //获取好友列表API + async function friendListInitForFarm() { + $.friendList = await request('friendListInitForFarm', {"version": 4, "channel": 1}); + // that.log('aa', aa); + } + // 领取邀请好友的奖励API + async function awardInviteFriendForFarm() { + $.awardInviteFriendRes = await request('awardInviteFriendForFarm'); + } + //为好友浇水API + async function waterFriendForFarm(shareCode) { + const body = {"shareCode": shareCode, "version": 6, "channel": 1} + $.waterFriendForFarmRes = await request('waterFriendForFarm', body); + } + + + function readShareCode() { + return new Promise(async resolve => { + $.get({url: `http://jd.turinglabs.net/api/v2/jd/farm/read/${randomCount}/`, timeout: 10000,}, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + that.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) + } + function shareCodesFormat() { + return new Promise(async resolve => { + // that.log(`第${$.index}个动动账号的助力码:::${jdFruitShareArr[$.index - 1]}`) + newShareCodes = []; + // if (jdFruitShareArr[$.index - 1]) { + // newShareCodes = jdFruitShareArr[$.index - 1].split('@'); + // } else { + // that.log(`由于您第${$.index}个动动账号未提供shareCode,将采纳本脚本自带的助力码\n`) + // const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); + // newShareCodes = shareCodes[tempIndex].split('@'); + // } + // const readShareCodeRes = await readShareCode(); + // if (readShareCodeRes && readShareCodeRes.code === 200) { + // // newShareCodes = newShareCodes.concat(readShareCodeRes.data || []); + // newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + // } + // that.log(`第${$.index}个动动账号将要助力的好友${JSON.stringify(newShareCodes)}`) + resolve(); + }) + } + + function request(function_id, body = {}, timeout = 1000){ + return new Promise(resolve => { + setTimeout(() => { + $.get(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动农场: API查询请求失败 ‼️‼️') + that.log(JSON.stringify(err)); + that.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) + } + function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + that.log(e); + that.log(`动动服务器访问数据为空,请检查自身设备网络情况`); + return false; + } + } + function taskUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, + headers: { + Cookie: cookie, + UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + }, + timeout: 10000, + } + } + //-------------------------------------------------东东赚赚------------------------------------------------------------ + + +async function jdWish() { + $.bean = 0 + $.tuan = null + $.hasOpen = false + await getTaskList(true) + await getUserTuanInfo() + if (!$.tuan) { + await openTuan() + if ($.hasOpen) await getUserTuanInfo() + } + if ($.tuan) $.tuanList.push($.tuan) + await helpFriends() + await getUserInfo() + $.nowBean = parseInt($.totalBeanNum) + $.nowNum = parseInt($.totalNum) + for (let i = 0; i < $.taskList.length; ++i) { + let task = $.taskList[i] + if (task['taskId'] === 1 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + } else if (task['taskId'] !== 3 && task['status'] !== 2) { + that.log(`去做任务:${task.taskName}`) + if(task['itemId']) + await doTask({"itemId":task['itemId'],"taskId":task['taskId'],"mpVersion":"3.4.0"}) + else + await doTask({"taskId": task['taskId'],"mpVersion":"3.4.0"}) + await $.wait(3000) + } + } + await getTaskList(); + await showMsg1(); + } + + + function helpFriendTuan(body) { + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_assist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.success) { + that.log('助力成功') + } else { + if (data.resultCode === '9200008') that.log('不能助力自己') + else if (data.resultCode === '9200011') that.log('已经助力过') + else if (data.resultCode === '2400205') that.log('团已满') + else if (data.resultCode === '2400203') {that.log('助力次数已耗尽');$.canHelp = false} + else that.log(`未知错误`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getUserTuanInfo() { + let body = {"paramData": {"channel": "FISSION_BEAN"}} + return new Promise(resolve => { + $.get(taskTuanUrl("distributeBeanActivityInfo", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data && !data.data.canStartNewAssist) { + $.tuan = { + "activityIdEncrypted": data.data.id, + "assistStartRecordId": data.data.assistStartRecordId, + "assistedPinEncrypted": data.data.encPin, + "channel": "FISSION_BEAN" + } + $.tuanActId = data.data.id + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function openTuan() { + let body = {"activityIdEncrypted": $.tuanActId, "channel": "FISSION_BEAN"} + return new Promise(resolve => { + $.get(taskTuanUrl("vvipclub_distributeBean_startAssist", body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['success']) { + $.hasOpen = true + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getUserInfo() { + return new Promise(resolve => { + $.get(taskUrl1("interactIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // if (data.data.shareTaskRes) { + // that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${data.data.shareTaskRes.itemId}\n`); + // } else { + // that.log(`\n\n已满5人助力或助力功能已下线,故暂时无${$.name}好友助力码\n\n`) + // } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function getTaskList(flag = false) { + return new Promise(resolve => { + $.get(taskUrl1("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.taskList = data.data.taskDetailResList + $.totalNum = data.data.totalNum + $.totalBeanNum = data.data.totalBeanNum + if (flag && $.taskList.filter(item => !!item && item['taskId']=== 3) && $.taskList.filter(item => !!item && item['taskId']=== 3).length) { + $.shareId=$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']; + that.log(`\n【动动账号${$.index}(${$.nickName || $.UserName})的${$.name}好友互助码】${$.taskList.filter(item => !!item && item['taskId']=== 3)[0]['itemId']}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + // 完成 + function doTask(body, func = "doInteractTask") { + // that.log(taskUrl("doInteractTask", body)) + return new Promise(resolve => { + $.get(taskUrl1(func, body), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + // that.log(data) + if (func === "doInteractTask") { + if (data.subCode === "S000") { + that.log(`任务完成,获得 ${data.data.taskDetailResList[0].incomeAmountConf} 金币,${data.data.taskDetailResList[0].beanNum} 京豆`) + $.bean += parseInt(data.data.taskDetailResList[0].beanNum) + } else { + that.log(`任务失败,错误信息:${data.message}`) + } + } else { + that.log(`${data.data.helpResDesc}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + async function helpFriends() { + await getHelp(); + for (let code of $.newShareCodes) { + if (!code) continue + await doTask({"itemId": code, "taskId": "3", "mpVersion": "3.4.0"}, "doHelpTask") + } + await setHelp(); + } + + function getHelp() { + $.newShareCodes = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzz/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var i in list) { + $.newShareCodes.push(list[i]); + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelp() { + return new Promise(resolve => { + if ($.shareId) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzz/" + $.shareId + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的邀請碼成功"); + } else { + that.log("提交邀请码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + function getHelpTuan() { + $.tuanList = []; + return new Promise(resolve => { + $.get({ + url: "http://api.tyh52.com/act/get/jdzzTuan/3" + }, (err, resp, data) => { + try { + if (data) { + data = JSON.parse(data); + if (data.code == 1) { + let list = data.data; + if (!(list instanceof Array)) { + list = JSON.parse(list); + } + if (list.length > 0) { + for (var item of list) { + let its=item.split('@'); + if(its.length==2){ + let tuan={ + "activityIdEncrypted": $.tuanActId, + "assistStartRecordId": its[0], + "assistedPinEncrypted": its[1], + "channel": "FISSION_BEAN" + } + $.tuanList.push(tuan); + } + } + } + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }); + } + + function setHelpTuan() { + return new Promise(resolve => { + if ($.tuan) { + $.get({ + url: "http://api.tyh52.com/act/set/jdzzTuan/" + $.tuan.assistStartRecordId+'@'+$.tuan.assistedPinEncrypted + }, (err, resp, data) => { + try { + if (data) { + that.log(data); + data = JSON.parse(data); + if (data.code == 1) { + that.log("提交自己的开团碼成功"); + }else{ + that.log("提交开团码失败," + data.message); + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + } else { + resolve(); + } + + }); + } + + function taskUrl1(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } + } + + function taskTuanUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&body=${escape(JSON.stringify(body))}&appid=swat_miniprogram&osVersion=5.0.0&clientVersion=3.1.3&fromType=wxapp×tamp=${new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000}`, + headers: { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Host": "api.m.jd.com", + "Referer": "https://servicewechat.com/wxa5bf5ee667d91626/108/page-frame.html", + "Cookie": cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + } + } + } + + + + function showMsg1() { + return new Promise(async resolve => { + that.log( "" + `本次获得${parseInt($.totalBeanNum) - $.nowBean}京豆,${parseInt($.totalNum) - $.nowNum}金币\n` + "\n\n") + message += "" + `累计获得${$.totalBeanNum}京豆,${$.totalNum}金币\n可兑换${$.totalNum / 10000}元无门槛红包` + "\n\n" + if (parseInt($.totalBeanNum) - $.nowBean > 0) { + $.msg($.name, '', `动动账号${$.index} ${$.nickName}\n${message}`); + } else { + $.log(message) + } + // 云端大于10元无门槛红包时进行通知推送 + if ($.isNode() && $.totalNum >= 1000000) await notify.sendNotify(`${$.name} - 动动账号${$.index} - ${$.nickName}`, `动动账号${$.index} ${$.nickName}\n当前金币:${$.totalNum}个\n可兑换无门槛红包:${parseInt($.totalNum) / 10000}元\n`,) + resolve(); + }) + } + + + + + +//我加的函数 +function postToDingTalk(messgae) { + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"资产变动", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} diff --git a/src/main/resources/test_our_new.js b/src/main/resources/test_our_new.js new file mode 100644 index 0000000..76fa090 --- /dev/null +++ b/src/main/resources/test_our_new.js @@ -0,0 +1,1195 @@ +/* +cron "30 10,22 * * *" jd_bean_change.js, tag:资产变化强化版by-ccwav +*/ + +let roleMap = { + "jd_66ea783827d30":"军军酱", + "jd_4311ac0ff4456":"居居酱" +} +let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" +//更新by ccwav,20210821 +const $ = new Env('京东资产变动通知'); +const notify = $.isNode() ? require('./sendNotify') : ''; +const JXUserAgent = $.isNode() ? (process.env.JX_USER_AGENT ? process.env.JX_USER_AGENT : ``):``; +//Node.js用户请在jdCookie.js处填写京东ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let allMessage = ''; +let message = ""; +let ReturnMessage = ''; +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +const JD_API_HOST = 'https://api.m.jd.com/client.action'; + +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + message += "[通知] 资产变动 \n\n --- \n\n" + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.beanCount = 0; + $.incomeBean = 0; + $.expenseBean = 0; + $.todayIncomeBean = 0; + $.errorMsg = ''; + $.isLogin = true; + $.nickName = ''; + $.message = ''; + $.balance = 0; + $.expiredBalance = 0; + $.JdzzNum=0; + $.JdMsScore = 0; + $.JdFarmProdName = ''; + $.JdtreeEnergy=0; + $.JdtreeTotalEnergy=0; + $.JdwaterTotalT = 0; + $.JdwaterD = 0; + $.JDwaterEveryDayT=0; + $.JDtotalcash=0; + $.JDEggcnt=0; + $.Jxmctoken=''; + await TotalBean(); + + username = $.UserName + if (roleMap[username] == undefined){ + continue + } + username = roleMap[username] + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + + console.log(`\n********开始【京东账号${$.index}】${$.nickName || $.UserName}******\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await getJdZZ(); + await getMs(); + await jdfruitRequest('taskInitForFarm', {"version":14,"channel":1,"babelChannel":"120"}); + await getjdfruit(); + await cash(); + await requestAlgo(); + await JxmcGetRequest(); + await bean(); + await getJxFactory(); //惊喜工厂 + await getDdFactoryInfo(); // 京东工厂 + await showMsg(); + } + } + + if ($.isNode() && allMessage) { + await notify.sendNotify(`${$.name}`, `${allMessage}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + postToDingTalk(message) + $.done(); + }) +async function showMsg() { + if ($.errorMsg) return + //allMessage += `账号${$.index}:${$.nickName || $.UserName}\n今日收入:${$.todayIncomeBean}京豆 🐶\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆 🐶${$.message}${$.index !== cookiesArr.length ? '\n\n' : ''}`; + + // if ($.isNode()) { + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `账号${$.index}:${$.nickName || $.UserName}\n昨日收入:${$.incomeBean}京豆 🐶\n昨日支出:${$.expenseBean}京豆 🐶\n当前京豆:${$.beanCount}京豆 🐶${$.message}`, { url: `https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean` }) + // } + + ReturnMessage=`📣=============账号${$.index}=============📣\n` + ReturnMessage+=`账号名称:${$.nickName || $.UserName}\n`; + ReturnMessage+=`今日收入:${$.todayIncomeBean}京豆 🐶\n`; + message += "" +`今日收入:${$.todayIncomeBean}京豆 🐶\n` + "\n\n" + ReturnMessage+=`昨日收入:${$.incomeBean}京豆 🐶\n`; + message += "" + `昨日收入:${$.incomeBean}京豆 🐶\n` +"\n\n" + ReturnMessage+=`昨日支出:${$.expenseBean}京豆 🐶\n`; + message += "" +`昨日支出:${$.expenseBean}京豆 🐶\n` +"\n\n" + ReturnMessage+=`当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶\n`; + message += "" + `当前京豆:${$.beanCount}(今日将过期${$.expirejingdou})京豆🐶\n` +"\n\n" + + if(typeof $.JDEggcnt !== "undefined"){ + ReturnMessage+=`京喜牧场:${$.JDEggcnt}枚鸡蛋\n`; + message += "" + `京喜牧场:${$.JDEggcnt}枚鸡蛋\n` +"\n\n" + } + if(typeof $.JDtotalcash !== "undefined"){ + ReturnMessage+=`极速金币:${$.JDtotalcash}金币(≈${$.JDtotalcash / 10000}元)\n`; + message += "" + `极速金币:${$.JDtotalcash}金币(≈${$.JDtotalcash / 10000}元)\n` +"\n\n" + } + if(typeof $.JdzzNum !== "undefined"){ + ReturnMessage+=`京东赚赚:${$.JdzzNum}金币(≈${$.JdzzNum / 10000}元)\n`; + message += "" + `京东赚赚:${$.JdzzNum}金币(≈${$.JdzzNum / 10000}元)\n` +"\n\n" + } + if($.JdMsScore!=0){ + ReturnMessage+=`京东秒杀:${$.JdMsScore}秒秒币(≈${$.JdMsScore / 1000}元)\n`; + message += "" + `京东秒杀:${$.JdMsScore}秒秒币(≈${$.JdMsScore / 1000}元)\n` +"\n\n" + } + if($.JdFarmProdName != ""){ + if($.JdtreeEnergy!=0){ + ReturnMessage+=`东东农场:${$.JdFarmProdName},进度${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(2)}%`; + message += "" + `东东农场:${$.JdFarmProdName},进度${(($.JdtreeEnergy / $.JdtreeTotalEnergy) * 100).toFixed(2)}%` +"\n\n" + if($.JdwaterD!='Infinity' && $.JdwaterD!='-Infinity'){ + ReturnMessage+=`,${$.JdwaterD === 1 ? '明天' : $.JdwaterD === 2 ? '后天' : $.JdwaterD + '天后'}可兑🍉\n`; + message += "" + `,${$.JdwaterD === 1 ? '明天' : $.JdwaterD === 2 ? '后天' : $.JdwaterD + '天后'}可兑🍉\n` +"\n\n" + } else { + ReturnMessage+=`\n`; + } + } else { + ReturnMessage+=`东东农场:${$.JdFarmProdName}\n`; + message += "" +`东东农场:${$.JdFarmProdName}\n` +"\n\n" + } + } + if ($.jxFactoryInfo) { + ReturnMessage += `京喜工厂:${$.jxFactoryInfo}🏭\n` + message += "" + `京喜工厂:${$.jxFactoryInfo}🏭\n` +"\n\n" + } + if ($.ddFactoryInfo) { + ReturnMessage += `东东工厂:${$.ddFactoryInfo}🏭\n` + message += "" + `东东工厂:${$.ddFactoryInfo}🏭\n` +"\n\n" + } + + const response = await await PetRequest('energyCollect'); + const initPetTownRes = await PetRequest('initPetTown'); + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if (response.resultCode === '0') { + ReturnMessage += `东东萌宠:${$.petInfo.goodsInfo.goodsName},`; + ReturnMessage += `勋章${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块(${response.result.medalPercent}%)\n`; + //ReturnMessage += ` 已有${response.result.medalNum}块勋章,还需${response.result.needCollectMedalNum}块\n`; + message += "" +`东东萌宠:${$.petInfo.goodsInfo.goodsName},` +"\n\n" + message += "" + `勋章${response.result.medalNum}/${response.result.medalNum+response.result.needCollectMedalNum}块(${response.result.medalPercent}%)\n` +"\n\n" + + } + } + ReturnMessage+=`🧧🧧🧧🧧红包明细🧧🧧🧧🧧`; + message += "" +`🧧🧧🧧🧧红包明细🧧🧧🧧🧧` + "\n\n" + ReturnMessage+=`${$.message}\n\n`; + message += "" + `${$.message}\n\n` +"\n\n" + allMessage+=ReturnMessage; + $.msg($.name, '', ReturnMessage , {"open-url": "https://bean.m.jd.com/beanDetail/index.action?resourceValue=bean"}); +} +async function bean() { + // console.log(`北京时间零点时间戳:${parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000}`); + // console.log(`北京时间2020-10-28 06:16:05::${new Date("2020/10/28 06:16:05+08:00").getTime()}`) + // 不管哪个时区。得到都是当前时刻北京时间的时间戳 new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000 + + //前一天的0:0:0时间戳 + const tm = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000 - (24 * 60 * 60 * 1000); + // 今天0:0:0时间戳 + const tm1 = parseInt((Date.now() + 28800000) / 86400000) * 86400000 - 28800000; + let page = 1, t = 0, yesterdayArr = [], todayArr = []; + do { + let response = await getJingBeanBalanceDetail(page); + // console.log(`第${page}页: ${JSON.stringify(response)}`); + if (response && response.code === "0") { + page++; + let detailList = response.detailList; + if (detailList && detailList.length > 0) { + for (let item of detailList) { + const date = item.date.replace(/-/g, '/') + "+08:00"; + if (new Date(date).getTime() >= tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + todayArr.push(item); + } else if (tm <= new Date(date).getTime() && new Date(date).getTime() < tm1 && (!item['eventMassage'].includes("退还") && !item['eventMassage'].includes('扣赠'))) { + //昨日的 + yesterdayArr.push(item); + } else if (tm > new Date(date).getTime()) { + //前天的 + t = 1; + break; + } + } + } else { + //$.errorMsg = `数据异常`; + //$.msg($.name, ``, `账号${$.index}:${$.nickName}\n${$.errorMsg}`); + t = 1; + } + } else if (response && response.code === "3") { + console.log(`cookie已过期,或者填写不规范,跳出`) + t = 1; + } else { + console.log(`未知情况:${JSON.stringify(response)}`); + console.log(`未知情况,跳出`) + t = 1; + } + } while (t === 0); + for (let item of yesterdayArr) { + if (Number(item.amount) > 0) { + $.incomeBean += Number(item.amount); + } else if (Number(item.amount) < 0) { + $.expenseBean += Number(item.amount); + } + } + for (let item of todayArr) { + if (Number(item.amount) > 0) { + $.todayIncomeBean += Number(item.amount); + } + } + await queryexpirejingdou();//过期京豆 + await redPacket();//过期红包 + // console.log(`昨日收入:${$.incomeBean}个京豆 🐶`); + // console.log(`昨日支出:${$.expenseBean}个京豆 🐶`) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + url: "https://me-api.jd.com/user_new/info/GetJDUserInfoUnion", + headers: { + Host: "me-api.jd.com", + Accept: "*/*", + Connection: "keep-alive", + Cookie: cookie, + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Accept-Language": "zh-cn", + "Referer": "https://home.m.jd.com/myJd/newhome.action?sceneval=2&ufc=&", + "Accept-Encoding": "gzip, deflate, br" + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + $.logErr(err) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === "1001") { + $.isLogin = false; //cookie过期 + return; + } + if (data['retcode'] === "0" && data.data && data.data.hasOwnProperty("userInfo")) { + $.nickName = data.data.userInfo.baseInfo.nickname; + } + if (data['retcode'] === '0' && data.data && data.data['assetInfo']) { + $.beanCount = data.data && data.data['assetInfo']['beanNum']; + } + } else { + $.log('京东服务器返回空数据'); + } + } + } catch (e) { + $.logErr(e) + } finally { + resolve(); + } + }) + }) +} +function getJingBeanBalanceDetail(page) { + return new Promise(async resolve => { + const options = { + "url": `https://api.m.jd.com/client.action?functionId=getJingBeanBalanceDetail`, + "body": `body=${escape(JSON.stringify({"pageSize": "20", "page": page.toString()}))}&appid=ld`, + "headers": { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + // console.log(data) + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function queryexpirejingdou() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/activep3/singjd/queryexpirejingdou?_=${Date.now()}&g_login_type=1&sceneval=2`, + "headers": { + "Accept": "*/*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Host": "wq.jd.com", + "Referer": "https://wqs.jd.com/promote/201801/bean/mybean.html", + "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Mobile/15E148 Safari/604.1" + } + } + $.expirejingdou = 0; + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + // console.log(data) + data = JSON.parse(data.slice(23, -13)); + // console.log(data) + if (data.ret === 0) { + data['expirejingdou'].map(item => { + console.log(`${timeFormat(item['time'] * 1000)}日过期京豆:${item['expireamount']}\n`); + }) + $.expirejingdou = data['expirejingdou'][0]['expireamount']; + // if ($.expirejingdou > 0) { + // $.message += `\n今日将过期:${$.expirejingdou}京豆 🐶`; + // } + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function redPacket() { + return new Promise(async resolve => { + const options = { + "url": `https://m.jingxi.com/user/info/QueryUserRedEnvelopesV2?type=1&orgFlag=JD_PinGou_New&page=1&cashRedType=1&redBalanceFlag=1&channel=1&_=${+new Date()}&sceneval=2&g_login_type=1&g_ty=ls`, + "headers": { + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://st.jingxi.com/my/redpacket.shtml?newPg=App&jxsid=16156262265849285961', + 'Accept-Encoding': 'gzip, deflate, br', + "Cookie": cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.get(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data).data + $.jxRed = 0, $.jsRed = 0, $.jdRed = 0, $.jdhRed = 0, $.jxRedExpire = 0, $.jsRedExpire = 0, $.jdRedExpire = 0, $.jdhRedExpire = 0; + let t = new Date() + t.setDate(t.getDate() + 1) + t.setHours(0, 0, 0, 0) + t = parseInt((t - 1) / 1000) + for (let vo of data.useRedInfo.redList || []) { + if (vo.orgLimitStr && vo.orgLimitStr.includes("京喜")) { + $.jxRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jxRedExpire += parseFloat(vo.balance) + } + } else if (vo.activityName.includes("极速版")) { + $.jsRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jsRedExpire += parseFloat(vo.balance) + } + } else if (vo.orgLimitStr && vo.orgLimitStr.includes("京东健康")) { + $.jdhRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdhRedExpire += parseFloat(vo.balance) + } + } else { + $.jdRed += parseFloat(vo.balance) + if (vo['endTime'] === t) { + $.jdRedExpire += parseFloat(vo.balance) + } + } + } + $.jxRed = $.jxRed.toFixed(2) + $.jsRed = $.jsRed.toFixed(2) + $.jdRed = $.jdRed.toFixed(2) + $.jdhRed = $.jdhRed.toFixed(2) + $.balance = data.balance + $.expiredBalance = ($.jxRedExpire + $.jsRedExpire + $.jdRedExpire).toFixed(2) + // $.message += `\n当前总红包:${$.balance}(今日总过期${$.expiredBalance})元 🧧\n京喜红包:${$.jxRed}(今日将过期${$.jxRedExpire.toFixed(2)})元 🧧\n极速红包:${$.jsRed}(今日将过期${$.jsRedExpire.toFixed(2)})元 🧧\n京东红包:${$.jdRed}(今日将过期${$.jdRedExpire.toFixed(2)})元 🧧\n健康红包:${$.jdhRed}(今日将过期${$.jdhRedExpire.toFixed(2)})元 🧧`; + + $.message += "" + `【当前总红包】:${$.balance}( 今日总过期${$.expiredBalance} )元 🧧` +"\n\n" + $.message += "" + `【京喜红包】:${$.jxRed}( 今日将过期${$.jxRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【极速红包】:${$.jsRed}( 今日将过期${$.jsRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【京东红包】:${$.jdRed}( 今日将过期${$.jdRedExpire.toFixed(2)} )元 🧧` +"\n\n" + $.message += "" + `【健康红包】:${$.jdhRed}( 今日将过期${$.jdhRedExpire.toFixed(2)} )元 🧧` +"\n\n" + + + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getJdZZ() { + return new Promise(resolve => { + $.get(taskJDZZUrl("interactTaskIndex"), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JdzzNum = data.data.totalNum + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function taskJDZZUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=9.1.0`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'http://wq.jd.com/wxapp/pages/hd-interaction/index/index', + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-cn', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +function getMs() { + return new Promise(resolve => { + $.post(taskMsPostUrl('homePageV2', {}, 'appid=SecKill2020'), (err, resp, data) => { + try { + if (err) { + console.log(`${err},${jsonParse(resp.body)['message']}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data) + if (data.code === 2041) { + $.JdMsScore = data.result.assignment.assignmentPoints || 0 + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +function taskMsPostUrl(function_id, body = {}, extra = '', function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.0.0&${extra}`, + headers: { + "Cookie": cookie, + "origin": "https://h5.m.jd.com", + "referer": "https://h5.m.jd.com/babelDiy/Zeus/2NUvze9e1uWf4amBhe1AV6ynmSuH/index.html", + 'Content-Type': 'application/x-www-form-urlencoded', + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + } + } +} + +async function getjdfruit() { + return new Promise(resolve => { + const option = { + url: `${JD_API_HOST}?functionId=initForFarm`, + body: `body=${escape(JSON.stringify({"version":4}))}&appid=wh5&clientVersion=9.1.0`, + headers: { + "accept": "*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "cache-control": "no-cache", + "cookie": cookie, + "origin": "https://home.m.jd.com", + "pragma": "no-cache", + "referer": "https://home.m.jd.com/myJd/newhome.action", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-site", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + "Content-Type": "application/x-www-form-urlencoded" + }, + timeout: 10000, + }; + $.post(option, (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.farmInfo = JSON.parse(data) + if ($.farmInfo.farmUserPro) { + $.JdFarmProdName=$.farmInfo.farmUserPro.name; + $.JdtreeEnergy=$.farmInfo.farmUserPro.treeEnergy; + $.JdtreeTotalEnergy=$.farmInfo.farmUserPro.treeTotalEnergy; + + let waterEveryDayT = $.JDwaterEveryDayT; + let waterTotalT = ($.farmInfo.farmUserPro.treeTotalEnergy - $.farmInfo.farmUserPro.treeEnergy - $.farmInfo.farmUserPro.totalEnergy) / 10;//一共还需浇多少次水 + let waterD = Math.ceil(waterTotalT / waterEveryDayT); + + $.JdwaterTotalT = waterTotalT; + $.JdwaterD = waterD; + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function jdfruitRequest(function_id, body = {}, timeout = 1000){ + return new Promise(resolve => { + setTimeout(() => { + $.get(taskfruitUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东农场: API查询请求失败 ‼️‼️') + console.log(JSON.stringify(err)); + console.log(`function_id:${function_id}`) + $.logErr(err); + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDwaterEveryDayT = data.totalWaterTaskInit.totalWaterTaskTimes; + } + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }, timeout) + }) +} + + +async function PetRequest(function_id, body = {}) { + await $.wait(3000); + return new Promise((resolve, reject) => { + $.post(taskPetUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + console.log('\n东东萌宠: API查询请求失败 ‼️‼️'); + console.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data) + } + }) + }) +} +function taskPetUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} + +function taskfruitUrl(function_id, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&body=${escape(JSON.stringify(body))}`, + headers: { + Cookie: cookie, + UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + }, + timeout: 10000, + } +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + console.log(e); + console.log(`京东服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function cash() { + return new Promise(resolve => { + $.get(taskcashUrl('MyAssetsService.execute', + {"method": "userCashRecord", "data": {"channel": 1, "pageNum": 1, "pageSize": 20}}), + async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.JDtotalcash = data.data.goldBalance ; + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +var __Oxb24bc = ["lite-android&", "stringify", "&android&3.1.0&", "&", "&846c4c32dae910ef", "12aea658f76e453faf803d15c40a72e0", "isNode", "crypto-js", "", "api?functionId=", "&body=", "&appid=lite-android&client=android&uuid=846c4c32dae910ef&clientVersion=3.1.0&t=", "&sign=", "api.m.jd.com", "*/*", "RN", "JDMobileLite/3.1.0 (iPad; iOS 14.4; Scale/2.00)", "zh-Hans-CN;q=1, ja-CN;q=0.9", "undefined", "log", "", "", "", "", "jsjia", "mi.com"]; + +function taskcashUrl(_0x7683x2, _0x7683x3 = {}) { + let _0x7683x4 = +new Date(); + let _0x7683x5 = `${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`; + let _0x7683x6 = __Oxb24bc[0x5]; + const _0x7683x7 = $[__Oxb24bc[0x6]]() ? require(__Oxb24bc[0x7]) : $.CryptoJS; + let _0x7683x8 = _0x7683x7.HmacSHA256(_0x7683x5, _0x7683x6).toString(); + return { + url: `${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`, + headers: { + 'Host': __Oxb24bc[0xd], + 'accept': __Oxb24bc[0xe], + 'kernelplatform': __Oxb24bc[0xf], + 'user-agent': __Oxb24bc[0x10], + 'accept-language': __Oxb24bc[0x11], + 'Cookie': cookie + } + } +}(function(_0x7683x9, _0x7683xa, _0x7683xb, _0x7683xc, _0x7683xd, _0x7683xe) { + _0x7683xe = __Oxb24bc[0x12]; + _0x7683xc = function(_0x7683xf) { + if (typeof alert !== _0x7683xe) { + alert(_0x7683xf) + }; + if (typeof console !== _0x7683xe) { + console[__Oxb24bc[0x13]](_0x7683xf) + } + }; + _0x7683xb = function(_0x7683x7, _0x7683x9) { + return _0x7683x7 + _0x7683x9 + }; + _0x7683xd = _0x7683xb(__Oxb24bc[0x14], _0x7683xb(_0x7683xb(__Oxb24bc[0x15], __Oxb24bc[0x16]), __Oxb24bc[0x17])); + try { + _0x7683x9 = __encode; + if (!(typeof _0x7683x9 !== _0x7683xe && _0x7683x9 === _0x7683xb(__Oxb24bc[0x18], __Oxb24bc[0x19]))) { + _0x7683xc(_0x7683xd) + } + } catch (e) { + _0x7683xc(_0x7683xd) + } +})({}) + +async function JxmcGetRequest() { + let url = ``; + let myRequest = ``; + url = `https://m.jingxi.com/jxmc/queryservice/GetHomePageInfo?channel=7&sceneid=1001&activeid=null&activekey=null&isgift=1&isquerypicksite=1&_stk=channel%2Csceneid&_ste=1`; + url += `&h5st=${decrypt(Date.now(), '', '', url)}&_=${Date.now() + 2}&sceneval=2&g_login_type=1&callback=jsonpCBK${String.fromCharCode(Math.floor(Math.random() * 26) + "A".charCodeAt(0))}&g_ty=ls`; + myRequest = getGetRequest(`GetHomePageInfo`, url); + + + return new Promise(async resolve => { + $.get(myRequest, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`API请求失败,请检查网路重试`) + $.runFlag = false; + console.log(`请求失败`) + } else { + data = JSON.parse(data.match(new RegExp(/jsonpCBK.?\((.*);*/))[1]); + if (data.ret === 0) { + $.JDEggcnt=data.data.eggcnt; + } + } + } catch (e) { + console.log(data); + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 惊喜工厂信息查询 +function getJxFactory() { + return new Promise(async resolve => { + let infoMsg = ""; + await $.get(jxTaskurl('userinfo/GetUserInfo', `pin=&sharePin=&shareType=&materialTuanPin=&materialTuanId=&source=`, '_time,materialTuanId,materialTuanPin,pin,sharePin,shareType,source,zone'), async (err, resp, data) => { + try { + if (err) { + $.jxFactoryInfo = "查询失败!"; + //console.log("jx工厂查询失败" + err) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.unActive = true;//标记是否开启了京喜活动或者选购了商品进行生产 + if (data.factoryList && data.productionList) { + const production = data.productionList[0]; + const factory = data.factoryList[0]; + //const productionStage = data.productionStage; + $.commodityDimId = production.commodityDimId; + // subTitle = data.user.pin; + await GetCommodityDetails();//获取已选购的商品信息 + infoMsg = `${$.jxProductName} ,进度:${((production.investedElectric / production.needElectric) * 100).toFixed(2)}%`; + if (production.investedElectric >= production.needElectric) { + if (production['exchangeStatus'] === 1) { + infoMsg = `${$.productName} ,已经可兑换,请手动兑换`; + } + if (production['exchangeStatus'] === 3) { + if (new Date().getHours() === 9) { + infoMsg = `${$.productName} ,兑换已超时,请选择新商品进行制造`; + } + } + // await exchangeProNotify() + } else { + infoMsg += ` ,预计:${((production.needElectric - production.investedElectric) / (2 * 60 * 60 * 24)).toFixed(2)}天可兑换` + } + if (production.status === 3) { + infoMsg = "${$.productName} ,已经超时失效, 请选择新商品进行制造" + } + } else { + $.unActive = false;//标记是否开启了京喜活动或者选购了商品进行生产 + if (!data.factoryList) { + infoMsg = "当前未开始生产商品,请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动" + // $.msg($.name, '【提示】', `京东账号${$.index}[${$.nickName}]京喜工厂活动未开始\n请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动`); + } else if (data.factoryList && !data.productionList) { + infoMsg = "当前未开始生产商品,请手动去京东APP->游戏与互动->查看更多->京喜工厂 开启活动" + } + } + } + } else { + console.log(`GetUserInfo异常:${JSON.stringify(data)}`) + } + } + $.jxFactoryInfo = infoMsg; + // console.log(infoMsg); + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + } + ) +} + +// 惊喜的Taskurl +function jxTaskurl(functionId, body = '', stk) { + let url = `https://m.jingxi.com/dreamfactory/${functionId}?zone=dream_factory&${body}&sceneval=2&g_login_type=1&_time=${Date.now()}&_=${Date.now() + 2}&_ste=1` + url += `&h5st=${decrypt(Date.now(), stk, '', url)}` + if (stk) { + url += `&_stk=${encodeURIComponent(stk)}`; + } + return { + url, + headers: { + 'Cookie': cookie, + 'Host': 'm.jingxi.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'User-Agent': functionId === 'AssistFriend' ? "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" : 'jdpingou', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://wqsd.jd.com/pingou/dream_factory/index.html', + 'Accept-Encoding': 'gzip, deflate, br', + } + } +} + +//惊喜查询当前生产的商品名称 +function GetCommodityDetails() { + return new Promise(async resolve => { + // const url = `/dreamfactory/diminfo/GetCommodityDetails?zone=dream_factory&sceneval=2&g_login_type=1&commodityId=${$.commodityDimId}`; + $.get(jxTaskurl('diminfo/GetCommodityDetails', `commodityId=${$.commodityDimId}`, `_time,commodityId,zone`), (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data['ret'] === 0) { + data = data['data']; + $.jxProductName = data['commodityList'][0].name; + } else { + console.log(`GetCommodityDetails异常:${JSON.stringify(data)}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +// 东东工厂信息查询 +async function getDdFactoryInfo() { + // 当心仪的商品存在,并且收集起来的电量满足当前商品所需,就投入 + let infoMsg = ""; + return new Promise(resolve => { + $.post(ddFactoryTaskUrl('jdfactory_getHomeData'), async (err, resp, data) => { + try { + if (err) { + $.ddFactoryInfo = "获取失败!" + /*console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`)*/ + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.bizCode === 0) { + // $.newUser = data.data.result.newUser; + //let wantProduct = $.isNode() ? (process.env.FACTORAY_WANTPRODUCT_NAME ? process.env.FACTORAY_WANTPRODUCT_NAME : wantProduct) : ($.getdata('FACTORAY_WANTPRODUCT_NAME') ? $.getdata('FACTORAY_WANTPRODUCT_NAME') : wantProduct); + if (data.data.result.factoryInfo) { + let { + totalScore, + useScore, + produceScore, + remainScore, + couponCount, + name + } = data.data.result.factoryInfo; + infoMsg = `${name} 剩余${couponCount};电力投入情况 ${useScore}/${totalScore};当前总电力:${remainScore * 1 + useScore * 1} ;完成度:${((remainScore * 1 + useScore * 1) / (totalScore * 1)).toFixed(2) * 100}%` + + if (((remainScore * 1 + useScore * 1) >= totalScore * 1 + 100000) && (couponCount * 1 > 0)) { + // await jdfactory_addEnergy(); + infoMsg = `${name} ,目前数量:${couponCount},当前总电量为:${remainScore * 1 + useScore * 1},已经可以兑换此商品所需总电量:${totalScore},请🔥速去活动页面查看` + } + + } else { + infoMsg = `当前未选择商品(或未开启活动) , 请到京东APP=>首页=>京东电器=>(底栏)东东工厂 选择商品!` + } + } else { + $.ddFactoryInfo = "获取失败!" + console.log(`异常:${JSON.stringify(data)}`) + } + } + } + $.ddFactoryInfo = infoMsg; + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function ddFactoryTaskUrl(function_id, body = {}, function_id2) { + let url = `${JD_API_HOST}`; + if (function_id2) { + url += `?functionId=${function_id2}`; + } + return { + url, + body: `functionId=${function_id}&body=${escape(JSON.stringify(body))}&client=wh5&clientVersion=1.1.0`, + headers: { + "Accept": "application/json, text/plain, */*", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Content-Type": "application/x-www-form-urlencoded", + "Cookie": cookie, + "Host": "api.m.jd.com", + "Origin": "https://h5.m.jd.com", + "Referer": "https://h5.m.jd.com/babelDiy/Zeus/2uSsV2wHEkySvompfjB43nuKkcHp/index.html", + "User-Agent": "jdapp;iPhone;9.3.4;14.3;88732f840b77821b345bf07fd71f609e6ff12f43;network/4g;ADID/1C141FDD-C62F-425B-8033-9AAB7E4AE6A3;supportApplePay/0;hasUPPay/0;hasOCPay/0;model/iPhone11,8;addressid/2005183373;supportBestPay/0;appBuild/167502;jdSupportDarkMode/0;pv/414.19;apprpd/Babel_Native;ref/TTTChannelViewContoller;psq/5;ads/;psn/88732f840b77821b345bf07fd71f609e6ff12f43|1701;jdv/0|iosapp|t_335139774|appshare|CopyURL|1610885480412|1610885486;adk/;app_device/IOS;pap/JA2015_311210|9.3.4|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1", + }, + timeout: 10000, + } +} +function randomString(e) { + e = e || 32; + let t = "0123456789abcdef", a = t.length, n = ""; + for (let i = 0; i < e; i++) + n += t.charAt(Math.floor(Math.random() * a)); + return n +} + +function getGetRequest(type, url) { + UA = `jdpingou;iPhone;4.13.0;14.4.2;${randomString(40)};network/wifi;model/iPhone10,2;appBuild/100609;ADID/00000000-0000-0000-0000-000000000000;supportApplePay/1;hasUPPay/0;pushNoticeIsOpen/1;hasOCPay/0;supportBestPay/0;session/${Math.random * 98 + 1};pap/JA2019_3111789;brand/apple;supportJDSHWK/1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148` + + const method = `GET`; + let headers = { + 'Origin': `https://st.jingxi.com`, + 'Cookie': cookie, + 'Connection': `keep-alive`, + 'Accept': `application/json`, + 'Referer': `https://st.jingxi.com/pingou/jxmc/index.html`, + 'Host': `m.jingxi.com`, + 'User-Agent': UA, + 'Accept-Encoding': `gzip, deflate, br`, + 'Accept-Language': `zh-cn` + }; + return {url: url, method: method, headers: headers}; +} + + +Date.prototype.Format = function (fmt) { + var e, + n = this, d = fmt, l = { + "M+": n.getMonth() + 1, + "d+": n.getDate(), + "D+": n.getDate(), + "h+": n.getHours(), + "H+": n.getHours(), + "m+": n.getMinutes(), + "s+": n.getSeconds(), + "w+": n.getDay(), + "q+": Math.floor((n.getMonth() + 3) / 3), + "S+": n.getMilliseconds() + }; + /(y+)/i.test(d) && (d = d.replace(RegExp.$1, "".concat(n.getFullYear()).substr(4 - RegExp.$1.length))); + for (var k in l) { + if (new RegExp("(".concat(k, ")")).test(d)) { + var t, a = "S+" === k ? "000" : "00"; + d = d.replace(RegExp.$1, 1 == RegExp.$1.length ? l[k] : ("".concat(a) + l[k]).substr("".concat(l[k]).length)) + } + } + return d; +} + +function decrypt(time, stk, type, url) { + stk = stk || (url ? getJxmcUrlData(url, '_stk') : '') + if (stk) { + const timestamp = new Date(time).Format("yyyyMMddhhmmssSSS"); + let hash1 = ''; + if ($.fingerprint && $.Jxmctoken && $.enCryptMethodJD) { + hash1 = $.enCryptMethodJD($.Jxmctoken, $.fingerprint.toString(), timestamp.toString(), $.appId.toString(), $.CryptoJS).toString($.CryptoJS.enc.Hex); + } else { + const random = '5gkjB6SpmC9s'; + $.Jxmctoken = `tk01wcdf61cb3a8nYUtHcmhSUFFCfddDPRvKvYaMjHkxo6Aj7dhzO+GXGFa9nPXfcgT+mULoF1b1YIS1ghvSlbwhE0Xc`; + $.fingerprint = 5287160221454703; + const str = `${$.Jxmctoken}${$.fingerprint}${timestamp}${$.appId}${random}`; + hash1 = $.CryptoJS.SHA512(str, $.Jxmctoken).toString($.CryptoJS.enc.Hex); + } + let st = ''; + stk.split(',').map((item, index) => { + st += `${item}:${getJxmcUrlData(url, item)}${index === stk.split(',').length - 1 ? '' : '&'}`; + }) + const hash2 = $.CryptoJS.HmacSHA256(st, hash1.toString()).toString($.CryptoJS.enc.Hex); + return encodeURIComponent(["".concat(timestamp.toString()), "".concat($.fingerprint.toString()), "".concat($.appId.toString()), "".concat($.Jxmctoken), "".concat(hash2)].join(";")) + } else { + return '20210318144213808;8277529360925161;10001;tk01w952a1b73a8nU0luMGtBanZTHCgj0KFVwDa4n5pJ95T/5bxO/m54p4MtgVEwKNev1u/BUjrpWAUMZPW0Kz2RWP8v;86054c036fe3bf0991bd9a9da1a8d44dd130c6508602215e50bb1e385326779d' + } +} + +async function requestAlgo() { + $.fingerprint = await generateFp(); + $.appId = 10028; + const options = { + "url": `https://cactus.jd.com/request_algo?g_ty=ajax`, + "headers": { + 'Authority': 'cactus.jd.com', + 'Pragma': 'no-cache', + 'Cache-Control': 'no-cache', + 'Accept': 'application/json', + 'User-Agent':$.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + //'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', + 'Content-Type': 'application/json', + 'Origin': 'https://st.jingxi.com', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Dest': 'empty', + 'Referer': 'https://st.jingxi.com/', + 'Accept-Language': 'zh-CN,zh;q=0.9,zh-TW;q=0.8,en;q=0.7' + }, + 'body': JSON.stringify({ + "version": "1.0", + "fp": $.fingerprint, + "appId": $.appId.toString(), + "timestamp": Date.now(), + "platform": "web", + "expandParams": "" + }) + } + new Promise(async resolve => { + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`request_algo 签名参数API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['status'] === 200) { + $.Jxmctoken = data.data.result.tk; + let enCryptMethodJDString = data.data.result.algo; + // if (enCryptMethodJDString) $.enCryptMethodJD = new Function(`return ${enCryptMethodJDString}`)(); + eval(enCryptMethodJDString+';$.enCryptMethodJD=test'); + } else { + console.log('request_algo 签名参数API请求失败:') + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function generateFp() { + let e = "0123456789"; + let a = 13; + let i = ''; + for (; a--;) + i += e[Math.random() * e.length | 0]; + return (i + Date.now()).slice(0, 16) +} + +function getJxmcUrlData(url, name) { + if (typeof URL !== "undefined") { + let urls = new URL(url); + let data = urls.searchParams.get(name); + return data ? data : ''; + } else { + const query = url.match(/\?.*/)[0].substring(1) + const vars = query.split('&') + for (let i = 0; i < vars.length; i++) { + const pair = vars[i].split('=') + if (pair[0] === name) { + return vars[i].substr(vars[i].indexOf('=') + 1); + } + } + return '' + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} +function timeFormat(time) { + let date; + if (time) { + date = new Date(time) + } else { + date = new Date(); + } + return date.getFullYear() + '-' + ((date.getMonth() + 1) >= 10 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)) + '-' + (date.getDate() >= 10 ? date.getDate() : '0' + date.getDate()); +} + + +// prettier-ignore +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`🔔${this.name}, 开始!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============📣系统通知📣=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} + + +//我加的函数 +function postToDingTalk(messgae) { + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"资产变动", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} diff --git a/src/main/resources/test_pet.js b/src/main/resources/test_pet.js new file mode 100644 index 0000000..2b9dec9 --- /dev/null +++ b/src/main/resources/test_pet.js @@ -0,0 +1,709 @@ +let cookiesArr = [], cookie = '', jdPetShareArr = [], isBox = false, notify, newShareCodes, allMessage = ''; +//助力好友分享码(最多5个,否则后面的助力失败),原因:动动农场每人每天只有四次助力机会 +//此此内容是IOS用户下载脚本到本地使用,填写互助码的地方,同一动动账号的好友互助码请使用@符号隔开。 +//下面给出两个账号的填写示例(iOS只支持2个动动账号) +let shareCodes = [ // IOS本地脚本用户这个列表填入你要助力的好友的shareCode +] +let message = "", subTitle = '', option = {}; +let jdNotify = false;//是否关闭通知,false打开通知推送,true关闭通知推送 +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +let goodsUrl = '', taskInfoKey = []; +let randomCount = $.isNode() ? 20 : 5; +!(async () => { + await requireConfig(); + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + + message += "[通知] 动动萌宠 \n\n --- \n\n" + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + await TotalBean(); + that.log(`\n开始【动动账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + subTitle = ''; + goodsUrl = ''; + taskInfoKey = []; + option = {}; + await shareCodesFormat(); + await jdPet(); + } + message += "----\n\n" + } + if ($.isNode() && allMessage && $.ctrTemp) { + await notify.sendNotify(`${$.name}`, `${allMessage}`) + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + message += getPic() + postToDingTalk(message) + taht.log(message) + $.done(); + }) +async function jdPet() { + try { + //查询jd宠物信息 + const initPetTownRes = await request('initPetTown'); + if (initPetTownRes.code === '0' && initPetTownRes.resultCode === '0' && initPetTownRes.message === 'success') { + $.petInfo = initPetTownRes.result; + if ($.petInfo.userStatus === 0) { + // $.msg($.name, '', `【提示】动动账号${$.index}${$.nickName}\n萌宠活动未开启\n请手动去动动APP开启活动\n入口:我的->游戏与互动->查看更多开启`, { "open-url": "openapp.jdmoble://" }); + await slaveHelp();//助力好友 + message = message + ""+ "动动萌宠未开启\n请手动去动动APP开启活动\n入口:我的->游戏与互动->查看更多开启\n\n" + $.log($.name, '', `【提示】动动账号${$.index}${$.nickName}\n萌宠活动未开启\n请手动去动动APP开启活动\n入口:我的->游戏与互动->查看更多开启`); + return + } + if (!$.petInfo.goodsInfo) { + message = message + ""+ "暂未选购新的商品\n\n" + $.msg($.name, '', `【提示】动动账号${$.index}${$.nickName}\n暂未选购新的商品`, { "open-url": "openapp.jdmoble://" }); + if ($.isNode()) await notify.sendNotify(`${$.name} - ${$.index} - ${$.nickName}`, `【提示】动动账号${$.index}${$.nickName}\n暂未选购新的商品`); + return + } + goodsUrl = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsUrl; + // option['media-url'] = goodsUrl; + // that.log(`初始化萌宠信息完成: ${JSON.stringify(petInfo)}`); + if ($.petInfo.petStatus === 5) { + await slaveHelp();//可以兑换而没有去兑换,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + message = message + ""+ `【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取`, '请去动动APP或微信小程序查看' +"\n\n" + $.msg($.name, `【提醒⏰】${$.petInfo.goodsInfo.goodsName}已可领取`, '请去动动APP或微信小程序查看', option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `动动账号${$.index} ${$.nickName}\n${$.petInfo.goodsInfo.goodsName}已可领取`); + } + return + } else if ($.petInfo.petStatus === 6) { + await slaveHelp();//已领取红包,但未领养新的,也能继续助力好友 + option['open-url'] = "openApp.jdMobile://"; + message = message + ""+ `【提醒⏰】已领取红包,但未继续领养新的物品`, '请去动动APP或微信小程序继续领养' + "\n\n" + $.msg($.name, `【提醒⏰】已领取红包,但未继续领养新的物品`, '请去动动APP或微信小程序继续领养', option); + if ($.isNode()) { + await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName || $.UserName}奖品已可领取`, `动动账号${$.index} ${$.nickName}\n已领取红包,但未继续领养新的物品`); + } + return + } + that.log(`\n【动动账号${$.index}(${$.UserName})的${$.name}好友互助码】${$.petInfo.shareCode}\n`); + await taskInit(); + if ($.taskInit.resultCode === '9999' || !$.taskInit.result) { + that.log('初始化任务异常, 请稍后再试'); + return + } + $.taskInfo = $.taskInit.result; + + await petSport();//遛弯 + await slaveHelp();//助力好友 + await masterHelpInit();//获取助力的信息 + await doTask();//做日常任务 + await feedPetsAgain();//再次投食 + await energyCollect();//收集好感度 + await showMsg(); + that.log('全部任务完成, 如果帮助到您可以点下🌟STAR鼓励我一下, 明天见~'); + } else if (initPetTownRes.code === '0'){ + that.log(`初始化萌宠失败: ${initPetTownRes.message}`); + } + } catch (e) { + $.logErr(e) + const errMsg = `动动账号${$.index} ${$.nickName || $.UserName}\n任务执行异常,请检查执行日志 ‼️‼️`; + if ($.isNode()) await notify.sendNotify(`${$.name}`, errMsg); + $.msg($.name, '', `动动账号${$.index} ${$.nickName || $.UserName}\n${errMsg}`) + } +} +// 收取所有好感度 +async function energyCollect() { + that.log('开始收取任务奖励好感度'); + let function_id = 'energyCollect'; + const response = await request(function_id); + // that.log(`收取任务奖励好感度完成:${JSON.stringify(response)}`); + if (response.resultCode === '0') { + message = message + ""+ `【第${response.result.medalNum + 1}块勋章完成进度】${response.result.medalPercent}%,还需收集${response.result.needCollectEnergy}好感\n` + "\n\n"; + message = message + ""+ `【已获得勋章】${response.result.medalNum}块,还需收集${response.result.needCollectMedalNum}块即可兑换奖品“${$.petInfo.goodsInfo.goodsName}”\n` + "\n\n"; + } +} +//再次投食 +async function feedPetsAgain() { + const response = await request('initPetTown');//再次初始化萌宠 + if (response.code === '0' && response.resultCode === '0' && response.message === 'success') { + $.petInfo = response.result; + let foodAmount = $.petInfo.foodAmount; //剩余狗粮 + if (foodAmount - 100 >= 10) { + for (let i = 0; i < parseInt((foodAmount - 100) / 10); i++) { + const feedPetRes = await request('feedPets'); + that.log(`投食feedPetRes`); + if (feedPetRes.resultCode == 0 && feedPetRes.code == 0) { + that.log('投食成功') + } + } + const response2 = await request('initPetTown'); + $.petInfo = response2.result; + subTitle = $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } else { + that.log("目前剩余狗粮:【" + foodAmount + "】g,不再继续投食,保留部分狗粮用于完成第二天任务"); + subTitle = $.petInfo.goodsInfo && $.petInfo.goodsInfo.goodsName; + // message += `【与爱宠相识】${$.petInfo.meetDays}天\n`; + // message += `【剩余狗粮】${$.petInfo.foodAmount}g\n`; + } + } else { + that.log(`初始化萌宠失败: ${JSON.stringify($.petInfo)}`); + } +} + + +async function doTask() { + const { signInit, threeMealInit, firstFeedInit, feedReachInit, inviteFriendsInit, browseShopsInit, taskList } = $.taskInfo; + for (let item of taskList) { + if ($.taskInfo[item].finished) { + that.log(`任务 ${item} 已完成`) + } + } + //每日签到 + if (signInit && !signInit.finished) { + await signInitFun(); + } + // 首次喂食 + if (firstFeedInit && !firstFeedInit.finished) { + await firstFeedInitFun(); + } + // 三餐 + if (threeMealInit && !threeMealInit.finished) { + if (threeMealInit.timeRange === -1) { + that.log(`未到三餐时间`); + } else { + await threeMealInitFun(); + } + } + if (browseShopsInit && !browseShopsInit.finished) { + await browseShopsInitFun(); + } + let browseSingleShopInitList = []; + taskList.map((item) => { + if (item.indexOf('browseSingleShopInit') > -1) { + browseSingleShopInitList.push(item); + } + }); + // 去逛逛好货会场 + for (let item of browseSingleShopInitList) { + const browseSingleShopInitTask = $.taskInfo[item]; + if (browseSingleShopInitTask && !browseSingleShopInitTask.finished) { + await browseSingleShopInit(browseSingleShopInitTask); + } + } + if (inviteFriendsInit && !inviteFriendsInit.finished) { + await inviteFriendsInitFun(); + } + // 投食10次 + if (feedReachInit && !feedReachInit.finished) { + await feedReachInitFun(); + } +} +// 好友助力信息 +async function masterHelpInit() { + let res = await request('masterHelpInit'); + // that.log(`助力信息: ${JSON.stringify(res)}`); + if (res.code === '0' && res.resultCode === '0') { + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length >= 5) { + if(!res.result.addedBonusFlag) { + that.log("开始领取额外奖励"); + let getHelpAddedBonusResult = await request('getHelpAddedBonus'); + if (getHelpAddedBonusResult.resultCode === '0') { + message += ""+ `【额外奖励${getHelpAddedBonusResult.result.reward}领取】${getHelpAddedBonusResult.message}\n` + "\n\n"; + } + that.log(`领取30g额外奖励结果:【${getHelpAddedBonusResult.message}】`); + } else { + that.log("已经领取过5好友助力额外奖励"); + message += ""+ `【额外奖励】已领取\n` + "\n\n"; + } + } else { + that.log("助力好友未达到5个") + message += ""+ `【额外奖励】领取失败,原因:给您助力的人未达5个\n` + "\n\n"; + } + if (res.result.masterHelpPeoples && res.result.masterHelpPeoples.length > 0) { + that.log('帮您助力的好友的名单开始') + let str = ''; + res.result.masterHelpPeoples.map((item, index) => { + if (index === (res.result.masterHelpPeoples.length - 1)) { + str += item.nickName || "匿名用户"; + } else { + str += (item.nickName || "匿名用户") + ','; + } + }) + message += ""+ `【助力您的好友】${str}\n` + "\n\n"; + } + } +} +/** + * 助力好友, 暂时支持一个好友, 需要拿到shareCode + * shareCode为你要助力的好友的 + * 运行脚本时你自己的shareCode会在控制台输出, 可以将其分享给他人 + */ +async function slaveHelp() { + //$.log(`\n因1.6日好友助力功能下线。故暂时屏蔽\n`) + //return + let helpPeoples = ''; + for (let code of newShareCodes) { + that.log(`开始助力动动账号${$.index} - ${$.nickName}的好友: ${code}`); + if (!code) continue; + let response = await request('slaveHelp', {'shareCode': code}); + if (response.code === '0' && response.resultCode === '0') { + if (response.result.helpStatus === 0) { + that.log('已给好友: 【' + response.result.masterNickName + '】助力成功'); + helpPeoples += response.result.masterNickName + ','; + } else if (response.result.helpStatus === 1) { + // 您今日已无助力机会 + that.log(`助力好友${response.result.masterNickName}失败,您今日已无助力机会`); + break; + } else if (response.result.helpStatus === 2) { + //该好友已满5人助力,无需您再次助力 + that.log(`该好友${response.result.masterNickName}已满5人助力,无需您再次助力`); + } else { + that.log(`助力其他情况:${JSON.stringify(response)}`); + } + } else { + that.log(`助力好友结果: ${response.message}`); + } + } + if (helpPeoples && helpPeoples.length > 0) { + message = message + ""+ `【您助力的好友】${helpPeoples.substr(0, helpPeoples.length - 1)}\n` +"\n\n"; + } +} +// 遛狗, 每天次数上限10次, 随机给狗粮, 每次遛狗结束需调用getSportReward领取奖励, 才能进行下一次遛狗 +async function petSport() { + that.log('开始遛弯'); + let times = 1 + const code = 0 + let resultCode = 0 + do { + let response = await request('petSport') + that.log(`第${times}次遛狗完成: ${JSON.stringify(response)}`); + resultCode = response.resultCode; + if (resultCode == 0) { + let sportRevardResult = await request('getSportReward'); + that.log(`领取遛狗奖励完成: ${JSON.stringify(sportRevardResult)}`); + } + times++; + } while (resultCode == 0 && code == 0) + if (times > 1) { + // message += '【十次遛狗】已完成\n'; + } +} +// 初始化任务, 可查询任务完成情况 +async function taskInit() { + that.log('开始任务初始化'); + $.taskInit = await request('taskInit', {"version":1}); +} +// 每日签到, 每天一次 +async function signInitFun() { + that.log('准备每日签到'); + const response = await request("getSignReward"); + that.log(`每日签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + that.log(`【每日签到成功】奖励${response.result.signReward}g狗粮\n`); + // message += `【每日签到成功】奖励${response.result.signReward}g狗粮\n`; + } else { + that.log(`【每日签到】${response.message}\n`); + // message += `【每日签到】${response.message}\n`; + } +} + +// 三餐签到, 每天三段签到时间 +async function threeMealInitFun() { + that.log('准备三餐签到'); + const response = await request("getThreeMealReward"); + that.log(`三餐签到结果: ${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + that.log(`【定时领狗粮】获得${response.result.threeMealReward}g\n`); + // message += `【定时领狗粮】获得${response.result.threeMealReward}g\n`; + } else { + that.log(`【定时领狗粮】${response.message}\n`); + // message += `【定时领狗粮】${response.message}\n`; + } +} + +// 浏览指定店铺 任务 +async function browseSingleShopInit(item) { + that.log(`开始做 ${item.title} 任务, ${item.desc}`); + const body = {"index": item['index'], "version":1, "type":1}; + const body2 = {"index": item['index'], "version":1, "type":2}; + const response = await request("getSingleShopReward", body); + // that.log(`点击进去response::${JSON.stringify(response)}`); + if (response.code === '0' && response.resultCode === '0') { + const response2 = await request("getSingleShopReward", body2); + // that.log(`浏览完毕领取奖励:response2::${JSON.stringify(response2)}`); + if (response2.code === '0' && response2.resultCode === '0') { + that.log(`【浏览指定店铺】获取${response2.result.reward}g\n`); + // message += `【浏览指定店铺】获取${response2.result.reward}g\n`; + } + } +} + +// 浏览店铺任务, 任务可能为多个? 目前只有一个 +async function browseShopsInitFun() { + that.log('开始浏览店铺任务'); + let times = 0; + let resultCode = 0; + let code = 0; + do { + let response = await request("getBrowseShopsReward"); + that.log(`第${times}次浏览店铺结果: ${JSON.stringify(response)}`); + code = response.code; + resultCode = response.resultCode; + times++; + } while (resultCode == 0 && code == 0 && times < 5) + that.log('浏览店铺任务结束'); +} +// 首次投食 任务 +function firstFeedInitFun() { + that.log('首次投食任务合并到10次喂食任务中\n'); +} + +// 邀请新用户 +async function inviteFriendsInitFun() { + that.log('邀请新用户功能未实现'); + if ($.taskInfo.inviteFriendsInit.status == 1 && $.taskInfo.inviteFriendsInit.inviteFriendsNum > 0) { + // 如果有邀请过新用户,自动领取60gg奖励 + const res = await request('getInviteFriendsReward'); + if (res.code == 0 && res.resultCode == 0) { + that.log(`领取邀请新用户奖励成功,获得狗粮现有狗粮${$.taskInfo.inviteFriendsInit.reward}g,${res.result.foodAmount}g`); + message += ""+ `【邀请新用户】获取狗粮${$.taskInfo.inviteFriendsInit.reward}g\n` +"\n\n"; + } + } +} + +/** + * 投食10次 任务 + */ +async function feedReachInitFun() { + that.log('投食任务开始...'); + let finishedTimes = $.taskInfo.feedReachInit.hadFeedAmount / 10; //已经喂养了几次 + let needFeedTimes = 10 - finishedTimes; //还需要几次 + let tryTimes = 20; //尝试次数 + do { + that.log(`还需要投食${needFeedTimes}次`); + const response = await request('feedPets'); + that.log(`本次投食结果: ${JSON.stringify(response)}`); + if (response.resultCode == 0 && response.code == 0) { + needFeedTimes--; + } + if (response.resultCode == 3003 && response.code == 0) { + that.log('剩余狗粮不足, 投食结束'); + needFeedTimes = 0; + } + tryTimes--; + } while (needFeedTimes > 0 && tryTimes > 0) + that.log('投食任务结束...\n'); +} +async function showMsg() { + if ($.isNode() && process.env.PET_NOTIFY_CONTROL) { + $.ctrTemp = `${process.env.PET_NOTIFY_CONTROL}` === 'false'; + } else if ($.getdata('jdPetNotify')) { + $.ctrTemp = $.getdata('jdPetNotify') === 'false'; + } else { + $.ctrTemp = `${jdNotify}` === 'false'; + } + // jdNotify = `${notify.petNotifyControl}` === 'false' && `${jdNotify}` === 'false' && $.getdata('jdPetNotify') === 'false'; + if ($.ctrTemp) { + $.msg($.name, subTitle, message, option); + if ($.isNode()) { + allMessage += `${subTitle}\n${message}${$.index !== cookiesArr.length ? '\n\n' : ''}` + // await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `${subTitle}\n${message}`); + } + } else { + $.log(`\n${message}\n`); + } +} +function readShareCode() { + return new Promise(async resolve => { + $.get({url: `http://jd.turinglabs.net/api/v2/jd/pet/read/${randomCount}/`, 'timeout': 10000}, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + that.log(`随机取个${randomCount}码放到您固定的互助码后面(不影响已有固定互助)`) + data = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + await $.wait(10000); + resolve() + }) +} +function shareCodesFormat() { + return new Promise(async resolve => { + // that.log(`第${$.index}个动动账号的助力码:::${jdPetShareArr[$.index - 1]}`) + newShareCodes = []; + if (jdPetShareArr[$.index - 1]) { + newShareCodes = jdPetShareArr[$.index - 1].split('@'); + } else { + that.log(`由于您第${$.index}个动动账号未提供shareCode,将采纳本脚本自带的助力码\n`) + if(shareCodes.length>0){ + const tempIndex = $.index > shareCodes.length ? (shareCodes.length - 1) : ($.index - 1); + newShareCodes = shareCodes[tempIndex].split('@'); + } + } + //因好友助力功能下线。故暂时屏蔽 + //const readShareCodeRes = await readShareCode(); + const readShareCodeRes = null; + if (readShareCodeRes && readShareCodeRes.code === 200) { + newShareCodes = [...new Set([...newShareCodes, ...(readShareCodeRes.data || [])])]; + } + that.log(`第${$.index}个动动账号将要助力的好友${JSON.stringify(newShareCodes)}`) + resolve(); + }) +} +function requireConfig() { + return new Promise(resolve => { + that.log('开始获取动动萌宠配置文件\n') + notify = $.isNode() ? require('./sendNotify') : ''; + //Node.js用户请在jdCookie.js处填写动动ck; + const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + const jdPetShareCodes = $.isNode() ? require('./jdPetShareCodes.js') : ''; + //IOS等用户直接用NobyDa的jd cookie + if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; + } else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + that.log(`共${cookiesArr.length}个动动账号\n`) + if ($.isNode()) { + Object.keys(jdPetShareCodes).forEach((item) => { + if (jdPetShareCodes[item]) { + jdPetShareArr.push(jdPetShareCodes[item]) + } + }) + } else { + const boxShareCodeArr = ['jd_pet1', 'jd_pet2', 'jd_pet3', 'jd_pet4', 'jd_pet5']; + const boxShareCodeArr2 = ['jd2_pet1', 'jd2_pet2', 'jd2_pet3', 'jd2_pet4', 'jd2_pet5']; + const isBox1 = boxShareCodeArr.some((item) => { + const boxShareCode = $.getdata(item); + return (boxShareCode !== undefined && boxShareCode !== null && boxShareCode !== ''); + }); + const isBox2 = boxShareCodeArr2.some((item) => { + const boxShareCode = $.getdata(item); + return (boxShareCode !== undefined && boxShareCode !== null && boxShareCode !== ''); + }); + isBox = isBox1 ? isBox1 : isBox2; + if (isBox1) { + let temp = []; + for (const item of boxShareCodeArr) { + if ($.getdata(item)) { + temp.push($.getdata(item)) + } + } + jdPetShareArr.push(temp.join('@')); + } + if (isBox2) { + let temp = []; + for (const item of boxShareCodeArr2) { + if ($.getdata(item)) { + temp.push($.getdata(item)) + } + } + jdPetShareArr.push(temp.join('@')); + } + } + // that.log(`jdPetShareArr::${JSON.stringify(jdPetShareArr)}`) + // that.log(`jdPetShareArr账号长度::${jdPetShareArr.length}`) + that.log(`您提供了${jdPetShareArr.length}个账号的动动萌宠助力码\n`); + resolve() + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +// 请求 +async function request(function_id, body = {}) { + await $.wait(3000); //歇口气儿, 不然会报操作频繁 + return new Promise((resolve, reject) => { + $.post(taskUrl(function_id, body), (err, resp, data) => { + try { + if (err) { + that.log('\n动动萌宠: API查询请求失败 ‼️‼️'); + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data) + } + }) + }) +} +// function taskUrl(function_id, body = {}) { +// return { +// url: `${JD_API_HOST}?functionId=${function_id}&appid=wh5&loginWQBiz=pet-town&body=${escape(JSON.stringify(body))}`, +// headers: { +// Cookie: cookie, +// UserAgent: $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), +// } +// }; +// } +function taskUrl(function_id, body = {}) { + body["version"] = 2; + body["channel"] = 'app'; + return { + url: `${JD_API_HOST}?functionId=${function_id}`, + body: `body=${escape(JSON.stringify(body))}&appid=wh5&loginWQBiz=pet-town&clientVersion=9.0.4`, + headers: { + 'Cookie': cookie, + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + } + }; +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动萌宠", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_shop.js b/src/main/resources/test_shop.js new file mode 100644 index 0000000..e969b28 --- /dev/null +++ b/src/main/resources/test_shop.js @@ -0,0 +1,279 @@ +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写动动ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; + +//IOS等用户直接用NobyDa的jd cookie +let cookiesArr = [], cookie = ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => {}; +} else { + let cookiesData = $.getdata('CookiesJD') || "[]"; + cookiesData = jsonParse(cookiesData); + cookiesArr = cookiesData.map(item => item.cookie); + cookiesArr.reverse(); + cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); + cookiesArr.reverse(); + cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); +} +let message = '', subTitle = ''; + +const JD_API_HOST = 'https://api.m.jd.com/client.action'; +!(async () => { + + message += "[通知] 动动超市 \n\n --- \n\n" + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await TotalBean(); + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + that.log(`\n开始【动动账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + subTitle = ''; + await jdShop(); + } + message += "----\n\n" + } +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + message = message + "" +`❌ ${$.name}, 失败! 原因: ${e}!` + "\n\n" + }) + .finally(() => { + message += getPic() + that.log(message) + // postToDingTalk(message) + $.done(); + }) +async function jdShop() { + const taskData = await getTask(); + if (taskData.code === '0') { + if (!taskData.data.taskList) { + that.log(`${taskData.data.taskErrorTips}\n`); + $.msg($.name, '', `动动账号 ${$.index} ${$.nickName}\n${taskData.data.taskErrorTips}`); + message += "" + `${taskData.data.taskErrorTips}` + "\n\n" + } else { + const { taskList } = taskData.data; + let beanCount = 0; + for (let item of taskList) { + if (item.taskStatus === 3) { + that.log(`${item.shopName} 已拿到2京豆\n`) + message += "" + `成功领取${beanCount}京豆` + "\n\n" + } else { + that.log(`taskId::${item.taskId}`) + const doTaskRes = await doTask(item.taskId); + if (doTaskRes.code === '0') { + beanCount += 2; + } + } + } + that.log(`beanCount::${beanCount}`); + message += "" + `成功领取${beanCount}京豆` + "\n\n" + $.msg($.name, '', `动动账号 ${$.index} ${$.nickName}\n成功领取${beanCount}京豆`); + } + } +} +function doTask(taskId) { + that.log(`doTask-taskId::${taskId}`) + return new Promise(resolve => { + const body = { 'taskId': `${taskId}` }; + const options = { + url: `${JD_API_HOST}`, + body: `functionId=takeTask&body=${escape(JSON.stringify(body))}&appid=ld`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log('\n进店领豆: API查询请求失败 ‼️‼️') + $.logErr(err); + } else { + // that.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function getTask(body = {}) { + return new Promise(resolve => { + const options = { + url: `${JD_API_HOST}`, + body: `functionId=queryTaskIndex&body=${escape(JSON.stringify(body))}&appid=ld`, + headers: { + 'User-Agent': $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0"), + 'Host': 'api.m.jd.com', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Cookie': cookie, + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log('\n进店领豆: API查询请求失败 ‼️‼️') + $.logErr(err); + } else { + // that.log(data) + data = JSON.parse(data); + } + } catch (e) { + $.logErr(e, resp); + } finally { + resolve(data); + } + }) + }) +} +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=fa87e34729eaa6113fddfa857efebb477dea0a433d6eecfe93b1d3f5e24847b9" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动超市", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} + +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_speed_red.js b/src/main/resources/test_speed_red.js new file mode 100644 index 0000000..db40219 --- /dev/null +++ b/src/main/resources/test_speed_red.js @@ -0,0 +1,336 @@ + +const JD_API_HOST = 'https://api.m.jd.com/'; + +const notify = $.isNode() ? require('./sendNotify') : ''; +let cookiesArr = [], cookie = '', message = ''; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +$.linkId=""; +$.linkIds=["9wdf1YTT2L59Vr-meKskLA"]; +!(async () => { + message += "[通知] 极速签到领红包 \n\n --- \n\n" + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + for(var index=0;index<$.linkIds.length;index++){ + $.linkId=$.linkIds[index]; + that.log("当前linkId:"+$.linkId); + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + await spring_reward_query(); + if ($.data) { + that.log("当前剩余次数:" + $.data.remainChance); + if ($.data.remainChance) { + for (var j = 0; j < $.data.remainChance; j++) { + await spring_reward_receive(); + await $.wait(2000); + if ($.reward) { + if ($.reward.prizeType == 1) { + message = message + "" + "获得优惠券:" + $.reward.prizeDesc + ',面值:' + $.reward.amount + ",满" + $.reward.useLimit + "可用" + "\n\n" + that.log("获得优惠券:" + $.reward.prizeDesc + ',面值:' + $.reward.amount + ",满" + $.reward.useLimit + "可用"); + } else if ($.reward.prizeType == 4) { + message = message + "" + "获得现金:" + $.reward.amount + ',描述:' + $.reward.prizeDesc + "\n\n" + that.log("获得现金:" + $.reward.amount + ',描述:' + $.reward.prizeDesc); + } else { + message = message + "" + "获得" + $.reward.prizeDesc + ",面值:" + $.reward.amount + "\n\n" + that.log("获得" + $.reward.prizeDesc + ",面值:" + $.reward.amount); + } + } + } + } + } + await spring_reward_list(); + if ($.list) { + for (var item of $.list) { + if (item.state == 0 && item.prizeType == 4) { + message = message + "" + "有" + item.amount + "现金没有提现,尝试提现中" + "\n\n" + that.log("有" + item.amount + "现金没有提现,尝试提现中"); + await apCashWithDraw(item); + await $.wait(1000); + } + } + } + } + } + } + + })() + .catch((e) => { + message = message + "" + `❌ ${$.name}, 失败! 原因: ${e}!` + "\n\n" + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + message += getPic() + taht.log(message) + $.done(); + }) + + function spring_reward_receive() { + return new Promise((resolve) => { + $.get(taskUrl("spring_reward_receive", { + "linkId": $.linkId, + "inviter": "UhBiP5ZPaM28-O0MOaGu2g" + }), (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + $.reward = data.data.received; + } else { + that.log(JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function spring_reward_query() { + return new Promise((resolve) => { + $.get(taskUrl("spring_reward_query", { + "linkId": $.linkId, + "inviter": "UhBiP5ZPaM28-O0MOaGu2g" + }), (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + $.data = data.data; + } else { + that.log(JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function spring_reward_list() { + return new Promise((resolve) => { + $.get(taskUrl("spring_reward_list", { + "pageNum": 1, + "pageSize": 10, + "linkId": $.linkId, + "inviter": "UhBiP5ZPaM28-O0MOaGu2g" + }), (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + $.list = data.data.items; + } else { + that.log(JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function apCashWithDraw(item) { + console.log(item); + return new Promise((resolve) => { + $.post(taskUrlPost("apCashWithDraw", { + "businessSource": "SPRING_FESTIVAL_RED_ENVELOPE", + "base": { + "id": item.id, + "business": null, + "poolBaseId": item.poolBaseId, + "prizeGroupId": item.prizeGroupId, + "prizeBaseId": item.prizeBaseId, + "prizeType": 4 + }, + "linkId": $.linkId, + "inviter": "UhBiP5ZPaM28-O0MOaGu2g" + }), (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + that.log(JSON.stringify(data.data)); + //that.log("如果提示null,请手动去提现一次(绑定微信)"); + } else { + that.log(JSON.stringify(data)); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) + } + + function taskUrl(functionId, body = {}) { + return { + url: `${JD_API_HOST}?functionId=${functionId}&body=${escape(JSON.stringify(body))}&appid=activities_platform&_t=${new Date().getTime()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/json', + 'Referer': 'https://prodev.m.jd.com/jdlite/active/31U4T6S4PbcK83HyLPioeCWrD63j/index.html?channel=qqh5fx&inviter=UhBiP5ZPaM28-O0MOaGu2g&utm_user=plusmember&ad_od=share&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1000217905_&utm_term=2555319d90df4c66b502437958986790', + 'User-Agent': "jdltapp;android;3.1.0;9;", + 'Accept-Language': 'zh-cn', + } + } + } + + function taskUrlPost(functionId, body = {}) { + return { + url: `${JD_API_HOST}`, + body: `functionId=${functionId}&body=${escape(JSON.stringify(body))}&appid=activities_platform&_t=${new Date().getTime()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Connection': 'keep-alive', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': 'https://prodev.m.jd.com/jdlite/active/q1eB6WUB8oC4eH1BsCLWvQakVsX/index.html', + 'User-Agent': "jdltapp;android;3.1.0;9;", + 'Accept-Language': 'zh-cn', + } + } + } + + function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + that.log(e); + that.log(`动动服务器访问数据为空,请检查自身设备网络情况`); + return false; + } + } + + function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '不要在BoxJS手动复制粘贴修改cookie') + return []; + } + } +} + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=fa87e34729eaa6113fddfa857efebb477dea0a433d6eecfe93b1d3f5e24847b9" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"极速签到领红包", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} + +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_speed_sign.js b/src/main/resources/test_speed_sign.js new file mode 100644 index 0000000..310f017 --- /dev/null +++ b/src/main/resources/test_speed_sign.js @@ -0,0 +1,942 @@ +const notify = $.isNode() ? require('./sendNotify') : ''; +//Node.js用户请在jdCookie.js处填写动动ck; +const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; +let CryptoJS=$.CryptoJS; +$.toObj = (t, e = null) => { + try { + return JSON.parse(t) + } catch { + return e + } +} +$.toStr = (t, e = null) => { + try { + return JSON.stringify(t) + } catch { + return e + } +} +const linkId = "AkOULcXbUA_8EAPbYLLMgg"; +const signLinkId = '9WA12jYGulArzWS7vcrwhw'; +let cookiesArr = [], cookie = ''; +let message = "" +if ($.isNode()) { + Object.keys(jdCookieNode).forEach((item) => { + cookiesArr.push(jdCookieNode[item]) + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') that.log = () => { + }; +} else { + cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); +} + +const JD_API_HOST = 'https://api.m.jd.com/', actCode = 'visa-card-001'; + + +!(async () => { + if (!cookiesArr[0]) { + $.msg($.name, '【提示】请先获取动动账号一cookie\n直接使用NobyDa的动动签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + return; + } + message += "[通知] 极速签到挣金币 \n\n --- \n\n" + for (let i = 0; i < cookiesArr.length; i++) { + if (cookiesArr[i]) { + cookie = cookiesArr[i]; + $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + await TotalBean(); + that.log(`\n******开始【动动账号${$.index}】${$.nickName || $.UserName}*********\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `动动账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); + + if ($.isNode()) { + await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `动动账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + } + continue + } + await jdGlobal() + } + message = message +"----\n" +} + +})() + .catch((e) => { + $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') + }) + .finally(() => { + message += getPic() + taht.log(message) + postToDingTalk(message) + $.done(); + }) + +async function jdGlobal() { + try { + await signInit() + await sign() + await getPacketList();//领红包提现 + await signPrizeDetailList(); + await invite() + await invite2() + $.score = 0 + $.total = 0 + await taskList() + await queryJoy() + await signInit() + await cash() + await showMsg() + } catch (e) { + $.logErr(e) + } +} + + +function showMsg() { + return new Promise(resolve => { + message += "" + `本次运行获得${$.score}金币,共计${$.total}金币` + "\n\n" + $.msg($.name, '', `动动账号${$.index}${$.nickName}\n${message}`); + resolve() + }) +} + +async function sign() { + return new Promise(resolve => { + const body = {"linkId":signLinkId,"serviceName":"dayDaySignGetRedEnvelopeSignService","business":1}; + const options = { + url: `https://api.m.jd.com`, + body: `functionId=apSignIn_day&body=${escape(JSON.stringify(body))}&_t=${+new Date()}&appid=activities_platform`, + headers: { + 'Cookie': cookie, + "Host": "api.m.jd.com", + 'Origin': 'https://daily-redpacket.jd.com', + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": "jdltapp;iPhone;3.3.2;14.5.1network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone13,2;addressid/137923973;hasOCPay/0;appBuild/1047;supportBestPay/0;pv/467.11;apprpd/MyJD_Main;", + "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9, zh-Hant-CN;q=0.8", + 'Referer': 'https://daily-redpacket.jd.com/?activityId=9WA12jYGulArzWS7vcrwhw', + "Accept-Encoding": "gzip, deflate, br" + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + if (data.data.retCode === 0) { + // message += `极速版签到提现:签到成功\n`; + console.log(`极速版签到提现:签到成功\n`); + } else { + message += "" + `极速版签到提现:签到异常:${JSON.stringify(data)}\n` + "\n\n" + console.log(`极速版签到提现:签到失败:${data.data.retMessage}\n`); + } + } else { + message += "" + `极速版签到提现:签到异常:${JSON.stringify(data)}\n` + "\n\n" + console.log(`极速版签到提现:签到异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +async function signInit() { + return new Promise(resolve => { + $.get(taskUrl('speedSignInit', { + "activityId": "8a8fabf3cccb417f8e691b6774938bc2", + "kernelPlatform": "RN", + "inviterId":"y3gfQAo9OlMun43uVNyOgQ==" + }), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + //that.log(data) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +// async function sign() { +// return new Promise(resolve => { +// $.get(taskUrl('speedSign', { +// "kernelPlatform": "RN", +// "activityId": "8a8fabf3cccb417f8e691b6774938bc2", +// "noWaitPrize": "false" +// }), +// async (err, resp, data) => { +// try { +// if (err) { +// that.log(`${JSON.stringify(err)}`) +// that.log(`${$.name} API请求失败,请检查网路重试`) +// } else { +// if (safeGet(data)) { +// data = JSON.parse(data); +// if (data.subCode === 0) { +// that.log(`签到获得${data.data.signAmount}现金,共计获得${data.data.cashDrawAmount}`) +// } else { +// that.log(`签到失败,${data.msg}`) +// } +// } +// } +// } catch (e) { +// $.logErr(e, resp) +// } finally { +// resolve(data); +// } +// }) +// }) +// } + +async function taskList() { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "version": "3.1.0", + "method": "newTaskCenterPage", + "data": {"channel": 1} + }), + async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + for (let task of data.data) { + $.taskName = task.taskInfo.mainTitle + if (task.taskInfo.status === 0) { + if (task.taskType >= 1000) { + await doTask(task.taskType) + await $.wait(1000) + } else { + $.canStartNewItem = true + while ($.canStartNewItem) { + if (task.taskType !== 3) { + await queryItem(task.taskType) + } else { + await startItem("", task.taskType) + } + } + } + } else { + that.log(`${task.taskInfo.mainTitle}已完成`) + } + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function doTask(taskId) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "marketTaskRewardPayment", + "data": {"channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + }), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + message +="" + `${data.data.taskInfo.mainTitle}任务完成成功,预计获得${data.data.reward}金币` + "\n\n" + that.log(`${data.data.taskInfo.mainTitle}任务完成成功,预计获得${data.data.reward}金币`) + } else { + message +="" + `${data.data.taskInfo.mainTitle}任务发生异常${data.errMsg}` + "\n\n" + that.log(`任务完成失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +function getPacketList() { + return new Promise(resolve => { + $.get(taskGetUrl("spring_reward_list",{"pageNum":1,"pageSize":100,linkId,"inviter":""}), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + for(let item of data.data.items.filter(vo => vo.prizeType===4)){ + if(item.state===0){ + console.log(`去提现${item.amount}微信现金`) + message +="" + `提现${item.amount}微信现金,` + "\n\n" + await cashOut(item.id,item.poolBaseId,item.prizeGroupId,item.prizeBaseId) + } + } + } else { + message +="" + `提现发生异常:${data.errMsg}` + "\n\n" + console.log(data.errMsg) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function signPrizeDetailList() { + return new Promise(resolve => { + const body = {"linkId":signLinkId,"serviceName":"dayDaySignGetRedEnvelopeSignService","business":1,"pageSize":20,"page":1}; + const options = { + url: `https://api.m.jd.com`, + body: `functionId=signPrizeDetailList&body=${escape(JSON.stringify(body))}&_t=${+new Date()}&appid=activities_platform`, + headers: { + 'Cookie': cookie, + "Host": "api.m.jd.com", + 'Origin': 'https://daily-redpacket.jd.com', + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": "jdltapp;iPhone;3.3.2;14.5.1network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone13,2;addressid/137923973;hasOCPay/0;appBuild/1047;supportBestPay/0;pv/467.11;apprpd/MyJD_Main;", + "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9, zh-Hant-CN;q=0.8", + 'Referer': 'https://daily-redpacket.jd.com/?activityId=9WA12jYGulArzWS7vcrwhw', + "Accept-Encoding": "gzip, deflate, br" + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + if (data.data.code === 0) { + const list = (data.data.prizeDrawBaseVoPageBean.items || []).filter(vo => vo['prizeType'] === 4 && vo['prizeStatus'] === 0); + for (let code of list) { + console.log(`极速版签到提现,去提现${code['prizeValue']}现金\n`); + message += "" + `极速版签到提现,去提现${code['prizeValue']}微信现金,` + "\n\n" + await apCashWithDraw(code['id'], code['poolBaseId'], code['prizeGroupId'], code['prizeBaseId']); + } + } else { + console.log(`极速版签到查询奖品:失败:${JSON.stringify(data)}\n`); + } + } else { + console.log(`极速版签到查询奖品:异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function apCashWithDraw(id, poolBaseId, prizeGroupId, prizeBaseId) { + return new Promise(resolve => { + const body = { + "linkId": signLinkId, + "businessSource": "DAY_DAY_RED_PACKET_SIGN", + "base": { + "prizeType": 4, + "business": "dayDayRedPacket", + "id": id, + "poolBaseId": poolBaseId, + "prizeGroupId": prizeGroupId, + "prizeBaseId": prizeBaseId + } + } + const options = { + url: `https://api.m.jd.com`, + body: `functionId=apCashWithDraw&body=${escape(JSON.stringify(body))}&_t=${+new Date()}&appid=activities_platform`, + headers: { + 'Cookie': cookie, + "Host": "api.m.jd.com", + 'Origin': 'https://daily-redpacket.jd.com', + "Content-Type": "application/x-www-form-urlencoded", + "Accept": "*/*", + "Connection": "keep-alive", + "User-Agent": "jdltapp;iPhone;3.3.2;14.5.1network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone13,2;addressid/137923973;hasOCPay/0;appBuild/1047;supportBestPay/0;pv/467.11;apprpd/MyJD_Main;", + "Accept-Language": "zh-Hans-CN;q=1, en-CN;q=0.9, zh-Hant-CN;q=0.8", + 'Referer': 'https://daily-redpacket.jd.com/?activityId=9WA12jYGulArzWS7vcrwhw', + "Accept-Encoding": "gzip, deflate, br" + } + } + $.post(options, async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = $.toObj(data); + if (data.code === 0) { + if (data.data.status === "310") { + console.log(`极速版签到提现现金成功!`) + // message += `极速版签到提现现金成功!`; + } else { + console.log(`极速版签到提现现金:失败:${JSON.stringify(data)}\n`); + message +="" + `极速版签到提现现金:失败:${JSON.stringify(data)}\n` + "\n\n" + } + } else { + message +="" + `极速版签到提现现金:失败:${JSON.stringify(data)}\n` + "\n\n" + console.log(`极速版签到提现现金:异常:${JSON.stringify(data)}\n`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} +function cashOut(id,poolBaseId,prizeGroupId,prizeBaseId,) { + let body = { + "businessSource": "SPRING_FESTIVAL_RED_ENVELOPE", + "base": { + "id": id, + "business": null, + "poolBaseId": poolBaseId, + "prizeGroupId": prizeGroupId, + "prizeBaseId": prizeBaseId, + "prizeType": 4 + }, + linkId, + "inviter": "" + } + return new Promise(resolve => { + $.post(taskPostUrl("apCashWithDraw",body), async (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + console.log(`提现零钱结果:${data}`) + data = JSON.parse(data); + if (data.code === 0) { + if (data['data']['status'] === "310") { + console.log(`提现成功!`) + // message += `提现成功!\n`; + } else { + console.log(`提现失败:${data['data']['message']}`); + message +="" + `提现失败:${data['data']['message']}` + "\n\n"; + } + } else { + message +="" + `提现失败:${data['data']['message']}` + "\n\n"; + console.log(`提现异常:${data['errMsg']}`); + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function queryJoy() { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', {"method": "queryJoyPage", "data": {"channel": 1}}), + async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.data.taskBubbles) + for (let task of data.data.taskBubbles) { + await rewardTask(task.id, task.activeType) + await $.wait(500) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function rewardTask(id, taskId) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "joyTaskReward", + "data": {"id": id, "channel": 1, "clientTime": +new Date() + 0.588, "activeType": taskId} + }), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0) { + $.score += data.data.reward + that.log(`气泡收取成功,获得${data.data.reward}金币`) + } else { + that.log(`气泡收取失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +async function queryItem(activeType = 1) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "queryNextTask", + "data": {"channel": 1, "activeType": activeType} + }), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data) { + await startItem(data.data.nextResource, activeType) + } else { + that.log(`商品任务开启失败,${data.message}`) + $.canStartNewItem = false + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function startItem(activeId, activeType) { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', { + "method": "enterAndLeave", + "data": { + "activeId": activeId, + "clientTime": +new Date(), + "channel": "1", + "messageType": "1", + "activeType": activeType, + } + }), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.data) { + if (data.data.taskInfo.isTaskLimit === 0) { + let {videoBrowsing, taskCompletionProgress, taskCompletionLimit} = data.data.taskInfo + if (activeType !== 3) + videoBrowsing = activeType === 1 ? 5 : 10 + that.log(`【${taskCompletionProgress + 1}/${taskCompletionLimit}】浏览商品任务记录成功,等待${videoBrowsing}秒`) + await $.wait(videoBrowsing * 1000) + await endItem(data.data.uuid, activeType, activeId, activeType === 3 ? videoBrowsing : "") + } else { + that.log(`${$.taskName}任务已达上限`) + $.canStartNewItem = false + } + } else { + $.canStartNewItem = false + that.log(`${$.taskName}任务开启失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function endItem(uuid, activeType, activeId = "", videoTimeLength = "") { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', + { + "method": "enterAndLeave", + "data": { + "channel": "1", + "clientTime": +new Date(), + "uuid": uuid, + "videoTimeLength": videoTimeLength, + "messageType": "2", + "activeType": activeType, + "activeId": activeId + } + }), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + await rewardItem(uuid, activeType, activeId, videoTimeLength) + } else { + that.log(`${$.taskName}任务结束失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function rewardItem(uuid, activeType, activeId = "", videoTimeLength = "") { + return new Promise(resolve => { + $.get(taskUrl('ClientHandleService.execute', + { + "method": "rewardPayment", + "data": { + "channel": "1", + "clientTime": +new Date(), + "uuid": uuid, + "videoTimeLength": videoTimeLength, + "messageType": "2", + "activeType": activeType, + "activeId": activeId + } + }), async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + if (data.code === 0 && data.isSuccess) { + $.score += data.data.reward + that.log(`${$.taskName}任务完成,获得${data.data.reward}金币`) + } else { + that.log(`${$.taskName}任务失败,${data.message}`) + } + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + +async function cash() { + return new Promise(resolve => { + $.get(taskUrl('MyAssetsService.execute', + {"method": "userCashRecord", "data": {"channel": 1, "pageNum": 1, "pageSize": 20}}), + async (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (safeGet(data)) { + data = JSON.parse(data); + $.total = data.data.goldBalance + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(data); + } + }) + }) +} + + +var __encode ='jsjiami.com',_a={}, _0xb483=["\x5F\x64\x65\x63\x6F\x64\x65","\x68\x74\x74\x70\x3A\x2F\x2F\x77\x77\x77\x2E\x73\x6F\x6A\x73\x6F\x6E\x2E\x63\x6F\x6D\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x6F\x62\x66\x75\x73\x63\x61\x74\x6F\x72\x2E\x68\x74\x6D\x6C"];(function(_0xd642x1){_0xd642x1[_0xb483[0]]= _0xb483[1]})(_a);var __Oxb24bc=["\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26","\x73\x74\x72\x69\x6E\x67\x69\x66\x79","\x26\x61\x6E\x64\x72\x6F\x69\x64\x26\x33\x2E\x31\x2E\x30\x26","\x26","\x26\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66","\x31\x32\x61\x65\x61\x36\x35\x38\x66\x37\x36\x65\x34\x35\x33\x66\x61\x66\x38\x30\x33\x64\x31\x35\x63\x34\x30\x61\x37\x32\x65\x30","\x69\x73\x4E\x6F\x64\x65","\x63\x72\x79\x70\x74\x6F\x2D\x6A\x73","","\x61\x70\x69\x3F\x66\x75\x6E\x63\x74\x69\x6F\x6E\x49\x64\x3D","\x26\x62\x6F\x64\x79\x3D","\x26\x61\x70\x70\x69\x64\x3D\x6C\x69\x74\x65\x2D\x61\x6E\x64\x72\x6F\x69\x64\x26\x63\x6C\x69\x65\x6E\x74\x3D\x61\x6E\x64\x72\x6F\x69\x64\x26\x75\x75\x69\x64\x3D\x38\x34\x36\x63\x34\x63\x33\x32\x64\x61\x65\x39\x31\x30\x65\x66\x26\x63\x6C\x69\x65\x6E\x74\x56\x65\x72\x73\x69\x6F\x6E\x3D\x33\x2E\x31\x2E\x30\x26\x74\x3D","\x26\x73\x69\x67\x6E\x3D","\x61\x70\x69\x2E\x6D\x2E\x6A\x64\x2E\x63\x6F\x6D","\x2A\x2F\x2A","\x52\x4E","\x4A\x44\x4D\x6F\x62\x69\x6C\x65\x4C\x69\x74\x65\x2F\x33\x2E\x31\x2E\x30\x20\x28\x69\x50\x61\x64\x3B\x20\x69\x4F\x53\x20\x31\x34\x2E\x34\x3B\x20\x53\x63\x61\x6C\x65\x2F\x32\x2E\x30\x30\x29","\x7A\x68\x2D\x48\x61\x6E\x73\x2D\x43\x4E\x3B\x71\x3D\x31\x2C\x20\x6A\x61\x2D\x43\x4E\x3B\x71\x3D\x30\x2E\x39","\x75\x6E\x64\x65\x66\x69\x6E\x65\x64","\x6C\x6F\x67","\u5220\u9664","\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A","\u671F\u5F39\u7A97\uFF0C","\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C","\x6A\x73\x6A\x69\x61","\x6D\x69\x2E\x63\x6F\x6D"];function taskUrl(_0x7683x2,_0x7683x3= {}){let _0x7683x4=+ new Date();let _0x7683x5=`${__Oxb24bc[0x0]}${JSON[__Oxb24bc[0x1]](_0x7683x3)}${__Oxb24bc[0x2]}${_0x7683x2}${__Oxb24bc[0x3]}${_0x7683x4}${__Oxb24bc[0x4]}`;let _0x7683x6=__Oxb24bc[0x5];const _0x7683x7=$[__Oxb24bc[0x6]]()?require(__Oxb24bc[0x7]):CryptoJS;let _0x7683x8=_0x7683x7.HmacSHA256(_0x7683x5,_0x7683x6).toString();return {url:`${__Oxb24bc[0x8]}${JD_API_HOST}${__Oxb24bc[0x9]}${_0x7683x2}${__Oxb24bc[0xa]}${escape(JSON[__Oxb24bc[0x1]](_0x7683x3))}${__Oxb24bc[0xb]}${_0x7683x4}${__Oxb24bc[0xc]}${_0x7683x8}${__Oxb24bc[0x8]}`,headers:{'\x48\x6F\x73\x74':__Oxb24bc[0xd],'\x61\x63\x63\x65\x70\x74':__Oxb24bc[0xe],'\x6B\x65\x72\x6E\x65\x6C\x70\x6C\x61\x74\x66\x6F\x72\x6D':__Oxb24bc[0xf],'\x75\x73\x65\x72\x2D\x61\x67\x65\x6E\x74':__Oxb24bc[0x10],'\x61\x63\x63\x65\x70\x74\x2D\x6C\x61\x6E\x67\x75\x61\x67\x65':__Oxb24bc[0x11],'\x43\x6F\x6F\x6B\x69\x65':cookie}}}(function(_0x7683x9,_0x7683xa,_0x7683xb,_0x7683xc,_0x7683xd,_0x7683xe){_0x7683xe= __Oxb24bc[0x12];_0x7683xc= function(_0x7683xf){if( typeof alert!== _0x7683xe){alert(_0x7683xf)};if( typeof that!== _0x7683xe){that[__Oxb24bc[0x13]](_0x7683xf)}};_0x7683xb= function(_0x7683x7,_0x7683x9){return _0x7683x7+ _0x7683x9};_0x7683xd= _0x7683xb(__Oxb24bc[0x14],_0x7683xb(_0x7683xb(__Oxb24bc[0x15],__Oxb24bc[0x16]),__Oxb24bc[0x17]));try{_0x7683x9= __encode;if(!( typeof _0x7683x9!== _0x7683xe&& _0x7683x9=== _0x7683xb(__Oxb24bc[0x18],__Oxb24bc[0x19]))){_0x7683xc(_0x7683xd)}}catch(e){_0x7683xc(_0x7683xd)}})({}) + +function invite2() { + let t = +new Date() + var headers = { + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'content-type': 'application/x-www-form-urlencoded', + 'origin': 'https://assignment.jd.com', + 'accept-language': 'zh-cn', + 'user-agent': 'jdltapp;iPad;3.1.0;14.4;a54abe779c8fbeb4e8e34f01fdc5cc4dd78173a2;network/wifi;ADID/BB69CC09-77D8-43A2-8645-CBC4CCE49911;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad13,1;addressid/3438850002;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/14.9;apprpd/ProductCoupon_MergeMain;ref/FSPromListViewController;psq/0;ads/;psn/a54abe779c8fbeb4e8e34f01fdc5cc4dd78173a2|27;jdv/0|kong|t_1000170135|tuiguang|notset|1613101365448|1613101365;adk/;app_device/IOS;pap/JA2020_3112531|3.1.0|IOS 14.4;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'referer': 'https://assignment.jd.com/?inviterId=GaYxmFpHAG%2BJLi7W28KWYw==&lng=0.000000&lat=0.000000&sid=2131b85f0bcb82714e032402628cc2fw&un_area=12_904_50647_57886', + 'Cookie': cookie + }; + + var dataString = `functionId=TaskInviteService&body={"method":"participateInviteTask","data":{"channel":"1","encryptionInviterPin":"GaYxmFpHAG%2BJLi7W28KWYw%3D%3D","type":1}}&appid=market-task-h5&uuid=&_t=${t}`; + + var options = { + url: 'https://api.m.jd.com/', + headers: headers, + body: dataString + } + $.post(options, (err, resp, data) => { + // that.log(data) + }) +} + +function invite() { + let t = +new Date() + var headers = { + 'Host': 'api.m.jd.com', + 'accept': 'application/json, text/plain, */*', + 'content-type': 'application/x-www-form-urlencoded', + 'origin': 'https://invite-reward.jd.com', + 'accept-language': 'zh-cn', + 'user-agent': 'jdltapp;iPad;3.1.0;14.4;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'referer': 'https://invite-reward.jd.com/?lng=0.000000&lat=0.000000&sid=2131b85f0bcb82714e032402628cc2fw&un_area=12_904_50647_57886', + 'Cookie': cookie + }; + + var dataString = `functionId=InviteFriendApiService&body={"method":"attendInviteActivity","data":{"inviterPin":"GaYxmFpHAG%2BJLi7W28KWYw%3D%3D","channel":1,"token":"","frontendInitStatus":""}}&referer=-1&eid=eidIf3dd8121b7sdmiBLGdxRR46OlWyh62kFAZogTJFnYqqRkwgr63%2BdGmMlcv7EQJ5v0HBic81xHXzXLwKM6fh3i963zIa7Ym2v5ehnwo2B7uDN92Q0&aid=&client=ios&clientVersion=14.4&networkType=wifi&fp=-1&appid=market-task-h5&_t=${t}`; + + var options = { + url: 'https://api.m.jd.com/?t=1613645706861', + headers: headers, + body: dataString + }; + $.post(options, (err, resp, data) => { + // that.log(data) + }) +} + +function TotalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.2.2;14.2;%E4%BA%AC%E4%B8%9C/9.2.2 CFNetwork/1206 Darwin/20.1.0") + } + } + $.post(options, (err, resp, data) => { + try { + if (err) { + that.log(`${JSON.stringify(err)}`) + that.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + that.log(`动动服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) +} + +function safeGet(data) { + try { + if (typeof JSON.parse(data) == "object") { + return true; + } + } catch (e) { + that.log(e); + that.log(`动动服务器访问数据为空,请检查自身设备网络情况`); + return false; + } +} + +function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + that.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } +} + +function taskGetUrl(function_id, body) { + return { + url: `https://api.m.jd.com/?appid=activities_platform&functionId=${function_id}&body=${escape(JSON.stringify(body))}&t=${+new Date()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + 'user-agent': $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded", + "referer": "https://an.jd.com/babelDiy/Zeus/q1eB6WUB8oC4eH1BsCLWvQakVsX/index.html" + } + } +} + +function taskPostUrl(function_id, body) { + return { + url: `https://api.m.jd.com/`, + body: `appid=activities_platform&functionId=${function_id}&body=${escape(JSON.stringify(body))}&t=${+new Date()}`, + headers: { + 'Cookie': cookie, + 'Host': 'api.m.jd.com', + 'Accept': '*/*', + 'Connection': 'keep-alive', + // 'user-agent': $.isNode() ? (process.env.JS_USER_AGENT ? process.env.JS_USER_AGENT : (require('./JS_USER_AGENTS').USER_AGENT)) : ($.getdata('JSUA') ? $.getdata('JSUA') : "'jdltapp;iPad;3.1.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1"), + 'user-agent': "jdltapp;iPhone;3.3.2;14.3;b488010ad24c40885d846e66931abaf532ed26a5;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/2005183373;hasOCPay/0;appBuild/1049;supportBestPay/0;pv/220.46;apprpd/;ref/JDLTSubMainPageViewController;psq/0;ads/;psn/b488010ad24c40885d846e66931abaf532ed26a5|520;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1618673222002|1618673227;adk/;app_device/IOS;pap/JA2020_3112531|3.3.2|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1 ", + 'Accept-Language': 'zh-Hans-CN;q=1,en-CN;q=0.9', + 'Accept-Encoding': 'gzip, deflate, br', + 'Content-Type': "application/x-www-form-urlencoded", + "referer": "https://an.jd.com/babelDiy/Zeus/q1eB6WUB8oC4eH1BsCLWvQakVsX/index.html" + } + } +} + + +//我加的函数 +function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动极速签到", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") +} + + +function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } +} + +function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address +} \ No newline at end of file diff --git a/src/main/resources/test_try_joy.js b/src/main/resources/test_try_joy.js new file mode 100644 index 0000000..a86cfd7 --- /dev/null +++ b/src/main/resources/test_try_joy.js @@ -0,0 +1,1099 @@ +/* + * 由ZCY01二次修改:脚本默认不运行 + * 由 X1a0He 修复:依然保持脚本默认不运行 + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * TG交流群:https://t.me/jd_zero205 + * TG通知频道:https://t.me/jd_zero205_tz + * + update 2021/09/05 + 京东试用:脚本更新地址 https://github.com/zero205/JD_tencent_scf/raw/main/jd_try.js + 脚本兼容: Node.js + 每天最多关注300个商店,但用户商店关注上限为500个。 + 请配合取关脚本试用,使用 jd_unsubscribe.js 提前取关至少250个商店确保京东试用脚本正常运行。 + * + * X1a0He留 + * 由于没有兼容Qx,原脚本已失效,建议原脚本的兼容Qx注释删了 + * 脚本是否耗时只看args_xh.maxLength的大小 + * 上一作者说了每天最多300个商店,总上限为500个,jd_unsubscribe.js我已更新为批量取关版 + * 请提前取关至少250个商店确保京东试用脚本正常运行 + * 没有写通知,是否申请成功没有进行通知,但脚本会把状态log出日志 + */ + let maxSize = 20 + const $ = new Env('京东试用') + const URL = 'https://api.m.jd.com/client.action' + let trialActivityIdList = [] + let trialActivityTitleList = [] + let notifyMsg = '' + let message = "" + let process={ + env:{ + "JD_TRY":"true" + } + } + // default params + let args_xh = { + /* + * 是否进行通知 + * 可设置环境变量:JD_TRY_NOTIFY + * */ + // isNotify: process.env.JD_TRY_NOTIFY || true, + // 商品原价,低于这个价格都不会试用 + jdPrice: process.env.JD_TRY_PRICE || 0, + /* + * 获取试用商品类型,默认为1 + * 1 - 精选 + * 2 - 闪电试用 + * 3 - 家用电器(可能会有变化) + * 4 - 手机数码(可能会有变化) + * 5 - 电脑办公(可能会有变化) + * 可设置环境变量:JD_TRY_TABID + * */ + // TODO: tab ids as array(support multi tabIds) + // tabId: process.env.JD_TRY_TABID && process.env.JD_TRY_TABID.split('@').map(Number) || [1], + tabId: process.env.JD_TRY_TABID || 1, + /* + * 试用商品标题过滤 + * 可设置环境变量:JD_TRY_TITLEFILTERS,关键词与关键词之间用@分隔 + * */ + titleFilters: process.env.JD_TRY_TITLEFILTERS && process.env.JD_TRY_TITLEFILTERS.split('@') || ["避孕","锁精","延时","延迟","润滑","私处","跳蛋","乳贴","情趣","龟头","自慰","啪啪","情趣","避孕套","润滑","延时","飞机杯"], + // 试用价格(中了要花多少钱),高于这个价格都不会试用,小于等于才会试用 + trialPrice: 100, + /* + * 最小提供数量,例如试用商品只提供2份试用资格,当前设置为1,则会进行申请 + * 若只提供5分试用资格,当前设置为10,则不会申请 + * 可设置环境变量:JD_TRY_MINSUPPLYNUM + * */ + minSupplyNum: process.env.JD_TRY_MINSUPPLYNUM || 1, + /* + * 过滤大于设定值的已申请人数,例如下面设置的1000,A商品已经有1001人申请了,则A商品不会进行申请,会被跳过 + * 可设置环境变量:JD_TRY_APPLYNUMFILTER + * */ + applyNumFilter: process.env.JD_TRY_APPLYNUMFILTER || 99999, + /* + * 商品试用之间和获取商品之间的间隔, 单位:毫秒(1秒=1000毫秒) + * 可设置环境变量:JD_TRY_APPLYINTERVAL + * */ + applyInterval: process.env.JD_TRY_APPLYINTERVAL || 5000, + /* + * 商品数组的最大长度,通俗来说就是即将申请的商品队列长度 + * 例如设置为20,当第一次获取后获得12件,过滤后剩下5件,将会进行第二次获取,过滤后加上第一次剩余件数 + * 例如是18件,将会进行第三次获取,直到过滤完毕后为20件才会停止,不建议设置太大 + * 可设置环境变量:JD_TRY_MAXLENGTH + * */ + maxLength: 50 + } + + !(async() => { + // console.log(`\n本脚本默认不运行,也不建议运行\n如需运行请自行添加环境变量:JD_TRY,值填:true\n`) + await $.wait(1000) + if(process.env.JD_TRY && process.env.JD_TRY === 'true'){ + await requireConfig() + if(!$.cookiesArr[0]){ + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + for(let i = 0; i < $.cookiesArr.length; i++){ + message += "[通知] 动动试用(搞笑版) \n\n --- \n\n" + if($.cookiesArr[i]){ + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await totalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } + + username = $.UserName + if ($.UserName == "jd_66ea783827d30"){ + username = "跑腿小弟" + } + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟锟" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康康" + } + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + + $.totalTry = 0 + $.totalSuccess = 0 + let size = 1; + while(trialActivityIdList.length < args_xh.maxLength && size < maxSize){ + console.log(`\n正在进行第 ${size} 次获取试用商品\n`) + await try_feedsList(1, size++) + await try_feedsList(2, size++) + await try_feedsList(5, size++) + await try_feedsList(16, size++) + if(trialActivityIdList.length < args_xh.maxLength){ + console.log(`间隔延时中,请等待 ${args_xh.applyInterval} ms`) + await $.wait(args_xh.applyInterval); + } + } + console.log("正在执行试用申请...") + await $.wait(args_xh.applyInterval); + for(let i = 0; i < trialActivityIdList.length; i++){ + await try_apply(trialActivityTitleList[i], trialActivityIdList[i]) + console.log(`间隔延时中,请等待 ${args_xh.applyInterval} ms\n`) + await $.wait(args_xh.applyInterval); + } + console.log("试用申请执行完毕...") + + // await try_MyTrials(1, 1) //申请中的商品 + await try_MyTrials(1, 2) //申请成功的商品 + // await try_MyTrials(1, 3) //申请失败的商品 + await showMsg() + } + postToDingTalk(message) + message = "" + } + await $.notify.sendNotify(`${$.name}`, notifyMsg); + } else { + console.log(`\n您未设置运行【京东试用】脚本,结束运行!\n`) + } + })().catch((e) => { + console.log(`❗️ ${$.name} 运行错误!\n${e}`) + }).finally(() => { + $.done() + }) + + function requireConfig(){ + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async() => { } } + //获取 Cookies + $.cookiesArr = [] + if($.isNode()){ + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if(jdCookieNode[item]){ + $.cookiesArr.push(jdCookieNode[item]) + } + }) + if(process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) + for (const key in args_xh) { + if(typeof args_xh[key] == 'string') { + args_xh[key] = Number(args_xh[key]) + } + } + // console.debug(args_xh) + resolve() + }) + } + + //获取商品列表并且过滤 By X1a0He + function try_feedsList(tabId, page){ + return new Promise((resolve, reject) => { + const body = JSON.stringify({ + "tabId": `${tabId}`, + "page": page, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_feedsList', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.debug(data) + // return + data = JSON.parse(data) + if(data.success){ + $.totalPages = data.data.pages + console.log(`获取到商品 ${data.data.feedList.length} 条\n`) + for(let i = 0; i < data.data.feedList.length; i++){ + if(trialActivityIdList.length > args_xh.maxLength){ + console.log('商品列表长度已满.结束获取') + }else + if(data.data.feedList[i].applyState === 1){ + console.log(`商品已申请试用:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].applyState !== null){ + console.log(`商品状态异常,跳过:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].skuTitle){ + console.log(`检测第 ${page} 页 第 ${i + 1} 个商品\n${data.data.feedList[i].skuTitle}`) + if(parseFloat(data.data.feedList[i].jdPrice) <= args_xh.jdPrice){ + console.log(`商品被过滤,${data.data.feedList[i].jdPrice} < ${args_xh.jdPrice} \n`) + }else if(parseFloat(data.data.feedList[i].supplyNum) < args_xh.minSupplyNum && data.data.feedList[i].supplyNum !== null){ + console.log(`商品被过滤,提供申请的份数小于预设申请的份数 \n`) + }else if(parseFloat(data.data.feedList[i].applyNum) > args_xh.applyNumFilter && data.data.feedList[i].applyNum !== null){ + console.log(`商品被过滤,已申请试用人数大于预设人数 \n`) + }else if(parseFloat(data.data.feedList[i].trialPrice) > args_xh.trialPrice){ + console.log(`商品被过滤,期待价格高于预设价格 \n`) + }else if(args_xh.titleFilters.some(fileter_word => data.data.feedList[i].skuTitle.includes(fileter_word))){ + console.log(`商品通过,将加入试用组,trialActivityId为${data.data.feedList[i].trialActivityId}\n`) + trialActivityIdList.push(data.data.feedList[i].trialActivityId) + trialActivityTitleList.push(data.data.feedList[i].skuTitle) + } + }else{ + console.log('skuTitle解析异常') + return + } + } + console.log(`当前试用组id如下,长度为:${trialActivityIdList.length}\n${trialActivityIdList}\n`) + } else { + console.log(`💩 获得试用列表失败: ${data.message}`) + } + } + } catch(e){ + console.log(e); + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_apply(title, activityId){ + return new Promise((resolve, reject) => { + console.log(`申请试用商品中...`) + console.log(`商品:${title}`) + console.log(`id为:${activityId}`) + const body = JSON.stringify({ + "activityId": activityId, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_apply', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + $.totalTry++ + data = JSON.parse(data) + if(data.success && data.code === "1"){ // 申请成功 + message += "" + title + "\n\n" + console.log(data.message) + $.totalSuccess++ + } else if(data.code === "-106"){ + console.log(data.message) // 未在申请时间内! + } else if(data.code === "-110"){ + console.log(data.message) // 您的申请已成功提交,请勿重复申请… + } else if(data.code === "-120"){ + console.log(data.message) // 您还不是会员,本品只限会员申请试用,请注册会员后申请! + } else if(data.code === "-167"){ + console.log(data.message) // 抱歉,此试用需为种草官才能申请。查看下方详情了解更多。 + } else { + console.log("申请失败", JSON.stringify(data)) + } + } + } catch(e){ + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_MyTrials(page, selected){ + return new Promise((resolve, reject) => { + switch(selected){ + case 1: + console.log('正在获取已申请的商品...') + break; + case 2: + console.log('正在获取申请成功的商品...') + break; + case 3: + console.log('正在获取申请失败的商品...') + break; + default: + console.log('selected错误') + } + const body = JSON.stringify({ + "page": page, + "selected": selected, // 1 - 已申请 2 - 成功列表,3 - 失败列表 + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_MyTrials', body) + option.headers.Referer = 'https://pro.m.jd.com/' + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.log(data) + // return + data = JSON.parse(data) + if(data.success){ + //temp adjustment + if(selected == 2){ + if (data.success && data.data) { + $.successList = data.data.list.filter(item => { + if (item.text.text.includes('请尽快领取')){ + message += "" + item.text.text + "\n\n" + } + return item.text.text.includes('请尽快领取') + }) + console.log(`待领取: ${$.successList.length}个`) + } else { + console.log(`获得成功列表失败: ${data.message}`) + } + } + // if(data.data.list.length > 0){ + // for(let item of data.data.list){ + // console.log(`申请时间:${new Date(parseInt(item.applyTime)).toLocaleString()}`) + // console.log(`申请商品:${item.trialName}`) + // console.log(`当前状态:${item.text.text}`) + // console.log(`剩余时间:${remaining(item.leftTime)}`) + // console.log() + // } + // } else { + // switch(selected){ + // case 1: + // console.log('无已申请的商品\n') + // break; + // case 2: + // console.log('无申请成功的商品\n') + // break; + // case 3: + // console.log('无申请失败的商品\n') + // break; + // default: + // console.log('selected错误') + // } + // } + } else { + console.log(`ERROR:try_MyTrials`) + } + } + } catch(e){ + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function remaining(time){ + let days = parseInt(time / (1000 * 60 * 60 * 24)); + let hours = parseInt((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + let minutes = parseInt((time % (1000 * 60 * 60)) / (1000 * 60)); + return `${days} 天 ${hours} 小时 ${minutes} 分` + } + + function taskurl_xh(appid, functionId, body = JSON.stringify({})){ + return { + "url": `${URL}?appid=${appid}&functionId=${functionId}&clientVersion=10.1.2&client=wh5&body=${encodeURIComponent(body)}`, + 'headers': { + 'Host': 'api.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': $.cookie, + 'Connection': 'keep-alive', + 'UserAgent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://prodev.m.jd.com/' + }, + } + } + + async function showMsg(){ + let message1 = `京东账号${$.index} ${$.nickName || $.UserName}\n🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + message += "" + `🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + "\n\n" + if(!args_xh.jdNotify || args_xh.jdNotify === 'false'){ + $.msg($.name, ``, message1, { + "open-url": 'https://try.m.jd.com/user' + }) + if($.isNode()) + notifyMsg += `${message1}\n\n` + } else { + console.log(message1) + } + } + + function totalBean(){ + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try{ + if(err){ + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if(data){ + data = JSON.parse(data); + if(data['retcode'] === 13){ + $.isLogin = false; //cookie过期 + return + } + if(data['retcode'] === 0){ + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch(e){ + $.logErr(e, resp) + } finally{ + resolve(); + } + }) + }) + } + + function jsonParse(str){ + if(typeof str == "string"){ + try{ + return JSON.parse(str); + } catch(e){ + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } + } + + // 来自 @chavyleung 大佬 + // https://raw.githubusercontent.com/chavyleung/scripts/master/Env.js + function Env(name, opts){ + class Http{ + constructor(env){ + this.env = env + } + + send(opts, method = 'GET'){ + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if(method === 'POST'){ + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if(err) reject(err) + else resolve(resp) + }) + }) + } + + get(opts){ + return this.send.call(this.env, opts) + } + + post(opts){ + return this.send.call(this.env, opts, 'POST') + } + } + + return new (class{ + constructor(name, opts){ + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } + + isNode(){ + return 'undefined' !== typeof module && !!module.exports + } + + isQuanX(){ + return 'undefined' !== typeof $task + } + + isSurge(){ + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } + + isLoon(){ + return 'undefined' !== typeof $loon + } + + toObj(str, defaultValue = null){ + try{ + return JSON.parse(str) + } catch{ + return defaultValue + } + } + + toStr(obj, defaultValue = null){ + try{ + return JSON.stringify(obj) + } catch{ + return defaultValue + } + } + + getjson(key, defaultValue){ + let json = defaultValue + const val = this.getdata(key) + if(val){ + try{ + json = JSON.parse(this.getdata(key)) + } catch{ } + } + return json + } + + setjson(val, key){ + try{ + return this.setdata(JSON.stringify(val), key) + } catch{ + return false + } + } + + getScript(url){ + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } + + runScript(script, runOpts){ + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } + + loaddata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if(isCurDirDataFile || isRootDirDataFile){ + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try{ + return JSON.parse(this.fs.readFileSync(datPath)) + } catch(e){ + return {} + } + } else return {} + } else return {} + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if(isCurDirDataFile){ + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if(isRootDirDataFile){ + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } + + lodash_get(source, path, defaultValue = undefined){ + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for(const p of paths){ + result = Object(result)[p] + if(result === undefined){ + return defaultValue + } + } + return result + } + + lodash_set(obj, path, value){ + if(Object(obj) !== obj) return obj + if(!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path.slice(0, -1).reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } + + getdata(key){ + let val = this.getval(key) + // 如果以 @ + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if(objval){ + try{ + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch(e){ + val = '' + } + } + } + return val + } + + setdata(val, key){ + let issuc = false + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try{ + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch(e){ + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } + + getval(key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.read(key) + } else if(this.isQuanX()){ + return $prefs.valueForKey(key) + } else if(this.isNode()){ + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } + + setval(val, key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.write(val, key) + } else if(this.isQuanX()){ + return $prefs.setValueForKey(val, key) + } else if(this.isNode()){ + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } + + initGotEnv(opts){ + this.got = this.got ? this.got : require('got') + this.cktough = this.cktough ? this.cktough : require('tough-cookie') + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar() + if(opts){ + opts.headers = opts.headers ? opts.headers : {} + if(undefined === opts.headers.Cookie && undefined === opts.cookieJar){ + opts.cookieJar = this.ckjar + } + } + } + + get(opts, callback = () => { }){ + if(opts.headers){ + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + this.got(opts).on('redirect', (resp, nextOpts) => { + try{ + if(resp.headers['set-cookie']){ + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if(ck){ + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch(e){ + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + post(opts, callback = () => { }){ + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if(opts.body && opts.headers && !opts.headers['Content-Type']){ + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if(opts.headers) delete opts.headers['Content-Length'] + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + opts.method = 'POST' + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt){ + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if(/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for(let k in o) + if(new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } + + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts){ + const toEnvOpts = (rawopts) => { + if(!rawopts) return rawopts + if(typeof rawopts === 'string'){ + if(this.isLoon()) return rawopts + else if(this.isQuanX()) return { + 'open-url': rawopts + } + else if(this.isSurge()) return { + url: rawopts + } + else return undefined + } else if(typeof rawopts === 'object'){ + if(this.isLoon()){ + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if(this.isQuanX()){ + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if(this.isSurge()){ + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if(!this.isMute){ + if(this.isSurge() || this.isLoon()){ + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if(this.isQuanX()){ + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if(!this.isMuteLog){ + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } + + log(...logs){ + if(logs.length > 0){ + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } + + logErr(err, msg){ + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if(!isPrintSack){ + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } + + wait(time){ + return new Promise((resolve) => setTimeout(resolve, time)) + } + + done(val = {}){ + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if(this.isSurge() || this.isQuanX() || this.isLoon()){ + $done(val) + } + } + })(name, opts) + } + + + //我加的函数 + function postToDingTalk(messgae) { + const dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=18444b555747aad3381bc1d1e3dea72b03158e152a846f818d82a1ca946bd430" + + const message1 = "" + messgae + that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"动动试用(搞笑版)", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") + } + + + function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } + } + + function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address + } \ No newline at end of file diff --git a/src/main/resources/test_trytry.js b/src/main/resources/test_trytry.js new file mode 100644 index 0000000..2c40dfa --- /dev/null +++ b/src/main/resources/test_trytry.js @@ -0,0 +1,1148 @@ +/* + * 由ZCY01二次修改:脚本默认不运行 + * 由 X1a0He 修复:依然保持脚本默认不运行 + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * TG交流群:https://t.me/jd_zero205 + * TG通知频道:https://t.me/jd_zero205_tz + * + update 2021/09/05 + 京东试用:脚本更新地址 https://github.com/zero205/JD_tencent_scf/raw/main/jd_try.js + 脚本兼容: Node.js + 每天最多关注300个商店,但用户商店关注上限为500个。 + 请配合取关脚本试用,使用 jd_unsubscribe.js 提前取关至少250个商店确保京东试用脚本正常运行。 + * + * X1a0He留 + * 由于没有兼容Qx,原脚本已失效,建议原脚本的兼容Qx注释删了 + * 脚本是否耗时只看args_xh.maxLength的大小 + * 上一作者说了每天最多300个商店,总上限为500个,jd_unsubscribe.js我已更新为批量取关版 + * 请提前取关至少250个商店确保京东试用脚本正常运行 + * 没有写通知,是否申请成功没有进行通知,但脚本会把状态log出日志 + */ + let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" + let maxSize = 15 + let totalPages = 999999 //总页数 + const $ = new Env('京东试用') + const URL = 'https://api.m.jd.com/client.action' + let trialActivityIdList = [] + let trialActivityTitleList = [] + let notifyMsg = '' + let message = "" + let maped = { + 0:[1,5,10], + 1:[5,1,10], + 2:[1,10,5], + 3:[10,5,1], + 4:[10,5,1], + 5:[5,10,1] + } + let process={ + env:{ + "JD_TRY":"true" + } + } + // default params + let args_xh = { + /* + * 是否进行通知 + * 可设置环境变量:JD_TRY_NOTIFY + * */ + // isNotify: process.env.JD_TRY_NOTIFY || true, + // 商品原价,低于这个价格都不会试用 + jdPrice: process.env.JD_TRY_PRICE || 0, + /* + * 获取试用商品类型,默认为1 + * 1 - 精选 + * 2 - 闪电试用 + * 3 - 家用电器(可能会有变化) + * 4 - 手机数码(可能会有变化) + * 5 - 电脑办公(可能会有变化) + * 可设置环境变量:JD_TRY_TABID + * */ + // TODO: tab ids as array(support multi tabIds) + // tabId: process.env.JD_TRY_TABID && process.env.JD_TRY_TABID.split('@').map(Number) || [1], + tabId: process.env.JD_TRY_TABID || 1, + /* + * 试用商品标题过滤 + * 可设置环境变量:JD_TRY_TITLEFILTERS,关键词与关键词之间用@分隔 + * */ + titleFilters: ["测电笔","测试","请勿下单", "牛舌","儿童玩具枪", "宣纸", "洋娃娃", "口琴","磨砂壳", "亲子互动", "防卫尖刺", "折叠锯子","牙签防水","购物券","材料包","水勺","碎发","整理棒","内裤","莆田官网","蚊香","遥控器","马桶垫","锅铲","电容笔","茶勺","瓜刨","耳钉","茶杯","滤杯","红绳","装修", "钥匙扣","美容院","芦荟","仿真小蛋糕","儿童便捷","遮瑕膏","香水","汽车摆件","水枪","润唇膏","衬衫","中老年","拐杖","牙签盒","电风扇罩","茶杯","袜子","掏耳","爬爬垫","滑板车","格子长袖","牙线","粉扑","粉扑盒子","停车牌","小勺子","爽肤水","防蚊裤","0-12岁","宝宝牙刷","玩具女孩","固定器","润唇膏","商务休闲", "儿童背包","塑料士兵小军人玩具","串珠玩具","儿童串珠玩具", "运势书","背心马甲","示宽灯","收银机","收钱码","空调罩","效果图","米小芽", "抵用券" ,"手工黏土", "儿童拌饭", "伊威", "菲妮小熊", "刀片" ,"割草机", "儿童n95","儿童口罩", "音频线","土工布","抑菌膏","win10","日历","玻璃吊","竖笛","角阀","三角阀","反光镜","倒车","童装","童装男女童","女童裤子","八倍镜","手提秤","电子秤","钓鱼手竿","鱼饵","护栏","栅网","狗链","切割片","汽油锯","滤芯","饲料","九九乘法","铁丝","监狱","隔离网","宝宝玩具车", "成长裤", "女士内裤", "小兔女士", "浮漂", "儿童磨牙饼", "墙纸", "壁纸", "传菜铃" ,"红包封", "光驱","挂绳","增高","宝宝鞋子", "女童裤子", "宝宝牙刷", "童装", "宝宝灯笼裤", "吃饭衣", "围兜", "牙刷收纳盒","安全锤","抛光机","机油","合成机油","铅笔","吸奶器","鱼钩","翻板钩","口罩盒","九九乘除","耐火泥","尼龙网","侧挂式","手术刀","喷雾器","注射器","驱虫","女士内裤,少女内裤","树苗","塑身裤","笼子","捆扎绳","打包绳","捆绑绳","插销","水乳","光和青春","测评","在线直播", "HDMI","LED","SD","SD卡","VGA","hdmi","hpv","led开关电源","windows","一次性","一片装","一盒","万用表","万藓灵","丝袜","中国电信","丰胸","丸","乳液","乳腺","交换","交换机","享底价","亿优信","会员","会员卡","会议杯子","便秘","保健","保护套","保暖女裤","保暖裤","修护","修眉","修眉剪","倒车镜","假睫毛","儿童奶粉","儿童口罩","儿童成长","充电头","充电桩","免钉胶水","养芝堂","内衣","冻干粉","净水剂","减肥","分流","分流器","别针","刮痧","刮痧板","刷牙头","剂","剃须刀配件","削皮刀","前列腺","剥虾","剪","剪钳","办公会议茶杯","办公杯","加温器","包皮","化妆","半身不遂","卡","卡套","卡尺","卡托","卧铺垫","卸妆","卸妆水","压片","参肽片","反光条贴","反光板","反光贴","口红","口腔","口腔抑菌","号码卡","同仁堂","吸顶灯","咬钩","咽炎","哑光","哨","哺乳","哺乳套装","唇釉","啪啪","嚼片","围裙","图钉","地吸","地漏","坐垫","培训","增生贴","墨","墨水","墨盒","墨粉","复合肥","外用","多功能尺子","天线","头","夹","奶瓶","奶粉","妆","妇女","婴","婴儿","孕妇装","学习卡","孩子","安全帽","安全裤","定做","定做榻榻米","定制","宝宝奶粉","宝宝口罩","宝宝成长","实验课","宠物","密封条","小学","尤尖锐湿疣","尺","尼龙管","尿","尿素","尿素霜","屏蔽袋","屏风","工作手册","工作服","巾","带","帽","幕","平衡线","幼儿","幼儿园","幼儿配方","座垫","座套","康复","延时","延迟","延迟喷雾","开果器","彩带","情趣","成人票","手册","手套","手机卡","手机壳","手机维修","打底","打草绳","打钉枪","托","扩音器","把手","护理","护肤","护腿套","护踝","报警器","抽屉轨道","拔毒膏","挂钩","指套","挑逗","挡风","挤奶器","掏耳朵","插座","摄像头镜片","敏感","敏肌","教","教学视频","教材","数据线","文胸","替换头","月子","有机肥","机顶盒","条码","架","染发剂","柔肤水","框","梯","梯子","模具","止痒","毛囊","毛孔","水平仪","水晶头","水龙头","汤勺","汽车脚垫","油漆","泡沫","泡沫胶","泥灸","注射针","泳衣","洁面","洗面","流量卡","浮标","润滑","润颜乳","液","清水剂","清洁","渔具","滤网","漆","漱口水","灯泡","灶台贴纸","烟","烧水棒","热熔胶枪","煤油","燃气报警器","爸爸装","牙刷头","牙刷替换头","牛仔裤","犬粮","狗狗沐浴露","狗粮","猪油","猫咪","猫咪玩具","猫玩具","猫砂","猫粮","玛咖片","玻尿酸","玻璃镜片","玻璃防雾剂","班","理发","用友","甲醛","电池","电缆剪","电话卡","电话牌","男士用品","男童","疣","疮","痉挛","痔疮","瘙痒","皮带","眉笔","眼影","眼镜","眼霜","睡裤","睫毛","矫正","矫正器","矫正带","砂盆","砂纸","硅胶","磨脚","磨脚石","祛斑霜","神露","福来油","空气滤芯","空调滤","窗帘","筒灯","筷子","管","粉刺","粉底","粉饼","精华","精华乳","精油","纱窗","纱网","纳米砖","纸尿裤","纹眉","纹眉色料","线上","线上课程","绑带","维修","维生素","绿幕","绿草皮","美容棒","美工刀","美甲","美缝","美胸","翻身","老人用品","老爷车","老花","考","耳塞","耳罩","职业装","肥佬","肥料","胖子","胶囊","胶带","脚垫","腋毛","腋毛神器","腮红","腰带","膜","自慰","舒缓水","色料","艾条","花萃","葛根","虾青素","蚊帐","蚯蚓粪","蟑螂药","补墙","补水","表带","袋","袖套","裁纸刀","裤头","裸妆","视线盲区贴纸","解码线","训练器","试听课","试用装","课","贴","赠品","足浴粉","车漆","车篓子","车轮","车锁","轨道","转换","转换器","转接","轮胎","轮胎专用胶水","软膏","辅食","运费专拍","连衣裙","适配","适配器","遮挡布","避光垫","避孕套","酒","金属探测","金属探测器","钉子","钙咀嚼片","钢化膜","钢化蛋","钳","铆管","锁精环","镜片","镰刀","长筒袜","门帘","门把手","门槛条","门锁","防撞条","防静电","阴囊","阴部","雨刮","雨披","雨衣","霜","露","青春痘","静电","静脉曲张","非卖品","面膜","鞋垫","鞋带","领结","额头贴","飞机","飞机杯","香薰精油","鱼线","鸭肠","鹿鞭","黄膏贴","鼠标垫","鼻影","鼻毛","鼻毛器","龟头","锯片","单拍不发货","火花塞","红花手套","温度计"], + // 试用价格(中了要花多少钱),高于这个价格都不会试用,小于等于才会试用 + trialPrice: 0, + /* + * 最小提供数量,例如试用商品只提供2份试用资格,当前设置为1,则会进行申请 + * 若只提供5分试用资格,当前设置为10,则不会申请 + * 可设置环境变量:JD_TRY_MINSUPPLYNUM + * */ + minSupplyNum: 20, + /* + * 过滤大于设定值的已申请人数,例如下面设置的1000,A商品已经有1001人申请了,则A商品不会进行申请,会被跳过 + * 可设置环境变量:JD_TRY_APPLYNUMFILTER + * */ + applyNumFilter: process.env.JD_TRY_APPLYNUMFILTER || 99999, + /* + * 商品试用之间和获取商品之间的间隔, 单位:毫秒(1秒=1000毫秒) + * 可设置环境变量:JD_TRY_APPLYINTERVAL + * */ + applyInterval: process.env.JD_TRY_APPLYINTERVAL || 5000, + /* + * 商品数组的最大长度,通俗来说就是即将申请的商品队列长度 + * 例如设置为20,当第一次获取后获得12件,过滤后剩下5件,将会进行第二次获取,过滤后加上第一次剩余件数 + * 例如是18件,将会进行第三次获取,直到过滤完毕后为20件才会停止,不建议设置太大 + * 可设置环境变量:JD_TRY_MAXLENGTH + * */ + maxLength: 10 + } + + !(async() => { + // console.log(`\n本脚本默认不运行,也不建议运行\n如需运行请自行添加环境变量:JD_TRY,值填:true\n`) + await $.wait(1000) + if(process.env.JD_TRY && process.env.JD_TRY === 'true'){ + await requireConfig() + if(!$.cookiesArr[0]){ + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + for(let i = 0; i < $.cookiesArr.length; i++){ + message += "[通知] 试用精选 \n\n --- \n\n" + if($.cookiesArr[i]){ + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await totalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } + + username = $.UserName + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟子" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康子" + } + if($.UserName == "jd_66dcb31363ef6"){ + username = "涛子" + } + if($.UserName == "18070420956_p"){ + username = "奇怪子" + } + if($.UserName == "jd_45d917547c763"){ + username = "跑腿小弟子" + } + if ($.UserName == "jd_66ea783827d30"){ + username = "军子" + } + if ($.UserName == "jd_4311ac0ff4456"){ + username = "居子" + } + maxSize = Math.floor(Math.random() * (10) + 8) + args_xh.maxLength = Math.floor(Math.random() * (10) + 8) + let list = maped[Math.floor(Math.random() * (6) + 0)] + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + message = message + "最大页数:" + maxSize + "最大长度:"+ args_xh.maxLength +"申请列表:" + list +" \n\n " + + $.totalTry = 0 + $.totalSuccess = 0 + let size = 1; + + for (let i =0;i { + console.log(`❗️ ${$.name} 运行错误!\n${e}`) + postToDingTalk(e) + }).finally(() => { + $.done() + }) + + + function requireConfig(){ + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async() => { } } + //获取 Cookies + $.cookiesArr = [] + if($.isNode()){ + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if(jdCookieNode[item]){ + $.cookiesArr.push(jdCookieNode[item]) + } + }) + if(process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) + for (const key in args_xh) { + if(typeof args_xh[key] == 'string') { + args_xh[key] = Number(args_xh[key]) + } + } + // console.debug(args_xh) + resolve() + }) + } + + //获取商品列表并且过滤 By X1a0He + function try_feedsList(tabId, page){ + return new Promise((resolve, reject) => { + const body = JSON.stringify({ + "tabId": `${tabId}`, + "page": page, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_feedsList', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.debug(data) + // return + data = JSON.parse(data) + if(data.success){ + $.totalPages = data.data.pages + totalPages = $.totalPages + console.log(`获取到商品 ${data.data.feedList.length} 条\n`) + for(let i = 0; i < data.data.feedList.length; i++){ + if(trialActivityIdList.length > args_xh.maxLength){ + console.log('商品列表长度已满.结束获取') + }else + if(data.data.feedList[i].applyState === 1){ + console.log(`商品已申请试用:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].applyState !== null){ + console.log(`商品状态异常,跳过:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].skuTitle){ + console.log(`检测第 ${page} 页 第 ${i + 1} 个商品\n${data.data.feedList[i].skuTitle}`) + if(parseFloat(data.data.feedList[i].jdPrice) <= args_xh.jdPrice){ + console.log(`商品被过滤,${data.data.feedList[i].jdPrice} < ${args_xh.jdPrice} \n`) + }else if(parseFloat(data.data.feedList[i].supplyNum) > args_xh.minSupplyNum && data.data.feedList[i].supplyNum !== null){ + console.log(`商品被过滤,提供申请的份数大于预设申请的份数 \n`) + }else if(parseFloat(data.data.feedList[i].applyNum) > args_xh.applyNumFilter && data.data.feedList[i].applyNum !== null){ + console.log(`商品被过滤,已申请试用人数大于预设人数 \n`) + }else if(parseFloat(data.data.feedList[i].trialPrice) > args_xh.trialPrice){ + console.log(`商品被过滤,期待价格高于预设价格 \n`) + }else if(args_xh.titleFilters.some(fileter_word => data.data.feedList[i].skuTitle.includes(fileter_word))){ + console.log('商品被过滤,含有关键词 \n') + }else{ + console.log(`商品通过,将加入试用组,trialActivityId为${data.data.feedList[i].trialActivityId}\n`) + trialActivityIdList.push(data.data.feedList[i].trialActivityId) + trialActivityTitleList.push(data.data.feedList[i].skuTitle) + } + }else{ + console.log('skuTitle解析异常') + return + } + } + console.log(`当前试用组id如下,长度为:${trialActivityIdList.length}\n${trialActivityIdList}\n`) + } else { + console.log(`💩 获得试用列表失败: ${data.message}`) + } + } + } catch(e){ + console.log(e); + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + console.log(`${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_apply(title, activityId){ + return new Promise((resolve, reject) => { + console.log(`申请试用商品中...`) + console.log(`商品:${title}`) + console.log(`id为:${activityId}`) + const body = JSON.stringify({ + "activityId": activityId, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_apply', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + $.totalTry++ + data = JSON.parse(data) + if(data.success && data.code === "1"){ // 申请成功 + message += "" + title + "\n\n" + message += "" + `--------` + "\n\n" + console.log(data.message) + $.totalSuccess++ + } else if(data.code === "-106"){ + console.log(data.message) // 未在申请时间内! + } else if(data.code === "-110"){ + console.log(data.message) // 您的申请已成功提交,请勿重复申请… + } else if(data.code === "-120"){ + console.log(data.message) // 您还不是会员,本品只限会员申请试用,请注册会员后申请! + } else if(data.code === "-167"){ + console.log(data.message) // 抱歉,此试用需为种草官才能申请。查看下方详情了解更多。 + } else { + console.log("申请失败", JSON.stringify(data)) + message += "" + JSON.stringify(data) + "\n\n" + message += "" + `--------` + "\n\n" + } + } + } catch(e){ + console.log(data) + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_MyTrials(page, selected){ + return new Promise((resolve, reject) => { + switch(selected){ + case 1: + console.log('正在获取已申请的商品...') + break; + case 2: + console.log('正在获取申请成功的商品...') + break; + case 3: + console.log('正在获取申请失败的商品...') + break; + default: + console.log('selected错误') + } + const body = JSON.stringify({ + "page": page, + "selected": selected, // 1 - 已申请 2 - 成功列表,3 - 失败列表 + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_MyTrials', body) + option.headers.Referer = 'https://pro.m.jd.com/' + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.log(data) + // return + data = JSON.parse(data) + if(data.success){ + //temp adjustment + if(selected == 2){ + if (data.success && data.data) { + $.successList = data.data.list.filter(item => { + + return item.text.text.includes('试用资格将保留10天') + }) + console.log(`待领取: ${$.successList.length}个`) + } else { + console.log(`获得成功列表失败: ${data.message}`) + } + } + + if(data.data.list.length > 0){ + let count = 0 + for(let item of data.data.list){ + console.log(`申请时间:${new Date(parseInt(item.applyTime)).toLocaleString()}`) + console.log(`申请商品:${item.trialName}`) + console.log(`当前状态:${item.text.text}`) + console.log(`剩余时间:${remaining(item.leftTime)}`) + console.log() + + if (count < 3){ + message += "" + `申请商品:${item.trialName}` + "\n\n" + message += "" + `当前状态:${item.text.text}` + "\n\n" + message += "" + `-----\n\n` + "\n\n" + count ++ + } + } + } + // else { + // switch(selected){ + // case 1: + // console.log('无已申请的商品\n') + // break; + // case 2: + // console.log('无申请成功的商品\n') + // break; + // case 3: + // console.log('无申请失败的商品\n') + // break; + // default: + // console.log('selected错误') + // } + // } + } else { + console.log(`ERROR:try_MyTrials`) + } + } + } catch(e){ + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function remaining(time){ + let days = parseInt(time / (1000 * 60 * 60 * 24)); + let hours = parseInt((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + let minutes = parseInt((time % (1000 * 60 * 60)) / (1000 * 60)); + return `${days} 天 ${hours} 小时 ${minutes} 分` + } + + function taskurl_xh(appid, functionId, body = JSON.stringify({})){ + return { + "url": `${URL}?appid=${appid}&functionId=${functionId}&clientVersion=10.1.2&client=wh5&body=${encodeURIComponent(body)}`, + 'headers': { + 'Host': 'api.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': $.cookie, + 'Connection': 'keep-alive', + 'UserAgent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://prodev.m.jd.com/' + }, + } + } + + async function showMsg(){ + let message1 = `京东账号${$.index} ${$.nickName || $.UserName}\n🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + message += "" + `🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + "\n\n" + if(!args_xh.jdNotify || args_xh.jdNotify === 'false'){ + $.msg($.name, ``, message1, { + "open-url": 'https://try.m.jd.com/user' + }) + if($.isNode()) + notifyMsg += `${message1}\n\n` + } else { + console.log(message1) + } + } + + function totalBean(){ + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try{ + if(err){ + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if(data){ + data = JSON.parse(data); + if(data['retcode'] === 13){ + $.isLogin = false; //cookie过期 + return + } + if(data['retcode'] === 0){ + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch(e){ + $.logErr(e, resp) + } finally{ + resolve(); + } + }) + }) + } + + function jsonParse(str){ + if(typeof str == "string"){ + try{ + return JSON.parse(str); + } catch(e){ + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } + } + + // 来自 @chavyleung 大佬 + // https://raw.githubusercontent.com/chavyleung/scripts/master/Env.js + function Env(name, opts){ + class Http{ + constructor(env){ + this.env = env + } + + send(opts, method = 'GET'){ + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if(method === 'POST'){ + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if(err) reject(err) + else resolve(resp) + }) + }) + } + + get(opts){ + return this.send.call(this.env, opts) + } + + post(opts){ + return this.send.call(this.env, opts, 'POST') + } + } + + return new (class{ + constructor(name, opts){ + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } + + isNode(){ + return 'undefined' !== typeof module && !!module.exports + } + + isQuanX(){ + return 'undefined' !== typeof $task + } + + isSurge(){ + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } + + isLoon(){ + return 'undefined' !== typeof $loon + } + + toObj(str, defaultValue = null){ + try{ + return JSON.parse(str) + } catch{ + return defaultValue + } + } + + toStr(obj, defaultValue = null){ + try{ + return JSON.stringify(obj) + } catch{ + return defaultValue + } + } + + getjson(key, defaultValue){ + let json = defaultValue + const val = this.getdata(key) + if(val){ + try{ + json = JSON.parse(this.getdata(key)) + } catch{ } + } + return json + } + + setjson(val, key){ + try{ + return this.setdata(JSON.stringify(val), key) + } catch{ + return false + } + } + + getScript(url){ + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } + + runScript(script, runOpts){ + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } + + loaddata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if(isCurDirDataFile || isRootDirDataFile){ + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try{ + return JSON.parse(this.fs.readFileSync(datPath)) + } catch(e){ + return {} + } + } else return {} + } else return {} + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if(isCurDirDataFile){ + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if(isRootDirDataFile){ + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } + + lodash_get(source, path, defaultValue = undefined){ + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for(const p of paths){ + result = Object(result)[p] + if(result === undefined){ + return defaultValue + } + } + return result + } + + lodash_set(obj, path, value){ + if(Object(obj) !== obj) return obj + if(!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path.slice(0, -1).reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } + + getdata(key){ + let val = this.getval(key) + // 如果以 @ + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if(objval){ + try{ + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch(e){ + val = '' + } + } + } + return val + } + + setdata(val, key){ + let issuc = false + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try{ + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch(e){ + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } + + getval(key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.read(key) + } else if(this.isQuanX()){ + return $prefs.valueForKey(key) + } else if(this.isNode()){ + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } + + setval(val, key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.write(val, key) + } else if(this.isQuanX()){ + return $prefs.setValueForKey(val, key) + } else if(this.isNode()){ + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } + + initGotEnv(opts){ + this.got = this.got ? this.got : require('got') + this.cktough = this.cktough ? this.cktough : require('tough-cookie') + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar() + if(opts){ + opts.headers = opts.headers ? opts.headers : {} + if(undefined === opts.headers.Cookie && undefined === opts.cookieJar){ + opts.cookieJar = this.ckjar + } + } + } + + get(opts, callback = () => { }){ + if(opts.headers){ + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + this.got(opts).on('redirect', (resp, nextOpts) => { + try{ + if(resp.headers['set-cookie']){ + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if(ck){ + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch(e){ + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + post(opts, callback = () => { }){ + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if(opts.body && opts.headers && !opts.headers['Content-Type']){ + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if(opts.headers) delete opts.headers['Content-Length'] + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + opts.method = 'POST' + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt){ + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if(/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for(let k in o) + if(new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } + + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts){ + const toEnvOpts = (rawopts) => { + if(!rawopts) return rawopts + if(typeof rawopts === 'string'){ + if(this.isLoon()) return rawopts + else if(this.isQuanX()) return { + 'open-url': rawopts + } + else if(this.isSurge()) return { + url: rawopts + } + else return undefined + } else if(typeof rawopts === 'object'){ + if(this.isLoon()){ + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if(this.isQuanX()){ + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if(this.isSurge()){ + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if(!this.isMute){ + if(this.isSurge() || this.isLoon()){ + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if(this.isQuanX()){ + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if(!this.isMuteLog){ + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } + + log(...logs){ + if(logs.length > 0){ + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } + + logErr(err, msg){ + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if(!isPrintSack){ + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } + + wait(time){ + return new Promise((resolve) => setTimeout(resolve, time)) + } + + done(val = {}){ + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if(this.isSurge() || this.isQuanX() || this.isLoon()){ + $done(val) + } + } + })(name, opts) + } + + + //我加的函数 + function postToDingTalk(messgae) { + const message1 = "" + messgae + // that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"试用精选", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": true + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") + } + + + function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } + } + + function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address + } \ No newline at end of file diff --git a/src/main/resources/test_trytry1.js b/src/main/resources/test_trytry1.js new file mode 100644 index 0000000..3021d00 --- /dev/null +++ b/src/main/resources/test_trytry1.js @@ -0,0 +1,1148 @@ +/* + * 由ZCY01二次修改:脚本默认不运行 + * 由 X1a0He 修复:依然保持脚本默认不运行 + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * TG交流群:https://t.me/jd_zero205 + * TG通知频道:https://t.me/jd_zero205_tz + * + update 2021/09/05 + 京东试用:脚本更新地址 https://github.com/zero205/JD_tencent_scf/raw/main/jd_try.js + 脚本兼容: Node.js + 每天最多关注300个商店,但用户商店关注上限为500个。 + 请配合取关脚本试用,使用 jd_unsubscribe.js 提前取关至少250个商店确保京东试用脚本正常运行。 + * + * X1a0He留 + * 由于没有兼容Qx,原脚本已失效,建议原脚本的兼容Qx注释删了 + * 脚本是否耗时只看args_xh.maxLength的大小 + * 上一作者说了每天最多300个商店,总上限为500个,jd_unsubscribe.js我已更新为批量取关版 + * 请提前取关至少250个商店确保京东试用脚本正常运行 + * 没有写通知,是否申请成功没有进行通知,但脚本会把状态log出日志 + */ + + let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" + let maxSize = 15 + let totalPages = 999999 //总页数 + const $ = new Env('京东试用') + const URL = 'https://api.m.jd.com/client.action' + let trialActivityIdList = [] + let trialActivityTitleList = [] + let notifyMsg = '' + let message = "" + let maped = { + 0:[2,8,11], + 1:[8,2,11], + 2:[2,11,8], + 3:[8,11,2], + 4:[11,8,2], + 5:[11,2,8] + } + let process={ + env:{ + "JD_TRY":"true" + } + } + // default params + let args_xh = { + /* + * 是否进行通知 + * 可设置环境变量:JD_TRY_NOTIFY + * */ + // isNotify: process.env.JD_TRY_NOTIFY || true, + // 商品原价,低于这个价格都不会试用 + jdPrice: process.env.JD_TRY_PRICE || 0, + /* + * 获取试用商品类型,默认为1 + * 1 - 精选 + * 2 - 闪电试用 + * 3 - 家用电器(可能会有变化) + * 4 - 手机数码(可能会有变化) + * 5 - 电脑办公(可能会有变化) + * 可设置环境变量:JD_TRY_TABID + * */ + // TODO: tab ids as array(support multi tabIds) + // tabId: process.env.JD_TRY_TABID && process.env.JD_TRY_TABID.split('@').map(Number) || [1], + tabId: process.env.JD_TRY_TABID || 1, + /* + * 试用商品标题过滤 + * 可设置环境变量:JD_TRY_TITLEFILTERS,关键词与关键词之间用@分隔 + * */ + titleFilters: ["测电笔","测试","请勿下单", "牛舌","儿童玩具枪", "宣纸", "洋娃娃", "口琴","磨砂壳", "亲子互动", "防卫尖刺", "折叠锯子","牙签防水","购物券","材料包","水勺","碎发","整理棒","内裤","莆田官网","蚊香","遥控器","马桶垫","锅铲","电容笔","茶勺","瓜刨","耳钉","茶杯","滤杯","红绳","装修", "钥匙扣", "美容院","芦荟","仿真小蛋糕","儿童便捷","遮瑕膏","香水","汽车摆件","水枪","润唇膏","衬衫","中老年","拐杖","牙签盒","电风扇罩","茶杯","袜子","掏耳","爬爬垫","滑板车","格子长袖","牙线","粉扑","粉扑盒子","停车牌","小勺子","爽肤水","防蚊裤","0-12岁","宝宝牙刷","玩具女孩","固定器","润唇膏","商务休闲", "儿童背包","塑料士兵小军人玩具","串珠玩具","儿童串珠玩具", "运势书","背心马甲","示宽灯","收银机","收钱码","空调罩","效果图","米小芽", "抵用券" ,"手工黏土", "儿童拌饭", "伊威", "菲妮小熊", "刀片" ,"割草机", "儿童n95","儿童口罩", "音频线","土工布","抑菌膏","win10","日历","玻璃吊","竖笛","角阀","三角阀","反光镜","倒车","童装","童装男女童","女童裤子","八倍镜","手提秤","电子秤","钓鱼手竿","鱼饵","护栏","栅网","狗链","切割片","汽油锯","滤芯","饲料","九九乘法","铁丝","监狱","隔离网","宝宝玩具车", "成长裤", "女士内裤", "小兔女士", "浮漂", "儿童磨牙饼", "墙纸", "壁纸", "传菜铃" ,"红包封", "光驱","挂绳","增高","宝宝鞋子", "女童裤子", "宝宝牙刷", "童装", "宝宝灯笼裤", "吃饭衣", "围兜", "牙刷收纳盒","安全锤","抛光机","机油","合成机油","铅笔","吸奶器","鱼钩","翻板钩","口罩盒","九九乘除","耐火泥","尼龙网","侧挂式","手术刀","喷雾器","注射器","驱虫","女士内裤,少女内裤","树苗","塑身裤","笼子","捆扎绳","打包绳","捆绑绳","插销","水乳","光和青春","测评","在线直播", "HDMI","LED","SD","SD卡","VGA","hdmi","hpv","led开关电源","windows","一次性","一片装","一盒","万用表","万藓灵","丝袜","中国电信","丰胸","丸","乳液","乳腺","交换","交换机","享底价","亿优信","会员","会员卡","会议杯子","便秘","保健","保护套","保暖女裤","保暖裤","修护","修眉","修眉剪","倒车镜","假睫毛","儿童奶粉","儿童口罩","儿童成长","充电头","充电桩","免钉胶水","养芝堂","内衣","冻干粉","净水剂","减肥","分流","分流器","别针","刮痧","刮痧板","刷牙头","剂","剃须刀配件","削皮刀","前列腺","剥虾","剪","剪钳","办公会议茶杯","办公杯","加温器","包皮","化妆","半身不遂","卡","卡套","卡尺","卡托","卧铺垫","卸妆","卸妆水","压片","参肽片","反光条贴","反光板","反光贴","口红","口腔","口腔抑菌","号码卡","同仁堂","吸顶灯","咬钩","咽炎","哑光","哨","哺乳","哺乳套装","唇釉","啪啪","嚼片","围裙","图钉","地吸","地漏","坐垫","培训","增生贴","墨","墨水","墨盒","墨粉","复合肥","外用","多功能尺子","天线","头","夹","奶瓶","奶粉","妆","妇女","婴","婴儿","孕妇装","学习卡","孩子","安全帽","安全裤","定做","定做榻榻米","定制","宝宝奶粉","宝宝口罩","宝宝成长","实验课","宠物","密封条","小学","尤尖锐湿疣","尺","尼龙管","尿","尿素","尿素霜","屏蔽袋","屏风","工作手册","工作服","巾","带","帽","幕","平衡线","幼儿","幼儿园","幼儿配方","座垫","座套","康复","延时","延迟","延迟喷雾","开果器","彩带","情趣","成人票","手册","手套","手机卡","手机壳","手机维修","打底","打草绳","打钉枪","托","扩音器","把手","护理","护肤","护腿套","护踝","报警器","抽屉轨道","拔毒膏","挂钩","指套","挑逗","挡风","挤奶器","掏耳朵","插座","摄像头镜片","敏感","敏肌","教","教学视频","教材","数据线","文胸","替换头","月子","有机肥","机顶盒","条码","架","染发剂","柔肤水","框","梯","梯子","模具","止痒","毛囊","毛孔","水平仪","水晶头","水龙头","汤勺","汽车脚垫","油漆","泡沫","泡沫胶","泥灸","注射针","泳衣","洁面","洗面","流量卡","浮标","润滑","润颜乳","液","清水剂","清洁","渔具","滤网","漆","漱口水","灯泡","灶台贴纸","烟","烧水棒","热熔胶枪","煤油","燃气报警器","爸爸装","牙刷头","牙刷替换头","牛仔裤","犬粮","狗狗沐浴露","狗粮","猪油","猫咪","猫咪玩具","猫玩具","猫砂","猫粮","玛咖片","玻尿酸","玻璃镜片","玻璃防雾剂","班","理发","用友","甲醛","电池","电缆剪","电话卡","电话牌","男士用品","男童","疣","疮","痉挛","痔疮","瘙痒","皮带","眉笔","眼影","眼镜","眼霜","睡裤","睫毛","矫正","矫正器","矫正带","砂盆","砂纸","硅胶","磨脚","磨脚石","祛斑霜","神露","福来油","空气滤芯","空调滤","窗帘","筒灯","筷子","管","粉刺","粉底","粉饼","精华","精华乳","精油","纱窗","纱网","纳米砖","纸尿裤","纹眉","纹眉色料","线上","线上课程","绑带","维修","维生素","绿幕","绿草皮","美容棒","美工刀","美甲","美缝","美胸","翻身","老人用品","老爷车","老花","考","耳塞","耳罩","职业装","肥佬","肥料","胖子","胶囊","胶带","脚垫","腋毛","腋毛神器","腮红","腰带","膜","自慰","舒缓水","色料","艾条","花萃","葛根","虾青素","蚊帐","蚯蚓粪","蟑螂药","补墙","补水","表带","袋","袖套","裁纸刀","裤头","裸妆","视线盲区贴纸","解码线","训练器","试听课","试用装","课","贴","赠品","足浴粉","车漆","车篓子","车轮","车锁","轨道","转换","转换器","转接","轮胎","轮胎专用胶水","软膏","辅食","运费专拍","连衣裙","适配","适配器","遮挡布","避光垫","避孕套","酒","金属探测","金属探测器","钉子","钙咀嚼片","钢化膜","钢化蛋","钳","铆管","锁精环","镜片","镰刀","长筒袜","门帘","门把手","门槛条","门锁","防撞条","防静电","阴囊","阴部","雨刮","雨披","雨衣","霜","露","青春痘","静电","静脉曲张","非卖品","面膜","鞋垫","鞋带","领结","额头贴","飞机","飞机杯","香薰精油","鱼线","鸭肠","鹿鞭","黄膏贴","鼠标垫","鼻影","鼻毛","鼻毛器","龟头","锯片","单拍不发货","火花塞","红花手套","温度计"], + // 试用价格(中了要花多少钱),高于这个价格都不会试用,小于等于才会试用 + trialPrice: 0, + /* + * 最小提供数量,例如试用商品只提供2份试用资格,当前设置为1,则会进行申请 + * 若只提供5分试用资格,当前设置为10,则不会申请 + * 可设置环境变量:JD_TRY_MINSUPPLYNUM + * */ + minSupplyNum:20, + /* + * 过滤大于设定值的已申请人数,例如下面设置的1000,A商品已经有1001人申请了,则A商品不会进行申请,会被跳过 + * 可设置环境变量:JD_TRY_APPLYNUMFILTER + * */ + applyNumFilter: process.env.JD_TRY_APPLYNUMFILTER || 99999, + /* + * 商品试用之间和获取商品之间的间隔, 单位:毫秒(1秒=1000毫秒) + * 可设置环境变量:JD_TRY_APPLYINTERVAL + * */ + applyInterval: process.env.JD_TRY_APPLYINTERVAL || 5000, + /* + * 商品数组的最大长度,通俗来说就是即将申请的商品队列长度 + * 例如设置为20,当第一次获取后获得12件,过滤后剩下5件,将会进行第二次获取,过滤后加上第一次剩余件数 + * 例如是18件,将会进行第三次获取,直到过滤完毕后为20件才会停止,不建议设置太大 + * 可设置环境变量:JD_TRY_MAXLENGTH + * */ + maxLength: 10 + } + + !(async() => { + // console.log(`\n本脚本默认不运行,也不建议运行\n如需运行请自行添加环境变量:JD_TRY,值填:true\n`) + await $.wait(1000) + if(process.env.JD_TRY && process.env.JD_TRY === 'true'){ + await requireConfig() + if(!$.cookiesArr[0]){ + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + for(let i = 0; i < $.cookiesArr.length; i++){ + message += "[通知] 试用生鲜美食 \n\n --- \n\n" + if($.cookiesArr[i]){ + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await totalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } + + username = $.UserName + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟子" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康子" + } + if($.UserName == "jd_66dcb31363ef6"){ + username = "涛子" + } + if($.UserName == "18070420956_p"){ + username = "奇怪子" + } + if($.UserName == "jd_45d917547c763"){ + username = "跑腿小弟子" + } + if ($.UserName == "jd_66ea783827d30"){ + username = "军子" + } + if ($.UserName == "jd_4311ac0ff4456"){ + username = "居子" + } + maxSize = Math.floor(Math.random() * (10) + 8) + args_xh.maxLength = Math.floor(Math.random() * (10) + 8) + let list = maped[Math.floor(Math.random() * (6) + 0)] + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + message = message + "最大页数:" + maxSize + "最大长度:"+ args_xh.maxLength +"申请列表:" + list +" \n\n " + + $.totalTry = 0 + $.totalSuccess = 0 + let size = 1; + + for (let i =0;i { + console.log(`❗️ ${$.name} 运行错误!\n${e}`) + postToDingTalk(e) + }).finally(() => { + $.done() + }) + + function requireConfig(){ + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async() => { } } + //获取 Cookies + $.cookiesArr = [] + if($.isNode()){ + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if(jdCookieNode[item]){ + $.cookiesArr.push(jdCookieNode[item]) + } + }) + if(process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) + for (const key in args_xh) { + if(typeof args_xh[key] == 'string') { + args_xh[key] = Number(args_xh[key]) + } + } + // console.debug(args_xh) + resolve() + }) + } + + //获取商品列表并且过滤 By X1a0He + function try_feedsList(tabId, page){ + return new Promise((resolve, reject) => { + const body = JSON.stringify({ + "tabId": `${tabId}`, + "page": page, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_feedsList', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.debug(data) + // return + data = JSON.parse(data) + if(data.success){ + $.totalPages = data.data.pages + totalPages = $.totalPages + console.log(`获取到商品 ${data.data.feedList.length} 条\n`) + for(let i = 0; i < data.data.feedList.length; i++){ + if(trialActivityIdList.length > args_xh.maxLength){ + console.log('商品列表长度已满.结束获取') + }else + if(data.data.feedList[i].applyState === 1){ + console.log(`商品已申请试用:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].applyState !== null){ + console.log(`商品状态异常,跳过:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].skuTitle){ + console.log(`检测第 ${page} 页 第 ${i + 1} 个商品\n${data.data.feedList[i].skuTitle}`) + if(parseFloat(data.data.feedList[i].jdPrice) <= args_xh.jdPrice){ + console.log(`商品被过滤,${data.data.feedList[i].jdPrice} < ${args_xh.jdPrice} \n`) + }else if(parseFloat(data.data.feedList[i].supplyNum) > args_xh.minSupplyNum && data.data.feedList[i].supplyNum !== null){ + console.log(`商品被过滤,提供申请的份数大于预设申请的份数 \n`) + }else if(parseFloat(data.data.feedList[i].applyNum) > args_xh.applyNumFilter && data.data.feedList[i].applyNum !== null){ + console.log(`商品被过滤,已申请试用人数大于预设人数 \n`) + }else if(parseFloat(data.data.feedList[i].trialPrice) > args_xh.trialPrice){ + console.log(`商品被过滤,期待价格高于预设价格 \n`) + }else if(args_xh.titleFilters.some(fileter_word => data.data.feedList[i].skuTitle.includes(fileter_word))){ + console.log('商品被过滤,含有关键词 \n') + }else{ + console.log(`商品通过,将加入试用组,trialActivityId为${data.data.feedList[i].trialActivityId}\n`) + trialActivityIdList.push(data.data.feedList[i].trialActivityId) + trialActivityTitleList.push(data.data.feedList[i].skuTitle) + } + }else{ + console.log('skuTitle解析异常') + return + } + } + console.log(`当前试用组id如下,长度为:${trialActivityIdList.length}\n${trialActivityIdList}\n`) + } else { + console.log(`💩 获得试用列表失败: ${data.message}`) + } + } + } catch(e){ + console.log(e); + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + console.log(`${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_apply(title, activityId){ + return new Promise((resolve, reject) => { + console.log(`申请试用商品中...`) + console.log(`商品:${title}`) + console.log(`id为:${activityId}`) + const body = JSON.stringify({ + "activityId": activityId, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_apply', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + $.totalTry++ + data = JSON.parse(data) + if(data.success && data.code === "1"){ // 申请成功 + message += "" + title + "\n\n" + message += "" + `--------` + "\n\n" + console.log(data.message) + $.totalSuccess++ + } else if(data.code === "-106"){ + console.log(data.message) // 未在申请时间内! + } else if(data.code === "-110"){ + console.log(data.message) // 您的申请已成功提交,请勿重复申请… + } else if(data.code === "-120"){ + console.log(data.message) // 您还不是会员,本品只限会员申请试用,请注册会员后申请! + } else if(data.code === "-167"){ + console.log(data.message) // 抱歉,此试用需为种草官才能申请。查看下方详情了解更多。 + } else { + console.log("申请失败", JSON.stringify(data)) + message += "" + JSON.stringify(data) + "\n\n" + message += "" + `--------` + "\n\n" + } + } + } catch(e){ + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_MyTrials(page, selected){ + return new Promise((resolve, reject) => { + switch(selected){ + case 1: + console.log('正在获取已申请的商品...') + break; + case 2: + console.log('正在获取申请成功的商品...') + break; + case 3: + console.log('正在获取申请失败的商品...') + break; + default: + console.log('selected错误') + } + const body = JSON.stringify({ + "page": page, + "selected": selected, // 1 - 已申请 2 - 成功列表,3 - 失败列表 + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_MyTrials', body) + option.headers.Referer = 'https://pro.m.jd.com/' + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.log(data) + // return + data = JSON.parse(data) + if(data.success){ + //temp adjustment + if(selected == 2){ + if (data.success && data.data) { + $.successList = data.data.list.filter(item => { + + return item.text.text.includes('试用资格将保留10天') + }) + console.log(`待领取: ${$.successList.length}个`) + } else { + console.log(`获得成功列表失败: ${data.message}`) + } + } + if(data.data.list.length > 0){ + let count = 0 + for(let item of data.data.list){ + console.log(`申请时间:${new Date(parseInt(item.applyTime)).toLocaleString()}`) + console.log(`申请商品:${item.trialName}`) + console.log(`当前状态:${item.text.text}`) + console.log(`剩余时间:${remaining(item.leftTime)}`) + console.log() + + + if (count < 3){ + message += "" + `申请商品:${item.trialName}` + "\n\n" + message += "" + `当前状态:${item.text.text}` + "\n\n" + message += "" + `-----\n\n` + "\n\n" + count ++ + } + + } + } + // else { + // switch(selected){ + // case 1: + // console.log('无已申请的商品\n') + // break; + // case 2: + // console.log('无申请成功的商品\n') + // break; + // case 3: + // console.log('无申请失败的商品\n') + // break; + // default: + // console.log('selected错误') + // } + // } + } else { + console.log(`ERROR:try_MyTrials`) + } + } + } catch(e){ + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function remaining(time){ + let days = parseInt(time / (1000 * 60 * 60 * 24)); + let hours = parseInt((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + let minutes = parseInt((time % (1000 * 60 * 60)) / (1000 * 60)); + return `${days} 天 ${hours} 小时 ${minutes} 分` + } + + function taskurl_xh(appid, functionId, body = JSON.stringify({})){ + return { + "url": `${URL}?appid=${appid}&functionId=${functionId}&clientVersion=10.1.2&client=wh5&body=${encodeURIComponent(body)}`, + 'headers': { + 'Host': 'api.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': $.cookie, + 'Connection': 'keep-alive', + 'UserAgent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://prodev.m.jd.com/' + }, + } + } + + async function showMsg(){ + let message1 = `京东账号${$.index} ${$.nickName || $.UserName}\n🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + message += "" + `🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + "\n\n" + if(!args_xh.jdNotify || args_xh.jdNotify === 'false'){ + $.msg($.name, ``, message1, { + "open-url": 'https://try.m.jd.com/user' + }) + if($.isNode()) + notifyMsg += `${message1}\n\n` + } else { + console.log(message1) + } + } + + function totalBean(){ + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try{ + if(err){ + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if(data){ + data = JSON.parse(data); + if(data['retcode'] === 13){ + $.isLogin = false; //cookie过期 + return + } + if(data['retcode'] === 0){ + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch(e){ + $.logErr(e, resp) + } finally{ + resolve(); + } + }) + }) + } + + function jsonParse(str){ + if(typeof str == "string"){ + try{ + return JSON.parse(str); + } catch(e){ + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } + } + + // 来自 @chavyleung 大佬 + // https://raw.githubusercontent.com/chavyleung/scripts/master/Env.js + function Env(name, opts){ + class Http{ + constructor(env){ + this.env = env + } + + send(opts, method = 'GET'){ + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if(method === 'POST'){ + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if(err) reject(err) + else resolve(resp) + }) + }) + } + + get(opts){ + return this.send.call(this.env, opts) + } + + post(opts){ + return this.send.call(this.env, opts, 'POST') + } + } + + return new (class{ + constructor(name, opts){ + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } + + isNode(){ + return 'undefined' !== typeof module && !!module.exports + } + + isQuanX(){ + return 'undefined' !== typeof $task + } + + isSurge(){ + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } + + isLoon(){ + return 'undefined' !== typeof $loon + } + + toObj(str, defaultValue = null){ + try{ + return JSON.parse(str) + } catch{ + return defaultValue + } + } + + toStr(obj, defaultValue = null){ + try{ + return JSON.stringify(obj) + } catch{ + return defaultValue + } + } + + getjson(key, defaultValue){ + let json = defaultValue + const val = this.getdata(key) + if(val){ + try{ + json = JSON.parse(this.getdata(key)) + } catch{ } + } + return json + } + + setjson(val, key){ + try{ + return this.setdata(JSON.stringify(val), key) + } catch{ + return false + } + } + + getScript(url){ + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } + + runScript(script, runOpts){ + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } + + loaddata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if(isCurDirDataFile || isRootDirDataFile){ + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try{ + return JSON.parse(this.fs.readFileSync(datPath)) + } catch(e){ + return {} + } + } else return {} + } else return {} + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if(isCurDirDataFile){ + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if(isRootDirDataFile){ + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } + + lodash_get(source, path, defaultValue = undefined){ + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for(const p of paths){ + result = Object(result)[p] + if(result === undefined){ + return defaultValue + } + } + return result + } + + lodash_set(obj, path, value){ + if(Object(obj) !== obj) return obj + if(!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path.slice(0, -1).reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } + + getdata(key){ + let val = this.getval(key) + // 如果以 @ + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if(objval){ + try{ + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch(e){ + val = '' + } + } + } + return val + } + + setdata(val, key){ + let issuc = false + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try{ + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch(e){ + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } + + getval(key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.read(key) + } else if(this.isQuanX()){ + return $prefs.valueForKey(key) + } else if(this.isNode()){ + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } + + setval(val, key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.write(val, key) + } else if(this.isQuanX()){ + return $prefs.setValueForKey(val, key) + } else if(this.isNode()){ + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } + + initGotEnv(opts){ + this.got = this.got ? this.got : require('got') + this.cktough = this.cktough ? this.cktough : require('tough-cookie') + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar() + if(opts){ + opts.headers = opts.headers ? opts.headers : {} + if(undefined === opts.headers.Cookie && undefined === opts.cookieJar){ + opts.cookieJar = this.ckjar + } + } + } + + get(opts, callback = () => { }){ + if(opts.headers){ + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + this.got(opts).on('redirect', (resp, nextOpts) => { + try{ + if(resp.headers['set-cookie']){ + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if(ck){ + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch(e){ + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + post(opts, callback = () => { }){ + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if(opts.body && opts.headers && !opts.headers['Content-Type']){ + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if(opts.headers) delete opts.headers['Content-Length'] + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + opts.method = 'POST' + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt){ + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if(/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for(let k in o) + if(new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } + + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts){ + const toEnvOpts = (rawopts) => { + if(!rawopts) return rawopts + if(typeof rawopts === 'string'){ + if(this.isLoon()) return rawopts + else if(this.isQuanX()) return { + 'open-url': rawopts + } + else if(this.isSurge()) return { + url: rawopts + } + else return undefined + } else if(typeof rawopts === 'object'){ + if(this.isLoon()){ + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if(this.isQuanX()){ + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if(this.isSurge()){ + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if(!this.isMute){ + if(this.isSurge() || this.isLoon()){ + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if(this.isQuanX()){ + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if(!this.isMuteLog){ + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } + + log(...logs){ + if(logs.length > 0){ + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } + + logErr(err, msg){ + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if(!isPrintSack){ + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } + + wait(time){ + return new Promise((resolve) => setTimeout(resolve, time)) + } + + done(val = {}){ + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if(this.isSurge() || this.isQuanX() || this.isLoon()){ + $done(val) + } + } + })(name, opts) + } + + + //我加的函数 + function postToDingTalk(messgae) { + const message1 = "" + messgae + // that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"试用生鲜美食", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") + } + + + function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } + } + + function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address + } \ No newline at end of file diff --git a/src/main/resources/test_trytry2.js b/src/main/resources/test_trytry2.js new file mode 100644 index 0000000..5d1d6f5 --- /dev/null +++ b/src/main/resources/test_trytry2.js @@ -0,0 +1,1146 @@ +/* + * 由ZCY01二次修改:脚本默认不运行 + * 由 X1a0He 修复:依然保持脚本默认不运行 + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * TG交流群:https://t.me/jd_zero205 + * TG通知频道:https://t.me/jd_zero205_tz + * + update 2021/09/05 + 京东试用:脚本更新地址 https://github.com/zero205/JD_tencent_scf/raw/main/jd_try.js + 脚本兼容: Node.js + 每天最多关注300个商店,但用户商店关注上限为500个。 + 请配合取关脚本试用,使用 jd_unsubscribe.js 提前取关至少250个商店确保京东试用脚本正常运行。 + * + * X1a0He留 + * 由于没有兼容Qx,原脚本已失效,建议原脚本的兼容Qx注释删了 + * 脚本是否耗时只看args_xh.maxLength的大小 + * 上一作者说了每天最多300个商店,总上限为500个,jd_unsubscribe.js我已更新为批量取关版 + * 请提前取关至少250个商店确保京东试用脚本正常运行 + * 没有写通知,是否申请成功没有进行通知,但脚本会把状态log出日志 + */ + + let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" + let maxSize = 15 + let totalPages = 999999 //总页数 + const $ = new Env('京东试用') + const URL = 'https://api.m.jd.com/client.action' + let trialActivityIdList = [] + let trialActivityTitleList = [] + let notifyMsg = '' + let message = "" + let maped = { + 0:[3,9,15], + 1:[9,15,3], + 2:[3,15,9], + 3:[15,3,9], + 4:[9,3,15], + 5:[15,9,3] + } + let process={ + env:{ + "JD_TRY":"true" + } + } + // default params + let args_xh = { + /* + * 是否进行通知 + * 可设置环境变量:JD_TRY_NOTIFY + * */ + // isNotify: process.env.JD_TRY_NOTIFY || true, + // 商品原价,低于这个价格都不会试用 + jdPrice: process.env.JD_TRY_PRICE || 0, + /* + * 获取试用商品类型,默认为1 + * 1 - 精选 + * 2 - 闪电试用 + * 3 - 家用电器(可能会有变化) + * 4 - 手机数码(可能会有变化) + * 5 - 电脑办公(可能会有变化) + * 可设置环境变量:JD_TRY_TABID + * */ + // TODO: tab ids as array(support multi tabIds) + // tabId: process.env.JD_TRY_TABID && process.env.JD_TRY_TABID.split('@').map(Number) || [1], + tabId: process.env.JD_TRY_TABID || 1, + /* + * 试用商品标题过滤 + * 可设置环境变量:JD_TRY_TITLEFILTERS,关键词与关键词之间用@分隔 + * */ + titleFilters: ["测电笔","测试","请勿下单", "牛舌","儿童玩具枪", "宣纸", "洋娃娃", "口琴","磨砂壳", "亲子互动", "防卫尖刺","折叠锯子","牙签防水","购物券","材料包","水勺","碎发","整理棒","内裤","莆田官网","蚊香","遥控器","马桶垫","锅铲","电容笔","茶勺","瓜刨","耳钉","茶杯","滤杯","红绳","装修", "钥匙扣","美容院","芦荟","仿真小蛋糕","儿童便捷","遮瑕膏","香水","汽车摆件","水枪","润唇膏","衬衫","中老年","拐杖","牙签盒","电风扇罩","茶杯","袜子","掏耳","爬爬垫","滑板车","格子长袖","牙线","粉扑","粉扑盒子","停车牌","小勺子","爽肤水","防蚊裤","0-12岁","宝宝牙刷","玩具女孩","固定器","润唇膏","商务休闲", "儿童背包","塑料士兵小军人玩具","串珠玩具","儿童串珠玩具", "运势书","背心马甲","示宽灯","收银机","收钱码","空调罩","效果图","米小芽", "抵用券" ,"手工黏土", "儿童拌饭", "伊威", "菲妮小熊", "刀片" ,"割草机", "儿童n95","儿童口罩", "音频线","土工布","抑菌膏","win10","日历","玻璃吊","竖笛","角阀","三角阀","反光镜","倒车","童装","童装男女童","女童裤子","八倍镜","手提秤","电子秤","钓鱼手竿","鱼饵","护栏","栅网","狗链","切割片","汽油锯","滤芯","饲料","九九乘法","铁丝","监狱","隔离网","宝宝玩具车", "成长裤", "女士内裤", "小兔女士", "浮漂", "儿童磨牙饼", "墙纸", "壁纸", "传菜铃" ,"红包封", "光驱","挂绳","增高","宝宝鞋子", "女童裤子", "宝宝牙刷", "童装", "宝宝灯笼裤", "吃饭衣", "围兜", "牙刷收纳盒","安全锤","抛光机","机油","合成机油","铅笔","吸奶器","鱼钩","翻板钩","口罩盒","九九乘除","耐火泥","尼龙网","侧挂式","手术刀","喷雾器","注射器","驱虫","女士内裤,少女内裤","树苗","塑身裤","笼子","捆扎绳","打包绳","捆绑绳","插销","水乳","光和青春","测评","在线直播", "HDMI","LED","SD","SD卡","VGA","hdmi","hpv","led开关电源","windows","一次性","一片装","一盒","万用表","万藓灵","丝袜","中国电信","丰胸","丸","乳液","乳腺","交换","交换机","享底价","亿优信","会员","会员卡","会议杯子","便秘","保健","保护套","保暖女裤","保暖裤","修护","修眉","修眉剪","倒车镜","假睫毛","儿童奶粉","儿童口罩","儿童成长","充电头","充电桩","免钉胶水","养芝堂","内衣","冻干粉","净水剂","减肥","分流","分流器","别针","刮痧","刮痧板","刷牙头","剂","剃须刀配件","削皮刀","前列腺","剥虾","剪","剪钳","办公会议茶杯","办公杯","加温器","包皮","化妆","半身不遂","卡","卡套","卡尺","卡托","卧铺垫","卸妆","卸妆水","压片","参肽片","反光条贴","反光板","反光贴","口红","口腔","口腔抑菌","号码卡","同仁堂","吸顶灯","咬钩","咽炎","哑光","哨","哺乳","哺乳套装","唇釉","啪啪","嚼片","围裙","图钉","地吸","地漏","坐垫","培训","增生贴","墨","墨水","墨盒","墨粉","复合肥","外用","多功能尺子","天线","头","夹","奶瓶","奶粉","妆","妇女","婴","婴儿","孕妇装","学习卡","孩子","安全帽","安全裤","定做","定做榻榻米","定制","宝宝奶粉","宝宝口罩","宝宝成长","实验课","宠物","密封条","小学","尤尖锐湿疣","尺","尼龙管","尿","尿素","尿素霜","屏蔽袋","屏风","工作手册","工作服","巾","带","帽","幕","平衡线","幼儿","幼儿园","幼儿配方","座垫","座套","康复","延时","延迟","延迟喷雾","开果器","彩带","情趣","成人票","手册","手套","手机卡","手机壳","手机维修","打底","打草绳","打钉枪","托","扩音器","把手","护理","护肤","护腿套","护踝","报警器","抽屉轨道","拔毒膏","挂钩","指套","挑逗","挡风","挤奶器","掏耳朵","插座","摄像头镜片","敏感","敏肌","教","教学视频","教材","数据线","文胸","替换头","月子","有机肥","机顶盒","条码","架","染发剂","柔肤水","框","梯","梯子","模具","止痒","毛囊","毛孔","水平仪","水晶头","水龙头","汤勺","汽车脚垫","油漆","泡沫","泡沫胶","泥灸","注射针","泳衣","洁面","洗面","流量卡","浮标","润滑","润颜乳","液","清水剂","清洁","渔具","滤网","漆","漱口水","灯泡","灶台贴纸","烟","烧水棒","热熔胶枪","煤油","燃气报警器","爸爸装","牙刷头","牙刷替换头","牛仔裤","犬粮","狗狗沐浴露","狗粮","猪油","猫咪","猫咪玩具","猫玩具","猫砂","猫粮","玛咖片","玻尿酸","玻璃镜片","玻璃防雾剂","班","理发","用友","甲醛","电池","电缆剪","电话卡","电话牌","男士用品","男童","疣","疮","痉挛","痔疮","瘙痒","皮带","眉笔","眼影","眼镜","眼霜","睡裤","睫毛","矫正","矫正器","矫正带","砂盆","砂纸","硅胶","磨脚","磨脚石","祛斑霜","神露","福来油","空气滤芯","空调滤","窗帘","筒灯","筷子","管","粉刺","粉底","粉饼","精华","精华乳","精油","纱窗","纱网","纳米砖","纸尿裤","纹眉","纹眉色料","线上","线上课程","绑带","维修","维生素","绿幕","绿草皮","美容棒","美工刀","美甲","美缝","美胸","翻身","老人用品","老爷车","老花","考","耳塞","耳罩","职业装","肥佬","肥料","胖子","胶囊","胶带","脚垫","腋毛","腋毛神器","腮红","腰带","膜","自慰","舒缓水","色料","艾条","花萃","葛根","虾青素","蚊帐","蚯蚓粪","蟑螂药","补墙","补水","表带","袋","袖套","裁纸刀","裤头","裸妆","视线盲区贴纸","解码线","训练器","试听课","试用装","课","贴","赠品","足浴粉","车漆","车篓子","车轮","车锁","轨道","转换","转换器","转接","轮胎","轮胎专用胶水","软膏","辅食","运费专拍","连衣裙","适配","适配器","遮挡布","避光垫","避孕套","酒","金属探测","金属探测器","钉子","钙咀嚼片","钢化膜","钢化蛋","钳","铆管","锁精环","镜片","镰刀","长筒袜","门帘","门把手","门槛条","门锁","防撞条","防静电","阴囊","阴部","雨刮","雨披","雨衣","霜","露","青春痘","静电","静脉曲张","非卖品","面膜","鞋垫","鞋带","领结","额头贴","飞机","飞机杯","香薰精油","鱼线","鸭肠","鹿鞭","黄膏贴","鼠标垫","鼻影","鼻毛","鼻毛器","龟头","锯片","单拍不发货","火花塞","红花手套","温度计"], + // 试用价格(中了要花多少钱),高于这个价格都不会试用,小于等于才会试用 + trialPrice: 0, + /* + * 最小提供数量,例如试用商品只提供2份试用资格,当前设置为1,则会进行申请 + * 若只提供5分试用资格,当前设置为10,则不会申请 + * 可设置环境变量:JD_TRY_MINSUPPLYNUM + * */ + minSupplyNum:20, + /* + * 过滤大于设定值的已申请人数,例如下面设置的1000,A商品已经有1001人申请了,则A商品不会进行申请,会被跳过 + * 可设置环境变量:JD_TRY_APPLYNUMFILTER + * */ + applyNumFilter: process.env.JD_TRY_APPLYNUMFILTER || 99999, + /* + * 商品试用之间和获取商品之间的间隔, 单位:毫秒(1秒=1000毫秒) + * 可设置环境变量:JD_TRY_APPLYINTERVAL + * */ + applyInterval: process.env.JD_TRY_APPLYINTERVAL || 5000, + /* + * 商品数组的最大长度,通俗来说就是即将申请的商品队列长度 + * 例如设置为20,当第一次获取后获得12件,过滤后剩下5件,将会进行第二次获取,过滤后加上第一次剩余件数 + * 例如是18件,将会进行第三次获取,直到过滤完毕后为20件才会停止,不建议设置太大 + * 可设置环境变量:JD_TRY_MAXLENGTH + * */ + maxLength: 10 + } + + !(async() => { + // console.log(`\n本脚本默认不运行,也不建议运行\n如需运行请自行添加环境变量:JD_TRY,值填:true\n`) + await $.wait(1000) + if(process.env.JD_TRY && process.env.JD_TRY === 'true'){ + await requireConfig() + if(!$.cookiesArr[0]){ + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + for(let i = 0; i < $.cookiesArr.length; i++){ + message += "[通知] 闪电试用 \n\n --- \n\n" + if($.cookiesArr[i]){ + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await totalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if(!$.isLogin){ + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } + + username = $.UserName + if ($.UserName == "jd_4521b375ebb5d"){ + username = "锟子" + } + if ($.UserName == "jd_542c10c0222bc"){ + username = "康子" + } + if($.UserName == "jd_66dcb31363ef6"){ + username = "涛子" + } + if($.UserName == "18070420956_p"){ + username = "奇怪子" + } + if($.UserName == "jd_45d917547c763"){ + username = "跑腿小弟子" + } + if ($.UserName == "jd_66ea783827d30"){ + username = "军子" + } + if ($.UserName == "jd_4311ac0ff4456"){ + username = "居子" + } + maxSize = Math.floor(Math.random() * (10) + 8) + args_xh.maxLength = Math.floor(Math.random() * (10) + 8) + let list = maped[Math.floor(Math.random() * (6) + 0)] + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + message = message + "最大页数:" + maxSize + "最大长度:"+ args_xh.maxLength +"申请列表:" + list +" \n\n " + + $.totalTry = 0 + $.totalSuccess = 0 + let size = 1; + + for (let i =0;i { + postToDingTalk(e) + console.log(`❗️ ${$.name} 运行错误!\n${e}`) + }).finally(() => { + $.done() + }) + + function requireConfig(){ + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async() => { } } + //获取 Cookies + $.cookiesArr = [] + if($.isNode()){ + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if(jdCookieNode[item]){ + $.cookiesArr.push(jdCookieNode[item]) + } + }) + if(process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) + for (const key in args_xh) { + if(typeof args_xh[key] == 'string') { + args_xh[key] = Number(args_xh[key]) + } + } + // console.debug(args_xh) + resolve() + }) + } + + //获取商品列表并且过滤 By X1a0He + function try_feedsList(tabId, page){ + return new Promise((resolve, reject) => { + const body = JSON.stringify({ + "tabId": `${tabId}`, + "page": page, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_feedsList', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.debug(data) + // return + data = JSON.parse(data) + if(data.success){ + $.totalPages = data.data.pages + totalPages = data.data.pages + console.log(`获取到商品 ${data.data.feedList.length} 条\n`) + for(let i = 0; i < data.data.feedList.length; i++){ + if(trialActivityIdList.length > args_xh.maxLength){ + console.log('商品列表长度已满.结束获取') + }else + if(data.data.feedList[i].applyState === 1){ + console.log(`商品已申请试用:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].applyState !== null){ + console.log(`商品状态异常,跳过:${data.data.feedList[i].skuTitle}`) + continue + }else + if(data.data.feedList[i].skuTitle){ + console.log(`检测第 ${page} 页 第 ${i + 1} 个商品\n${data.data.feedList[i].skuTitle}`) + if(parseFloat(data.data.feedList[i].jdPrice) <= args_xh.jdPrice){ + console.log(`商品被过滤,${data.data.feedList[i].jdPrice} < ${args_xh.jdPrice} \n`) + }else if(parseFloat(data.data.feedList[i].supplyNum) > args_xh.minSupplyNum && data.data.feedList[i].supplyNum !== null){ + console.log(`商品被过滤,提供申请的份数大于预设申请的份数 \n`) + }else if(parseFloat(data.data.feedList[i].applyNum) > args_xh.applyNumFilter && data.data.feedList[i].applyNum !== null){ + console.log(`商品被过滤,已申请试用人数大于预设人数 \n`) + }else if(parseFloat(data.data.feedList[i].trialPrice) > args_xh.trialPrice){ + console.log(`商品被过滤,期待价格高于预设价格 \n`) + }else if(args_xh.titleFilters.some(fileter_word => data.data.feedList[i].skuTitle.includes(fileter_word))){ + console.log('商品被过滤,含有关键词 \n') + }else{ + console.log(`商品通过,将加入试用组,trialActivityId为${data.data.feedList[i].trialActivityId}\n`) + trialActivityIdList.push(data.data.feedList[i].trialActivityId) + trialActivityTitleList.push(data.data.feedList[i].skuTitle) + } + }else{ + console.log('skuTitle解析异常') + return + } + } + console.log(`当前试用组id如下,长度为:${trialActivityIdList.length}\n${trialActivityIdList}\n`) + } else { + console.log(`💩 获得试用列表失败: ${data.message}`) + } + } + } catch(e){ + console.log(e); + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + console.log(`${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_apply(title, activityId){ + return new Promise((resolve, reject) => { + console.log(`申请试用商品中...`) + console.log(`商品:${title}`) + console.log(`id为:${activityId}`) + const body = JSON.stringify({ + "activityId": activityId, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_apply', body) + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + $.totalTry++ + data = JSON.parse(data) + if(data.success && data.code === "1"){ // 申请成功 + message += "" + title + "\n\n" + message += "" + `-------\n\n` + "\n\n" + console.log(data.message) + $.totalSuccess++ + } else if(data.code === "-106"){ + console.log(data.message) // 未在申请时间内! + } else if(data.code === "-110"){ + console.log(data.message) // 您的申请已成功提交,请勿重复申请… + } else if(data.code === "-120"){ + console.log(data.message) // 您还不是会员,本品只限会员申请试用,请注册会员后申请! + } else if(data.code === "-167"){ + console.log(data.message) // 抱歉,此试用需为种草官才能申请。查看下方详情了解更多。 + } else { + console.log("申请失败", JSON.stringify(data)) + message += "" + JSON.stringify(data) + "\n\n" + message += "" + `-------\n\n` + "\n\n" + } + } + } catch(e){ + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function try_MyTrials(page, selected){ + return new Promise((resolve, reject) => { + switch(selected){ + case 1: + console.log('正在获取已申请的商品...') + break; + case 2: + console.log('正在获取申请成功的商品...') + break; + case 3: + console.log('正在获取申请失败的商品...') + break; + default: + console.log('selected错误') + } + const body = JSON.stringify({ + "page": page, + "selected": selected, // 1 - 已申请 2 - 成功列表,3 - 失败列表 + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_MyTrials', body) + option.headers.Referer = 'https://pro.m.jd.com/' + $.get(option, (err, resp, data) => { + try{ + if(err){ + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.log(data) + // return + data = JSON.parse(data) + if(data.success){ + //temp adjustment + if(selected == 2){ + if (data.success && data.data) { + $.successList = data.data.list.filter(item => { + return item.text.text.includes('试用资格将保留10天') + }) + console.log(`待领取: ${$.successList.length}个`) + } else { + console.log(`获得成功列表失败: ${data.message}`) + } + } + if(data.data.list.length > 0){ + let count = 0 + for(let item of data.data.list){ + console.log(`申请时间:${new Date(parseInt(item.applyTime)).toLocaleString()}`) + console.log(`申请商品:${item.trialName}`) + console.log(`当前状态:${item.text.text}`) + console.log(`剩余时间:${remaining(item.leftTime)}`) + + if (count < 3){ + message += "" + `申请商品:${item.trialName}` + "\n\n" + message += "" + `当前状态:${item.text.text}` + "\n\n" + message += "" + `-----\n\n` + "\n\n" + count ++ + } + + console.log() + } + } + // else { + // switch(selected){ + // case 1: + // console.log('无已申请的商品\n') + // break; + // case 2: + // console.log('无申请成功的商品\n') + // break; + // case 3: + // console.log('无申请失败的商品\n') + // break; + // default: + // console.log('selected错误') + // } + // } + } else { + console.log(`ERROR:try_MyTrials`) + } + } + } catch(e){ + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally{ + resolve() + } + }) + }) + } + + function remaining(time){ + let days = parseInt(time / (1000 * 60 * 60 * 24)); + let hours = parseInt((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + let minutes = parseInt((time % (1000 * 60 * 60)) / (1000 * 60)); + return `${days} 天 ${hours} 小时 ${minutes} 分` + } + + function taskurl_xh(appid, functionId, body = JSON.stringify({})){ + return { + "url": `${URL}?appid=${appid}&functionId=${functionId}&clientVersion=10.1.2&client=wh5&body=${encodeURIComponent(body)}`, + 'headers': { + 'Host': 'api.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': $.cookie, + 'Connection': 'keep-alive', + 'UserAgent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://prodev.m.jd.com/' + }, + } + } + + async function showMsg(){ + let message1 = `京东账号${$.index} ${$.nickName || $.UserName}\n🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + message += "" + `🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + "\n\n" + if(!args_xh.jdNotify || args_xh.jdNotify === 'false'){ + $.msg($.name, ``, message1, { + "open-url": 'https://try.m.jd.com/user' + }) + if($.isNode()) + notifyMsg += `${message1}\n\n` + } else { + console.log(message1) + } + } + + function totalBean(){ + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try{ + if(err){ + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if(data){ + data = JSON.parse(data); + if(data['retcode'] === 13){ + $.isLogin = false; //cookie过期 + return + } + if(data['retcode'] === 0){ + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch(e){ + $.logErr(e, resp) + } finally{ + resolve(); + } + }) + }) + } + + function jsonParse(str){ + if(typeof str == "string"){ + try{ + return JSON.parse(str); + } catch(e){ + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } + } + + // 来自 @chavyleung 大佬 + // https://raw.githubusercontent.com/chavyleung/scripts/master/Env.js + function Env(name, opts){ + class Http{ + constructor(env){ + this.env = env + } + + send(opts, method = 'GET'){ + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if(method === 'POST'){ + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if(err) reject(err) + else resolve(resp) + }) + }) + } + + get(opts){ + return this.send.call(this.env, opts) + } + + post(opts){ + return this.send.call(this.env, opts, 'POST') + } + } + + return new (class{ + constructor(name, opts){ + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } + + isNode(){ + return 'undefined' !== typeof module && !!module.exports + } + + isQuanX(){ + return 'undefined' !== typeof $task + } + + isSurge(){ + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } + + isLoon(){ + return 'undefined' !== typeof $loon + } + + toObj(str, defaultValue = null){ + try{ + return JSON.parse(str) + } catch{ + return defaultValue + } + } + + toStr(obj, defaultValue = null){ + try{ + return JSON.stringify(obj) + } catch{ + return defaultValue + } + } + + getjson(key, defaultValue){ + let json = defaultValue + const val = this.getdata(key) + if(val){ + try{ + json = JSON.parse(this.getdata(key)) + } catch{ } + } + return json + } + + setjson(val, key){ + try{ + return this.setdata(JSON.stringify(val), key) + } catch{ + return false + } + } + + getScript(url){ + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } + + runScript(script, runOpts){ + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } + + loaddata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if(isCurDirDataFile || isRootDirDataFile){ + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try{ + return JSON.parse(this.fs.readFileSync(datPath)) + } catch(e){ + return {} + } + } else return {} + } else return {} + } + + writedata(){ + if(this.isNode()){ + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if(isCurDirDataFile){ + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if(isRootDirDataFile){ + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } + + lodash_get(source, path, defaultValue = undefined){ + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for(const p of paths){ + result = Object(result)[p] + if(result === undefined){ + return defaultValue + } + } + return result + } + + lodash_set(obj, path, value){ + if(Object(obj) !== obj) return obj + if(!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path.slice(0, -1).reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } + + getdata(key){ + let val = this.getval(key) + // 如果以 @ + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if(objval){ + try{ + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch(e){ + val = '' + } + } + } + return val + } + + setdata(val, key){ + let issuc = false + if(/^@/.test(key)){ + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try{ + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch(e){ + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } + + getval(key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.read(key) + } else if(this.isQuanX()){ + return $prefs.valueForKey(key) + } else if(this.isNode()){ + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } + + setval(val, key){ + if(this.isSurge() || this.isLoon()){ + return $persistentStore.write(val, key) + } else if(this.isQuanX()){ + return $prefs.setValueForKey(val, key) + } else if(this.isNode()){ + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } + + initGotEnv(opts){ + this.got = this.got ? this.got : require('got') + this.cktough = this.cktough ? this.cktough : require('tough-cookie') + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar() + if(opts){ + opts.headers = opts.headers ? opts.headers : {} + if(undefined === opts.headers.Cookie && undefined === opts.cookieJar){ + opts.cookieJar = this.ckjar + } + } + } + + get(opts, callback = () => { }){ + if(opts.headers){ + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + this.got(opts).on('redirect', (resp, nextOpts) => { + try{ + if(resp.headers['set-cookie']){ + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if(ck){ + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch(e){ + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + post(opts, callback = () => { }){ + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if(opts.body && opts.headers && !opts.headers['Content-Type']){ + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if(opts.headers) delete opts.headers['Content-Length'] + if(this.isSurge() || this.isLoon()){ + if(this.isSurge() && this.isNeedRewrite){ + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if(!err && resp){ + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if(this.isQuanX()){ + opts.method = 'POST' + if(this.isNeedRewrite){ + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if(this.isNode()){ + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt){ + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if(/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for(let k in o) + if(new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } + + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts){ + const toEnvOpts = (rawopts) => { + if(!rawopts) return rawopts + if(typeof rawopts === 'string'){ + if(this.isLoon()) return rawopts + else if(this.isQuanX()) return { + 'open-url': rawopts + } + else if(this.isSurge()) return { + url: rawopts + } + else return undefined + } else if(typeof rawopts === 'object'){ + if(this.isLoon()){ + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if(this.isQuanX()){ + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if(this.isSurge()){ + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if(!this.isMute){ + if(this.isSurge() || this.isLoon()){ + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if(this.isQuanX()){ + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if(!this.isMuteLog){ + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } + + log(...logs){ + if(logs.length > 0){ + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } + + logErr(err, msg){ + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if(!isPrintSack){ + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } + + wait(time){ + return new Promise((resolve) => setTimeout(resolve, time)) + } + + done(val = {}){ + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if(this.isSurge() || this.isQuanX() || this.isLoon()){ + $done(val) + } + } + })(name, opts) + } + + + //我加的函数 + function postToDingTalk(messgae) { + const message1 = "" + messgae + // that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title":"闪电试用", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": true + } + } + + + $.post(toDingtalk(dingtalk,JSON.stringify(body)), (data,status,xhr)=>{ + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + },"json") + } + + + function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body:bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } + } + + function getPic(){ + let code = ["1.gif","2.png","3.png","4.png","5.gif","6.gif","7.gif","8.gif","9.gif","10.png","11.png"] + let address = "\n\n ![screenshot](https://cdn.jsdelivr.net/gh/selfImprHuang/Go-Tool@v1.2/test/emptyDirTest/3/" + + pos = parseInt(11*Math.random()) + address = address + code[pos] + ")" + return address + } \ No newline at end of file diff --git a/src/main/resources/test_trytryOne.js b/src/main/resources/test_trytryOne.js new file mode 100644 index 0000000..de67631 --- /dev/null +++ b/src/main/resources/test_trytryOne.js @@ -0,0 +1,1226 @@ +/* + * 由ZCY01二次修改:脚本默认不运行 + * 由 X1a0He 修复:依然保持脚本默认不运行 + * 如需运行请自行添加环境变量:JD_TRY,值填 true 即可运行 + * TG交流群:https://t.me/jd_zero205 + * TG通知频道:https://t.me/jd_zero205_tz + * + update 2021/09/05 + 京东试用:脚本更新地址 https://github.com/zero205/JD_tencent_scf/raw/main/jd_try.js + 脚本兼容: Node.js + 每天最多关注300个商店,但用户商店关注上限为500个。 + 请配合取关脚本试用,使用 jd_unsubscribe.js 提前取关至少250个商店确保京东试用脚本正常运行。 + * + * X1a0He留 + * 由于没有兼容Qx,原脚本已失效,建议原脚本的兼容Qx注释删了 + * 脚本是否耗时只看args_xh.maxLength的大小 + * 上一作者说了每天最多300个商店,总上限为500个,jd_unsubscribe.js我已更新为批量取关版 + * 请提前取关至少250个商店确保京东试用脚本正常运行 + * 没有写通知,是否申请成功没有进行通知,但脚本会把状态log出日志 + */ + + let dingtalk = "https://oapi.dingtalk.com/robot/send?access_token=d2b6042cb38f0df63e20797c002208d2710104750c18a1dc84d54106a859a3f0" + let dingtalk1 = "https://oapi.dingtalk.com/robot/send?access_token=a3e80da6f064321881fc38e43a07bfde7a61b6f18245454520fb749556cebfcd" + let totalPages = 999999 //总页数 + const $ = new Env('京东试用') + const URL = 'https://api.m.jd.com/client.action' + let trialActivityIdList = [] + let sensMessage = "试用\n\n" + let trialActivityTitleList = [] + let notifyMsg = '' + let message = "" + let minItemValue = 500 + let wordLength = 1000 + let process = { + env: { + "JD_TRY": "true" + } + } + // default params + let args_xh = { + channelEnd: Math.floor(Math.random() * (4) + 3), + channel: [1,2,3,4,5,10,12,15], + maxSize: 15, + listCount: 0, + /* + * 是否进行通知 + * 可设置环境变量:JD_TRY_NOTIFY + * */ + // isNotify: process.env.JD_TRY_NOTIFY || true, + // 商品原价,低于这个价格都不会试用 + jdPrice: process.env.JD_TRY_PRICE || 0, + /* + * 获取试用商品类型,默认为1 + * 1 - 精选 + * 2 - 闪电试用 + * 3 - 家用电器(可能会有变化) + * 4 - 手机数码(可能会有变化) + * 5 - 电脑办公(可能会有变化) + * 可设置环境变量:JD_TRY_TABID + * */ + // TODO: tab ids as array(support multi tabIds) + // tabId: process.env.JD_TRY_TABID && process.env.JD_TRY_TABID.split('@').map(Number) || [1], + tabId: process.env.JD_TRY_TABID || 1, + /* + * 试用商品标题过滤 + * 可设置环境变量:JD_TRY_TITLEFILTERS,关键词与关键词之间用@分隔 + * */ + titleFilters: ["玻璃","清洁球","钢丝球","消毒液","泡澡球","隔音耳塞","翻分器","眼罩","乒乓球","布袋","枕头套","仓鼠零食","胸包","书包","周岁","抓周","干眼症","密码锁","防滑垫","椅背置物袋","艾脐贴","车内清洁","清洁刷","香薰","防疫","密封袋","早教","保鲜膜","底座","万向滑轮","高升专","专升本","学历","床头台灯","收敛水","鸡毛掸子","中国结","匙扣","糖糖粉","灭蝇","苍蝇药","苍蝇拍","假发","补发","陶瓷瓶","冷兵器","汽车椅背","擦玻璃","垃圾袋","擦窗","平光镜","眼镜","气垫霜","球帽","食盐","彩铅","手动幕","玻珠幕","玻珠","电脑电源","切菜板","隔热棉","过滤棉","园艺工具","砍菜刀","枇杷秋梨膏","唑溶液","滑块袋","育苗盘","隔热板","碟子","酵素","儿童吸管","体温计","茗杯","砂锅","呼噜","湿粮","膝盖贴","面酱","切菜板","油罐","油壶","茶具","茶宠","眼药水","体温计","儿童乐园","热敷包","茶壶","保温棉","双面板","消防水带","摄像头","除菌洗地液","地面清洁液","清洁配件","洗地专用","鱼缸","鱼竿","挂篓","茶壶","沉香","盘香","启动电源","摆件车模","摄像头","咖啡豆","投屏器","声卡套装","靠背收纳袋","切菜板","趴趴枕","洗地液","刹车油","提示牌","告知牌","警示牌","静音阻尼","信纸","信封","PVC板","标识牌","标志牌","锯条","摇步器","圣杯","撑衣杆","梳子","马桶刷","鱼缸","刨木","改光膜","手推车","电钻","行车记录仪","垃圾处理器","拉柳枪","花洒","自拍杆","百日宴","存储卡","艾绒贴","艾灸贴","清洁软胶","保护镜","uv镜","枇杷雪梨膏","枇杷膏","皮套","保护壳","徽墨","SUP掌机","台账本","墨条","墨块","去毛器","高清配件" ,"拾音器" ,"麦克风","类纸膜", "坐骨膏", "神经痛贴", "专用贴", "鸳鸯锅", "4/3膜", "镜头贴","后膜","摄像头膜", "镜头膜","去角质","死皮","U盘","接线式直管","香囊袋","防疫香包","炖盅","如意碗","汽车头枕腰靠套装","湿手器","汤盅","面碗","风水鱼","打印机碳带", "标签纸", "不干胶标签带:","清洁液","提词器", "卡针", "儿童电话手表", "绷带","短裙","护具","卡册","黄金卡","贴布","护腕","鼠标手","儿童牙膏","锁头","闹钟","储奶袋","母乳","儿童电动牙刷","涂鸦贴纸","贴纸","抚奶嘴","牙套","戒奶嘴","断奶","饭盒","水凝膜","覆盖膜","背膜","百褶","半身裙","牙膏","风湿贴","刺激贴","冷敷贴","腰肌劳损","键盘垫","扭扭车","孩儿乐","儿童沐浴露","眼线笔","贴膜","笔","屏幕膜","修正带","封口机","对接头","网线","少儿读物","遮瑕","惯性小汽车","皮筋枪","身体乳","救生衣","裤","鞋","三轮车","起雾棒","干洗剂","白酒", "口罩","碳粉","私处","创可贴", "脖套" ,"牵引器" ,"木糖醇","富贵包","延长器","网卡","泡泡纸","戒烟","喷壶","刷头","面霜","宝宝霜","黑头","眼袋","防晒霜","护手霜","精华露","鼻头","细纹霜","抬头纹","美肌霜","素颜霜","儿童保温水杯","滋养霜","帽子","护膝","领带","露指","飞机杯","打飞机","保护膜","大头围","儿童随身","马丁靴","爸爸鞋","理发推","理发器","刀头","幕布","挡风玻璃","挡风板","乳液","测电笔", "测试", "请勿下单", "牛舌", "儿童玩具枪", "宣纸", "洋娃娃", "口琴", "磨砂壳", "亲子互动", "防卫尖刺", "折叠锯子", "牙签防水", "购物券", "材料包", "水勺", "碎发", "整理棒", "内裤", "莆田官网", "蚊香", "空调遥控器", "电视遥控器", "马桶垫", "锅铲", "电容笔", "茶勺", "瓜刨", "耳钉", "茶杯", "滤杯", "红绳", "装修", "钥匙扣", "美容院", "芦荟", "仿真小蛋糕", "儿童便捷", "遮瑕膏", "汽车摆件", "水枪", "润唇膏", "衬衫", "中老年", "拐杖", "牙签盒", "电风扇罩", "茶杯", "袜子", "掏耳", "爬爬垫", "滑板车", "格子长袖", "牙线", "粉扑", "粉扑盒子", "停车牌", "小勺子", "爽肤水", "防蚊裤", "0-12岁", "宝宝牙刷", "玩具女孩", "固定器", "润唇膏", "商务休闲", "儿童背包", "塑料士兵小军人玩具", "串珠玩具", "儿童串珠玩具", "运势书", "背心马甲", "示宽灯", "收银机", "收钱码", "空调罩", "效果图", "米小芽", "抵用券", "手工黏土", "儿童拌饭", "伊威", "菲妮小熊", "刀片", "割草机", "儿童n95", "儿童口罩", "音频线", "土工布", "抑菌膏", "win10", "日历", "玻璃吊", "竖笛", "角阀", "三角阀", "反光镜", "倒车", "童装", "童装男女童", "女童裤子", "八倍镜", "手提秤", "电子秤", "钓鱼手竿", "鱼饵", "护栏", "栅网", "狗链", "切割片", "汽油锯", "滤芯", "饲料", "九九乘法", "铁丝", "监狱", "隔离网", "宝宝玩具车", "成长裤", "女士内裤", "小兔女士", "浮漂", "儿童磨牙饼", "墙纸", "壁纸", "传菜铃", "红包封", "光驱", "挂绳", "增高", "宝宝鞋子", "女童裤子", "宝宝牙刷", "童装", "宝宝灯笼裤", "吃饭衣", "围兜", "牙刷收纳盒", "安全锤", "抛光机", "机油", "合成机油", "铅笔", "吸奶器", "鱼钩", "翻板钩", "口罩盒", "九九乘除", "耐火泥", "尼龙网", "侧挂式", "手术刀", "喷雾器", "注射器", "驱虫", "女士内裤,少女内裤", "树苗", "塑身裤", "笼子", "捆扎绳", "打包绳", "捆绑绳", "插销", "水乳", "光和青春", "测评", "在线直播", "HDMI", "LED", "SD", "SD卡", "VGA", "hdmi", "hpv", "led开关电源", "windows", "一次性", "一片装", "一盒", "万用表", "万藓灵", "丝袜", "中国电信", "丰胸", "丸", "乳液", "乳腺", "交换", "交换机", "享底价", "亿优信", "会员", "会员卡", "会议杯子", "便秘", "保健", "保护套", "保暖女裤", "保暖裤", "修护", "修眉", "修眉剪", "倒车镜", "假睫毛", "儿童奶粉", "儿童口罩", "儿童成长", "充电头", "充电桩", "免钉胶水", "养芝堂", "内衣", "冻干粉", "净水剂", "减肥", "分流", "分流器", "别针", "刮痧", "刮痧板", "刷牙头", "剂", "剃须刀配件", "削皮刀", "前列腺", "剥虾", "剪", "剪钳", "办公会议茶杯", "办公杯", "加温器", "包皮", "化妆", "半身不遂", "卡套", "卡尺", "卡托", "卧铺垫", "卸妆", "卸妆水", "压片", "参肽片", "反光条贴", "反光板", "反光贴", "口红", "口腔", "口腔抑菌", "号码卡", "同仁堂", "吸顶灯", "咬钩", "咽炎", "哑光", "哨", "哺乳", "哺乳套装", "唇釉", "啪啪", "嚼片", "围裙", "图钉", "地漏", "坐垫", "培训", "增生贴", "墨水", "墨盒", "墨粉", "复合肥", "外用", "多功能尺子", "天线", "夹", "奶瓶", "奶粉", "妆", "妇女", "婴幼儿", "婴儿", "孕妇装", "学习卡", "安全帽", "安全裤", "定做", "定做榻榻米", "定制", "宝宝奶粉", "宝宝口罩", "宝宝成长", "实验课", "宠物", "密封条", "小学", "尤尖锐湿疣", "尺", "尼龙管", "尿", "尿素", "尿素霜", "屏蔽袋", "屏风", "工作手册", "工作服", "巾", "平衡线", "幼儿", "幼儿园", "幼儿配方", "座垫", "座套", "康复", "延时", "延迟", "延迟喷雾", "开果器", "彩带", "情趣", "成人票", "手册", "手套", "手机卡", "手机壳", "手机维修", "打底", "打草绳", "打钉枪", "扩音器", "把手", "护理", "护肤", "护腿套", "护踝", "报警器", "抽屉轨道", "拔毒膏", "挂钩", "指套", "挑逗", "挤奶器", "掏耳朵", "插座", "摄像头镜片", "敏感", "敏肌", "教学","教育", "教学视频", "教材", "数据线", "文胸", "替换头", "月子", "有机肥", "机顶盒", "条码", "架", "染发剂", "柔肤水", "框", "梯", "梯子", "模具", "止痒", "毛囊", "毛孔", "水平仪", "水晶头", "水龙头", "汤勺", "汽车脚垫", "油漆", "泡沫", "泡沫胶", "泥灸", "注射针", "泳衣", "洁面", "洗面", "流量卡", "浮标", "润滑", "润颜乳", "清水剂", "渔具", "滤网", "漆", "漱口水", "灯泡", "灶台贴纸", "烧水棒", "热熔胶枪", "煤油", "燃气报警器", "爸爸装", "牙刷头", "牙刷替换头", "牛仔裤", "犬粮", "狗狗沐浴露", "狗粮", "猪油", "猫咪", "猫咪玩具", "猫玩具", "猫砂", "猫粮", "玛咖片", "玻尿酸", "玻璃镜片", "玻璃防雾剂", "用友", "甲醛", "电池", "电缆剪", "电话卡", "电话牌", "男士用品", "男童", "疣", "疮", "痉挛", "痔疮", "瘙痒", "皮带", "眉笔", "眼影", "眼镜", "眼霜", "睡裤", "睫毛", "矫正", "矫正器", "矫正带", "砂盆", "砂纸", "硅胶", "磨脚", "磨脚石", "祛斑霜", "神露", "福来油", "空气滤芯", "空调滤", "窗帘", "筒灯", "筷子", "粉刺", "粉底", "粉饼", "精华", "精华乳", "精油", "纱窗", "纱网", "纳米砖", "纸尿裤", "纹眉", "纹眉色料", "线上", "线上课程", "绑带", "维修", "维生素", "绿幕", "绿草皮", "美容棒", "美工刀", "美甲", "美缝", "美胸", "翻身", "老人用品", "老爷车", "老花", "考", "耳罩", "职业装", "肥佬", "肥料", "胖子", "胶囊", "胶带", "脚垫", "腋毛", "腋毛神器", "腮红", "腰带", "自慰", "舒缓水", "色料", "艾条", "花萃", "葛根", "虾青素", "蚊帐", "蚯蚓粪", "蟑螂药", "补墙", "补水", "表带", "袖套", "裁纸刀", "裤头", "裸妆", "视线盲区贴纸", "解码线", "训练器", "试听课", "试用装", "课", "赠品", "足浴粉", "车漆", "车篓子", "车轮", "车锁", "轨道", "转换", "转换器", "转接", "轮胎", "轮胎专用胶水", "软膏", "辅食", "运费专拍", "连衣裙", "适配", "适配器", "遮挡布", "避光垫", "避孕套", "酒", "金属探测", "金属探测器", "钉子", "钙咀嚼片", "钢化膜", "钢化蛋", "钳", "铆管", "锁精环", "镜片", "镰刀", "长筒袜", "门帘", "门把手", "门槛条", "门锁", "防撞条", "防静电", "阴囊", "阴部", "雨刮", "雨披", "雨衣", "青春痘", "静电", "静脉曲张", "非卖品", "面膜", "鞋垫", "鞋带", "领结", "额头贴", "飞机杯", "香薰精油", "鱼线", "鸭肠", "鹿鞭", "黄膏贴", "鼠标垫", "鼻影", "鼻毛", "鼻毛器", "龟头", "锯片", "单拍不发货", "火花塞", "红花手套", "温度计"], + // 试用价格(中了要花多少钱),高于这个价格都不会试用,小于等于才会试用 + trialPrice: 0, + /* + * 最小提供数量,例如试用商品只提供2份试用资格,当前设置为1,则会进行申请 + * 若只提供5分试用资格,当前设置为10,则不会申请 + * 可设置环境变量:JD_TRY_MINSUPPLYNUM + * */ + minSupplyNum: 20, + /* + * 过滤大于设定值的已申请人数,例如下面设置的1000,A商品已经有1001人申请了,则A商品不会进行申请,会被跳过 + * 可设置环境变量:JD_TRY_APPLYNUMFILTER + * */ + applyNumFilter: process.env.JD_TRY_APPLYNUMFILTER || 99999, + /* + * 商品试用之间和获取商品之间的间隔, 单位:毫秒(1秒=1000毫秒) + * 可设置环境变量:JD_TRY_APPLYINTERVAL + * */ + applyInterval: process.env.JD_TRY_APPLYINTERVAL || 5000, + /* + * 商品数组的最大长度,通俗来说就是即将申请的商品队列长度 + * 例如设置为20,当第一次获取后获得12件,过滤后剩下5件,将会进行第二次获取,过滤后加上第一次剩余件数 + * 例如是18件,将会进行第三次获取,直到过滤完毕后为20件才会停止,不建议设置太大 + * 可设置环境变量:JD_TRY_MAXLENGTH + * */ + maxLength: 10 + + } + + !(async () => { + // console.log(`\n本脚本默认不运行,也不建议运行\n如需运行请自行添加环境变量:JD_TRY,值填:true\n`) + await $.wait(1000) + if (process.env.JD_TRY && process.env.JD_TRY === 'true') { + await requireConfig() + if (!$.cookiesArr[0]) { + $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/', { + "open-url": "https://bean.m.jd.com/" + }) + return + } + for (let i = 0; i < $.cookiesArr.length; i++) { + message += "[通知] 随机试用 \n\n --- \n\n" + await $.wait(Math.floor(Math.random() * (10000) + 5000)); + if ($.cookiesArr[i]) { + $.cookie = $.cookiesArr[i]; + $.UserName = decodeURIComponent($.cookie.match(/pt_pin=(.+?);/) && $.cookie.match(/pt_pin=(.+?);/)[1]) + $.index = i + 1; + $.isLogin = true; + $.nickName = ''; + await totalBean(); + console.log(`\n开始【京东账号${$.index}】${$.nickName || $.UserName}\n`); + if (!$.isLogin) { + $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, { + "open-url": "https://bean.m.jd.com/bean/signIndex.action" + }); + await $.notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); + continue + } + + username = $.UserName + if ($.UserName == "jd_4521b375ebb5d") { + username = "锟子" + } + if ($.UserName == "jd_542c10c0222bc") { + username = "康子" + } + if ($.UserName == "jd_66dcb31363ef6") { + username = "涛子" + } + if ($.UserName == "18070420956_p") { + username = "奇怪子" + } + if ($.UserName == "jd_45d917547c763") { + username = "跑腿小弟子" + } + if ($.UserName == "jd_66ea783827d30") { + username = "军子" + } + if ($.UserName == "jd_4311ac0ff4456") { + username = "居子" + } + args_xh.maxLength = Math.floor(Math.random() * (20) + 10) + let list = getList() + //加上名称 + message = message + "【羊毛姐妹】" + username + " \n\n " + message = message + "" + "数量大小:" + args_xh.maxLength + "申请列表:" + list + " \n\n " + + $.totalTry = 0 + $.totalSuccess = 0 + let size = 1; + + m = i + for (let i = 0; i < list.length; i++) { + args_xh.maxSize = Math.floor(Math.random() * (30) + 10) + message = message + "" + "最大列表长度:" + args_xh.maxSize + " 申请列表:" + list[i] + " \n\n" + while (args_xh.listCount + trialActivityIdList.length < args_xh.maxLength && size < args_xh.maxSize && size < totalPages - 1) { + console.log(`\n正在进行第 ${size} 次获取试用商品\n`) + console.log(`\n当前产品页面总长度为${totalPages} 页\n`) + await try_feedsList(list[i], size++) + if (m == 0 && sensMessage.length > wordLength) { + console.log("-----------------------------------") + console.log("-----------------------------------") + console.log("-----------------------------------") + console.log("-----------------------------------") + console.log("-----------------------------------") + console.log("-----------------------------------") + console.log("-----------------------------------") + postToDingTalk1(sensMessage) + sensMessage = "试用\n\n" + }else{ + console.log("------------清空------------") + console.log("------------清空------------") + sensMessage = "试用\n\n" + } + if (args_xh.listCount + trialActivityIdList.length < args_xh.maxLength) { + args_xh.applyInterval = Math.floor(Math.random() * (4000) + 5000) + console.log(`间隔延时中,请等待 ${args_xh.applyInterval} ms`) + await $.wait(args_xh.applyInterval); + } + } + args_xh.listCount += trialActivityIdList.length + console.log("正在执行试用申请...") + await $.wait(args_xh.applyInterval); + for (let i = 0; i < trialActivityIdList.length; i++) { + args_xh.applyInterval = Math.floor(Math.random() * (4000) + 5000) + await try_apply(trialActivityTitleList[i], trialActivityIdList[i]) + console.log(`间隔延时中,请等待 ${args_xh.applyInterval} ms\n`) + await $.wait(args_xh.applyInterval); + } + message = message + "" + "本循环申请数量:" + trialActivityIdList.length + "总量限制为:" + args_xh.listCount + " \n\n " + trialActivityIdList = [] + trialActivityTitleList = [] + size = 1 + totalPages == 999999 + } + + + console.log("试用申请执行完毕...") + + // await try_MyTrials(1, 1) //申请中的商品 + await try_MyTrials(1, 2) //申请成功的商品 + // await try_MyTrials(1, 3) //申请失败的商品 + await showMsg() + //下一个要重新去拉列表 + trialActivityIdList = [] + trialActivityTitleList = [] + await $.wait(Math.floor(Math.random() * (15000) + 5000)); + } + + args_xh.listCount = 0 + postToDingTalk(message) + message = "" + totalPages == 999999 + } + await $.notify.sendNotify(`${$.name}`, notifyMsg); + } else { + console.log(`\n您未设置运行【京东试用】脚本,结束运行!\n`) + } + })().catch((e) => { + postToDingTalk(e + message) + console.log(`❗️ ${$.name} 运行错误!\n${e}`) + }).finally(() => { + $.done() + }) + + + function getList() { + for (i = 0; i < Math.floor(Math.random() * (5001) + 500); i++) { + index1 = Math.floor(Math.random() * (args_xh.channel.length) + 0) + index2 = Math.floor(Math.random() * (args_xh.channel.length) + 0) + temp = args_xh.channel[index1] + args_xh.channel[index1] = args_xh.channel[index2] + args_xh.channel[index2] = temp + } + + return args_xh.channel.slice(0, args_xh.channelEnd) + } + + function requireConfig() { + return new Promise(resolve => { + console.log('开始获取配置文件\n') + $.notify = $.isNode() ? require('./sendNotify') : { sendNotify: async () => { } } + //获取 Cookies + $.cookiesArr = [] + if ($.isNode()) { + //Node.js用户请在jdCookie.js处填写京东ck; + const jdCookieNode = require('./jdCookie.js'); + Object.keys(jdCookieNode).forEach((item) => { + if (jdCookieNode[item]) { + $.cookiesArr.push(jdCookieNode[item]) + } + }) + if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { }; + } else { + //IOS等用户直接用NobyDa的jd $.cookie + $.cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); + } + console.log(`共${$.cookiesArr.length}个京东账号\n`) + for (const key in args_xh) { + if (typeof args_xh[key] == 'string') { + args_xh[key] = Number(args_xh[key]) + } + } + // console.debug(args_xh) + resolve() + }) + } + + //获取商品列表并且过滤 By X1a0He + function try_feedsList(tabId, page) { + return new Promise((resolve, reject) => { + + const body = JSON.stringify({ + "tabId": `${tabId}`, + "page": page, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_feedsList', body) + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.debug(data) + // return + data = JSON.parse(data) + if (totalPages == 999999) { + message = message + "" + " 当前最大页数为:" + data.data.pages + " \n\n" + } + if (data.success) { + $.totalPages = data.data.pages + totalPages = data.data.pages + console.log(`获取到商品 ${data.data.feedList.length} 条\n`) + for (let i = 0; i < data.data.feedList.length; i++) { + if (args_xh.listCount + trialActivityIdList.length >= args_xh.maxLength) { + console.log('商品列表长度已满.结束获取') + } else + if (data.data.feedList[i].applyState === 1) { + console.log(`商品已申请试用:${data.data.feedList[i].skuTitle}`) + continue + } else + if (data.data.feedList[i].applyState !== null) { + console.log(`商品状态异常,跳过:${data.data.feedList[i].skuTitle}`) + continue + } else + if (data.data.feedList[i].skuTitle) { + console.log(`检测第 ${page} 页 第 ${i + 1} 个商品\n${data.data.feedList[i].skuTitle}`) + if (parseFloat(data.data.feedList[i].jdPrice) <= args_xh.jdPrice) { + console.log(`商品被过滤,${data.data.feedList[i].jdPrice} < ${args_xh.jdPrice} \n`) + } else if (parseFloat(data.data.feedList[i].supplyNum) > args_xh.minSupplyNum && data.data.feedList[i].supplyNum !== null) { + console.log(`商品被过滤,提供申请的份数大于预设申请的份数 \n`) + } else if (parseFloat(data.data.feedList[i].applyNum) > args_xh.applyNumFilter && data.data.feedList[i].applyNum !== null) { + console.log(`商品被过滤,已申请试用人数大于预设人数 \n`) + } else if (parseFloat(data.data.feedList[i].trialPrice) > args_xh.trialPrice && data.data.feedList[i].jdPrice < minItemValue) { + console.log(`商品被过滤,期待价格高于预设价格 \n`) + } else if (args_xh.titleFilters.some(fileter_word => data.data.feedList[i].skuTitle.includes(fileter_word))) { + sensMessage += "" + data.data.feedList[i].skuTitle + " \n\n" + args_xh.titleFilters.some(fileter_word =>{ + if (data.data.feedList[i].skuTitle.includes(fileter_word)){ + sensMessage += "" + "敏感词汇:" + fileter_word + " \n\n" + } + }) + console.log('商品被过滤,含有关键词 \n') + } else { + console.log(`商品通过,将加入试用组,trialActivityId为${data.data.feedList[i].trialActivityId}\n`) + trialActivityIdList.push(data.data.feedList[i].trialActivityId) + trialActivityTitleList.push(data.data.feedList[i].skuTitle) + } + } else { + console.log('skuTitle解析异常') + return + } + } + console.log(`当前试用组id如下,长度为:${trialActivityIdList.length}\n${trialActivityIdList}\n`) + } else { + console.log(`💩 获得试用列表失败: ${data.message}`) + } + } + } catch (e) { + console.log(e); + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + console.log(`${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) + } + + function try_apply(title, activityId) { + return new Promise((resolve, reject) => { + console.log(`申请试用商品中...`) + console.log(`商品:${title}`) + console.log(`id为:${activityId}`) + const body = JSON.stringify({ + "activityId": activityId, + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_apply', body) + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + $.totalTry++ + data = JSON.parse(data) + if (data.success && data.code === "1") { // 申请成功 + message += "" + title + "\n\n" + message += "" + `-------\n\n` + "\n\n" + console.log(data.message) + $.totalSuccess++ + } else if (data.code === "-106") { + console.log(data.message) // 未在申请时间内! + } else if (data.code === "-110") { + console.log(data.message) // 您的申请已成功提交,请勿重复申请… + } else if (data.code === "-120") { + console.log(data.message) // 您还不是会员,本品只限会员申请试用,请注册会员后申请! + } else if (data.code === "-167") { + console.log(data.message) // 抱歉,此试用需为种草官才能申请。查看下方详情了解更多。 + } else { + console.log("申请失败", JSON.stringify(data)) + message += "" + JSON.stringify(data) + "\n\n" + message += "" + `-------\n\n` + "\n\n" + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) + } + + function try_MyTrials(page, selected) { + return new Promise((resolve, reject) => { + switch (selected) { + case 1: + console.log('正在获取已申请的商品...') + break; + case 2: + console.log('正在获取申请成功的商品...') + break; + case 3: + console.log('正在获取申请失败的商品...') + break; + default: + console.log('selected错误') + } + const body = JSON.stringify({ + "page": page, + "selected": selected, // 1 - 已申请 2 - 成功列表,3 - 失败列表 + "previewTime": "" + }); + let option = taskurl_xh('newtry', 'try_MyTrials', body) + option.headers.Referer = 'https://pro.m.jd.com/' + $.get(option, (err, resp, data) => { + try { + if (err) { + console.log(`🚫 ${arguments.callee.name.toString()} API请求失败,请检查网路\n${JSON.stringify(err)}`) + } else { + // console.log(data) + // return + data = JSON.parse(data) + if (data.success) { + //temp adjustment + if (selected == 2) { + if (data.success && data.data) { + $.successList = data.data.list.filter(item => { + return item.text.text.includes('试用资格将保留10天') + }) + console.log(`待领取: ${$.successList.length}个`) + } else { + console.log(`获得成功列表失败: ${data.message}`) + } + } + if (data.data.list.length > 0) { + let count = 0 + for (let item of data.data.list) { + console.log(`申请时间:${new Date(parseInt(item.applyTime)).toLocaleString()}`) + console.log(`申请商品:${item.trialName}`) + console.log(`当前状态:${item.text.text}`) + console.log(`剩余时间:${remaining(item.leftTime)}`) + + if (count < 3) { + message += "" + `申请商品:${item.trialName}` + "\n\n" + message += "" + `当前状态:${item.text.text}` + "\n\n" + message += "" + `-----\n\n` + "\n\n" + count++ + } + + console.log() + } + } + // else { + // switch(selected){ + // case 1: + // console.log('无已申请的商品\n') + // break; + // case 2: + // console.log('无申请成功的商品\n') + // break; + // case 3: + // console.log('无申请失败的商品\n') + // break; + // default: + // console.log('selected错误') + // } + // } + } else { + console.log(`ERROR:try_MyTrials`) + } + } + } catch (e) { + reject(`⚠️ ${arguments.callee.name.toString()} API返回结果解析出错\n${e}\n${JSON.stringify(data)}`) + } finally { + resolve() + } + }) + }) + } + + function remaining(time) { + let days = parseInt(time / (1000 * 60 * 60 * 24)); + let hours = parseInt((time % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); + let minutes = parseInt((time % (1000 * 60 * 60)) / (1000 * 60)); + return `${days} 天 ${hours} 小时 ${minutes} 分` + } + + function taskurl_xh(appid, functionId, body = JSON.stringify({})) { + return { + "url": `${URL}?appid=${appid}&functionId=${functionId}&clientVersion=10.1.2&client=wh5&body=${encodeURIComponent(body)}`, + 'headers': { + 'Host': 'api.m.jd.com', + 'Accept-Encoding': 'gzip, deflate, br', + 'Cookie': $.cookie, + 'Connection': 'keep-alive', + 'UserAgent': 'jdapp;iPhone;10.1.2;15.0;ff2caa92a8529e4788a34b3d8d4df66d9573f499;network/wifi;model/iPhone13,4;addressid/2074196292;appBuild/167802;jdSupportDarkMode/1;Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1', + 'Accept-Language': 'zh-cn', + 'Referer': 'https://prodev.m.jd.com/' + }, + } + } + + async function showMsg() { + let message1 = `京东账号${$.index} ${$.nickName || $.UserName}\n🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + message += "" + `🎉 本次申请:${$.totalSuccess}/${$.totalTry}个商品🛒\n🎉 ${$.successList.length}个商品待领取` + "\n\n" + if (!args_xh.jdNotify || args_xh.jdNotify === 'false') { + $.msg($.name, ``, message1, { + "open-url": 'https://try.m.jd.com/user' + }) + if ($.isNode()) + notifyMsg += `${message1}\n\n` + } else { + console.log(message1) + } + } + + function totalBean() { + return new Promise(async resolve => { + const options = { + "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, + "headers": { + "Accept": "application/json,text/plain, */*", + "Content-Type": "application/x-www-form-urlencoded", + "Accept-Encoding": "gzip, deflate, br", + "Accept-Language": "zh-cn", + "Connection": "keep-alive", + "Cookie": $.cookie, + "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", + "User-Agent": $.isNode() ? (process.env.JD_USER_AGENT ? process.env.JD_USER_AGENT : (require('./USER_AGENTS').USER_AGENT)) : ($.getdata('JDUA') ? $.getdata('JDUA') : "jdapp;iPhone;9.4.4;14.3;network/4g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1") + }, + "timeout": 10000, + } + $.post(options, (err, resp, data) => { + try { + if (err) { + console.log(`${JSON.stringify(err)}`) + console.log(`${$.name} API请求失败,请检查网路重试`) + } else { + if (data) { + data = JSON.parse(data); + if (data['retcode'] === 13) { + $.isLogin = false; //cookie过期 + return + } + if (data['retcode'] === 0) { + $.nickName = (data['base'] && data['base'].nickname) || $.UserName; + } else { + $.nickName = $.UserName + } + } else { + console.log(`京东服务器返回空数据`) + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }) + }) + } + + function jsonParse(str) { + if (typeof str == "string") { + try { + return JSON.parse(str); + } catch (e) { + console.log(e); + $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') + return []; + } + } + } + + // 来自 @chavyleung 大佬 + // https://raw.githubusercontent.com/chavyleung/scripts/master/Env.js + function Env(name, opts) { + class Http { + constructor(env) { + this.env = env + } + + send(opts, method = 'GET') { + opts = typeof opts === 'string' ? { + url: opts + } : opts + let sender = this.get + if (method === 'POST') { + sender = this.post + } + return new Promise((resolve, reject) => { + sender.call(this, opts, (err, resp, body) => { + if (err) reject(err) + else resolve(resp) + }) + }) + } + + get(opts) { + return this.send.call(this.env, opts) + } + + post(opts) { + return this.send.call(this.env, opts, 'POST') + } + } + + return new (class { + constructor(name, opts) { + this.name = name + this.http = new Http(this) + this.data = null + this.dataFile = 'box.dat' + this.logs = [] + this.isMute = false + this.isNeedRewrite = false + this.logSeparator = '\n' + this.startTime = new Date().getTime() + Object.assign(this, opts) + this.log('', `🔔${this.name}, 开始!`) + } + + isNode() { + return 'undefined' !== typeof module && !!module.exports + } + + isQuanX() { + return 'undefined' !== typeof $task + } + + isSurge() { + return 'undefined' !== typeof $httpClient && 'undefined' === typeof $loon + } + + isLoon() { + return 'undefined' !== typeof $loon + } + + toObj(str, defaultValue = null) { + try { + return JSON.parse(str) + } catch { + return defaultValue + } + } + + toStr(obj, defaultValue = null) { + try { + return JSON.stringify(obj) + } catch { + return defaultValue + } + } + + getjson(key, defaultValue) { + let json = defaultValue + const val = this.getdata(key) + if (val) { + try { + json = JSON.parse(this.getdata(key)) + } catch { } + } + return json + } + + setjson(val, key) { + try { + return this.setdata(JSON.stringify(val), key) + } catch { + return false + } + } + + getScript(url) { + return new Promise((resolve) => { + this.get({ + url + }, (err, resp, body) => resolve(body)) + }) + } + + runScript(script, runOpts) { + return new Promise((resolve) => { + let httpapi = this.getdata('@chavy_boxjs_userCfgs.httpapi') + httpapi = httpapi ? httpapi.replace(/\n/g, '').trim() : httpapi + let httpapi_timeout = this.getdata('@chavy_boxjs_userCfgs.httpapi_timeout') + httpapi_timeout = httpapi_timeout ? httpapi_timeout * 1 : 20 + httpapi_timeout = runOpts && runOpts.timeout ? runOpts.timeout : httpapi_timeout + const [key, addr] = httpapi.split('@') + const opts = { + url: `http://${addr}/v1/scripting/evaluate`, + body: { + script_text: script, + mock_type: 'cron', + timeout: httpapi_timeout + }, + headers: { + 'X-Key': key, + 'Accept': '*/*' + } + } + this.post(opts, (err, resp, body) => resolve(body)) + }).catch((e) => this.logErr(e)) + } + + loaddata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + if (isCurDirDataFile || isRootDirDataFile) { + const datPath = isCurDirDataFile ? curDirDataFilePath : rootDirDataFilePath + try { + return JSON.parse(this.fs.readFileSync(datPath)) + } catch (e) { + return {} + } + } else return {} + } else return {} + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require('fs') + this.path = this.path ? this.path : require('path') + const curDirDataFilePath = this.path.resolve(this.dataFile) + const rootDirDataFilePath = this.path.resolve(process.cwd(), this.dataFile) + const isCurDirDataFile = this.fs.existsSync(curDirDataFilePath) + const isRootDirDataFile = !isCurDirDataFile && this.fs.existsSync(rootDirDataFilePath) + const jsondata = JSON.stringify(this.data) + if (isCurDirDataFile) { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } else if (isRootDirDataFile) { + this.fs.writeFileSync(rootDirDataFilePath, jsondata) + } else { + this.fs.writeFileSync(curDirDataFilePath, jsondata) + } + } + } + + lodash_get(source, path, defaultValue = undefined) { + const paths = path.replace(/\[(\d+)\]/g, '.$1').split('.') + let result = source + for (const p of paths) { + result = Object(result)[p] + if (result === undefined) { + return defaultValue + } + } + return result + } + + lodash_set(obj, path, value) { + if (Object(obj) !== obj) return obj + if (!Array.isArray(path)) path = path.toString().match(/[^.[\]]+/g) || [] + path.slice(0, -1).reduce((a, c, i) => (Object(a[c]) === a[c] ? a[c] : (a[c] = Math.abs(path[i + 1]) >> 0 === +path[i + 1] ? [] : {})), obj)[ + path[path.length - 1] + ] = value + return obj + } + + getdata(key) { + let val = this.getval(key) + // 如果以 @ + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objval = objkey ? this.getval(objkey) : '' + if (objval) { + try { + const objedval = JSON.parse(objval) + val = objedval ? this.lodash_get(objedval, paths, '') : val + } catch (e) { + val = '' + } + } + } + return val + } + + setdata(val, key) { + let issuc = false + if (/^@/.test(key)) { + const [, objkey, paths] = /^@(.*?)\.(.*?)$/.exec(key) + const objdat = this.getval(objkey) + const objval = objkey ? (objdat === 'null' ? null : objdat || '{}') : '{}' + try { + const objedval = JSON.parse(objval) + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } catch (e) { + const objedval = {} + this.lodash_set(objedval, paths, val) + issuc = this.setval(JSON.stringify(objedval), objkey) + } + } else { + issuc = this.setval(val, key) + } + return issuc + } + + getval(key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.read(key) + } else if (this.isQuanX()) { + return $prefs.valueForKey(key) + } else if (this.isNode()) { + this.data = this.loaddata() + return this.data[key] + } else { + return (this.data && this.data[key]) || null + } + } + + setval(val, key) { + if (this.isSurge() || this.isLoon()) { + return $persistentStore.write(val, key) + } else if (this.isQuanX()) { + return $prefs.setValueForKey(val, key) + } else if (this.isNode()) { + this.data = this.loaddata() + this.data[key] = val + this.writedata() + return true + } else { + return (this.data && this.data[key]) || null + } + } + + initGotEnv(opts) { + this.got = this.got ? this.got : require('got') + this.cktough = this.cktough ? this.cktough : require('tough-cookie') + this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar() + if (opts) { + opts.headers = opts.headers ? opts.headers : {} + if (undefined === opts.headers.Cookie && undefined === opts.cookieJar) { + opts.cookieJar = this.ckjar + } + } + } + + get(opts, callback = () => { }) { + if (opts.headers) { + delete opts.headers['Content-Type'] + delete opts.headers['Content-Length'] + } + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.get(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + this.got(opts).on('redirect', (resp, nextOpts) => { + try { + if (resp.headers['set-cookie']) { + const ck = resp.headers['set-cookie'].map(this.cktough.Cookie.parse).toString() + if (ck) { + this.ckjar.setCookieSync(ck, null) + } + nextOpts.cookieJar = this.ckjar + } + } catch (e) { + this.logErr(e) + } + // this.ckjar.setCookieSync(resp.headers['set-cookie'].map(Cookie.parse).toString()) + }).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + post(opts, callback = () => { }) { + // 如果指定了请求体, 但没指定`Content-Type`, 则自动生成 + if (opts.body && opts.headers && !opts.headers['Content-Type']) { + opts.headers['Content-Type'] = 'application/x-www-form-urlencoded' + } + if (opts.headers) delete opts.headers['Content-Length'] + if (this.isSurge() || this.isLoon()) { + if (this.isSurge() && this.isNeedRewrite) { + opts.headers = opts.headers || {} + Object.assign(opts.headers, { + 'X-Surge-Skip-Scripting': false + }) + } + $httpClient.post(opts, (err, resp, body) => { + if (!err && resp) { + resp.body = body + resp.statusCode = resp.status + } + callback(err, resp, body) + }) + } else if (this.isQuanX()) { + opts.method = 'POST' + if (this.isNeedRewrite) { + opts.opts = opts.opts || {} + Object.assign(opts.opts, { + hints: false + }) + } + $task.fetch(opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => callback(err) + ) + } else if (this.isNode()) { + this.initGotEnv(opts) + const { + url, + ..._opts + } = opts + this.got.post(url, _opts).then( + (resp) => { + const { + statusCode: status, + statusCode, + headers, + body + } = resp + callback(null, { + status, + statusCode, + headers, + body + }, body) + }, + (err) => { + const { + message: error, + response: resp + } = err + callback(error, resp, resp && resp.body) + } + ) + } + } + + /** + * + * 示例:$.time('yyyy-MM-dd qq HH:mm:ss.S') + * :$.time('yyyyMMddHHmmssS') + * y:年 M:月 d:日 q:季 H:时 m:分 s:秒 S:毫秒 + * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符 + * @param {*} fmt 格式化参数 + * + */ + time(fmt) { + let o = { + 'M+': new Date().getMonth() + 1, + 'd+': new Date().getDate(), + 'H+': new Date().getHours(), + 'm+': new Date().getMinutes(), + 's+': new Date().getSeconds(), + 'q+': Math.floor((new Date().getMonth() + 3) / 3), + 'S': new Date().getMilliseconds() + } + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date().getFullYear() + '').substr(4 - RegExp.$1.length)) + for (let k in o) + if (new RegExp('(' + k + ')').test(fmt)) + fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) + return fmt + } + + /** + * 系统通知 + * + * > 通知参数: 同时支持 QuanX 和 Loon 两种格式, EnvJs根据运行环境自动转换, Surge 环境不支持多媒体通知 + * + * 示例: + * $.msg(title, subt, desc, 'twitter://') + * $.msg(title, subt, desc, { 'open-url': 'twitter://', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * $.msg(title, subt, desc, { 'open-url': 'https://bing.com', 'media-url': 'https://github.githubassets.com/images/modules/open_graph/github-mark.png' }) + * + * @param {*} title 标题 + * @param {*} subt 副标题 + * @param {*} desc 通知详情 + * @param {*} opts 通知参数 + * + */ + msg(title = name, subt = '', desc = '', opts) { + const toEnvOpts = (rawopts) => { + if (!rawopts) return rawopts + if (typeof rawopts === 'string') { + if (this.isLoon()) return rawopts + else if (this.isQuanX()) return { + 'open-url': rawopts + } + else if (this.isSurge()) return { + url: rawopts + } + else return undefined + } else if (typeof rawopts === 'object') { + if (this.isLoon()) { + let openUrl = rawopts.openUrl || rawopts.url || rawopts['open-url'] + let mediaUrl = rawopts.mediaUrl || rawopts['media-url'] + return { + openUrl, + mediaUrl + } + } else if (this.isQuanX()) { + let openUrl = rawopts['open-url'] || rawopts.url || rawopts.openUrl + let mediaUrl = rawopts['media-url'] || rawopts.mediaUrl + return { + 'open-url': openUrl, + 'media-url': mediaUrl + } + } else if (this.isSurge()) { + let openUrl = rawopts.url || rawopts.openUrl || rawopts['open-url'] + return { + url: openUrl + } + } + } else { + return undefined + } + } + if (!this.isMute) { + if (this.isSurge() || this.isLoon()) { + $notification.post(title, subt, desc, toEnvOpts(opts)) + } else if (this.isQuanX()) { + $notify(title, subt, desc, toEnvOpts(opts)) + } + } + if (!this.isMuteLog) { + let logs = ['', '==============📣系统通知📣=============='] + logs.push(title) + subt ? logs.push(subt) : '' + desc ? logs.push(desc) : '' + console.log(logs.join('\n')) + this.logs = this.logs.concat(logs) + } + } + + log(...logs) { + if (logs.length > 0) { + this.logs = [...this.logs, ...logs] + } + console.log(logs.join(this.logSeparator)) + } + + logErr(err, msg) { + const isPrintSack = !this.isSurge() && !this.isQuanX() && !this.isLoon() + if (!isPrintSack) { + this.log('', `❗️${this.name}, 错误!`, err) + } else { + this.log('', `❗️${this.name}, 错误!`, err.stack) + } + } + + wait(time) { + return new Promise((resolve) => setTimeout(resolve, time)) + } + + done(val = {}) { + const endTime = new Date().getTime() + const costTime = (endTime - this.startTime) / 1000 + this.log('', `🔔${this.name}, 结束! 🕛 ${costTime} 秒`) + this.log() + if (this.isSurge() || this.isQuanX() || this.isLoon()) { + $done(val) + } + } + })(name, opts) + } + + + //我加的函数 + function postToDingTalk(messgae) { + const message1 = "" + messgae + // that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title": "随机试用", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": true + } + } + + + $.post(toDingtalk(dingtalk, JSON.stringify(body)), (data, status, xhr) => { + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }, "json") + } + + + function toDingtalk(urlmain, bodyMain) { + return { + url: urlmain, + body: bodyMain, + headers: { 'Content-Type': 'application/json;charset=utf-8' }, + timeout: 10000, + } + } + + + function postToDingTalk1(messgae) { + const message1 = "" + messgae + // that.log(messgae) + + const body = { + "msgtype": "markdown", + "markdown": { + "title": "错误筛选", + "text": message1 + }, + "at": { + "atMobiles": [], + "isAtAll": false + } + } + + $.post(toDingtalk(dingtalk1, JSON.stringify(body)), (data, status, xhr) => { + try { + that.log(resp) + that.log(data) + if (err) { + that.log(JSON.stringify(err)); + $.logErr(err); + } else { + if (safeGet(data)) { + $.duckRes = JSON.parse(data); + } + } + } catch (e) { + $.logErr(e, resp) + } finally { + resolve(); + } + }, "json") +} \ No newline at end of file diff --git a/src/main/test/emptyDirTest/1/11.txt b/src/main/test/emptyDirTest/1/11.txt new file mode 100644 index 0000000..344c56e --- /dev/null +++ b/src/main/test/emptyDirTest/1/11.txt @@ -0,0 +1,10 @@ +12321321 +3213 + +3213213 +321321 +321321 +3 + +32132131 +321321321 diff --git a/src/main/test/emptyDirTest/1/222.png b/src/main/test/emptyDirTest/1/222.png new file mode 100644 index 0000000000000000000000000000000000000000..483a711ec91391b8a233fd4d8d5c7a0348e9bb1e GIT binary patch literal 39383 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 M07*qoM6N<$f|gfRJ^%m! literal 0 HcmV?d00001 diff --git a/src/main/test/emptyDirTest/1/233.png b/src/main/test/emptyDirTest/1/233.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b32f23905ee47f3b18f35667c6396ac7bce3b8 GIT binary patch literal 40231 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 DK*PAW literal 0 HcmV?d00001 diff --git a/src/main/test/emptyDirTest/1/mmm.png b/src/main/test/emptyDirTest/1/mmm.png new file mode 100644 index 0000000000000000000000000000000000000000..6053a6eff0a30438890fb7f5c934f7a8219fbaf8 GIT binary patch literal 135598 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

#l#Nr+Y4#8L5Zy4!uA;ngxl!BG5~l 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 #wc}6<%|N1l~jAKPG7dBw%1epU1I zmlZ0_k2VdB^K!2M<(G%vwW7=LUt?ThS$<{_Un8AYKFod>QT9GD@%L{sIDy9Qq`I?l zR_f=uwhc%I7C(KpBPzBCxUBB}Vt2~kVBdj;+Z#0(i}a6%Fl-Io*(9JeG*mLn;D+_@ z@LU~VsHKJGtMC23OOs<2_czc_uW%+VX}b&g5>QfZ@XeYODEn{ zo40%NXJv{gI-JBGg9=xv!0Erd#HWKorH1Id^ds!88R!+A(bOqbX&Hx3L#X8!2z( zytakrkfn*Hwz=F@VHXsL_c;@6z|+gqXQoMG9?iW=0EHx1C*L1`4XTO4xRKMbSkQRG zH3%|4F+HGz4qdJBUKGhMd7NR7FW*5ypSn+k6-}j7z z!3zG|55+D7eh^NS$`t%i(^?EN^Jrl<0V(*IAOrs$v0JkMh~XZjAkNI=9!&2uBjg(d ix$6ACA41#Ng9R%8)+k$YKD0uBKR(E+zORxt3Hd*}Zfj)# literal 0 HcmV?d00001 diff --git a/src/main/test/emptyDirTest/2/1/11.txt b/src/main/test/emptyDirTest/2/1/11.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/main/test/emptyDirTest/2/2222/4/4/111.txt b/src/main/test/emptyDirTest/2/2222/4/4/111.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/main/test/emptyDirTest/2/2222/4/4/4/4/1211.txt b/src/main/test/emptyDirTest/2/2222/4/4/4/4/1211.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/main/test/emptyDirTest/3/11.txt b/src/main/test/emptyDirTest/3/11.txt new file mode 100644 index 0000000..e69de29 diff --git a/src/main/test/util/FileUtilTest.java b/src/main/test/util/FileUtilTest.java new file mode 100644 index 0000000..14cf865 --- /dev/null +++ b/src/main/test/util/FileUtilTest.java @@ -0,0 +1,30 @@ +package util; + +import java.io.File; + +public class FileUtilTest { + + public static void main(String[] args) { + System.out.println(FileUtil.isFile("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\emptyDirTest\\1\\11.txt")); + System.out.println(FileUtil.isDir("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\emptyDirTest")); +// for(File file:FileUtil.findAllDirFromDir("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\emptyDirTest")){ +// System.out.println(file.getName()); +// } + + System.out.println("==================================="); + for(File file:FileUtil.findAllEmptyDirFromDir("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\emptyDirTest")){ + System.out.println(file.getName()); + } +// +// System.out.println("==================================="); +// for(File file:FileUtil.findAllFile(new File("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\emptyDirTest"))){ +// System.out.println(file.getName()); +// } +// +// + System.out.println("==================================="); + for(File file:FileUtil.findAllNotEmptyDirFromDir("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\emptyDirTest")){ + System.out.println(file.getName()); + } + } +} diff --git a/src/main/test/util/FullFillTimeValueTest.java b/src/main/test/util/FullFillTimeValueTest.java new file mode 100644 index 0000000..c86d920 --- /dev/null +++ b/src/main/test/util/FullFillTimeValueTest.java @@ -0,0 +1,52 @@ +package util; + +import com.google.common.collect.Lists; +import entity.OriginTimeValue; +import entity.TargetTimeValue; +import util.time.FillFullTimeValueUtil; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.TimeZone; + +public class FullFillTimeValueTest { + + + public static void main(String[] args) { + List originTimeValueList = Lists.newArrayList(); + originTimeValueList.add(new OriginTimeValue(1542995383, 109991)); + + List targetTimeValues1 = FillFullTimeValueUtil.MINUTE.fullFillTimeValue(LocalDateTime.now(), LocalDateTime.now() + .plusDays(1), 1, originTimeValueList, + TimeZone.getDefault()); + + + List targetTimeValues2 = FillFullTimeValueUtil.HOUR.fullFillTimeValue(LocalDateTime.now(), LocalDateTime.now() + .plusDays(1), 2, originTimeValueList, + TimeZone.getDefault()); + + List targetTimeValues3 = FillFullTimeValueUtil.DAY.fullFillTimeValue(LocalDateTime.now(), LocalDateTime.now() + .plusDays(100), 10, originTimeValueList, + TimeZone.getDefault()); + + List targetTimeValues4 = FillFullTimeValueUtil.MINUTE.fullFillTimeValue(LocalDateTime.now(), LocalDateTime.now() + .plusDays(1), 1, null, + TimeZone.getDefault()); + + + targetTimeValues1.forEach(targetTimeValue -> System.out.println(targetTimeValue.getTime() + " , " + targetTimeValue.getValue())); + + System.out.println("---------------------------------------------------------------------"); + + targetTimeValues2.forEach(targetTimeValue -> System.out.println(targetTimeValue.getTime() + " , " + targetTimeValue.getValue())); + + System.out.println("---------------------------------------------------------------------"); + + targetTimeValues3.forEach(targetTimeValue -> System.out.println(targetTimeValue.getTime() + " , " + targetTimeValue.getValue())); + + System.out.println("---------------------------------------------------------------------"); + + targetTimeValues4.forEach(targetTimeValue -> System.out.println(targetTimeValue.getTime() + " , " + targetTimeValue.getValue())); + + } +} diff --git a/src/main/test/util/MessageUtilsTest.java b/src/main/test/util/MessageUtilsTest.java new file mode 100644 index 0000000..3d0e1f0 --- /dev/null +++ b/src/main/test/util/MessageUtilsTest.java @@ -0,0 +1,29 @@ +package util; + +public class MessageUtilsTest { + + + public static void main(String[] args) { + String pattern = "{0}----{1}======={2}_______{3}"; + System.out.println(MessageUtils.format(pattern,"我是零","我是一","我是2","我是三")); + System.out.println(MessageUtils.format(pattern,"我是零","我是一")); + System.out.println(MessageUtils.format(pattern,"我是零","我是一","我是2","我是三","我是多的","我又多了")); + xxx[] a = new xxx[] {new xxx("123",222),new xxx("123",555),new xxx("999",222)}; + System.out.println(MessageUtils.format(pattern,a)); + + String i = "{ --},{}"; + System.out.println(MessageUtils.format(i,"我是零","我是一")); + System.out.println(MessageUtils.format(i,a)); + + } +} + +class xxx{ + String a; + int b; + + public xxx(String a, int b) { + this.a = a; + this.b = b; + } +} diff --git a/src/main/test/util/PageUtilTest.java b/src/main/test/util/PageUtilTest.java new file mode 100644 index 0000000..cc7d0ef --- /dev/null +++ b/src/main/test/util/PageUtilTest.java @@ -0,0 +1,49 @@ +package util; + + +import entity.CommonPageResp; + +import java.util.ArrayList; +import java.util.List; + + +public class PageUtilTest { + + + private static List valueList = new ArrayList<>(); + private static List emptyList = new ArrayList<>(); + private static List nullList =null; + + public static void dataMake(){ + valueList.add("1"); + valueList.add("2"); + valueList.add("3"); + valueList.add("4"); + valueList.add("5"); + valueList.add("6"); + valueList.add("7"); + valueList.add("8"); + valueList.add("9"); + valueList.add("10"); + } + + public static void main(String[] args) { + dataMake(); + +// CommonPageResp result = PageUtil.pagingListFromZero(valueList,-1,100); + CommonPageResp result1 = PageUtil.pagingListFromZero(valueList,1,2); + CommonPageResp result2 = PageUtil.pagingListFromZero(valueList,0,2); + CommonPageResp result3 = PageUtil.pagingListFromZero(valueList,100,2); + CommonPageResp result5 = PageUtil.pagingListFromZero(emptyList,100,3); + CommonPageResp result6 = PageUtil.pagingListFromZero(nullList,100,2); + + +// CommonPageResp result = PageUtil.pagingListFromOne(valueList,-1,100); + CommonPageResp result7 = PageUtil.pagingListFromOne(valueList,1,2); + CommonPageResp result8 = PageUtil.pagingListFromOne(valueList,2,2); + CommonPageResp result9 = PageUtil.pagingListFromOne(valueList,100,2); + CommonPageResp result10 = PageUtil.pagingListFromOne(emptyList,100,3); + CommonPageResp result11 = PageUtil.pagingListFromOne(nullList,100,2); + System.out.println("直接断点查看结果"); + } +} \ No newline at end of file diff --git a/src/main/test/util/StringUtilsTest.java b/src/main/test/util/StringUtilsTest.java new file mode 100644 index 0000000..a64db1c --- /dev/null +++ b/src/main/test/util/StringUtilsTest.java @@ -0,0 +1,82 @@ +package util; + +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +public class StringUtilsTest { + + + public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination { + System.out.println( StringUtils.upperFirstLetter("abx123")); + System.out.println( StringUtils.upperFirstLetter("123abx123")); + System.out.println( StringUtils.upperFirstLetter("%%#@abx123")); + + + System.out.println( StringUtils.lowerFirstLetter("Abx123")); + System.out.println( StringUtils.lowerFirstLetter("123abx123")); + System.out.println( StringUtils.lowerFirstLetter("%%#@abx123")); + + System.out.println( StringUtils.upperAllLetter("Abx123")); + System.out.println( StringUtils.upperAllLetter("123abx123")); + System.out.println( StringUtils.upperAllLetter("%%#@abx123")); + + + System.out.println( StringUtils.lowerAllLetter("Abx123")); + System.out.println( StringUtils.lowerAllLetter("123abx123")); + System.out.println( StringUtils.lowerAllLetter("%%#@abx123")); + + + System.out.println( StringUtils.appendAll("%%#@abx123","dsadasdsad")); + System.out.println( StringUtils.appendAll("%%#@abx123")); + System.out.println( StringUtils.appendAll()); + System.out.println( StringUtils.appendAll("%%#@abx123","dasde2weqwewq","d dasdsa dasdas da dsa")); + + + System.out.println( StringUtils.isContainChinese("%%#@abx123")); + System.out.println( StringUtils.isContainChinese("%%#@哈哈哈哈的撒娇低价十九大uiyhuids")); + System.out.println( StringUtils.isContainChinese("")); + System.out.println( StringUtils.isContainChinese("大数99092jkjj大声道")); + System.out.println( StringUtils.isContainChinese("大数99092jkjj")); + + System.out.println( StringUtils.isChineseChar('1')); + System.out.println( StringUtils.isChineseChar('我')); + + System.out.println( StringUtils.toPinyinUpper("我爱中国")); + System.out.println( StringUtils.toPinyinUpper("%%#@我爱中国")); + System.out.println( StringUtils.toPinyinUpper("")); + System.out.println( StringUtils.toPinyinUpper("我爱中国12321dsad")); + System.out.println( StringUtils.toPinyinUpper("12321dsad")); + + + System.out.println( StringUtils.toPinyinLower("我爱中国")); + System.out.println( StringUtils.toPinyinLower("%%#@我爱中国")); + System.out.println( StringUtils.toPinyinLower("")); + System.out.println( StringUtils.toPinyinLower("我爱中国12321dsad")); + System.out.println( StringUtils.toPinyinLower("12321dsad")); + + + + System.out.println( StringUtils.toPinyinPhoneticSignUpper("我爱中国")); + System.out.println( StringUtils.toPinyinPhoneticSignUpper("%%#@我爱中国")); + System.out.println( StringUtils.toPinyinPhoneticSignUpper("")); + System.out.println( StringUtils.toPinyinPhoneticSignUpper("我爱中国12321dsad")); + System.out.println( StringUtils.toPinyinPhoneticSignUpper("12321dsad")); + + + + System.out.println( StringUtils.toPinyinPhoneticSignLower("我爱中国")); + System.out.println( StringUtils.toPinyinPhoneticSignLower("%%#@我爱中国")); + System.out.println( StringUtils.toPinyinPhoneticSignLower("")); + System.out.println( StringUtils.toPinyinPhoneticSignLower("我爱中国12321dsad")); + System.out.println( StringUtils.toPinyinPhoneticSignLower("12321dsad")); + + System.out.println(StringUtils.replacePattern("ABCDEFG","[A-C]")); + System.out.println(StringUtils.replacePattern("ABCDEFG12333","[A-C1-3]")); + System.out.println(StringUtils.replacePattern("X432432^&*(DSAD","[A-C1-2]")); + + System.out.println(StringUtils.replacePattern("ABCDEFG","XYZ","[A-C]")); + System.out.println(StringUtils.replacePattern("ABCDEFG12333","YYYM","[A-C1-3]")); + System.out.println(StringUtils.replacePattern("X432432^&*(DSAD","中文,213321sdadsa","[A-C1-2]")); + } + + +} diff --git a/src/main/test/util/image/CaptchaUtilTest.java b/src/main/test/util/image/CaptchaUtilTest.java new file mode 100644 index 0000000..3f4bf6f --- /dev/null +++ b/src/main/test/util/image/CaptchaUtilTest.java @@ -0,0 +1,13 @@ +package util.image; + +public class CaptchaUtilTest { + + + public static void main(String[] args) { + CaptchaUtil captchaUtil = new CaptchaUtil(); + System.out.println(captchaUtil.generalCode()); + captchaUtil.generateCaptchaImage("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\image\\captcha\\test.jpg"); + //自定义code的处理 + captchaUtil.generateCaptchaImage("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\image\\captcha\\test1.jpg","xy2312sa"); + } +} diff --git a/src/main/test/util/image/JpegImager/2002013.jpg b/src/main/test/util/image/JpegImager/2002013.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d1c873f8566b2972ff995a31686d697fd0c442bc GIT binary patch literal 849187 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

v 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≫+9ehMXd*(3Y+t^KoPoTGh!5!Gy9=j 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%0AJm)m*{KP+-RgGUN}04>3((>LpMo41g31mKiz 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�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 KhN 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

QX&;?q1e?j0tN`iSW> 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Ƀ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 X?p1cmAb-380Uz^A*2XPHUP=E0YIBx4 literal 0 HcmV?d00001 diff --git a/src/main/test/util/image/QRCodeUtilTest.java b/src/main/test/util/image/QRCodeUtilTest.java new file mode 100644 index 0000000..21767fa --- /dev/null +++ b/src/main/test/util/image/QRCodeUtilTest.java @@ -0,0 +1,32 @@ +package util.image; + +import java.awt.*; +import java.awt.image.BufferedImage; + +public class QRCodeUtilTest { + + public static void main(String[] args) { + QRCodeUtil qrCodeUtil = new QRCodeUtil(); + qrCodeUtil.getQrCodeItem().setContent("我测试一下"); + qrCodeUtil.getQrCodeItem().setContentFont(new Font("宋体",Font.BOLD, 12)); + qrCodeUtil.getQrCodeItem().setContentColor(Color.RED); + BufferedImage bufferedImage = qrCodeUtil.createQrCodeImage(); + qrCodeUtil.createQrCodeWithImage("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\image\\QRCode\\default.jpg",bufferedImage); + + BufferedImage bufferedImage1 = qrCodeUtil.createQrCodeImage(); + bufferedImage1 = qrCodeUtil.drawContent(bufferedImage1); + qrCodeUtil.createQrCodeWithImage("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\image\\QRCode\\content.jpg",bufferedImage1); + + BufferedImage bufferedImage2 = qrCodeUtil.createQrCodeImage(); + bufferedImage2 = qrCodeUtil.drawLogo(bufferedImage2); + qrCodeUtil.createQrCodeWithImage("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\image\\QRCode\\logo1.jpg",bufferedImage2); + + BufferedImage bufferedImage3 = qrCodeUtil.createQrCodeImage(); + bufferedImage3 = qrCodeUtil.drawLogo(bufferedImage3); + bufferedImage3 = qrCodeUtil.drawContent(bufferedImage3); + qrCodeUtil.createQrCodeWithImage("F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\image\\QRCode\\logoContent.jpg",bufferedImage3); + + + } + +} diff --git a/src/main/test/util/transform/TransformTest.java b/src/main/test/util/transform/TransformTest.java new file mode 100644 index 0000000..571f00c --- /dev/null +++ b/src/main/test/util/transform/TransformTest.java @@ -0,0 +1,63 @@ +package util.transform; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +public class TransformTest { + + public static void main(String[] args) { + System.out.println("测试JsonBinder"); + + JsonObject jsonObject = new JsonObject(); + jsonObject.setX1(123); + jsonObject.setX2("123"); + jsonObject.setX3(new JsonObject()); + String jsonString = JsonBinder.toJson(jsonObject); + System.out.println(jsonString); + System.out.println(JsonBinder.fromJson(jsonString, JsonObject.class).getX2()); + + System.out.println("测试XmlBinder"); + String xmlString = XmlBinder.convertToXml(jsonObject); + System.out.println(xmlString); + + System.out.println(XmlBinder.convertXmlStrToObject(xmlString,JsonObject.class).getX2()); + XmlBinder.convertToXml(jsonObject,"F:\\Java个人代码\\Java_Utils\\src\\main\\test\\util\\transform\\transform.xml"); + } + + @XmlRootElement(name = "xml") + @XmlAccessorType(XmlAccessType.FIELD) + static class JsonObject { + @XmlElement(name = "x1") + int x1; + @XmlElement(name = "x2") + String x2; + @XmlElement(name = "x3") + JsonObject x3; + + public int getX1() { + return x1; + } + + public void setX1(int x1) { + this.x1 = x1; + } + + public String getX2() { + return x2; + } + + public void setX2(String x2) { + this.x2 = x2; + } + + public JsonObject getX3() { + return x3; + } + + public void setX3(JsonObject x3) { + this.x3 = x3; + } + } +} diff --git a/src/main/test/util/tree/TreeUtilTest.java b/src/main/test/util/tree/TreeUtilTest.java new file mode 100644 index 0000000..2fad8cb --- /dev/null +++ b/src/main/test/util/tree/TreeUtilTest.java @@ -0,0 +1,19 @@ +package util.tree; + +import com.alibaba.fastjson.JSON; + +public class TreeUtilTest { + public static void main(String[] args) { + String treeNodeString = "[{\"code\":\"aa\",\"parentCode\":\"a\"},{\"code\":\"aaa\",\"parentCode\":\"aa\"},{\"code\":\"aaaa\"," + + "\"parentCode\":\"aaa\"},{\"code\":\"bbbb\",\"parentCode\":\"aaa\"},{\"code\":\"XXX\",\"parentCode\":\"aaaa\"}," + + "{\"code\":\"22121\",\"parentCode\":\"XXX\"},{\"code\":\"a\",\"parentCode\":\"0\"},{\"code\":\"222\",\"parentCode\":\"a\"}," + + "{\"code\":\"AXMW\",\"parentCode\":\"222\"}]"; + System.out.println(TreeUtils.getCodePath(JSON.parseArray(treeNodeString, TreeNode.class),"aa")); + System.out.println(TreeUtils.getCodePath(JSON.parseArray(treeNodeString, TreeNode.class),"mmmm")); + + TreeNode2 t2 = TreeUtils.getTreeWithChildNodeList(JSON.parseArray(treeNodeString, TreeNode2.class),"a"); + TreeNode2 t3 = TreeUtils.getTreeWithChildNodeList(JSON.parseArray(treeNodeString, TreeNode2.class),"mmmm"); + TreeNode2 t4 = TreeUtils.getTreeWithChildNodeList(JSON.parseArray(treeNodeString, TreeNode2.class),"AXMW"); + System.out.println(""); + } +} diff --git a/src/main/test/util/zip/ZipTest.java b/src/main/test/util/zip/ZipTest.java new file mode 100644 index 0000000..22578c8 --- /dev/null +++ b/src/main/test/util/zip/ZipTest.java @@ -0,0 +1,134 @@ +/* + * @(#) TestGzip + * 版权声明 网宿科技, 版权所有 违者必究 + * + *
Copyright: Copyright (c) 2018 + *
Company:网宿科技 + *
@author Administrator + *
@description 功能描述 + *
2018-11-09 20:30:59 + */ + +package util.zip; + +import com.google.common.collect.Lists; +import entity.FileItem; +import org.springframework.util.StopWatch; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import util.FileUtil; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.List; +import java.util.UUID; + + +/** + * 关联WS业务--日志下载 + * 参考地址:https://www.cnblogs.com/guochunyi/p/5311261.html + */ +public class ZipTest { + + + public static void main(String[] args) throws IOException { + //这边的测试我没有放入对应的文件,因为太大了,所以如果想要测试,需要在相应的目录放入对应带下的文件才能进行测试... + testGzip(); + } + + public static void testGzip() throws IOException { + String Path1M = ZipTest.class.getClassLoader().getResource("/test/testDownload").getPath(); + String path10M = ZipTest.class.getClassLoader().getResource("/test/test10M").getPath(); + String path100M = ZipTest.class.getClassLoader().getResource("/test/test100M").getPath(); + String path1000M = ZipTest.class.getClassLoader().getResource("/test/test1000M").getPath(); + System.out.println("测试1M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testGzipOnce(Path1M); + } + System.out.println("测试10M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testGzipOnce(path10M); + } + System.out.println("测试100M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testGzipOnce(path100M); + } + System.out.println("测试1000M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testGzipOnce(path1000M); + } + + System.out.println("测试1M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testZipOnce(Path1M); + } + System.out.println("测试10M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testZipOnce(path10M); + } + System.out.println("测试100M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testZipOnce(path100M); + } + System.out.println("测试1000M数据的压缩时间"); + for (int i = 0; i < 3; i++) { + testZipOnce(path1000M); + } + } + + + private static void testZipOnce(String path) throws IOException { + String filePath = ZipTest.class.getClassLoader().getResource("/test").getPath(); + File packageFile = new File(filePath + UUID.randomUUID().toString().replaceAll("-", "")); + packageFile.mkdir(); + String zPath = packageFile.getPath() + File.separator + UUID.randomUUID().toString().replaceAll("-", "") + ".zip"; + new File(zPath).createNewFile(); + + File file = ZipOutputUtil.compress(path, zPath); + System.out.println(file.getName()); + } + + private static void testGzipOnce(String path) throws IOException { + String filePath = ZipTest.class.getClassLoader().getResource("/test").getPath(); + File packageFile = new File(filePath + UUID.randomUUID().toString().replaceAll("-", "")); + packageFile.mkdir(); + String tarPath = packageFile.getPath() + File.separator + UUID.randomUUID().toString().replaceAll("-", "") + ".tar"; + String gzPath = packageFile.getPath() + File.separator + UUID.randomUUID().toString().replaceAll("-", "") + ".gz"; + new File(gzPath).createNewFile(); + List files = Lists.newArrayList(); + File file = new File(path); + File[] file1 = file.listFiles(); + for (File file2 : file1) { + files.add(file2); + } + File filex = TarArchiveGZIPOutputUtil.compress(files, tarPath); + System.out.println(filex.getName()); + } + + @RequestMapping(value = "/testFile1", method = RequestMethod.POST) + public void testFile1() throws FileNotFoundException { + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + String filePath = ZipTest.class.getClassLoader().getResource("/test").getPath(); + File packageFile = new File(filePath + UUID.randomUUID().toString().replaceAll("-", "")); + packageFile.mkdir(); + + String path = ZipTest.class.getClassLoader().getResource("/test/testgzip").getPath(); + File file = new File(path); + File[] files = file.listFiles(); + List fileItems = Lists.newArrayList(); + + for (File file1 : files) { + FileItem fileItem = new FileItem(); + fileItem.setInputStream(new FileInputStream(file1)); + fileItem.setFileName(file1.getName()); + fileItems.add(fileItem); + } + + FileUtil.storeFiles(fileItems, packageFile.getPath()); + stopWatch.stop(); + System.out.println(stopWatch.getTotalTimeMillis() / 1000.0000 + " s"); + } +}

)HW6f>-w5G;@X_N^t~85y-TCsMNC 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 z z$kH$B^Gp9fMQ`GkWct4Uf2Yw&Z8Aa88B-e&WOJEJ%`JP2xB!ZR0*c$@l8R}9d!>!0 z3794*nrnfe;+m$pw!3HMZZ=lto|&2EGB)-3@%sbdcn)~(`@Zh;IwAIMHc1R}&&=%F1~|lrkUhmz+?|4nBT-E% z6!O-h?75H742uTYK-v-LqKK$(PHX)3xy~&QWZ9X)%KYdJx0v^>#0y&s*~qO61tqR> zS5L*mtp{64hH#+3k?g` zOtEA{S>$Zsg|^!=P>@jLkA+vw=opu|tRtB)Kg`R+E0+xZ`tXKg&u9k}xme|9hOumn zm~k`qpQIKh0%F&HZPC;F_GQZ_?-vv(pMAjFku}ObG`vPot{f)oV`?V8DS2*9@z%{B z9v*YyznA)lVOp#P@LpyJ;sZ|SyH`Y7Dx?NeFIyvKsG28Q?f%_0?S!0tZ_Z;;HL|xq z;mZhfT|@W9JXfXnpZ0O7hNImAc@n+TU*o5cu9OC0jblvau8TI#X?;9m+t=ob<|5c! zCIlU(3L`NCoH8G3DcLP`^T>%usxwoT4E*#7N4^9kM%4g&i;i~IInlVujn6;$4D`7E zGB}Mu<78D}%(6kiA2Rr}g@)9yCS_u^trW$t$F$Sd5yeiCpX_nT3YQ?>Mn_)Rl&X{} zPLy2S1%+tzmv{ho=HUg;V91*%W2Q{OVRi#P?V0*-lAlSu7>N%uKNt~%mFYQEBoFCM znQts=xd0Axz>MMe^=W~R3%=M2m6n1CWHnbH$jdu7LWvL@)EXaRqmYR3d~%FpYchB6 zbv?=s>7LS?91E@(S?P|Lt=96mn4Om7@TiK7{*FcEMDs-XG`M|a(jpwgF${Fd(kacU zD`Sli2&b}|#RK@)j51zVsvqf2IoxvAX`r{y>Y#O49Q`A_#ZhB#ky0JyF zG3K^G6ymWT)pbFR{^#Btd1YSr%cr3g+l~>5N0G++0C1mixLo&^QBcj!(SegLP=SxD zX@WM1kk^Ekyi|SRWtCkk*}?|Ylp8MhgcN*)lrH+B)nVCY%oXsj8dElfv%0 zK6My34N?FZ!CPcr&wv2*3)WBEty67OLA;;w#e2@X48Jc@wUL8t^>k%X;$6 z&M4$Vo05Os-|~Ylv=_8+>Shbr@8%b~@R5sGrDt(VFD@Th(C+?Miv_Mdp{a6zvuxRD z>D*`V`U3G++Y?Mk!IY zwcuy}@BjHn##DnZMm+iip>C+in99JtsPt#ht2G%dCv-ICIhWfmd)(HsnQ$dnnmCf3 z(u;OQg?cU3s%w;yGO;7Ym1Fw_a*1aw+=jUGS07!51*0*Am;Wks!wkd^!oU3KhX{*& zKPWlXv!{cdjdIM5*l(=;vnM`lNB=UNG(M;?gc z_|5Zlwl1{i-t1a946NYTXqew8zr!7SoQ^;G=Bbgdg=$tOI`T;2*y_KE2HNb=2Xc+o zu@$8Y6#fMVXy?$rj9y&VY=` zRN~)LVd7(Yg;e{`p8fm(O9VJ7;)CjdE)%vxUfz!yN=GGJ9^f=Uze@<@s`<+ZD zq4nS-U_-6*%3KKzsYe57 z+HS^Vb&MaRO()8SaYrhHvdw)$>*gv`EOXcW!{!{^yS*4Fn~>ioI459_E4#)NF6H}s zp{C*FmQ;;lBG%~Kk(F7;`13h~)D}lMS_;xm>#}*yvRpGF9YnF<$^U55ZYxL)#5C6+ z4(`x#&p66mzlcf(^U>rHyWOnbBBjfjI0;3u>$@*+LsR5$JNH21mv&_oONt|sd_DOi zO#D92>*k@85?q{?&y5HvZ5>?s)K6k!J;u|jr6%B>o_WTo6+6Cs8_SehzsjR7Or7a% zRbyZz!^PY(dHk~!v#usQd(KT%h+1kWJ=VNT01RZo^zo7_1T0|200e&Y^G!$|@_hdu z$OB0n%w?tB<2m25jdEcXs6SPW9r?5u|oKt@Nb&8M|0*m^7^Lw{1 z0OD9`lOU=5H&d%NK~p z7AuuJ4!{bwyhv}%Z36Aw34slmpd)vub2;NeRF4&>l)7a2R16b29008 zmM+$Id9KR#_re6-zQc@t_VH{;+x$SBXcyEFHJ^^M10y$(_35#eO;#(j%!r(72Vx>5 z&jW(!8yMJCB`zXjrtr*hj=_Xb9gK1vR{Eyc*REDx#A)?9;EoA)RO|HOx6N_3^>NJfQdlE-ekC|!dK=KGV-m{_o%vSTif-tud~ zxy1&}ybg~qXu4`{S~JY8uB}WCots-DRxih_wKdlQdmBX($HVH0^3t*iwVUeDP{O+%DzlUWtt?gBIK@P-Ikz@J}z6;wOdT6`m$hjNiZ_Gj@Pu z?vcHspz9N3X;b*IhtSZ%Q#x`LmTvJE3&jH`=V%;zqa4Alrly7z7x^<2nhiMDLxNI! zrTe>_P@0QV9L%i+r7!T_8 zfso%DE!C28g{Vc9Qev=^^S>i}iQ)na;Vb|@=`IF-)ly*$#3Q3uFu$L545p@XWtr4? zKDJ<8s4O}Tm*t(^V2-!)XBsOE|f{fw$EgL{axA%=a{ITD{y9!(sD49Bp+|UC> zyk9ytcdBugnu)a!YDg#}9strg5ijM)@7x3tpTN$Wu*uC}2JGgcdcmE^0?5J1Gk@I9 zOrd$0Ng7}5tLYN4@byOjj0_LwP`dgwwwaTiY3XavYH_?AtgAbL`{ z=ewJ)srAb0u(t*~{O^)8<&pno(|O2!WyU^ml}iEksU7bv&2mO+_Kvd*-=>+}$(PhA zS4PS^HJ-M}V~zfrKVNA)F;Y_aTbnKwCY{(|_wqOVyw(2i|GDv9bJcum;ICM)%?Sdb zzilc#h7wX>8$IX3jaMs7pK$@W0Ejg7d4VFnDx6FVx>tm-BNry=J91=mZL?Yl+Enx> zRFyvlly*Dz7ZH2@)np_!?Y5U#)%Yf=Eaa6PF$*{AvPhF*=h8nZqggE;CbRaTEM0At;(O+& zhQ3(_R03NqnPufKj*!Xi30Ks`^AE(%XPX(5BlC8`us+UvsHGUws-PyIw*Au(J1pXY zv(8xKU~iYI4U}9}dEs9y`0Fvk9%bhYOe=I559euW_c2L$_o0d+&>rwXnyuw`?GkYW zzdv5r?%_%-_lC!3wK#IWFRvk}rhcH&)-?#yvc3rw>U%T>(a3*fPmg11WZ57W^_sO3 z18HZjn$;h#PQ8>fjPSu3%JL|pQ528p^Nv7DaygE#IFT=dHkB8DDswErY#V?Bh(1HXNnWETkWWsHsZLa@qexU2hZ`)~W1_CIu&;l{M}L88Hop zS&6st5Z#Zm%_Cff77*f3OP3y27Eb^D)s@6>Fv*DS>EoQl#?&z96De=59IiVjh@FSm zbOaDy8F;~orkVdMZs~p}FgG|t2Knm@ENn|LEG|fdtg2wAy)^BeJ_IPAcQC!p^xNk7 zr76?|SWU1O<*f$OxQ<`qe&rMbIS1Ipx2{4czdrdZX%DXK8a@O9< zz%H0kc+yUC|6f*s8@uP5g;E}ZFm;6b;OXRQRPmE(?Gr5t4Mvlm1K$e;huGWMMii1L@g@52H}tA8f8W+tQ!-fv%;{lY)BiQ!TJD zr;vQGW@~>r&Zsu*GG`i->0XQ|=g>%@)c#*{zQdfAHq|}ql!f! zK!C4Kc~~61>N;V)K#E#2#A^hd!LO2^rT!%xUq`{APl$tpWO;>H+In5#5L<6RId=WJ zLz*#hzDG%b4Vxj;rKHn-zod7n&Qo%BQ1_HNa|nAUNiYpdC%F zbPa0CL&o4`D@|!PDaZuhu1g1+ZEy*Hbmd8V^@){CL>c^4!O7v&^OX=1)N_%ri7>4y ztuj5Wo8tHUf6|kz7>Lt|XkDV{_%{avClk>qMzkx}z2lfI z_xEa;5n>$4v^j^noZE-;PsslqZO?pKyGEp37}X(ol2=wWv8^kOHuJ}qWdO$j?}nec zE-)`Co;J~d_!Z1Kn1;VftoC<+zr$R({b(H_JoVhmveXG5CZ#|4g(v$`6YPBPmGAS3 z-YFCb0o!n{&k&O6pW3K@X+YsdV$zSlcwQVjS@# zD5_OzxecEDZwDye1b+`&){D%&sB;4o4XzIbEb7DSwx&v_nd~Z`+6Pz;jW%OeJ@0S zbbbClTJ*ZK+ZS+JGw&fUw&R7?QY|))@8(y395I-WcA-)B~`>nws@SaEJ$@_<}rx~6=_@P zW`r32oT)+rp~>3W_F5WXkkHsZJBUFJpE-?kTMKYZroLr!n?ksjBTYk+BS|ANfA>`PogU4E}e(-fllm(SK z{e9ii-n2)DT4We=AUni3AKO{dcL=|vtkA&J%zbJX^- z17&0V`Z`?u6EAD3{%NGB7`p|nsCis7!cbf!wAiGocR8KU2Q$_!V&8XY*)q3*F-9}sj@OvMAA3xK& z0Y+^dACq;kDo4zA+K)cH#ISoLzk7qYzHJi(v$gL0_r(9EPFaUKw|-TM0ej|ml+VJ0 zpsqY7`q3fH%AdQ# zNWkj;MkCDaDfbt@Zrk~TBsbe?I}KKDfPT!v^qX8n1c%myq#VZeF8;W#ayGPt7JBeo=ieBQ5F54}B- zxwnm$*DI%54F{M6UQu@Z9U1t7YCiqi_7Z!p9kf^SWlybWO>g*03z`JeUafAYX_(LV zDKr>Q!%^Bp6yX_rZ6%H^*l@%~Jd<5vnq34|7V@ zhNj+MclwN+`8E4_$?%05tz4m{O@ASp3?#~X`7j3?JURz z3$T&S@HP+WGm$0%3i>B^36KLm@5pOsx0?L!W-JVMpj<^Vvu?RqFszu4D2l#R77WGq zpzN-!nvdpkN&Up{y&O=gaq{7-hv40$NT+txP0rH-)%GV$1L~-y0j_!scV%$Uhv=1r zo$nmh?@Dru4QGYR!LThzn(!C~aoMV$qxJABn``1{VN_cxFB9V8_W(g`qCo)j$GsPC z%{aF-d(8e7z`-?4BrA_kar>tR_Ak*CjRSk9st&T#I+7bZZJ>rG)-BE%w8!Nwykq{g zbR;Be%bdu@O~q(<7;3pTE%_KVi|Y>nSz+!kwKz@mGVe~E0APAQ&a=F#qU5E%VZcJ* zv!)k@`st?FP6qkzga0@bAzI+%DCaUPFc1@6UngD`H?(}uz*mk@US<7K+OC;!OmD|} zI33|mHcVKx+|NdG7JWZuqu%tk?15wh5&l2H@bA{ln~ZNQy0DjLqb9PvCK*CZwsjB0 z#SJ%;wIn1$TkRXx&U72CseS9Ab0cKQ8$$(ip~yMe{u4(*;yNwe^9`#coBQNja;xCb%nEAJy7RlAO23NII=+lkBTv)-=QxOkA@HVD~TkBY8ol5S%BCfh5v<2KAp3^~VrYC6BU?NKwxLeq@2P?1`))o71Cbd2qf;S2s zZ-9XOja!jaCSjIbo3Lui>}}<@I5WU&)Y7M!Xtl<%Zv%8$tL)KFXqAEH|JF%WyXqM> zqt@g)0XJ-$-=)+6HWO-+pH62Tsp@@q&cXs1$;UUSHS5lj`wQyQalZ2|eR1g?XF>{> zvGEgYmylq?y|=zwvT-}HK*_~agXCbE#jI?;F1buh>Tbcjv)M-NefeWMftTfXZSCL} zYWL>)gW=FFuzNxCidxXy)x|=65aowAq&VRknJ2xi^p-(=>>pIO4%%Kxsp zO5GL?gvx%4U-y#l<;78h*sxH$=_aKd)}jS8DoS>V``HrZYbn@NTT(w=rv*$wX2j5&-chz>CgksNJtz8RvPBhGk_94-F zk{e+m-df)Clw2Xb^GJqX=D6S{iX_VtlC&S=5nffERZtsh@)lJG!QQs13QUA9=ZTdn z?(O{||0GTV zBBcxePur#MavlGDMZ!+BlHMi?_VQ}b)RwWLUDIcNa%W;7Ng2h@m3u&bk|c2_uL05$ zd6&w0qxh{25QOCTUn6!o5n(^9J!U+C>MBY1CHLbyqDDPqx4D;0FCU6hJ|lS2k}EkQPjqM zT)S3S0@$Bp*eJE+Y8_kI=7&KdmpqgZ*BkHYeQh^+SiKL zZ#CMJUa*N?9xlCiBL2x~x^SQ>hYN+P&LCAv%2TM~=6G(b_3$~BM&T3BO9Gp*dvZTEiV^_lzs}KXqp4V#)Be*U zk$9E#L`@o$doWOAS^H3I_Ro_3tq4f|lGOElT3A0j`^sU%E}jcX30V9vs4YAv4?geO zEI2J3Trxp2Nrp*FbjhIj_Ly_GD!+1!kbD@F93sChJOxYS?!oCEZ1!mQP=SsK>`f8kzqfZ4hWZtQjoXZuInsK}IOzsI&OXKT;MaBhFPm zP5&mlc%zoCl1|0CbF&x@#CAWEWx{64SjTE2e$)kD=J7o(_-Ic~0|0ZEbo#4IMSPPv zfK(TP7Adx72ri}LNw6>RWVh_eguUsi>)Amfl5!RCh-RL}E@r*q0#la^pwjGa<+J&u zmrVk6L-5j#?6+HQ_!!;SZh7YP65^HsjR|bR139WAQgW=RO^Q`{O7sm41de=h=5c{g zahHkxvYsl-YbQj_k*l&4FXcuCEqL@l3RVni_3Ll!z6ta?MdH6X4px(DV)@(&rULS>U^OSnwjTW8 ztvZy)-_Z55he|Z>q3dh&CWSiw;TpgjC5(NQe@FZy)P}!GGHF~)H~XT> zL@n9`)qq&fW4>b_9Ri}(@WJ6DyV?#Rq{%vjoRS{QKf zEf|zEz~h#~jRI_9H@@?$PtKDZjRjc_Z}w$`$1zDH(PNP|SWEq*qB+WL4+3oFe-fHk z`QWi1*>R+AQu9EwoQ6&f83j;Cps5~ns~XIZIY z)T`BMLR6Ja5Q@g0A7`<{CO;l<7+u6YxuwnTDk$eBPENt8>Zyw*tM=ATKC;w#pCy)F z_{%jT?Uh7pdH)I5(*a{JloRnkx-J&i`%qpjDL6FalAYH7ayt&X`MWuUt+8LF=SVD= zVqbIJAWESn3;n7CX8;o<rq^s?^R zpAtq@-b9jXQk2usE#!K0NS=?n*fr5fZ{RYqAwAkU_eH65cnZwu5cVU;CUk2WXW0}( z2V|#Jy5MRUD1zt!|1V9JiO0qq3?E~Ug|${Ky|c^A(x=LVrW+Bb&xS)2A8<2VzP&WQ zvyXucFdyK@3w^zm8hCh3F@_9_SDiI0O~~7ADwyUuxx8ANaP1<%43(zzZ`Rg#MUrK1 zD5|?RBo_9{M&Q4r9_wXXJYXx*mk~noD`(A0c-? z^*fZgS9eQ5 zc-?a*0`*F8)m*f!_N%?#CXnE!x#sb_th!Ig^0~yTRs7@g$gZ<-VxNlq5SR@t9Fl*l zopNPAyLpl0*3Pe>ip^blsL_Tg#3S7rv_qwa*$9^uWl{1+{z@v+6ZR?_`t5Ly#o0uU zYRrAKw+=;xntJg@-zAt8x^xr94GwM!2-u>%pC|Zszr2P%W*DUJp-1#v%Pr`-74ePB zF!1`_C|EHz{Gk#|^+Z)Vl^|{;2NG1{h1g2YfUgdNxk&9#F)BvYe3b#sNIGFx@Fc}i zP6tGVzk$@sHdOFCJQ8&?;YW?SkUDx=mOdbYUJUfYvgzx^ z&wq^H>na-rM7~N*vn9TjHDWpdm9l^mF7I)M17@16<7k@HV{qpK zw0oYD`pj=&F*ZN~V#s~5^J1dO`fWH-u}?#H{AGvybY!iH)QG?dMADYKx31fo)rI7| z9&sPq*0R=CY%#=(lHY~V?b&{#E@G*Hy0N z1hK^YDD!yoSnHh3c?6dm7_N}jn*e0Y%RHlx2Zv(T5f@BA|cjIV<7sb_udnF3vjg0J|Ep&j&TMzM*1hCp5i_yI_ zCwq`Y$Otv4c0h4FWhduOu%qH@ShhcVCtEl9>2aX}_3c=|FPS*^7vyw9A}vI%h8W~H z{Rxf;lHkBT2c4>Z+g+K^-naLGbC^x!0(2D~+`o2k#BJMq=99*V$s?}>p9J7qya3Co zJm3&B&NeT}Kai~EiF`xe;>p96p%VhvLtVJo_Du25?1l-b(|kPF-|-uKhC({v#}akkCkIV0w(D!~&kC+oaa3$}$aP zX;ihMMkRLr?Xy2QxA8%mRUfF(|K3%7h)sL2;>^d?G@6TV1GU?AD1aefw_Joov8`bu zvA7YS#lsvPkC$4wx1~Q#zM_EhU<-P_r=3nxPxqLdy)FS8xZgh1K~Yr^wDa;@dizjM z3zp`on~2?G+M3QTUc!nMIwUz(!4TMC`@oMnZ33%fFXbo$U; zgX8T=Pm`aD`L%w5?!{ow59Zqc;XQ;%Wo5@lO*b2P_RtzzZ{T1_=I)C@zPoL2W@D5l z_>Ee-2K@eI6t^01=Xr@kA#pJCJ|xwb?G}xOJ_-r383awFyH{I5mVPM+ImI=^VU)s! zLsA9lkQ5L4UE&lJdKvdeHTv8Yb~5}>KCDD1^}Tc~7gzx8R6Qwwal@p2QsHh#HYP!Z z?0-rEM>QS{+%vHLU3n1{{dhjpVwWetpKW#pd1^j)Alr!4$P)2_T&oZp>ny2bd*H{o z)3_6$b7Rlu>Ul$%@#;c)-^ghSL#vJybwQ-=@^qdQkDFLuPO}nAcR?v=ixD3^JgFWU z{z+FvNI{TKEh!`!-FeSx96{;^cO~MSOBoK8~|_FsNu{wXZ{exG=oXwKZGU z@CodFt2nGhr~|FWa6YR>(s}k=O3%!alp1aC1JG2Z{;R4s$2F(tJpwX}V~kiVktQ8x zY|iSplLg+cn$_+ce`H49I^*=nQ2tD6qPZQz;wZ}Cm)AABy96ORtN(&Tm)sI$qwm%{ zlE;0=(HWKtw6M%tT-t_p;D$U(II~Ip=}1r;&+jlkED3%nDed$TnVyd{hz*QXXq|}a z&c#u#~{a$7M9%}8|X8HkLY){wZWzv1{P;a${4MWlTP!`FE$)% z*23FF91X--4_|w4rb#u2H@vpX5cK=RAm5NdKC@R_G!D2^viS3^5tlEy5`@!o_de&o z`wKO_dqZ>Cpc-otU1d^%vOF9V)!u(2Y!QzfkKFe zE$GVwN=p}9+T&F#Cu|Bg(MG9g{isr<*+?&^WoC%sCEf<4E5q}+*47u`fr8(baf~MA zQYm`nXQ`j1jwMf@G~<8nXl`xCE`hPc_-u=p436K(EnwP1Ro=*rv;pc?@pn20ktlNQ zoZaZ^|B9BG2b?+?bBs>M`;&`uVV|n&*;NFKsgKMfV!*;o1W zc)kaq37W_xRK3Szr^>dU2VWWq3wwNnQTV$h!%XJ5vwW-2317}eudqgtMeV#w4O!Pr zBkfe?lp_A&yf*D819@9}!V3m|g$awRqRRa1{^!(%CaK=UJUHmgB8H=SNeF*)@Zx-T zK<8kag?KSdh`DYT4|X+7hMIW^%HjDPEbGQ2A9el9B_tKLHU+(nx4cm+i6WPY?Mvt;B#^*BR4{S zu=UJo90Re8>7hZ=#Nj1)rLZ~+&>nA3x&fBC=@11O!;5OwmyEf8`H-x=v?8IUY(^I@ z1JQWOc9n;?WdJ9p1)g`S$Tz~MckEJ^VhzYKcDY5G6J_$U*0>Pp*?NjS$xH4Y9FYu4 zX6PVU z$l5#ucjBRu`g}O%zPS#4Po$HcppuKli5)pT-{n_dz?i!8+#}T^_7ZK^$2crEujtgS%2fwmf?`4_8=-r98~XkE@$)6-9^etWIh0I)2AYX<$e zR(SN``_}%_1VH6$OP!Dett%$rareP0=9K}wer?B*x0C&m zjqho@idJRbmoxfiDObJ?eiW&j??VYitLzvbz^)>k6nkZPKCbVBF39$@3*srhR*9 zP#n7N&^RB%gtk@H*jhE>%R7LW zM3Y;&F>|mi3(gWV7E$iQoy>X$^xJ;1VO{& z3tgO;?{;~Pu*GyBtaeR5pib~e2Uc8a{`kQb0&}a^1UQgbmg?g5Y8hD$o81oUW`sYL zS6{-|Bu~$nh34zM30QZ_Gwsgj7aPuN+}ja!HY#4mW&JV%p$KugyJd&wT#pich$__C zOp0fOX!NZ`+keV1Lx;2^Se6sY6)3^aQmRMFU~1(&1xX9CG6+z6FaJU2-*>V@fFk?@ zu7ZIv^+tu5&kW|~tU87m-&mSiHWyi$^Nu`Q#I(bW@w0;0qfd5S)$!|@H#wU80Vihi za4@J_hV}YGgkaw-u?d*(=DTs?^jg5*y7!Mj4V?Bs6{c>18?eiLb#FNNVi`$6;)<%j zC#xEa?r_}ft?`hD+l5E#=jj`Kiq*h#@2oZI+OeO$)}MsKcJl9bG(1bGGeMq`KJ6LviuMIE}h5FC$|05lyWjasr~_D`q}cD1onZ)y%$621}t5x z8F47j`#U6I(q3^F;P4~P+=Y92aFV%UEts!$9@IUNS!iK3RrWQ}L)JeZ=u015HLV0v zRQ0|{+t+#3#Ew1rO%`MJ#(9Mfh`v?b@j-jOGj5Z z3`DwFrfwz3(8RK7xAeDB=GjX&7YeHS)F-yj8VoBMg`J*{MX5@Cj|^T>#D6^=d#PSN zn6e^TWd*xOli#vNp$N8dU1tL8UwK_6w49u2$Xjw9>_-GAIJ}T1* zp8DIOs%Sn?A!yU4ypkX~FWTb?w8(ONzI#TPdA%H2Q8P+h)QVaN!&#US;2$CXWnjF? z4F}xGJgdQuk}#Dsz#x0>xGVyak#KC~XPNzL(Q=|VyCoj|39&$~y*@x)hV7Be;)0eU zFC9I7SzW4O;!dRv_2ZQ$t+upvZ+t&&c*q4p%lHUe!-9YdkHw?>jkaUiBG2k5So<71 z{GS~*2`MNNTMyGEWDi%-kw(UihcU%hw9JY^km}vaw!=n^=wqQm-MZb}T^lp?8D?PN*4l zwciN`*;z)8r<{ntIl&B-aHrQ`o>MAqds_02Z%?yA7sHpi`>L07pEgf$#xaevtZVpi zsdYW(eL140J0qaXy0?L&u}FRK{pY=ppTHd-cQmJ6k|dE6Exir}93)P*8ho53<85Ki zpo^8MKyIi@c{eEx(K#F#NuU4mly6qEqeTLI29G|MnO;u8A^AZ-$<*%N5ef`f10zJjngE^9w`xrH1ZAra5tKgJKrZH$8Wtl0Ov zJgkIg^F;3(UxT7?=p^wdv?j{^Jy$lFR1gqzQ(XD?e8>vx+LX$CJv9G6#Tamc+O!`u zJcby%$Q_N+a#u5{{tQ!#)|&nBkNd&EppFy0I%hd-U9;VA>pPo8boEvao29;dE30ws zx7&aF(l);>#anhn!>-UlviOL9VmBx17L!g(O>ZYuAf=a#5+D1hG*M%%@6S1$f&jPS8W8|b2t@f|)3g=Vdgy{P0kMi3gzafMlp;4FA3NJP8ghd9uJOrV4 z9lihVWapGsyC~0Hh{kjg3w#}O=c}B%ugppC$wIi-{QvTv$7wcy56L&rtxxrBD(|KU zQG7$?%RK-;U5~o%dh@h8nV1u^Cpua0T;gFEypmIfN;_@z2|QVXNGuuaGj1Zpq=g@y zxM-xWv8!Hrtk%VgL`(}2&<>sSfSp~lzksFCBhf(2=JDjwuUq8(Jz#^-J2Z-37RCrW zY@?qZp)?^?@1&c-0o7@r{QwQ20Y;m3mbX)Sh{ju3MTbmh+<(6|FGdUHLm*8MFLzbKlZ zbCo_y>0e;{oP2R-o&iWtvGGg^EkqHfCPlmR!cn&V0KS8LBs~nX>%e?Xp09#2Ik{X4Kz{TQxc{kV4o-mGte9s!!yL2Mqs}bg++?$+r zr|#L-4RfU4P+{dS1n^Wxo=3Z<58$`)u7Y?R0xs}Hv}GRoU&T!Uwp2Af9%ckA5_IL( z5i3@1z1M?oyqjQ#zoN|E2y%tX1=@G#_clt8K0)Q7s+s8llZ&)h8T6=mb2nR~m7hPz zhEqutz|U{98L2OIY2&-Q@Pe`c>g51Uenxm&^pi}4PHUj3XaGu?|4<& z0HS$mEG+LiJ;MUdhq?Z(?Ar3IUU!U<_Ic^28})|@{t|e6*nSr}mU_cwKHDUD4oGmT zJd2#Ns*#Zga3^}VEm2#gR&kGrZ8~)dF(r_se??J0EZL4tF_?$*VBY=k)O%|m$PVX@ zf*J`=_krc?PS{{Azr^6_!gQtTn^Qu$VZ9n5UAo_y@seg?kOO4$KEv0&I;X_LWpaDj zcih+C95%3M2ews;fwfUmfLmlLz2gkj!BiA};A@v!^Q*nFz7IW8Abl^7BdRi{zX6%! zV}Y3+c>q@!^wAkRhS<@#oH6|hU+x-UZUv$TD+uF#ejf@ink6#Ov_v6CJBZ@@;JzUA z)foF?rU`#fzIhe8{&Wq1nFgXRZm_TJL?LDNHPDk0NTQD3g&z6nFk7b{GJl@Va%9+O zdV0uswejE~Y9y?U-Qx}YZg&K``*OsiQIZ~?^!(3L@b5!u%HC}42hoK|gE0B4F2Yyb zgql~(rwac^fuAa*3l7gpO=zYVy$fy84@+HZq^@vpfw5&5CQn33D@ zQyyDqiqGJfpI~1#pXgRh$EH@OoT{*Srr6g6Z@!rBW2*v>eOP1|iEI2Xf_3^$ur*`% zP&{Gcf=Y~p52bkz-R8xWdwOYIQC+V%;;NcFH$1a&8X4Jqp}YG)nxgl^8Uu?0rq6y4 zI5rQ|jAKy)8gv$W3hbBJ*^2NR^3gK;6&bu%51)3!8XRlj;%IlZ6dO#+U$$yBfO6pH zg$ZDv&_hDKMD2eB!2sgB=jKIbb?Md&+Uc!nz{?5!I=km#7lXz@_QM|;97lcKflDaZ z`|qf_K-@#?KzkH=kD;>~aMD=Mq&%b5OpfKJVl2tbQ-cw}OJ(*aCDMiiq-?!ltnPcO z3KG8e#_Nwi6fF?7IGsDi&pcb-UQT5&Bdm=5x0M}1Sg#@_tHKKHm_@6x=SebZRS6I- zjw#cEh4fxCugZ)B#bCe#;^LyVBM!#%&d6YU_fdr%Woa<|bARVL{hDp{vEML6k&_HJ zRDSP{U%BTCg^sD5lTW8V58dIS8fOWwTe&qaS-pygHzsKgz_;3F4gOpNTE<=^cg-x; zo>d$p;NCk$*oSu(>P8V6s(EAnvnz0A#;uw!=LP6{Z;bp)Fv3OsAI31SFsO}UVO#yz zdVGm2KG4F5a(P=03F75u^IX3fd>+0GFeOmt@BbWn0-N)};xdQG`2jx%u#A-E3izl*Bf@I4KApx6L`(6j}3mGP=%uXz^mJ z-S0TOK@r0+eBSm~n77ll&rb;|gvaM={nR?0i30Dn4o<^YV_fyHl18&#hBQbtgTD~u z8R+)jBFTT?(3@aQ0!4IuZ;*P##=2~}{I}=dbrFrz%Tw|5xYz)@1!*w&A+@xRq=+Rn1lCSSMe>DkWl?4u=*D7v9sPgVBm??eKre_@wYZ#ybt>s3 zD73F3sTY7V#SR6emJg@=H~qcKiP=pq!3JpaO_MjZHRWII<~DCLtO{I*FYGA>)xZ)I zuDSH@GN#a>ePvxe}?n>ctX0#Q<0tkRaIzY zaj>^}(f1u90Z-Xdt+a7!ob#)#w@+!tc)1I8`=jk2Ox^w}UNNUv9PT-_WSCc>Oad5? z_~#;YkO>REt=#I)`;L^E)G{I&v1p4)v}ou$d%pi|reVv8;_UZFZ;f(dwF*{^=WyJA^GSq|NyeS~l1R`tqG+qZu=)6}1ZA7W6><~NG#{%EpD`O^ojn?qO1Y=RaSs2k+? zdkEY#5$U7j7mzrM92>*kW)7|W{E;=cquc^} zN9_)9jz$IF!jB}n@_-rW&Dvs-7M9%yUuo0^I4(fY`9;dLUrnT=M$6u=cnlUAtwZ)` zuevWzko&M=pv?s>REcCbc)c)QQGzqx0X1FMz5RDbFI6`)=}`BX^vaZrbFA}wj0%^y z+?rQ(WqJV22s@f{pNlssntQC%6W=IwElXFk0Bf|*TR(;l!aPFff8E@6)lU^&<<|a+ zfe|wn!!nZ`^S1s&I;rp0#M^*dLSh_(${lI)o02wI| zDOHZn=a%TGI*uD>tQi(xTp#6G5D_CezoDw3yl&p;(nU4>& z&J%6tUu<0i14q1+>|l$0;DCY5N(6MgY?0CT!9cxB8p%`OCaIr3<;(0QI23^q` zh4GMAsnx{V!khQzKXlg?dbj2kR5G<__|EF+>F9c5r;`jN8ZBMXkdUuO*ydB8R4s_h zeqUIHy|IG(sbxgEw3b?ZVo;2ohiXLX&$Uge>V6F;WV~p%1R!SZ;Gs0MH_O8Apx>js zqT^LMEq%^Rok7-$#@nLJytA&ibdTGPg-I|$huj);lM$WbrB+TwZ=#>u?|w4WP}(}1 zN@{biz3ulBi}zL zjR!2Iu>sgeF5_X^=LemxxYbF*OpyVe$RznX;g>^7GOB+^q9(KZUuAN3HlQlzJ6=mi zZr8d+$=c8fZYCNLjDul`8_Y+*(F3sF)=dL5K`|5-*QLkAN<#hVCCU>?3gv z$^Z91HV}S<{zQ+7Y)gxjpvq}`xAsv(pZnsY@9)V+I;=sI0BQlTYlgI{?egcGAY}LU za$Fu6s8B5J%1`rbr7OsUZmk1YFKK$bj+D4GPYxq^boS)7Bt6$msG^=(jzneN*K2KE zhASB(EhqVBToQW2fd{bT#dpWkXamm*b;<$!`Y;I>$VNCjrRFXmJRRu1uod-8CfWM@Ns536YDwM-FN;vh5Hu^}w^ ziS9t$){*^lgu}#`llV@xRIy*H>h&xKK~UIQb3FizF_mN#53Pxu(orc4e?!$R2-vM~ z%(b&T+>G+zZmKsA=%#06RDGyKRJRz+!!h^rn@k%5ApLRNHnkWXLw40dP_I#}ZZ+~% zgs?P2T4AeLwOX}`y^>LyyXkLn2xKIOs+(y@Wv9CsUvNwIJ@CN21l%E`rWWWJ@95{W zrmsLH+)^65Q6YqA_5@U{NtlStV+#*+qCTxZs7N^c5}LT3mx&C;+&oas7TI2fH4Md^ z@lnCZO_PLQ_2Fv%p!drT0+74yTMgs8Bbx<9n5zYN}@lfn1mN8@R z#oqlGJ8c!gT(;U)Cg$mdDMNm+B=++zz{EzaCI@m^S*oFs8Uw8b*s40o09i)RAO9QQ zsemu2=zXI#k1Dp4U$-loauF^9e;AL_Nv)ZYoY)~_YQwN*OFIY!S+;Q+u4BXm|2N*` zw`vjs;vS=u;4n&~ zGu0X}2AFFV2ouYe2g)7~8sm$QF z)8wjQc?Wxw4TkHt!M|*dcS>5duihT_w$zKEURiU(yV42P4<=nn7DYt z_r2j=r^=!Ed)OUK!%m0PMg4+wBfMb|;!`r}N+C4qsx#QJyz}neCyS6xp02_17yQu< z5XX-{P*1>R%e_fF*-(;%vZ z*aOB_{aB2THo@yxr8_$S+|M2wxDaYZUJwTcn?a{xoNB0_vyZnE zMTU)Zc({>Yfo)mR_{35q;%BCn9$ROdm?Oz9b$UML$MiAPy#wNT2k^_H5hj=8?-@|% zofo_i32r%O4{i%A3`qLd9KC-c{x$5FYX8xqAiuEG>P9^GsHFfY;Q{*RZ(u@QT-Ge* zX>fn5tH~d@isO5|gMDK7g8Ee7hukR<6?vpJ?2x%PAkFIj*Zuaag;#5zvb)$nl`saK zncdLP=XidNqL+P|qQhu^@98V2#R5s_qZg&=Hu+H4yPCpf^A-4|v-;w{hafwP)cV=4g)KQKjEk~%{ubo3(8j= zDvZd-B9>7Un98e~6iz^kwB~9-TgJ*19us2w=TofU>Yz!H)q8oS3Tu|&`rE*Gh+<4z z@WMFU`o>|$cp7#``Sm@PHB)Vw?ZpSpfAasZu*CoQ15|h;JKCyO0d);CKmG!z_JjA= zv;?bvc2+*t+qovF%xxglIaaqj^-Ooq=)U8aWVm42U?L_so$8YFkZ664n7W>`XvqEU zP)@K_6wO7&ST*=V+DjCPt8ntNr9tenx~{Pv%)~?A4~}Y~vaax1d1X${aq5kZ^yB@4 zY=Of1iM~u$_<_mi0z+OPC3n>qJik_h zeJGt&t4{oh84VC;Ss3J@=%&|v@+zF!I*%~LQ^qIjmQMO{G16~O*Q)7n-_u5XR$o1? zv0l~bcPx763XCOvt7_cNomZQ~iWDv=2B?10yP$I>LMOKsGKKolZ2r-2$h=wS?Sf%_ z(Vx~+%yWOYI(8QQs+^Y*m;cC{*0wV+d-R6WF0C&6T>I}%EL#eNXr%-{Id`ul1a$+( z0+(5;2dkdo)y122#d|E=Yc^`F2NO)ALX;$GfD(ebP-+7PV47MG<4tV z2cG7>?fmMVc!dQCzo3MnKPNZcraEHOs|7Z!N}Uu`4^3cW1CBl5ZIz>QyAziRHEokp zGI81Ak}Pw>Qe*RPQ7LF*d>%xW^Jwy*0YmG*S^q2)=LlR~$E@Ebt7w)5mMWTDGL|sy zz9}%3C!0@Twcl*9mug&`J4!(F8GT(_I*-b@{}cv%)5Vnq37E+JE1XNkJIYzvEYC+YctLvqaw5z8}@|)3@E`&@*$zqX5{##)Y3^_Dv1QY!p{-1H9|NVH( zbYr;ZQk%v&St%58^nTv?4=Bwq@9j8#v^eE&8-V|Joq$idv1ypEvXK|u*b=0B(AGC@ zZ6ZCdy(`1rTj4QqWX=|b$z8^A{P*P$P*b!84Fp>-md8p}%TC)iI|)9HhfDG8Jz^fU z(F>}f=b)(iB>7~B`nG~z-x=z6R8Kfr^a{wwW}~i^e)!7uZG{exe4lXKKxERvv{#XGSu9R-Z_N4euD_=YChtB9&<=ECeRv(!moWM-XSGR%*Hy`*~; z+&%FE*&wxlEOjrB6SO>=jadc=Lr|@yI+Sg zg}=Z0sR+ZK(~`64J|J)=_9fJkixvF%nKsavMm3jW z_DuPK6jWgnM8l)z?qi06qtcdj-I0?*7WOT%fEo$fuDrhtVG`J-&PgvE5&?$_oHumw zlc`mTQ(MiCcbVXaRh3-{ig_EVL2rp9uPx3hrm8J3RDoi(7w@W@ z_TGlu{Y^flo$rZyOVki6ROWz~cNRaNpIHoYkB^p7T;h67yui3}vy=G0cY4)kta*T+ z@`bFJGZi-uzG!!&PoHt!=9&DuO%|LUnZIKH1avk-#NXx_->wlv>mJmu;t%)>A7`|F zg}&&Mlw!=UOLhZs?myn8oquC5Bd!1^un`YLW#`?ba|FsOSu5vZ^7ALHAqeMS4KE^w z*`6i%eX+*eU>@p}z23>tsGnEQxc?X)SgBfM-4H)==j8!)5gb*aSjWZo%UE-3!U}{K zSw?boLp@B64mc9%BlQ9EE_&S`W&fwUr`xBnBbPi={!%-hs<)tAChguTEJso z$FLBc0lN`FY;FZntkJ5v{22)HZ0z=opz(;yWZb%`-^3co-PxNX!}yu&>nN8}hJ5&4 zfeyBNo#;&@J^*a$LO3oBKdo{M3c4{BrFu{y{25S>%T~xIzI{-azU~Okb8%Fq;p_Td zOD(eW>i$~ku;$buPz4{eYZs#jS|K4hb~1>m|JPS_o~Hu~6`U2~^0xVaYlE(PaJXm? zu^cspOPX`AxXzY26I@Hv( zjjkP|BoiKAaKeeXB^TT-5agShna$QuYT4jz(25%Ln7b>T0^(qaVPv9=INcS4p(Xxz zYMwxti1M_R$}BwEu+CT$zCcoWHTdyRozp`t&jiJ)*-ch}a=bSk8FnyuGROWK7?D@N zjAP~slT9b0WcUn0OMr>knV^z#qW@j&8az7Y$^{z!j;(7cS|nL`z7+|KXwO+FTg0@zrHqfS+q z*W%J26!*hgDai)Q1`v{;dEgATm7h^#tt{CEyn{S%yeuiOildj2eMn2jr2OvI=`y+o zhro$fIn3Tkt46;!)okK0Z zFwAe!UCK}V-P1E-E}mfRh&|?35PvNH_U!)eH{b3T*)enyn7~KY@AJF#izFVSXuX>@ z@^?489o!;cyM`oFCSN1Aa=$ffDhsx+*$IsuRm9F!*9v~|BJ0`2946Fo$9<-iS@7my5T%5UqWblJ9RO?3%H>ad`i)FQT`BM@~X~v zD6qT9tRaROjD7MBr+$*1LIWs)C#q+kmK1X$hJ;T#*V@g#bsRaP6(-kqt>GQ%Wh=)+ z=TqJ;md_6bs3SW~VLj}6{-n94ar4OwjK@a%7@h8u)jZ}iV3A%nxHVKPO*fq+&b+r` z5ETi=asubd2zNJURT7pT@UM*O>$(F%;4JU-CH*|^bSQ62%TFd>`Uxl662e0OiBR|{CZLOmq7!RU{*;FE;lO7SR6Oi28P zm)ff84EHTRunF5%GHm1e!gm>|P=Zk4C9+E zG}c-e%~?oxUikx>`*$nX0LR({3GGYSE<)o(+t&A!@8`~S6(Y65(khSG8Qwn|G7U?9m~B;goxMNW8q$q$G`XCNo^7u z<`{!oBR+h>oePu!xUUg~qCZJ{tfNn>QzM58muUqe>dzf+D?~)W%Z<}vA+p|Z7c5+m zbJi-thLZDDUs5vgNgB^|#m!jmAeC!a|GIg8ms-*l$859xTcsukbt3fF28DGjs%|evWbMAbce}B1Aebyqu*Ht985nHk zcBqE=Lc!;07;r0xBk6H9qu~P!ldiaJ@23~Km85IoY-Xslim>*0f@5R3NbVI8rAoa+7AiF?W zMt97+FSoV=Y0Bf7Wb17E_y{(?L!*fL`T))I_(%5U^tg+2jLm(jYApO|+O^jf%%CYu zZ<5T)JLiB;zCZd}BtGqPBn(rw%9qcX&|M8=kgtfIaB1 zDmH)q!o?IT&Xc3HIA6Mkiw%?bfUNN33P_W6d1`H*^Rv2<&A_z|7rS{r`@y4Qy+~wQ@2#ziuj5AhrBV zCdqdND^|U;?l)Xd{dg#_-bXKp?DpkG^=E5d6NGVpmANhHB2~}QIPQ(LRkd;6k&9kE zKbI1?ks8DCPEvbn1QHfVd|+3sGYc1@nsI1LUZ>Nre3KUTPF+Dx?iZ}_q2k>*)o3Jv zUGNwgX|9UjWqzCmk)mGJ++Y%3-{8hQEs3Gzp&il!?-8!J1AfWzQwa(S8;3<>iY9-M zo}CIiSn+*U%wudTrv=Cm3C=?T4MT6I5JR2z?`Zz0@ed&H#5YQ;TsC|IzBcE{BVy&> zs9rZyD_BLMiL3Ns;oU;8eaOPSrH+h@i1_GW$B|0ivPx)~_Ib=V6T|3>WP#Sv%wK5e%8(LrEmVe$3K6X8maSs#?vf(6SP=s1#kqy98PCKvJ{mk^fq_p zT1AmWQ2{ncoTe1F9~gwW7Y1o7Oz)|fb26?m2L=SB=G_5}fa(rfkL3z)=PMOn_3 z0av@5>{tz#j9>8@Kqp*+qtH+2pOOrQt;#Qbte~hq70gOkb0UiKyRTVw+vL4u0J;y} z*&YTky6tUiQv||gkW1U8NVo1=&eR@n-Aqil)*%Sw3Mg{hqr%v(srd?S8yvydb>t^> z4@2T}7k?ZPWmX}i=Mm|U!8ED;@(F5$4cB-L+_JG{DRsHsEi14eXPN2(&2w$@6Z!eRvcM4?uOQ%GXR|}+o7`Pi?-^JKCdxR>+EyC%~%;>08 z{(9T&ADL_^;U3^R954+-8)md^GJ}5&C^S-A+th=+ax2byBDfwSQ>ZP48POIiehbP> zNH@NWVovv~uitn%ksSb+q*m47I8TfY)kfG(zHVM8L^l5H(2Mc6FzdYn&dB_(Np*)i z*cGMHuPZO^Kx>{-!7)0|Gc~b{8}k-f21HJPw{8mYVx5)o`uH*^oMCO16XbeX7lN0# z*Vzre_)xg4?ZS|()7&!+LB+xL!q?}GuUJx(lF42_J~V;1IqM01?SY)1n7p+ndSzxF zkc|J%j=T!ES~^$&TPo`{#H$5rZhhd6>P{w|t*RO?1;wC}3~C*9s- zfZHZ+!=;mfi$X=!tR3a9FYM)VX)rL+Utd9nBmltoe(m4%a8C}@x&>!a#D#7GWCgYW z*X7V?UFxQKQyL$_aqjCpV_?yU$<9Nb#`#tp%Es;rbkJo{UR5M(p z;2t$tIpbg%pvQVNkFT`<8iN(kte$Bk&eb(J`GjdG0!qmWpF@QVDTZ?dezUAHNJV+F zwEUk9tRNVtL-WW!4JZCn*PK%oN~(4*abdh^j%a9RIA#55DN^cGz)H-S4tJmDz{O}<*!OU(Rce8AUPEl>~=8O)-pTv>q=t1}WU{ICOD z&BU~zPjp)n7WvE*jToBkQQOKZ;9}dKjv>31!tu5Y_xl3XbbQoAd}-(*j>_`V@S|J8 zZ`NIShx!;Y=ta&V47m9WFlcpt$BXPSdY%*S)aiU$vhJ9bK7#U7k)eF_EIYB=^#=`0 zfUZbf(_{1*9Gl6-)ViG6FD@cmbbd==)wg_5%d%21o?L9I>E^4 zdEJ`9Y0~sQ25d*=6pbn8lY%B)i0Z_(Ezb0zygSC912`%(d57~zE=Fiz3XPdg#k1mN+I|0(kpP?NjsrZfr$by-xbIxo%XwGm-g@c z{2ErwslImdtp(Y>OweLeO>|H2xL^9o6AQPh&dxho9%&O%4x-WaD}jD!lAfU`5OcPc z^NLWP^VLW=s3dIA@<+OO4kYyOve0{d(#rg<9wfFbkR39?7)-Mm5`bOJKnvb3L>V5y zkzymH>$t$W9ni;GmQp`Ty#abwTt+q44W;omZu;EfLmSnhqu1x7-(zDny%k-~&cFfQ zRhsu@e#m4X+d$=-J!}lk=E!tH#MSIaItk7r3`KGKYk$(u4TDocO}Wj#=A_QnzC|Mp zlVrsO?**S>lCR2l!-|k`s+QXTx%bEa{g0>m&t)E7?*6PB_x`?zyrk1n-TB#-$AgZhSL zz6^uc*REAzXxW!roG9i_{B1VNW>K&Ic}h#g--VW^PfcDFv~kr5AOFbALyC~eJ-NW6 zw92k8Ka0CK#gIm4%ci9@TWdNyxq@y-*J1QFq{6FIJRpCy%!a35eQU916$77$q?&~l zAsQGSPB|d3B_$Ic5B>rjUTJ92RmzlfC|88V5 zeVrP#T zafUxU6*=TgZr45v3fq?uW!8#esMH4NXZ25aIeU_8GvuCt)*sus8y8P=FzY$ZS@KgM zDq66FaVOj)Hd2NcG#of9RJ-s-ny6QmRxe1bb7F6mT>-8>-g63d(+`n!R;~DG`xuQq zCavd8Ht02?F~&F*@yrPuNNyAhjzLFWIBi|SXS56!UeSAgRoHn~x&jU8wc<|+TWi=c zvPge~CB051uF>RE6jL?`>_X40eR;)x({O8wycjHj#g-yb?NFLUdGmdyb1{$R$ZI>v zHq9wNRUkl&Rg2s0Fy>M>j5uuIyADDqvZT^Y%x!a<*|UF)akkhsEC_nxX(pN9ldbxE z#<%c&T;+B)#3D<9x;g`IdtEqYIqVLjd|j0~Q@_Kd>%`EfT#EZ+5Z*mmuY!B|KNW!f z+v)Zp86%y0q@i$%IVXvL6N+rJiX+R4uB4P3?_eRvD?CeXoDX3|yITBi#4 zcd$sSyZzCV;*kT&@6AHCxQPfDYYu+8@bG_RpgHpv-dHf9Q=880KA=ZeUPKpS{95s+bQ29Gu$cN0b_xC zd<&#E8yJ6`>>S1`uDw|0jm6mB3V%;Q9cx}&v~PXefua+Cxp;EVu2FDDI3s&B@&*f*MgQMNUU{P!%WK8V-%*2$sc&KF3Pmy zL?jFAASAo5fXF(I3`=2Wg-!m0k_rr(dMEX>YTjC&`ConRK&HG%~SD3e zOe_6;)Rp42;Fka%OQ%K75}lY9*mqz5E%pX3%j*uyY&3Tm?`f1tRQYm+6SrzIMHbRA z#AfykrWP+$T5A#f_5Vp6G_eiLkLG*eB)}@#&)wMVCm+iEv2NAuqsYBoA2bm;hsj9! z+A1qyhpXrF^V{|ReO!b(0rtR=p61-EyG(Ox&F6pce`ZVFqbT6YMkb|cu$== zy?SyZ@*TlrHpWI}iOu}!awhlffF_*OtHctQ>y3&l!Q;*@}jn9ff;ko89+4_%eoRc63JH+gTKc`1!=sHOyj9H3k& z`uLXNR4dKzN_DYTF#hbSnN)$%;@cd#aIC@<5AFLY>9ecOi(Nh!BbiRakg%=WkS;}& z65aVm1=OD^PIph*0d~?Aq@#K+%LGHrzb|y-i(ocQfqS*To|_Vu`LVuImAdZRNu3)LGAJ^ss{ajj+?c z%{5j?Y36>^xXT%^-T(bhxoS_T`_+sB+}r<@wrm|PLP!ei3-(j)mi|*raTASVBnJ4C zb#5q^ZDsC5AsTBNhzs_6iQQ6}z*gRfSFJCQrY{>nNz3HgDPp52ep$!6z{-Um(KxDI zn{qa_S_*U|e;!lWc$00BEcgbQ_Bi2v2)?dL9$k?6(2+}fz?NI%2=PsBjnbVjCmT}G zf!J>Tq+$Fr%AFj_bv0Ts_;Y$QzY;vUZ~)6##HYU6_5fW9o zuf><{sMXijscwTiq@jRkqTy+wYiTcav9Fyy3u;wK1IfsL9>LizbFBcq$MIEJd`6F1 z;b(2nXKN>h)<#z~7VdrE=~9ED?x={qM58Zh^{H^;b@ullNzB*%g|K3f|XqE=tnS2ogzThDig8B5(Pv@4D|OsjT}s zn@3&)^>dT*yQL0|`@T|iKY-l*TycyY`Ow`Fw>6PpZFzx=r3Lpj&$z_9y=B;1XuMgq z27+qP_|gjz4dUp67TDfLC8Ji`H={B8R|;{FU&iO6Y>Z)nw}(TH)r?sk=@=NSZ5hcJ zWq*zZ=qCXyHl+&gL^8j_RkdAK+!RTd%>MT&4Y{-hNz#Ld&)aaF=hFJ0H1SC=ai`<& zH8w=N;+KOf@O=!d+h(WC58}gbKcn$ax~3R&rf*bB9nz>itY~8%%^x130f=uhUi(1v zO#J;~t&oU)hX<4e=mf&0?e&#GKJvUX5U##GI&PAc>0XlodzGk1@B=uCaal;`G3>P(t>BtyKSKVfkwjn$Njv@kVUwc13JkUTN zCED$%a>#SIacfzm;6RPd`pAOm|AI9*PESyCTL{ko}O ztmI5;Q)(CK6Iamf+u#+AVJBcC8CXY9O7XwYR5tz1P}n+WzwD@_*HK2356gb}VCwXM zG6zfFQlTRiOjIz{c*Cwk4uxv^AHt+?g+=p;nP1m*5kYb=QxI69fvi z#^(r#6BKALqbYU{DZVlDI31*(c7V!K+twmYxpkjmz8~GitT!UK7Kr-=D<jK{8> zSthTD4VUBD(M< z<0|729=a_9&`cyXfzn?%F*0mN&JoP`55@!(c}@S&KDF7Jf9dt~D zt@l5d7U)8-K?)`K|3{5Q(YQx+R6 z8KZ>r7@EXhe_GRaq@O09^%T+tz1K>wp3cjNz78IlaLAb?2LzH=&_L}Xx(;(`<4q)- zNP~8d^aJ~AN zpJW~X-pc*DsbPkm`5dKt#JM;BKJ4GAT~~=??83VR_K(uX@cC6`7FRRZbXqj*hOe?- zmiAtsPa6%B$3beqlg)?)2>SAc_#4Y`ktEG$rFlI;<=Nq?JK>NkWD1+!WMBa5j7^j0SbpgsQpIsL4X$HYiilFR!{tYb@29PZ6s*l} zlk4#i0|2mFak22}dLd`~q|@VrHDt5dr73gl2K$i_8$=ds^;N4T(kMD9iTcGey%0G?&n#;F>ZHps!sp^Ld}LIY z>c`?r=g6w}W1Z>Fi8JP1kC02Ku+CpRrj_Y5)e&01ZQ&0?eg(tG%Q#Z0VnTjy#p^*a zCT2zV{Nr!>3HJm`%pE4vtv={J0MzVeM;qZC&;EIs_V1bR zBds$YL7!L>m!})cx^Q7ST~W`OxUoC9$K6nmF;KU}tj#$d26fH4i=eyD4o^}T|0S9O z$M{&ugL1XLcW#uY1TsMFj}IoeygqDf>ntTu{*C@Pu3-))1@_XIm-6kWUE@kP6;v$fu`bcoI;SCj%BA(876E8@H&Jy*Yd7lxpJfaG-}-;UecOgQQCRo zq(k0$*CVb*m6P!`eWP%UWc_Tk`txaDaNMyk<2c1`xqy(YGedWmbqSjU6=rzpi>5?x zrl-{wNM@eWo(*@mtC=_dCJFX69b2AtU(LKoT--pS3}YFz?=$)fk~C~tLWjwi-mhcd zwpdwd@iVm7e~@Rryg^dmn240z(J$0o;geR{MPh1O_+8!uhv|oG)9B!N?=1Ixo~A1h zA@&_J{|T~{daImB8bht0D}B*AZ^sF7;J4HcRp&2ecthfpyeCTP&sBvZoMh!58@E!f zH|0>3AQrx7xHN?*+cashIBxpympyr$oxtdwXU?lErFX(~ zomqa42K82^%w4dfJd*CQhlvDx5cTi`8{OntB5qi6hotM4`}qP<={o3Rv;ol@RY5gu zl5)Akz8;$0byiw2Y%HTL;3Cyfs11r7&NnbQz71}f`Y|M+%517`9C3aaeInZN0wr0x zF_bPG)0?*|k<9kTAmeSDvpjK&gVuDL@>A@G7G;NupI@KX?>*s<%wu6DdWWu|{l1AT zZoh_01j^a5wk5dX zGPzy0pc;0!5%!edd%T?rto}9U=gGBE348L+j;0QL_PshuUW)BtuDKwVJ#QZ=$+(pc zuE}}k(_zZ0}ti}Iby6}6O6A@YcRF4K1Wv}o@54IxR{Zb zPXCv)jtdB8bkH2^1DC;E7m-VF4|p^_ePjZAaffb$B@$HBM{*7z@n_jUAXjK*HS!*J zk@&J;H@oR==jUgf@0eo|BN=Q`DHHh~J9d1nsRo&-z&s*MQit3Lsu#MS{&dNHVcAfy zDy@?+=Ez*uap9?|()+WX(n5GZ+}m$3gjT4Lj6`ud)5^-LG$7;LrMo+&6mPk_^o`v8 zS&LiA$j<8~^pVqV6ffCPR<$YJe8kTkm3&o#N&8MBKf%?aEY)sTHOqjOn38!0Xfxln z-C#wJ>keR*NXC1;WokxVu4YE3VGR}`i|5jIq0@$#j;v_#eE$K?!Oxow& z-d_((&XfzRAXn)pl(Xaa!b5fTJ0@2qxj7EvRE0Z<+av(jzC} zX0C(IH_xjhanN6S4XJ{S6B%qeV|ynHqoMWsfNyJRjjaPjIbX-BW97{24aSf|we)ym}th^km>hNfRJkx7sQ5%*Fs!_)MdVdDfun zQC)^2DA{m^f)1>jDe=?_`F|9hi$BwS|HmJ9m#$cM4zs01UB-;bT$RH}x?+oM85?t$ z)0IOxM2=;JZXz~0jE%@4vo*FMB6C)eb2*Ega*9zogra)dH*(O@!|GU_I4#SZ@xc z_UxGilMKdcc#`9A&W@~Wv&S5)cHLB8x!UQ+@N7)?5L4lB7N=_@*ip@n`d{4eX8)Ga zcE<8dH4iZj_aVWfkAE7QI&c?&bbM-Vhh$~~)<`O*2@mKr)T|L7{zz3`Hf%hhQ)*1| zO+A+Uv?2|xI`yxAWk~5lS9E%*5dyLH*G(i4vzk(7txP(bUNRqK{0baZ}v6UJi)Izuf;wic3u=hM=^! zWoqxDG>~2#UFeH=lRSej+OAEVTP8aW{M%m1w=k30F`YG-ElustvbQBqI7xQb?5Ij5 zyy;HdK=3{;n5D>;7hj@6D?P3f@?6vu{V3|kc(XiO$}0bCs4k@Rq?uIh;c3&V8ZEoY zP?%V_o6e4eHq1p_TvZ{X#?G>=9#7BZGE<1MGPBMdXSxE?FB7Y5voXJmB-8O9#ME|E z+y0_W(^~H)A~iFGiE0~_4o>PJZTkE*a<*mI@;`k{&@xa$AAoCjenEPW$(6lCB$I;3 z>ED!?d)eEoO{RoHt=?$SlCZK-bbP!KNb5W>Qce>s0jA$Oig?zO$D&_Y?M{MY$zXWx zs^(;l;+eHlWCmH37LburVO4FE%giWpzVTG# z2F&m_6~`WCepyRVc^7Mu3Hx+UF*!=w8g+-wpU{4;9;^IIqrshTJ#gHg%yp|$E}Cg8 zyn3u(GMdDbJb74!Z$=Q2w$t|admP(@#Yxz5Vtt;fmHXSxb$9X{WnX$^r7hcg6c6AN06)?sAv=f4QTdl=K&Zv(0O~IjjNb&DcJ$ z-u3EuY_}!NWK(gr3)moyV!lpB^L!S=@l~*Q3?JeJ%FdB`Ka9gf7$Rj{hBTQqa&WNd zay`I@<#^fn(UNP6dei*er7NU>3~_-)$1$>gbrDfsiyNZ$foUJiqKUpZTy>3+f;$&^ z9Do*%8enfK7R1-X*mIOI%eE~?a`Rwqwz+0%^D8&dhWCPIwZS@Cy(MekFi$7Vg=Dy$!TMX2Y4B$LXmS7OaMdAEy{}csO0vv((cFAcq#@#NQaHKm!|ZG1 zFL-gB%i`x#_(jt8U75-w`?80VHk%&;BooI2g~Nsdi%PiuutZQ38p^h)QB{Pb2XD(rt z)yd6=SDAWG$aAuJ{@d`GPj);QFpAavBiWVLX_pOC6{}tNmx-0iR~ob!j)p9CMR+Aj zZy^h-#DKzbIHXl{(&>8cy^8ej+4XSO;)(X&%-jw=x-NE6z6}w0fo`FfFJCHzd^=RB8$-=dESh?

xR|FpOk?UYnGj_8p^@WLQaHlu%bV;X+On5- zLIKZ(m9s39FR2-xKce(FZ=LM(WLtPU@3qvpJ6rT}D+ZEP7TRIW=Zl zfYe>9V?F06A-z~BObWvxlA5#nn}+m<)>|G$C|50aUz}^t$9S$J&|kl{mTL~Z04 z&NX#Mtg@dM^Jy-K1n}K&f~)CMGeh2wa(VKm9m4JE`s zUfIavTUWRpuw`(k6DM*m7ALW_g>E}FZ5&JmdLybs-tm`EV7I!aj9lxz3 zC*Z__uoTDOnfhs^1>->*^&2hgbnZ}$;aY@1?5^0Tjk<4&iW_O@_Jy;aBu*}K5Ex#o zmln4ggk!(LZUQ!@9@LXZclA5{=?+X@hb;n+o%Zz-I%cmnlN;iD}K z*_z{Fx6pL(kn&_r9C%$__Mxv<>D^Cc4+m_{iLvDu<4L-S&86svu#4SW-z|7~Ar+v$((i+j0-O4Hgw2Zti&H`Yr) z`fV4czZ{G^Vck{9zCTNOI=Zi^<(O!7ad)ZCpMH33%;EPhHCZW}fM=z8EpPAk-VQ6N z&L(~s`a}Ou4cFXF02_2TD30?bM7^rl7#1NF@6dCIl@I<1dUQPF>IdJTse(-a#~0QYuOWHe zO@L6MW!Taa-z&@QU2~1Yii3Vqt7q5_Z^SMjC@Y}>aj5s-LRf^p42^^ zpSJ(eZ!O<88b|11DOwp8&vnm^9x=>#kW4;Wa3e10>&nQ=`-^?jd_99Q`*aCAGagZF zPu@D7Rls+mY59Zv_=^v^bclxTtZ45x*b6cdNl|&MZ{LT*-xs{fz0kW z#>C0)x zNJ%!*t7$*J%pPQ(7xb*&lsEULbz&dvpM!qGoOpD^zTV?}=lmz@4y3knTGcQ@M6G%d zek^ApynkupTYO8O67j@pa4u;y)^_ki3m5QS{bX{&Y5zB%{k?H!}(yuXG#B3+77!raW0y)Uda7F6<#`Oy}- zhu!Am`ofbkHvzPbH!c0BkC2N?P*B8RQ4xR~>5_O}#s}>py5l#V3!1-OA?M^*{I*Y2 zC#myK-<3D54(h^!cV_>zAGB#uRDwe}Rvk2Tb@mf(PL?c;_XGQPbEu}A>f^R+*(xoJXPOovwm`m@! zmppQl7?6G`-oayublgSn!s$a!n}E5|@N>>5q?F#BGdmn@_N6WEH&ZM)mh+B{rm^LX za=g&hR8@|BR)OEj<0&}ZD{$RT_^M$9Q&L6oV(#eZissSUKMzcN%{5$;Wo0dG0?^+C zKM2?(_oPThWQKn0S$Uu@^_yXcVI^zzY=mx~!{*55^3nW%9hR!dD*`kP%&ob%4q5?# z{YN=m09;3;Opme;WI50De6N$*t~+2)e%fy1EEKL!Yx>mNY}K>f4zyjDz>W{FudU-u z0Dw0D?~5bal86B$BD=VC{tGa~;2jV+681-aE44Q@Fx*PbaYV$Ax~=>cjE%pIYaL*K z@$&b_Y*F67P1nIUWDDKEm$(Jr!u{SK0&nAqMK~HeIkG`p=-d2hZy|8d*wMfE6Zji{ zwgE(6e;k2bFR+Da7(m4RAj{^#3;(lVk0MzAEEwW(hW{$yi2o{Bd0_}YYiv-&pq~X} zEXL?(fi330NE^V>C|fT-IJ^Jv3jCoN_W3zmOWtB)-u@)7v;Kc<6}N*a9`|2h2AKbf zXMp#11mlP%C+#s?Bk?mBV7$ft6WpGFA#TIZhhWY+{Y2jrgn$$M@kX9R&n*eInLLj= zPxvutTlp$9#vM$HUJ$fA4l{^thI{^9KMI*eUyP z^hdfqvZuD|__pKiNdLFL#(dv)acf2&-^M)r&obBQc6s-9%#Jv=XA0Y(uod?F7yH;pI=lc@zF^b-;;A z?7HnOYimkj{Bfusbhf76-^&I>f9&`2cQ))%K7ZA33$cTM@r5G@5RBE<1m^fhKRnxY zZ1C33uyea$ZuB?WJ5hLlQouhzJN)s!C|}%P>te65!xnYhZ5W%zK2H+S-xPsE;5~^5 zZ#Dqn7#i?n=iBogc?+^tV~$0Mv6KI=<>w;dF@M`K**$J4|DOc7Bw*+cB}@95j>?aWq3fW7RCQ~%HH{P(rRzny1WR=2UX%$?sS zG{<&%3m+hKogHm0m3!=qy{mBi0RTLB$cFm@4zUe_zYK=I42Hi9hQADkzYK=I42Hi9 zhQADkzYK=I42Hi9hQADkzYK=I42Hi9hQADkzYK=I42Hi9hQADk|F;Ii?@!FJ z0L;GFXO>&%`sV=N0DpiN009sKoCo-@^F;PV*v_#{1OUPR215*B2ypnzgs^?)`Q65_ z6Tr>xfc>}ma-WC~kr)6{P{0x7J-3`Z%s^YSxO@0fq=4U$Zbg!XeDY5gvwyYk5oP>xt=vfI_eVSOn2iECh?e z5kMij65GT_S- zNlQy>i-xi?kc|N(gyM*vAwV4A zS8%pL6z>VddjVJ#u4F@6p@mNo`#J*Th6hgr-0D;=>&e|Gejw28~ad3pWk*)-rS9xDwZ;-O0k)n#C ziISl)`%hg->725Ol7Wh*p^B24nu?m@cd6KIjr`%Ht)ckQ*8BfO+wVp#Pt5;_#?~_2 z8gP)AFM(}W4*hGPI3NQ5%3*xPw#OLc3Ewi$>q-zjgAm>le*t~}M>2mW80>>!ll!+( z{QJ;+MCTaj32Nq#&WdmO^1`oqiWc;ooK5 zuKU}X{(;WkD7LaccPPCdJISx~mj-@m;Fkt|Y2cRzere$UM;iFoI}QTJezXW?zrnB_ z!^Qt{3}?S(0oXq22e>%7{`P?u`_r*4U-2E>+&g)8^6uEd%eQCO9zOmpS8sk1!L1#u7{O?tN)g0LJ&E{eUZVqm?PdUeK00%!OmjE}<0r4GTN`i_)JI|h%5I%PyKw0GE z!Ck*esz}{2P(5@{?G(FTwp%$D57(|8ySR36v)@`d_{Eht&vDs#3LFUhU4r}WePyvf zD<1V42=XYtwD-cFJp1-a{Np|qp={cY^V5b7l57X>gnrd`S92<#7)hyJP!~D1(~7o-5him#}~L-MO2C?bE*X z+0UBCo%bW6yu9ieT5bYXcdkJXL_OKJK@!tu!BRm>Pp00@>x|FP zoDBTZbFMs*g!c<2=IuTg?Od53q|!tZ-8T#^sWTAA8uk-JE!P%C0_NU>40g;Z_ z8_s#Fm*sKsmv==yWgeU-nP0f$dRlD8 zUo%*Fd=LrCjIbK$shufr3w7U0FXDE0zZZDmSwF!kMTt{Zla&*bhJ zWus-vW0Dci)6%>8u%wfH%pk8Fs}KD9@8>ujUDAq2#O|nMSOqIpCR6)mV=j?~Up1Ej zv26v>-n3Ty(^AuJ2I!)ruJ+~A9{t7I*2j$F2jgFLrmlW$#+$EpXX!2wQWZ0;J@YTy zoWAtwjZMHBi%}Y0fip%{KnVwj;cl=J`w{tc578bjor!3BFxW&s*@o1j5$+FxmGmT? zN*v3rG3ui;Jd}9T3L4iz&B4$9r;JWAQ{PBcjNO)rIi!0?suS8d9r7D z{J3+hf*{abX|tiudbGRCyWUgHh&uz`WT+v(-QE|gT>>wjqm$he=!0~UheHxSr#Y@9 zEoCNOMV|EJuq+>?y1>3~y|a6tRj{W0wfheo_mmPAX2%X%5jKhka|j|s^h?eOVln3# zwB8ICWoL=b3gmBmF9c-wTvzIvthN+T&E8dHF)cCxNdoV7ftV|#rAQ3&Kh1uOd10!0 zphFfmOt8Op$_<9dy%CFaoF|(jEG+qAHF5+x$_zD-_@Nh}(gw;*a|~2Xn4utx!&SOz zmRUr}q4L_To$|nezS+*+mIb`DG8ypGynCf6k%CM@3{!d^%w(X?#jV7xy3r<1`(AZ) zX=Yww&+8g8vEvetJ!lv)>f4`jGo>}svu~mX3UsK>>~R<+)z=WaW8)WrrwhHbA;yO4 zbq^3nUwATBgIOJb(=)@zHFMj{*@A#{+R;m3|3ihKQf#?L9lfOF=|9v%*7qAH_T(? zPuciA_8A4(Q#2byhnccP>g&{NM*?ru&C z-s(DQT^Sj)^ zmMZ?*mn^^zmG{;9lD&zi>O~d?f6MK@LtT1IC2OYSXr1dBY)I|GjRaYSVqg#sq(iX` zNrLDQMZ33C80>Da)|Ce1=b8L%w@aDzZilgMZ_Cn0 z4)WPsN+mk^$#F-zJlSCsi-^`FiN@Lu+(^7r9e-856k9x)J?@g8Il@}QW7;~oGj?0a zJn7dA${()>9xl-CBU`%NEt)PqES>;O9KJME`#X?(YtBzF_dJ#;lF&(%Hg5Jif1{B4SgcMkiP}M=huioyNGr$`VXk;2eKHq>%$jO7 zoIagG3GI%&ATrlo&&yY-VHDJx){^E(6Jw^5cE6M>kQ$MDX5?cgi7zUD*g(2$Tk5~U zEID5>W^1ln?FYL+lQS1I=XW;u49}}kOx~GQmi6Zvv-9!&^dYk_JAxgg)G+$AZYJ)K z&cdbsypERi2H*8$7!ZY{*Y?U^p9^yC1(uFyxOn6>n5azmI`2_|qx6(Z(7F}~nJlub3P0^6EW@3drUFxj5(?3+mNW43m$D!y7v&rDhUMh&QG z&l)CQ*31B-ccgOW`l>!OH`p`!pb!g_3U!ukjViaW=S{GGmD3K1&6bG_x2vHvhb^sz zG{>U{WhVcGNcN~aL(Do;7h<%MS?;OBY6+lDLKQQe6)X3s6Ft-Pr8M15XWhH5KKq7R zxO_UbuQ^iTV$*WiY-Zuy8g&{T9<0*iI@cD~I2x)(aO;L8Cab46SH?~0p{hecuW}A& z%0A9;hlcj7eH!%QCVqh7eI%W0wRezg+>-=kFiLOVWZ0 zgYE40lxCZn%{$g^CxyO)VkmBfH_yA`L z^rlCO=q@92X2Lw)DD~_@5hSLY&Z|5=eDq>Bm4WX~s&mdDre@}@d*!_kS(lNk0x$LK}*CGwJD zg8)O-SNBj+hQ%o3lvz(r=3INf+5-4~9a0XGZmD%TE#9mxo$i_Mr$v5UI7kpoe#~t4 z(987DY{?kwe8VE)Cu*Y>)PzGz$*&hN!x2p@pCvyZ6Iz>jH$NMwv(!40(0#HSGdp;l zaxQc%J$98ctkYaql0Y_4Mh&pm8#e(4O_Ds6!H+((Bi-w@?mef&iT(1?zC}4eH|joV5*&S+CGd@AgK|Ryy%4_<7a%Q{ zle!E>xX4_$NA=Yw(IDn~M=HI_Wo6C`KIox38b}vmTRoE?D2o!AxtiTGMWCZ;1pjV~ zpD!jAUxAUNNyc|}jdac%3K^4mU1fz097~@%0{4kKuZK)(wU^ztKcLpL5LAwhEZ}UBTV#S1TM^N78k51M}Q}3C3+1rZPgA_RtXZ1=1>95 zX{n2Cr9F0Y^!0}7x%bRSP=#Ef7?Szw?UZ)x{j}XDlW5eU*EEIz^VS|}BqZOtlo&|K z5omlcqlzci!M@By@4YAQ>jfJLHib-P4hIc{$@e|&tuF0*P$Vrz8BS1%wedimZtR$n zB~XS4HJMdGnv22O5xTyw((1&cbtYkA za13Bl8@h= z%PJvK;P#zH)#TEs!HNEL7RnM^vtSC<8O~f?y!k{}#X%YAoWKAQ=vosg8d_foY4|P# z((+83b$4*k@n^orP721jzOn2nW$_NZEG;;VoQy5AEa|5obW&0s)9pDokDgasBhMdQ zOnCgR*4=g|7df=))bYxL&Q}|IsGzk?0M|fKpxkff-r)G%2p?v%-@Ige-!r1)F8&uZ z7bqClmIndO6lyz>MJ0I92G7~IMPA<`t7@r|Gj&jiN!J)nsH;X+C1u2 gC!(@siI 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%0AE8;z^Q8>ocH0+6*GjF_=XQS_IR7$S|9f<~ zAZMxVvFpEm4X<}{j!*7>8WTnbuk)TUnbZrPIvB}~6L1$&&qf;!k!jB#9wz-wtGak5 z*I63qNtwIddD>=a=^!moOl=Z)G^L*G6dXqoU@9I)cv4T`?wc4O!vfRbp~w+wm;auLw0%QOL$pP4zRxjyI}&j zq?;l5=gcAuEWpyhbD>U3@V+mO{gvv)HadHJ-}c|=FQD^Z=oeqMx`$abUX5L|7`l1( zWYhe!FZZSFGR_JqgWtLz&51m?@gn@nSx%epFH`Jmp_k4O_vz34r><)8mxHEXY}0x= zKa>8?;=ChI2?i?`rUOB0x=a!i=H|wplvKp&BxMh5`ICm8?UK@T?@A%B-Hh!@2@{G~ z2oWVTP~hPJQ{iW(b#Ks`03nTAmdHYrd+dr?Us2hB)TrE|8b<;L4GcER#PWRm2sOsA z$X9%V*}MzQz(a+Q^tuQF`8co`j))A1Q2hf6Q~>lE#DrNY#`bf2mGj9qcQkt(A6H5H z2ff46%YD+NgB~@-QbJAV!(~W@Vq$2+U`)*m!mhBEMOLKSZ$f|A?l#kR+xcDuKNniT z#bw^ewvsDJ6CI23(Kh{OM2}?W?87q+%>&Kw@YLIexSWh0H?DVA_EKE-;2NiKH0#hY z^n-~zz6`-%)0xrDm<7Y9?@Z4|-*+61^Pq^?&pv%o@%<4Qv@?-jf zYl-3VsYAQHC{1K7>vruXf76x}*6?GCmy#AaXqb*`MQO~>i4G1F6t#Q z;co6^NxMWyF5NBGRS2d}u&pSYkVP!RhVF>?kj^tSD^LPdaePh)5|4AZyYZV3=z<}FPDLM10nG_7?>$)3LHp^&tb_+ULmS)Z%18m8RP?^ED zA~Yu!no}ts5HuEkdh%Qhejtf)>iKr@3q{DC_6o5f?gp`~Syt+r&`&8GNMF)~K6`V8 zl75hwMk@*Hxkk?n=$7r4up?fHBdT9H9?mp;E6Dw`^T~s`?;}aco}JNdd*ZKJ_`Uo3 z_|MO?#aO#Pq;K64W>{IiblbPc&$TJfa`tp&h@i;m``jmm z9e_5@52gs0JN!ngL>-SF`sC|_8A&B3cVAN%6lNi~t;c;x+_~ijNwRcYj zEk)8#TI{~mL5UM6WP0}X6 zV1XwFFLN+OnE5ExtxZxeq79^6Xj+2>S0ws#z7qK54F)eVCpSHQKrl$|XOJzpkY)@& z(;-^C8zSI%P5L|!>xk9g>(>>yDwAU?#E%!;ziZ7}boW~@ZMjz$9r{k3+J!p zgBi|nU*}fA5GSnSXlBhFY7BpAPPQxPSu>ea)8o+0kb1_rtofMXo~tK#QAy^%_Qu?EE*q#T5mJp7 z*3wcT^Q%1*YTzhrAwPfqaq&^EkJFCnJum_uIL%ZGoYw>U1ojNTu~ zzE|`2hp(URI8ap+SE+Qo=fGKlR=U-U0cm;;UAit4$LKWeA*4}>K&P|ik56XCXj-cR zp=m8ywdM~gEu)gdnTae@I=QjFp2-=H87(8LxLbr8xJ47HX%*9*ltOZ13$84Y&KoW{ z!PJcCy2vs|4RD13nnWVWnL#LYg|1P41gm`ZI4t(MnI*blEWiedNhWPVp~0dOVEid? zd^N$JixvV#1*T*~q*bE^>Qrq71ZK&CziZ>|{(eKQMOVTJ6QRWL(hNg==*4>MwTARwz;^NGBMQ7co*)BFlM*NSu)TsM-cEZ8( zbYt(q;Emi_|9;LH#HxS7}}IJ+xz0pH!luwt5A1pBzI!? zWBqo9c(snqm?QA-?|Em;0%b^S|M=vNuKE%CH&$aQh7yYm-FWp zL70#^exL5_o-ej_gL~xz-d#wxOt8iY&6vHkFxD<`Nzcn@%C|C17%m?M%en0pu+}Zg zcHi$_bKMtu8)p!-V)?ui7C~jgaGl!Bp9zUfzKYx*sSBR?>+G4!AKfk_#qABEnn-TFaa5tDuAd!8}m$sJa5*KRki z=kvZJKrp@_0p+G!XL!mZcIPD7NDHx`PU@dOkZ6y`a5~&HQ9jMOGIhF76q_s7kkio0 zVVw){E-MKdZ^uE&__3Ngr)Ym?H34IrG48J+?NYnMPK=$3Pz{HQoDgpk<;8RB$-%6M zH)uj3JrN-Iq}U?C=I^}jYmk6fHU3Yows99ilu=tewUklitINQU4k#5`PVl`~mWzdW-AWy@|C z%jGg>0SjJkbwg?!HJK!rL%GHWaA@sxkuY_@mQ|aRlVF4^Ak6@sfnREWH;}TLA+xEG z?Hp~IaV+M&Te&*RX`g@eZR?%+_@fTx`gX9`sYX?PT>HpAAD;K}<4j40AX>c1m3F1A zqj6v-r^4Y`A3KnBy8p<^xU*j~Cn+&xr#ZEzMg2}kn7uPzdc)53U9upoa_B%m|th%{WD4=rb%1 z*iJ3a_lsh5w1xE{@!JfyQr(f*1N5TXcQ%AYJWWcD#yeQ-<_$vA zg@wjw#4LQHxh#?jiAO+G0+^2}01A=n{tDu~dG#o6V@)`_tgF;b)eq6rc(JEPF77ZE9!N`m>_t}XN8 z98yp0uvQfm(b6`hP|Rh*coNE|ft^)<%e4nilD7M9)lDaSdRv?~4+9sYY9Tx)(cI-{gH&uuSOJU3XGF)O>~_1{B7nsw(lLXp1c zLIo*<+FI(o99e;nf20qLNDZBx6?S*?b&P`NBL;@u;zGbriqr3F+Kcz1&mI%~uw(w! zoC+!^L4d7yL;%tB;f;Z z-ki6lAFbZ^$zy=9Lx6p7>_2xDa5*PnFdY4i;}T4=sWMyfT$L_Z0=?742}~H>&zp)~ z)pT7s=>9F|w$OPswAwt4XNs!%uh`WcmAqP%^e=KR^y?`@u~{AwjMQqe&f zMbHf)-lab!*dvZ#Yo8hK(i#z8# zCUIAfRjMByjB8D@oVcAiFrv{ls!?l~uIIIfc1))lBG|6}dq3=0+^Fa8+?jfNCg=C~EC1b(`%Y3G_|16k#%04eRKf08c(@d$Te7un0zXRW z3z<7~QAt^nDl27^Zczs*Y2)*y;z>%AMrj4H+{E?gpaNqU+bm#cOiKz-TB;L=Lrpy( zcIe%VX-V2HQ(tkJO6h$QOpE6M*G+`PQ^JuA4r4f1WV<7aEo4;lS)B1Qj6(VAXMe?v z0Wb*m|9>0goLQ%s0ziojCL$E-7!?aQ-FA*kP{nR=c|io`2`)ZhtWRGSBx+OJ6H3kn zG&tuc$_*?b&Wwq45<0m_Gu~9S?hs73JGoVRKY5rVZ025UQ93B8#gR7mI7_F)Nx{uV zmO?XCLV}dc@+7WU+p!ucufe9xvl$Q52~&pb81mTuNPafPI2l{=1#QALA#y9FtIcZh z-;&gshkqo5v?*?+Sl2anXkxP8ewSXmzWnaP$4xK($D3no^Kp%Qh!ZBn`{>~3k+L(4Guo7)2?dVe@5GW921PUlzy*ce zHnal@Z_8<-%{*|LzVPvO3>%tf9NiF>9=vDq?&JJ1CBTWFHkyhwQy`b!^S8V^brtUpUy>dDYg@;$JDS^<*IB)cUP-STO()x(84@yyAL;AsHj1X>1dIJ{ zwALzk_Q+z_xQNdVk;L<&KN!w(Gn%IT=Y7qwV;mSNI`W4K?ERnA$dQ+&O!Zg0-MzelB2aNZV+Cexj;%V|(B0ML!FxT3yR3tCL< z2z1hUH%f}vY-&BHaf?0d^<|G4E%vqHg&VP=@7}4ZQGI*I@KKXL zD`;?ioKhO^>m~K=aN42r|N233kRZ%ke6CioRL=_fAR=$sMt_i=GM{7>*Iv8Dz_MLz zo-`u~-OtU2{$JJL@7{Ml=eIM#X6mfbXl%?+2slSGA(8I(TnzJd3OC~o@K`eM+I#x- zt*ak@x21FX+#6qX+Fxzkz3|t>&)xTD-u?Eqw|+k5jdyjpW2JgiZ+!J1d(ZAmPx)5z z-|rKS(4W8f4{`O3P?{LY4(_a9Wg!(OznVdz)I3UbGJST5U_|Ea<#S{LP4QY zCp$bAv^m34yp<%liCH%snoP1DWfg*;C}sw2ZTZ)m$7Rfa;6IiD;AjAw#1Uh6yI8GK z(gZh=A|)}4!IvS#a(St%&N&~C@NZeNDVt&;aX52Ki3)&Tk1*2l3NU$0tC@10#CgW6MCYqtTQ;K4JL6~D-<0en0sUr zG0k!b(v2rDgG$<--E)}zDBD4Wf*(S?M+HOs>T`Z^|JLo!vHekwb2s_%3*7|v>7NUa zFU!!6!8d{ZlSm)Oqr#!B?$Ud{$a*TlFm!i$@LbKLO`C&LKUy(R7YAv}Kmo2XTA=XJ{CNp)L932|By0x-OWVe755e`_yZ-9@P2ZIW=>?7?KJUul zx1Gly3vX3DbbbEd_VH!G`yai3b{y+a<}KCN{&8PB*;(`Lo#t;3F;;WVJ9YjQEqwm- zK`MJ(bh|l5r)!#C4mBK%oo{^IJ+On_n>o<$J*e;Z)-$^MlDE>E=bmqyd)Cvs$txW% zDHoD8noXq^OjU7t3O&&?pQv%H_eBV;1hiU)8U7?jO;+JRKf=TS!1hCIOFbh{h=&{V z$$=0HgOsrHal_X!@?va+)5iDTIm2>LA;=X79Eyn|u>ue%DwPD4sSKr_uEb0pvqOn8 zlEpByJeqZiQ_lk9BhYpM@Ea_KgM-Z@)F6gc?1~+>AUPqpC`pmJAwhlhRqyuL>7CSv zsqVKo=R|Icu6ETqVdvxZyQ5->IQ%Blb53=l2pgj%=%Bwe2`#AC;Y$lc%{n$dJ6&!v z+gI|($M32-zINX$Ftky;YHo{LWi32P)n~_c=%-iChvxa7H>r&TA_-5N&{n^6BFvg| z7vrv{*hWZo&VuTOsb0>6f@m9e9I%#TZr+SD&O1^@j1NaebC9^y=0Q5mFyHZ$(oIQL zN@9Z9c&NLhQDU#c53rlWy6=0>U+j5jarD#p;yfI<)I*&n^uw(f9vNiy3z)60vE~!& zfUsa*0GUy>UHejx9hdDA_#PHEHhXkUJwEr@zamd=UuqwcKGg(|EZMzM+M|Q-gy+5c z2O_DRG^f6V?D2liVdP+*G;pw2}= z#}^35@>D*|wkOhfMjLyP%9X(E=ujeU)Ga(GP0JjBA%Z)U0-=!S^9cNc(HjncypQ0^ zr3509%qm7X7}-e-BV%$Pyx~Li_bKHp*{)alsav-s8QS?Jj$N9bMwSyQld1KERbyV{ zM!hGFM2AKhDw~oJC1*@%(p_YvrNRwiZiio;U$lGo_1Vs@Q4KX*B%-#h89_HuAY7;ZkW>gCqz3W5wX%M(|I*olh7=$ zFsMzC5azpNbZT*d)}lm{6dSLz&`_fVe(W*>`}F;A+JQrN9^{^_zaR9?Eu5Qf_6WH{lfES0M(mB5cCGzQleUUR(vAN>m~nLOXp?BTZl=UBo+=&?}|v?|URIOeE?DX`{F#5Mwe4mj@{ zaW+W6AXOts)@HC~n1v{$`*@g$a3p8EHewT=!%v{KEow4d^u=0;u=&MPU6!NzmDhf8o|YS3tw5L;2Vkh8G#q4dtnKMv<~nSZr5 zJJ+pYi|>hHMj+OV@4;ktqrm~EL;@$Tb%?)R?KSh-v9cK9+ap zRnu<^X%(F32Sab;f5?@r-uXQB?%|Jl?VofV{`r+(_?08szYf0nY2&<0d3M9t!1I;v z{x5YyuV|XtNA7XFbozXc8zqe9Ce-06Mh8|Ur~L-K z4_*n|`hLuo?du&+EyzA4eLmgf7KICpqAJaB&YHrYWOFi3VQOyK73^27!_2Ng75>f5 zR~PnmdM?eqA2{3+`!=uGym`#Rnaka-UC3+Qm%j64+`ClMJ*M_L2;iSdi7lb2? znvtNiu`;m&U+9|}CG<3NbPd8Z$oUM@RH>OA;a(x9x`P-;kfR#&GcH9go=siY_ur0p zIoCcx@J+Wlo=e}S6OhAEt=Rb}-I{yu)kRn3ZBW8g^7{^a^1s1+xDo%(ul40qkd~1b* z00XZF&kZ8Fk;#kv>#a>NwezJ1T5!NvpG&WlE9On!-ZjDGP_7*gDe;DUWH< z7F3?w``xX)KfK>>{d#tYQTE)c<~*y^S%pf^&8z&_oI7-3-rfGYW2eg-3+fx0n;EKX zxm@ezft^>8Jj?KtQZQ9(`^w6$)EuED6Hoa|n0Q?&#n$tt9bZ+IarKAD*ByU<_CosW zf!$)wxB(`5D+jNLTj`eJvVv5O+Ktr#>c&MQenaM3?R0C63JzFvJ@Wof}KQ{hm_ zpK)qg(m7DWh|%&I;yoT2@mgHpr?e_2B1r-Ez)~IYFK8UUm8GFam@ja!fXJs7T4Den zU2Uh(puqZjk1bAd_RQaoOnb0t3e;^x3vy5^(=ql)NO=kDR})SNQIRogy&FWnT$l3OlOVb z+i~6-4C&u~`wH%eUd*RoZGfLswo;vN1o%`3Z>qERHhV*O-uu<7TifpwuSjEU9I0YbNO%cY1xef zekQHy^z13E#-X1gZt!%5N_rr8R^yVuAN-kmSBq2BwUqQI$#(tMrYD}DemMQ~eUqoV z;=}BE`^0|1)yb-om(Oqc9*f-8^sDXP8|5FbeO+?5}D7wcl+nm)st- z3+{5?QOd~Fyc~Goo}qg>XMA8`LDVfVx-|@SN~Ha+Ghlh>CPYsL1am-T8YY&hiKgMT zp6xt|t4;(Vt;{Q1xFnuOeY+Xx%O~SVfe_uvp#g5J#)ykMBJeP!5yVTpWu$I<5`pN1 zFF=7*Kt56J1hxN^@Dbn+5GZ?`bB`Ewa^*BNR8X)P=&C%xNC?eR1IklDkW+@6@*tPk zKv3cE&I*KFK6ckRppPXFXuzK2;#=)nOMp=xi2#4Z$DkaBaXeI(ZEy)j<4AzIgFPc* zb0uOJGzP%h?@)G{AN`1H_Z2rkv-7-rXLD{Eo<@86&OVv++$!Q==RrToR3V;slJwnj zwO>2;s%l%<0b#=QcFb5!U%jkt4MhqLigXJ%{bG03=!La+sb?lj-2)1&i_l=^?b5(w zQycBuM$Kc?Egpg?d>A3P-ddvw+fBl};kqPPC%zT2V>)bXw<-5-yOx>r`=3(7#`p`a z&KA$E0MuTFsXQP8tq9plv?23WygEbT)qEvhZVt-W1D;3!A|gyAWox9Ig{;+c9rufR zT|duw{{GNe+N$@%UsqN_|Nicay`BFHK0NsMweLR<`I6h2@rw++jQvtaHy*9W#_BrO z)}Iay_g#7r+fS*Wg!WL3|$g zExX*X)O2?%C%_}4Iia-tmu0z!Jw1@*E8cDQ1cApn>m7K*VnxX|R)Ac=D-MeCQ!s-_ z;X%0xofO6YK0m~?6eG|~giX8HiaA5IGa^lZ7{dG?fIOJp;7H)(l^K18x%f*8eaT2m zQ$_=5)ZuL4hyo4S#9U==9$KzJwc_OB0C}M`jf)tSB zfHD^{l7HJfO#Qub@CkNTi*gvgo^b++1r9n)O;uev>YvscCQ+l}ANSPjKw(0WwZOvi* zNVfi+{<{+|?*II4*7J_#YX^F7+^^Z)^`ErI`yO3Adp4x$hsf&(AJeKg^v$+&lcJSN z<5jkw+Un*EhL|v#J$T^8^qv~!se+-vVk7V=BDz(R7>u}(B?1q!r=_Zx?i2xO>Xh<1 z$}Y~(*eRi!jgK&ORy8HE66s79!VIBpJW1{GcL`N&F)#CIIc0+mV9gzB#336?UZ3Fk zo8fZPhT2R1QYhzDE_plV0BKu&qNy%^ttlV1tz@`9(F~d|8 zX$l7ZN(^672hOo=c1;+$8Y7a1jv7W&!dh^MO1x*BU788ZCHa)l#|q5H$|Gh8n@Dsg z6RD~j>BL7MO*}2pEU=%s!ip3&mYRl%t4_zxO^>!+oQZbetxwW)&kWPs{j(>Y2?J$k zYFzy6uRf{O9euQ0ylNjV68FU6UGQkQrJv?lbMZx&NJ;2ZN$G+>me$4wAOW$4e6(C= z^buIZD6kr!ccdl8AoQkW8H$UVNM_H?4zbDItK%PD?LE>t`*C<<+_qD%matQdDV!U2 z^KzVq%zy`HHTWSCY!b}fj7-@S5#rBPx2dfz{V#h%olgpZ2Hm{eBjc}jNl%}p>hJV# z+)sIRM|LLjvgpn2?@o68$Nxt^pZ6PAK0c27bo$`6+V{6_jz9h2m6~&?B4wfZV4QYd z%<2XE3=lo2a2$T3i*z*U+XAtYn8mx)9*`%JSfVEEcjl;`02T%bQk-h^M6>8o)aq2G z!U{XeLfPfV*DYo3=JlN7LL~l8M#Lr!><~qX9gRTRP9r&74xuOnONqcc9s9{ zmw4}pHm2t$rX>$=9$Nsns2zY=&xCf4#UY?bRAJj#1D`;E%iHSIIL8K8B0JH)8b<=ag=`d@;uHR$7;~;04Y+~4 zt{Px&(wZm|iG_6?NzNszyCx#2fh{2*niMsg1Z6g3X|p4VzOdHweEN6B7xxE$x!-m# z#>{sh=S@cmQ;BPb;C$O4RKV)F{m!0X`dNt4mN|c4Jx=KOmkfbX-Q8CAL@rm2+F(_8 zW7HCgf0)_t6 ze4}deel?5060tkm)2&B$y`6mcUvjJZ%gHyqb=T=7!{e;0|K>g3!9HVfc=;kOtM&FZ z{qGi&&lm64m%cHwrHiq;Dtsw*tTtxAIF6_EQs`ViUAR6`38r$077F@$4FMH^EZT$y z19Jj0A7O_#XL`u1i#@dF3wy4M3-or$$d+Bn{;f^|h%DCP?D!*CXzNf^<%GT_KDHh}8dYFvp;YxELkSRvXI$ zCgx#xQKt-U#WNKKIfPd8TVPX#fRG=h2E)~0XOqx~f}(5`GJ;rwZFS=E75w2k6~802 zMBC=?l-T7E#wu{WVjCP-D~Jqw(@v`uom5>)wJ(iO&dl_u+L zUP`XY3Ash>tfsH@UDxgi*t;bv6J+JSKDXK%?{w_!gFmun+J7|M-`TP8%`YFH?Ec&L zug8A(mGj#r3sZgiBx%fmExD8wsF_fEcC2?F)pSqY~GB-sMP!w{)h?Z znOP8`5=HVbPr|rpNcb=j3+<EN}JGOK2A+FLcuT^C3iuiTB#Z*yB6%&b!&|)xhn)SYmYVI z6izstP@KcJ;Vh$BYTMZQaR-q-{;Pt!I6NP75)pwTZL({%w8`JIXyhh?9#dd&1vk~| zivx`JVL6XFj#A&-bR#|8lOW6@M(F_B=*}290#JJE)WuRVljPWBi>SMcl;gEquII78 zPxKbc)k%z1hn1$|rF&4^bO4!y%|)8Zf*VW?2V{mc1*{G-z<4&tR6feF(p>H(UiW-B z(q?7`3DAWs#nXV+{H*M|dL4J!@0MA5s;>6qcly!~(L01QD?85zjXyhoU~}$9^S5t* z+ZewZ?YkyD5~J%+7lFRaGqseR(hCVITiVTr>#YW|T_ml4Ke5@pjmLqDyTA^61jHD z0P})Dlr^EpZmFQh6;cs8)I`GZJ6wzk7h&xHSfU(UflWy?rzZGZO-X+Q@U9j(h1)8G zZgxfy3JqJYIgvmmOxKyqJ1}i{5+aDuq9|k*O*lbONOO$B1VCH?ZIB7@>BHCxVVOS3bGSj=I`^b;-cnLn2$!Jewue@F(u6hj7U*0;(P1b5 z0O$ESBGrMF$V4FH0-cjh%FJ2XCC|+expI>LGfV=-4bzjhzfw_0k>j>O&Dn)SzJN{U z;(aX8W)EW7F^wgDW@d?MVN=OE9{TU;G&z%Dvl)-V+1PBs2=HzEx&~|uK#g1Pin8+- zjm_Xd_6TJIq;v>HfqyJ)gRwC)QQ%lwMThxF4i1jmDco8)flX=qM~;Vqnc%Uual-J2 zNT`+q^FSLIZQX>HQzdaII2b{^POyt}NzTEGVL4~62Z1pQ#G0$FOTqChDGS7TdJ+4c zvf{|y?_bP0zFS)A(#FQe01mF64z~fYj2$p8UQcsoG5>)J5)cTcX`N*tGqG;7-5gqD zlx(-&z>O0oU1PAU<@IEw#t9X~8;Vuf2>F+vfBe_3l^X30v4}0672C|+bDQ1>9}^zR zJt=I1=C}pJ=|E0pCZ7!9l${9g_)@p_^t1Y}zDM^xIM{sPn0V_){^h~FM-K}o`rQ&t zhJlZgHVdz-6Qfj?wI0Dn`$UC0xYtg{T7w(VfCI=T^`lR{^hZHAcm(WRFw+cYw~PoB zlY%6mg<5!><=i+mXNM#L1uzm5XiXHEu?xQy|#K8Nanw_z>f@IoaOGIQhb9O?L{G*%lGbLLl1hk z09ui_1%p8pdgikh0yuNsjzk_tWRG!CVTaV9GB7Lf=d*gCCOR*)Uwr(!DT#!2?ywIS z8}R8tAmnuZN!*-N&ZL7m3PLef7Ez!=7+oUl{hSG&3e^l1tA&`%AW;x0h_4RHU;#d@ zl!$Z1CDau{n1-lLo>(x4nXyD~!r>a4T*65nPA1gALg#X4EulL=y?R$f+Q|-3_KgqiWb2VcG-wO?7OpwHmrOm_hL%2>L1~m3gj{@wnT*&&iXb{lRGv zZ!DHhhD>`LK-kDyY!x#nm(LV{kT%qb#M>!HiZ1a}@(+*S73%8xLlW?2Cf&bmTRklN z))2BVZ=`69BdT$$lrYZ~iJ#f^7(cL)MoD$;=c~`9sb~3<;21*}f+ko98mMxui#GE% z*<+FUwiV8t`EtFQjJ4t1uMF;h$1E$6tca6bloJjs(5lha5EG**Mw`(NB_nhuK#vzH z9#g>yG=DnJ(s&%({(Y(!Llvh8d<=0y>323CqIm%oPqF`8rnXXgh0R=C0xqzwry&s%P8W1I&SE3d~k!lLEHVr7R6| zE+QCRhyVezaZE{LqV*FDm8yXYfmsti$4yC_6HEvc1!IPwmIn4Dxm+PbWt(3wB*!Xn zG_iWCFw)s%%W7vvPY3XcDhMaIl8zykrtXK`=?UuX(6ScX3pI<=#zk-a`Uq#94%lee z5%Z`vk_liK*OxlaMA*qOWkA9WkXK;i9z2QQH(0sI4yD8*)!^%@Cee)$-o+s-n6Io> z_nY(mtK)Dqq$`ZDz|(`}F)cwVxtR%*PNkYg40{BHadFRD?6Iz74n#DsJV($1XCV^I zxd25AMXoMnn5u&7{^|6TQ{dA)Qh_Jf=6V@sS>Mv>Am>(tcM^gZ*h{vz+zrA&cvoRer6h#P-X;uS;T0{x1x|4AB7RCSzr`tBj^wJ4 z%)+sTdU=uMVI_eO9q4XPhEIlGLTOs`j0LHpWNfHw?kK#LAlpF$sRJA1vVo;BhJv+2 z5EKf4g1yrTCYtdWrxb({tw&n^i$x+AD!?E&Uj9;{@DCF!nBgEU4lk$MiW?LQeL<}@ zVNh}~rGg;OCy-dSplAgIHVlebXH=I5l@hTgY}@83IifF#k)Wi}$P80)ub}Evh6|*# z{K%;@!O7(j{y`|dXUBf?6z>*(9R>m9VG1SbpI0#n5gLg2hma_;#{y}+2lz=Mk-!Ip zp~7nXa0hG;$0`aTr3K21)%D!j0B0(i`N8_FD0&?T2n@y`w?hWc|R_Q?^Z1Slvbuu*3>iXp_F7U)ZppGw2%!k#%zI!2)BtvHXg1xb4Zp+RknK-vIb+7I*-aiQq%%AL}hR;lccUD`lyv%o7`vWSW2{UK5gs8xgSjb z$A7(l^MAe5ZcFW*B-$J7j-!FTTQ;NF62~29OZNQB>|>DtMIxKR=PaXFVQ>MGX4j0V zp7z-07iqJ5VS|D7vx9brn6Ai(FyjLIIf?+{L$M5%pCs}OL@6MC%_G-)QK0g1;6n(>#@Uuo`OvT>D)5LQ zNG|J^hSZ}G#4C!h39^{kJOoz}x0n=t7Xq9* zmgC1}X!crup3|jZI$Bts#vN8Yhbc5g#-CIdh|H|euac%y^6UaE#YyxDj`9zK3-7-+ zbY>qn^rYubwr|C;8)U0mv|=YZs#Wn1$*WlFSkO-xPc7kh6dFE~k9!Myz1X@Roa_nc z!G3ytkhGhT>8Ndq8cOk<-l^rr5`&EGz+QQG!?EKu|xMe{6W8C z%RXH6jIYXNqt}shKK=h83K+Z?c2g*(7gM^BPp6q!ib<+Tg0$cDg6(o+9kzh5XP;`k zIKlNJG<7WUhKw6(QAhZ9n^=dZh|0QRDecN!;Nyc#bfmxd)cU=Twx+6;4^vqe4NjjJ zdTQv{keY_d3r_J6Zf#+dX_Ncx1=tT0^_JivzFuqH$qHb1gJz;LtOxsCt#NTf88)mH9&%M%N#?o@coOFKL_ zlx)5{)*MQgc2Y9@+|itCAXx_T!<3E;a^66iO!_}h^NaKORMrQwNvHExhGxBD!of)Q z6U|c4Jjz;r=_)LHTBx)%sq7}rVhy1&dxp+gaYxTE6Mx(K7V+hZ;OIBandkre%Dod$ zw>6s7C@3s1;v>*le6afL^W)2aEtWFCTnAtexvD*CFt#}Mc8Flxg@acV=sih>va(VV z*@8iXmxcI6dWEAfLr}^J)?kg3PvKY(2F8`5#zvrHs4eYnA+pkA<3N5t*)jkyqI3fC z(+U^uKHN|YlMiUFD}T3VZvknjsWS%0e!CfE)pvuqO4_Xs?uHxK!lXXW^&5lnM-bNy zj?}9YOQYC%&?r-||MT17#&l)ka%924@i~IaU7549C=qqkolwh^9~R3%zvFi@$kcmO zer!Ht8~B&AByzzNFHQdRx5xY6cJzI>VQ%Wi&5v61108o$M6dr_CzDDvziUtLKei25 zl<=wF6P*kCMAD;8nKQ9=DMy$~jc2cGiKxPKZ6>FS%@7>-Qmgu^u|I@uT+p=!q`1wCy8iU;CQj*RCo^oBrtW<(I!- zy8llKIh!6G+=Go;$sJyW+6ap+gdP<7`5|TYS-1~$ zSv%5=7Dzm`SmQvZ2uj6|Ii7I+t5ZmPxzdOAwz6TbauR9e$6aEbAw10PH@NHy7K!zz z28#|r79`O}oF`_4%<*OV#h_m<3_I`H4u_(=ftjxZ1SWdK^(}9!?9-B0Yv;-Mrfq6? zyB%e^7l`C_?LT*qA7Li$<;Qz2&_czyx%$>SYxI|Ee|=&7(t-pZGyz`m>8(R;&!Bx*Rc2YBpZ(2*YgGKzjZXkSJM=(k9rb2N1eXuAIwJQqK ztR#I3vgEtN)DX+OW1SEa1?US@GpOe_X!W=FS;r@Pl)NOQB*ELRN;|I*!n*N zdw2dYWO^lpeY#(Z&2_A1Wtseq>{Zx%G`ch(_H7lOEwpgp!DL3c)jT|Bmofnq-_t_) z%vXB?XAsa6EqX28a>VRfkl{3j)X(Q=PN2EP8MizXkZN|7UoD)n2 zOojm}Jy39~x}yaW1m1%44&XST`Fb(h-@{}hktlyM4V5LArYf;KUnEJ3q(LdX5KMmq zRGTRs%y@za+$~2me1Z#xis|se=*(Ql=J7#&>>QUod3dpxi!{1q#28&5XRPtK62yGYGoj|`A_HihQd0U%f)qJ^0?q~S+(p0ktbl{?YW3PU=h_sDB;|Fc1A zc>JcV;x?@w79I(eBaNf};!diDxS;u27eXLd6Chd97CG8A5n)Zp^ZlRjIf`Je z=WjdfZN%rR<^vzz{F}4W_h%7|$d;nwTGtHkGUFzn|o7!?4wP?BlV zoRqT|VziufV&i|`mOIa=X(xu$aKR`6a&$-C=q}qrgIKtB`zo`=#forz#CY(EWx3zDYV3Z?yOYWQ_oTolA0GW7al|%NF-_Z7 z%?n0rEiWXuwGEC+p0t-1-LgUZ?hv>r(0Yn?7fy8~Jo1>1#7U}EflbS=lT>*udLFH| zI-$D;mAqA~p?KC0L;)_XLYrV&F6YRpSWrT~aaoJ}s2V+8Ul`Pa7;HXU^ZxrX`^KyN zuOhl{JjW(KNI(DVBkGa!8uMXCUtRZVkV>UQXJiECH4Gr`FG z$(wOk&mtfvWkHGW1h+5MPN4_{5*WZpGT8+jonfsCZB++y7)?n6D?KEevoFB->d-9W zAqw*t=*(Uw%?IN}pZuIz!gLz$r1TX!qcLani`)tuF#`3odZ2L6!j<A5sn*lLkJ+?83T+oZsKrX(Qx~N3ZbzbG}>zPL@i$>d% zlWQN?K3qLG?zz&mT4Db9!-y?){PSa`_IF8}ExujDO)d+S5hJnC`qmyGvYoV*A7FQ$yG>Olu9}Ckn#>8R;1}bcOZ|jjr2x16OO`gq$(mJ%a!H7> z+BYIK;Q^Mpn929Jmr=k#+=%}L0aU(b#S~F)^W9C9|oTNfd zg~wG$*K^khYjo7R(vwRyB;ew9KV=PXht-EP*}>4!&OA3w93gnPI6#lqri={>fSwlf zqED#1`Ic9R$VmIu;lP@asXTc+^_gk6;z@jCW5x+zzWs`g@l9r?%2UTo&CBG?Z5vLS zUYASXvW`H-nbE9nJwBfuxF0&)xjJru4M_G8!*;)* zZFdGHKociz)rXnvJcWvnYB+)4z-5ZA7!6Cgc}c*=nL1-XLGB6!-6j|#TcvcH?d0%s z&px{5)`56I$)+ORKu#8(?|~XzaKn~o{C;m}lRMIsO#3Y7J&Y+aJp6-}Ie6MQwe;RB z6PrG;vH+>jy!MvSnzB8*cfE0{VtcEu_{jHq@3G=%>HF{SmmKc}CcBLNvBvyPP5)~G zpRWL?24~2){~^FLSfVjDHzJ!4K;7&Ke0Z|Pid5H|xOYsw*f-2_Fi@U4=iTcW1Cs#n z|AMo1&J;Oe0#y^R2h`IlfzRYqc14JWb(Bo`l8uO*qve7ydYGLgFgdmEor|vJ zB>9L;>SpQ<=)_`+J(F{M@oaPU0dp>Cnm_&1Y`lw zdbyb@OaAtC#}rx)7tG& zOV&RMZ!{?3M%sbC4U9iQ)n!)MyT!XwgyQs-^iqucN>g z2k=}$o$ss%>E&RnC4v+&<|^BRBD4$AtSX$VqwT5-W_G5?#@CP(R(I0>IK7tLR@^=u zd(*mSd@;JZw_`=7cdF`A$Wf%2FK6$W=@oLxE-K$lzLw7R47r_^{^$kL4r(Ry6Prsp*Q-|wJRU{pK8$A&cc0q1vLB#bhc~p z3k8+iBj>KS4T-&LukvH7A;xN2ntDv+-*pUBUc4f&yldaBa2IqZ8m8_%%D3lxxrh1u z5v#!Wj2!Gaao}j}IKm&yF#~YJ*=J_^eTI+u{P&)yeAE&*;#*_#rECc)mF@GHZhApq zKJ$I;Q-fcJ=d{1?PEkRvoAL+qmP8|lDS~%t5ZS1ZWwPb4i*`L4KY~Aoa3V(E0p#epGz|Oh`3{s^=WHRP(9* zzXK>Ht_4F#Hi-bH238h9eF21BN*wn~t17`~o*$`eTUA#Hm<+2H_uC*pzJk-<+TFRH znztP%XVrjF8JIoM5Sg*Xlh+chJalsP9YCC{S5o4=MeP=#v)e)50O-`1C#eSZ1#X8^ zeQ{#~;?TIKEkYX56oK&9U+#ERN2k9fb9mH0M)RMK(QV8->~eS~;+l*Ahic$`BMXw! zs4H&XRf4?3g>edfDfZ^*RZP)QflG=STYg{*I5hCat9;I$HwIRj_A`&p>|`t9)NRvF z^6HVvk+FkIiN$W6`Rqn5KUxKcm6xz@IR9^qfl=Fex^^kX%|sig8dJtTFmzXY6GApx z^sP~Y*6dN!aSLMRHfjOG7g@C984k(=C#`fOYJcHEX3bmf4N@V4jW4F|Qw?|i(2h>1 z+Hg%~5}njv`#BFNl@||EE$Gm(ToY22dVtPXJKT&sF^u;&FHc-Bf#uBpz%ObF(+(ub zBS4h+!_V4)@(%P+)plr$HptK%F0poTJ%&m77C}{jU7!b>Js3-vq6uoaV_K1|jvy9; z&A9LJQbAWEEU*|+?Kz^3h}#G5*8*I~ZQ{FuuApkh+t_DT4}lCeFxF~VJ)_tA z*v=J1KERWUP%uVH9Dm<{!7!FpOQ@m$kbz1Xc}n_hC-m} zI4QGKcmK|6_e~-YQ!ZUn&$x}ZC%0x+q-;E=(5aONj((zK7GUuEgInTzyn!q!DmqV=CQw?Zey!3kX z_gq24pQ_}mJ1Q=pF~^+fyw8mbzz=a@WODhv3$NSW)z8B{W~FTsTx3r= zhx)g2bTd-mWzhUO6>JhpY&9=?t1dPj-D~1Rak%MS3OAs`+;Yn75#j}NPT#YF!GKGV zE#D1rGjoYi4K*vS+7`AZP5g}`jfqM9@7ntpO+NSpXtOvMw^S|td29(p!%jTG!8QZLkwY>FmBNVQ)V5*>PC=VMUT2;hhPxToWSXD#sxr4 z9X4RjbAV?#pK!`0Ag@H7Kv?yyK^nxkA|?G)GP2@m?eKA)g_pO1Ge*S}i zum>HXc{C%Eo|9ze&r_xB`q^gykg5Zd`m;=!kfjH|g23!Y$_T8yn>0&ecmtX@num@Z_hh&v@2=Qq6}toG8_7OW*?M1(;oIK6e}03RMRH@);D!Zqac z2uYAmvlP_CU(2SrTSUSW5TBuSL_)0uTL2k^0qHwVf;khIr`@CbbJf9zkOhd`VZbH@ zdz(yNvL)FVux7&u=q)@0TwM3|PLo=~o3DLfBy_~~`0Chjwl0$e5*}eX(@m^pAH##( zH&_y!F&%le`@G9L71z<+e9DsV7@j}W*v%C_RpD#ZFMAjvHw;qXr0h63>>+%OE`E@H zZT(C=4VygkG{0X)6ix%c``#4{)uV+$3TWF2)Yu=o)=~v9@N@8&yHw zFq5pJNo-x+zON^TD^D0<*>6kEeN&&sP-Gs8+z5HsYc{)NNDVW@J5}xGfhk; zWmN##$7!;vmZPAYG*BYBd2q!6P~*aG2_92iiAADN73hn%7EJbG{jzrn%HHR<-Vo{- zU(x^7mC@>GI0=C?(G61-ZX77xd4)f%r-2b?NqjieB=@~GH)}&;=Qll?N}Xu_f-A}`n!qH zA7eY&)K}QOK^k%ZY{`SI|9P=AM!6tm>_9!pIfI-n7$Ih5`YtGF2UlKlpXX2GLomak zTtB$>Tng>hB6=)YPlNNB=Mu>DZmQ0J%XX9G0UkQa$Gjp|#Qt#UjnVq*nX1J0^zo%v zPr&}Cu17_R1n2)dKur=E3410k7FNd~2>6R?Ovj$Pa;*DD}Ns(a#)s3AQZm7;P!j!N1Ha$E@W|4>RRoP2Kq9V00<-Q4?5g{HApQzq7F#i}>$6 z2m4itq`AmTpNYfuNqf3zwgi*)MG`%`1%v9_D!W}oJo~cHrpGpmI(Za*Y5zk0#VrQo z#X^Y%qs4kBa-J}97C)b~w=z{~`=BY|x}lgD;>k}=U2~%O>BMEDa#r(OSf4gTr&Y*` z-YTD@wh;lntnqc3n_*Uhm*-d4jcP14tY36Oi5i*3*y#_lCc)bA%UBCw-Dt;D-GG_^ zGY<{=G6(Q#D-`TYX7cB}%Jr<+$#kyH*)Mxkb&1us0L^z)Iojv3Ta)QI*obCJ^|A~) z2%0{?MXJI!;tt0q9aa{b+zYr~+Hy34gdt^x`9n#fEQW6Hy!vG`SCO?)^O5)(&PbUQ zSXJjYb(T&XCXe9&A%|tQoWw;ew$Qxc+sa`6cL^15k5t zlRuRrWOAf)M*IAt#$4ytz)7{M@Gia~N_oq-TFcoP zu<7`(ck6{@b2S9nQO(9-cHNb1cHxbhKzy!PcpOez@}D-Qzosmaor*L>Z2%7v+bGd6 z+{9KTki+~bYi+UoTJGiX`$?+BVZF)4+%m%&p%9$f#5S|*<*KjiIndxDgS{z00dV+8 zd8fxz#g4S}-ZD4jOMx|YZT)1oz5?WjenV}2pAoL%vztKi<>jln9HoK;32=fnw1FWH z09&d_wW+DQz=4Ve*$ENO;g?5!-#j8Y*ae6y!@_P0Q)&<^U~pk6G+V|%{2>tU!;J)} z-YnY*HE1mSaDnho_SXzrs(T}jgY{fw6#!pZ&gY+u+_}WN_8%0Mdbk;`&$M&C=HV5G z|9<6fwCQ7A$2u1OpGn*0(EK2Ihdb*gNvkOmUzw@XHU4>;oO>Z0j$ejS;S~7601$po zoNrO9@fn#YH=k-XfI)WdNZrVs-96iyfG`z21J`n+RoYVXD3WRb-BA`mT~>W%Or=0w z1*n=EwdV>f?_yy2z+5!A7{ulV(Se8f$KB(bx3> z4dRQ!^NJS7!?)=AEw1k^Qcd%sTdsggVEl%*su*LMG%a-w>onaFaSIyOuSvNpFMi|j zMo%Wb_G8-_sS;wQ%|y5q076*`+7CfG5=%kJ`U0SJWDu$2@zknY9Og$!5QyYxBZ9c5 zO4l@WF)xz9&2qcH*p>l%RlbG^!dx2>3Ga9T1+Jn(vveSrHS&A6No0?BKaHl zNxSXNmIK<3_I?t+-@fXM@jb%Bau7lvUYubkIN$EzHtPL@%jJnn>EAovbPgdJry=A9ocIcG!;*hLD=Pdmb0r=FUKN z{hM$H83O=2=DyZodXc}4sy+NMk3YR0=U!+a(+KnatsjsNFlvi z!Bo(|Biqc`IP5a=3TQ}$fCP|NTC|^nD4rIgv)L^o+#|8z5ly!p<~}|*m-}-_Z4Yq9ouV&1X;wGcIsDeWXm>w zKj)17=YMx&h)pyJ->7ALCz7adL8TC#QO__i3X53ErDJ}2y)tBXhID!$s0KdXGHP*^ zb+lK_K^9liuU)SbxA+#S)li+lo+FkCu+iP?JEci{-g2bQ`T3`~cQ^QPid2*Eo9sFiGEF($bbQ%a6w!gLj2dXG(CWPY zT(rm`$(_>G4lbXVbQ5dc&gjq?#7;0Pdzfpq`024)s2=WgxW#U!uv_hXa9}r4u9u}e zCkt~;-Li0kgrv-JxW=X7tIb{PGgTKKM6;iEDsjGYurIOGZw36M?S8VJ<-&9x(w4`} zXp2G^Bx%}W?e%Yowvc5@LDKhYLVHGiVBs9sE^bp(CGW&cqnVuJaof7M1p)^5O%$hg zf!#fybM(f;Tl`dia>ah>(Fe_;e-&1xhfkj2y=T8&rjbZ-su74N;*a?L=%ZKu!L0Ug zHU6Yol2aEi(JX0Tr(0yCQm(2dF{mPIdg+)fU93_c)Z)zYo|wqjm)zd>0Z1_+lZrzynvOeOm}x8 zexesy7hHquRZ4|R8Qf~l&R4|ed0B>Lkp+ZU;34DVAdZbS1pN!Bw+eoQeYE$>mhpJ%65{~LR7&u8{SKUvW= zBKA!C?CNSAplGbrV6+|3I3;NE#2sbRgKbfex#QROu{wJ5gWY04r?Fzwu=P zhSuVgHF9kB5YF<|;LxvfP9tt&k48qswdOpgl1-?NnxY}2%<8>NR+07*q=u}*$)2kx zXuf2urp>nGj!%W=B9_TIr(+$QL zHX!^k;5VAtX3&kQ=msd!G||dX`{|~$kczFJGsj=^)Cf|1+Ax1v){yl^9(e1+w+?`2P@4mT zzIqIZ5|2mgefjUcg*-ZxmmW>A%jkYkAA2mrD_$<`iACALE@IUH`L~u|w*8O27WAU* zo{TKCVN$EQzSh1`Pza$Ldb{d0ncCw+st&+&Y8T|`g8)WX-IN8ZY+PGuQH5{U?Mt6} zmK-z(!#-R#u9AjS;pf&I0&cyR1Qdg)@x2)bP!n+Rn*tMq=&C*~O;iY@ANE9(VyQtE zYhd{c>}2;xDhb%U_=-p6kh|KG-U*ZhVDIPgD-%?{WgHBfH7au`s8dK#HmNjVmN$>} zw1Okvg}Sx3{CWHSAOVg%fRQWwqkATy^_NCwveOv}gkHjPj{5cRd17wRi0~|k%Mg6G z{7OsxQw=|Q5O6~7Jl4!Or(4M}aBlUe2F4s?^X2-;+SoXhjplo7c|f9y_?YWqwJR|a zw(5zkJ#5lDcZ{Zy^4R-}{&g^59 ze|mBpc^39TIMV=@mpDQ9oFF(ftCe*?OK;Zy=%vA?M>)|!YB{4OFFGv z{vJ2X%!LAJw%*289pZ5r)vk3&k^U={)uUoVLRWA}TcZZM6pbeJ#@bM@_e zQAMjP1BKQm{tzrx9q`6kP7u2jpap|9G*`YoH{(1Q1`EjypmCwQ<&D&k%yRFLQM#22 zd6*~sjOnV&d{0u-d9ZGy*YdV#3Rn$XZ;W$NWq;oRHMBY=X)f}M=uctsL%XLNHkh0t zDu<<1YzGUXyaiFA0h}e&)6H-x)5&*cpT}OCq~8Ay{Pho7avv^C_jVv>6yGGctaLdH zWIntGIw)|wz)RI^MDg^A0zDO?E$Ho6@(cZV>2L^4S?=?p1qckgG2kTFgR}6~5_rIr zX!l+?2;?p21Kn}iH~S$t_?3A@EQ1!A7e(5omq6Fe4(uXFh(JkUZjeUb@+l_Z^kW%- zvBy_~0*gTL%<7u|aVG@LykEz<7*?_ONT*6He95I6N&wonSryI9 zaO_zr^?@D|09hnySHYm;Y!gyAd@7zD_tgmVGAGRe8NyY$#^9w5Er@=}b4AS$3a<-b z1BiEr6ytX(kw`Ef&Ic2A00gX{XzsgKz;xx<!ot>&N{;fdkY-rjRHYwu=G zn~M2YU+wru_+OkKR*E(27$*+V0(eYH>06UlODz+>r9SExJ^jtO<8t92H&kIUrB|p% zDfi4^hOC8nI{2q7_z&;%dfskwy0QlLtOd9oG+omB!2(sG$`bR5rtB7SgA-5d+N~&9 zH^f0T6Io-vN-i1nX&K?_8LXK&}XKO+9e_8 zDk#v{`M@Z7Z?Ng?>e-D;_1e~i9rVCG&`z zOVnemcaGt2aYu|26LMojODnw$o&}>%*4U{e-hjD>ehEKZLxk;holRXWslxpggp`fI zOtrk*#G!*S^hPHg!}imF#e$n)I^tmI*sG@ZDW|YEI_3TNAIE>x+P`oRK2onuVM75C zIO~_vpYPO653M=!?oc#D)mVSIgc9i||KndVx=C2%xaMlUnvDOOJRE$gu@iGm?zy7m z{s`B$vNirH%bS5w|6s}W`93d_VlCV_H=T#M^?}r0Ane?InUYBZmY2;hhAlu>LdxP6 zOang!M9Rh2E*uIwwdIlMu)M}50?JEN+_F2$83a-%q5343!!T=vcMCY(P;mhPhfl7i zx3Lm9tw}DtK3ZQ(Z5S_?i&!Om7*PEP16L2$y==A>8Y<5CmtGpFRYT7Js9&$s3+oC% z`|}BVT5PM`5y^QOtQnw+sN!cQN{-xuzk`me&>EFkgM%ql-~!N+ zw2kI$bK^(;wj!f_{ij~Fe1VUgp6+ePpMw~dC1E+>!M1&N0{8<>T{T)i_M92&7p~v@ zfO*qEAO82M=_bVz3m17e;;Z|Z0qkGx^q}R`zS61~Q5K+&pnW;hTdwVTIJ^(T=llc0 zAEN%fOh^3y3knWy2y-J;eRRn=iMn2J{7WzPkr>=j>aE24>FPN6fynPW{m$rOajRb@) zflSl8`qS6~Cv;qc7F42G4a-)iTs~B$O?75Se3 z+H@M`e84o4tER*YP)epkc9T26srgo{9OYs*&>z9tq=WGhn1l-DOt$?@$LfLWP=j&v z$Y($J{`()$|H2ItD^kiq!!8SX2Wb9WU;Af=cYNnsJ{D(b{?5twN*WIPyYDpIvjF?6 z7^3KSdO%&OpW~q}g0^?;696s#98Q=mGwSp!CdxlW#Sj<1G+ zd0Bl+dyO*_-h_ZZ3*zOMk(Edp_?&QA_y$0lkt#zA+C7J3+Mv1a7GGT@)`49#FzNxk ze#=X!R1xtv2NdJ#q)fg?%cI$?W=Tbf-(c&VfLLC99j|Lsr`AbjOzQ@S$EnnP6slWq z?rd_s5^%#T%nv&=3gC%mAf_d?kI>Hvsc?SHmV}J_z2R6DjYz}H3JuW1gaft848Dd# zuz#y?ue^|hH`ANs>Oy(O{QSn2pGHvT$rQ~$!PMuDty3bv;V9K4*aJ#ji6#*gn7cbX zTm?lyk-<%N+^Rc`s}y?M6nNd8J$i-iJ4xYaWqGB&p5Tw*DunLgg1fDj5cN#ETyR0+yv&MS>1!>7g zfc+LBjEPmYBea!*CRyM%7qh2EmjUC&joHSk>B?>=Q$c$o>YV&13vR}f3YbhyGw%=0lN>l zE{HjO7fOdgFJ^T78u!7UE`GO(6K zgOB(}uhA_yBxaNR5^G1hNm!c(={lYbP)5LZTNkZ}nj8~lJw@N+pEOK?C1}@wT6z7# zrtiDXSAD}#LJvn(owODHo*g%4LJhvCZGM$Bi{T+#%f6gO-Me~t{MTQ?41Z?j^ORNl zEF+{0Z>r>6{$|4#MA^3TT7dThuA@)_JQHqR*WIt`EEhmTO94f@Z`q>&o0hjTMkl%g{ z$MWH!LE1nfK1>JXxKdtrz;;%V2?CD>eIl1j4cT#1mEoANWlh2GpnJ`(BW9`9L=9@4 ztqdYogZdMr?=Y)Gf*qk}#YxuZQK&B1-r;meV~WX&EI$D-0&@X`@%lQ!DC^&)%W&xP zeZ8O>x9GcSg1?B?xtRa7!(DPGNB_`}3VaR2r0TUu}=Jh{;y4ekb-wj%i zt@)^q^4C=l#}w3;D$Tb@C+XLIGsj87c0f(Iz{q=VwA2e2zqrIen^5cQT_Ip~t*3#Y)@acUz+;b6T0oOd+* zfPWHJN{Ki0kWO4pMgPQYMth?Tc8byWEctjrOe& z=vka@8f(n>E2@6oo&x6s6LHG%&?^0gi81l2esf%z$cL+XEWvEzPSD+sB0FPd2kqUX z&BeHGrt!40ttt2R@Bm0%aBK4Y6$+hCfxTskgFqKg8*mtSm-$%<5)q)=V3!4GIVS@? z;+-Unq%?!F5&d|>=*(L^iOLn9x#JgK`R-hMJ$ANZ>bQE7&~CPg_wF40vE6y1XMVNr z;|n|wVm38md0Z`}>^LTNvOoN{|JmyRa6G7ag*jNeai62RjmMOyQc!uRWuNvNoqotZ zuJpbkQ2TW_lrx)puf{x+5HQvRfS0Nh29$*YC^=vQ4wHPR1%~?1nIR6S;rrszi=M!! z2A8rp*wkaHY>;9tFR414S%`Pfz%=7<6*9mr%~kZp7QaM;=L3CP^CZKKkx){dB$XuU zWRniSmWvm$eIMfbpCAj8yFh`J0BCfc`yW$JLPIT#eZwfso<;G}K{xORxPX{EDcj?Y zC1Kp`xK$*b0^)^*7m2iivVY670F`(#Y4V&9U|;l)H>G#A*;d*W{|Pv`Zt_npwEUbF z6jT~`zTDZOk#z+gHNaJPS2W2%;x?btb>T7!5TaE}o;dKC33R`ChIsXe*WrKU`{~hN zo!+t^THd|>DhUKD31q-v>$tBP8YmYZUh8dh(ApBeG}%sU6mXiRDZnO~{PcJC63tw) z5$K&V)e!eC-2%2&73d3fT*Jo}up)8+p}9%_F2hMB37AkpWHuU0=ryZBSkCJT1&;t+uadA1(xe0(Zay-y3V{u!_~q#Hiv>H&hT&YT&u zKv{(x;S`dS;I1o$u2%i8Zu^wjH$8Y{ngZ+?ljEj~v@deLjv3y@|BO!e+c(-3%(=hj zY69sQG&g<}l^5K#OlBEgFRX$jfSehBi*jLQDVwAjFL>=ZmZjl?z;&#z3~f2~@)!d6 z2C^{;q^0{Sw%C`SR7T`^`Gudp+4v7XIOzP|&hvq9SyM-uleT5MCHcvr;ASg+smlqw zaT=zpEO?%+h7M#5@>V?=*Y)z`cKn~Cs4DEZ` z9-2jCYJWV~;s?M5ARO=4nE}z;4T^~pZa6>Mr?Ws*&gf}Ejw#&9+p|r0;-;C74&evKe|6*L zFTUgZk1cDfqrLunvKCNl5wr%gS|o{rjGTGhMSu0S@9ZIQL!SpfWG z00i_YpMn1JBTtnHkptt#0|&8E(->{LDeBCzf^NXVFSa{2nZ8IWbhH2#*FNJp@)4U4 zp5t;Wh2qU6$-q<@sxO)lpcd-;!k`6P+z_RjP-QU$ByJWi(FGd`sF%n9AYw~{c8k*z zT+RY5IcVw`8c9Z)mzVf)W~MLomRZr>KM)X7=*Pl8HXrl!ymn~qimxKKr32Yf4y=~( z`K)1da~9B7*Ts}n9U++r%ZXey@Dg!w;4XglySoRx6YE0&4k6A5>fBn?LN*EUw3z3{ z&K;aTQ8A0%CGwPXcEealvCm~B z3c&yxMvz4VggvbV?>^)PzxPjVMSt9&wo9?v<`z7EfFhK!p=m@@Z&Xf{#W2*32LHrX zo%azdnJ#G2MbbWXewDJ$;=a#;es>8i7$>&MrkRD2SA>Cwt5HKFALd@#f3E^t6602k zi_bJ=rR@AT3pQyifXs46r*^R3YJ#ZD(lDF^ucm&p?nuoBB8>oD9*{n>QI?A@nj-mj zRp8e(SA17je!?gQ>93}*b^qn`o35kA#FTiyu9Kh_z+wwD70~%m9T}B(Gt^)ZU7jB# zHb_=T`v6K08sK05hri0t?lZLL=v$&(wjUcRw&f38jA-^icf#K=!$DOymM{g!{f^Q+ z!7g-qve_-D-UPV+kaFn&0?@YgHarg*<(xYumjQYZctRm0&_Ie8rP2D?DdzAD;K_Ki zX!wiZz8uX+iF#RjA}-5gA#jD8f%Xex}1cYMmProWKkOh z@DHE;?tTL^SImR;2$Dk6)Nk7k^VhtP>pe0*RA;eK0z1%{lI?8N5s+eq4 z6V{l>qd9MZuo1MsIJ#1F_^d(C0NLRHUJuXYh(AT3%hjxijyZ7q)rjMCG!Dp>JsiTn zD_fWOWx=;F5)q+p%4uFob+!j9V;w`V?<8Y#?q1ka$sK$J{ndrzm&YfUzWIRO06K@v zBmuNFyBz(i*+RfzZ?0w)*ugqk)>a2do`W(m30zIGx@d{}|DHgo3?=OFkN$V$Y<#b2#96r8 z*D%E;B*HkhJjska&x5$G|NGKUi$A}9-}k3m2>$5BcOoxloe22O_@AD}(FX8${CWN; zm*x`_iL!6-pL&5@RerI&^zUa- zGVitjm&_-6!{xWhLAzq_-hFd9@UQoqr#KUzNDQ?)k^f7f8H)Lsz{%W7bk~#uAN#l3 z|2e+ZU;FgWKl{1-m#&?mvHzc|cY$m2%+|%vQACiUAvCCQBDs8k1=NCpnT--52_!)* z7r6u#FC<#i_$;eAQR>eYQJXw|Iq-e;hhaGt$Lyb4 z-CDHbeskhPlG5(NW6QDxCPpk}kWYWrRpu90Z7UfQsB-$vhJ*pLy#9Q+d{qGf`H_+R7>Spkjb^D!tLYZ289_H7q)DrmbS+? zDmZ&i*ELA7e6kB#sUhDtsD~+UHXlDkL|5Sv)MH53HFX8p6t06w*48wiDFyx3Tk(Tg z<_RLJ&20^5-Cj}?2|F6Zz7Z|j`1X|OmDF4rJ}%VT6X`3*8x_8G%NS*dx40A(-qTT9 zeRE?8x56zgF)@QhK4U(89&6RTb7Xq}BaiHBphBQpG2Kk*gn0sEUrz|DpI^3-bJfF8 z_G&uBZm?Cq{jJ}D*F&0~Ez`ZTT9UF)FuZ$(`DRMJmNT+H^n;t3VLK~6!WkjA#A??0 zi6iovsHLXj__px)aO}TAq@fHYvHtN2mR71gxdKn+%*}0xTQYEd{GPyW$tvNN^NnTH zAxa;{kaap6i8fNLQie=1>)t34n_5>qVJ69)*H&K^+=Up3*0gO%F&h-VL0AU1&RF6Q zws^ZYDonOK=pE&3%<6$Gm&z0N?QKiO^WK=j~#;tDTJ`q##!^6X4tAb1hg@9^JbTzKYV|gz) z(?!X;6xh@F-nt>f^zAz3t!UiBc_C|g;4)oS-0^2V=h%98J>Q&|*qCLWoUADrujGY= z%U6g0+)(*$bzRk#hz;1{Age7Q$4{tT^Rxbkwy#(F*ncQ1gT>Eq8e^)Zf=D;KATU$h#T!hN29}u z>c+hhT5+WZUA?f=p`_Qo}Y;`y2i_Zn`4M7-P> zrJ!^&g@Xg5R0!Dk<1ph6zP6HNBXd@uZqZ5`tP48RcrTsqWGz?PEs-0UNxeN?KG4B@ zodO%3m`%h*#77hZ!Zt|9DE;P6Xsc3yi$?E`ud3lfFHiT$pK<#(^%Eas-hs;KVFFLlnP49JQvlthpU#E4kn==$a#`j}kKstK=*zvfghyU4^ zJD=l(a@1OfbB2XKW;;aKDx3Mlah(HRRqE7e7>-%K!kqS7&Hkhe{s_ERpZqQAIc%R(g zo+7Fwe`?rlfid`~L$$AI8kTlLs0(IwX7CuXYN1je7T%N8!-$21p{b^d=v1Oyfk}7a zqv*94UsVOg|JtGH^m@`U4Yeit{5J3L>INB zv@P@bq1E#T|2J+|zPsf?d7Auu!hj-Za$)D0cdO;XrR~^$d`y;6!zOmP7@lIWC3OFh z2W#ubGpg{sY2{d~$(Ab$zYtuTmaA^GI#m+$OjLb`VR43VgzqER_jlQik>=z7k-6q6 z^!n!UIXZ$8f0@{5i?ce_PJ?20p`dFYF|9MUJZ^a#KWZ#`$1Kq;kFh zk`C;cN~ja^+Mzm|_E(h_{(SFjZN=~={->p~;Zn))rbYcrjs^#}crP&PWo{Z5x0oZ_ zMNIr?PD$8ivHc#Ru|a;++Gg|+8cM5glz#9&LhzfKejHGkG&T&-!el_1t7_0BIOPsqkMG+<+UyB{Inu;RASMu7d$r)@DkR|@9d!cGB3*c;Ls zr{oBk3n5cSG`C_&d+d|el?3f=kicT*uC2a8VmIVNz#Pn2PaL=hH_lBPh-=U9=Xf5s z-mr7WdB1%E}?$C(@-=N90{m`l)CiD+{gAf}WR% ze?EFJxn(0eCI8yfPY2lJJ(5X`uY&6=EL26XZ@qp4VF^l6wp+1kxtv?yS%1B+XCpIg#qrvXBiLaoFfhno22+mz zTv>?pukxrZo>!EOU>Ddnpzz`Mopa8yHCO`{oCHuy>uVlaEF5`YV4xyeHC_e9D~M>h zwZDHS*@LoVh>@aVS8HaWVvh(GzTM?9OYjcCJ)6ZuR`%x1sVKZJW+rOhZfsG`(>fpq zAm}EJeLS;qjw0(ahT*{r$~c8MHL=%{Z2y}BhM!V zc21qHLj=5M&J>BK43_?#XK!Y6n%m&@{YC|!X8NuU3>Na%bsB8W2tjSh&^y>12T5oRyFKk2dJ$~Qgf`~?kO6*HX*;@r|`FclJSem?I@ixRWo|mc7 zAqSKwEUbtMRG14}#p=d8aw{I$y~0C)SPzw)!FN3bv(kYKUbWYoB4!?)4DHEd(>|G4 z;MhF=1*iptV2$jB(K^Sd#$PtUt->Fh$hE8uh>!#XLdY~0$td5MNkFsf3{njDiiwIS zg@}Mbm-6a*BOaJ9?i*P09WDujkTy=041BiAzl%;mipnR7iSY#7L61f2$|wE|V)!;{ z9g(=4%~h>hMIL{mz)$iJ(+ce=l=Fz<%y`t&BbHHZi`=nKVAlPzZbO%ESUbsM^7y0|#S z=ovIVJj4r^4qGhR06kS>4C9sj(HbT?W`aH|R;>c2bjr_pQzbimDLvT_CUTjj?UGry z!&M50o6nrupa7nw4C??Lpk49C5+iNz#X<;~SYn<~KjlW_{WfK5qDC`U;qlz9aqjC1 zqI-BeUy`ClU4z*}vE2c;WKtN!q*FpQZiDsgZ&&sL(LFREuG9VyAL>=i@-JoD$`l&s z$3ABJRvp`Xc;koS@P{0`A!EsRs8lJ zLXBU9j^5bVqI;=}LKd-|j5xV%0D&yexuKWw8ju6->i%*0Q>vNB{j@nbJu>sl5`uN3&uE0+G)U z7l*9QgG31=vd|6&Oc38Aj=;NyESUxNfJ}%C-~qJAvVzD@h>9b|#hg0l1)YUb-f=r@ zh<=s+IQhVDFCSZ!+%+n9#&iLS>xe7IZj6y@F#`h$I!B1aS8{hJ6}wQn%ovYtkjt^J zxP^YQC5uBcIz?cA_Ay>>2}QePMu64$8ArRnZReks9eD23*a1xIq)Xd9^*hNyCCj*rTT;u~2 zLkRFN_fMP0^Ox~VB-s$gSp8#JIF9RIDPjw8wWjerf$7ARr)*8oB-uv&M1|WeZ0m}n zwvro_Ky~o8Y`BhMe_(81DkB0GBhY#65+axZE33`$MWtHf|`%_7i9OvMdjO zT*Z;a8l__)dzDE&9_`%m($_7URM$&`hI1<(d+&#fI^8FXX%2WJ^k`v_728DeRK%7& z_1a}qLtzc=+*1R03MX}$m zmSpW{w0Ssr*fxZ@EUGbUhvB`3em+Z92O%LxAdCsE!9Y#W;bJ(E858-|WDECj0^|ye z!j||N==dDZ%er?OfQfx89-d{YfHT_kY^3Q~12N@i-nmmp)#N6DNp|@E=Wb#GnyejXLu%US!B<0J2iB;Sg*edm|5A74djp*3T9YqK2YiA?T*7q4d` zGEx!Hyo1%(6DV(uvw5&NTiu~yjhTQc$k>B5$osz=d{yJgn4^HLhG z=wdmk4p53w3V~x$id(TQ7&}R9oz~Up72`8`4mXDCf){!~$KGr<9IkaL%$X6OLlk^A zy;2!`@TizPqk|B1?aBdvZZ9_4S>eHwDZ+C^f|#y!Uu(O<1RezFT0OV}At##?ml{P; zF*9KXq~n@n9c|$R2V8SoYAz!2!#iv&wC4mAAf1uNl3smP)FWkN_IN|3iB`+nJP>eT z@dD)YEIE_{E_9x^Wjo;i1f2x+laxX6i1?g=llv5QOLgjSqfIe0j->xsmt6y{xGlUa zN-ODmBr+t)@j-^n3a`C69*%@2lp1FtW`HzUD=|d(stwyBHazs(_N{2|ev#^1QHok5 z*&flBz2x&Agv(|m*M-OU?lmhzCvGK9xFYO?lY&O)hoB|_m{}wSWz~>KgBIcdkp3V> z7&fvs&ZKVenEf+0+zOGJIt|+cErYLy_jE85hOC3QAHpwZu;AB8>}=Z!q;iaVein!= zFTN7Xm8DFOxL@vp&yfXWTvw$6`yn+WhPHTHj6GKfKn=(^9!u3Ep5KyIEL>XAZ9lgd zxg8RY8~KztrwlLxAn@Z_W0%0>A;z{MZWukd4GB`({1?-X(%ZWjSj^q9Xq)`hxV%DC z=Yl#el$5c#dj5r1}OZ{iL6B=2LkH_~m564T7Utu-RXD&I!XaKu6 zr}>$Y>47XSl~{zM;H|A5 zHsc~th7L(y{TZO4S4L+V6$~r6o-Jku=tq{i=&oFEvS}AuN>!FkuUmpyW^>;DlL%lv z3`ilp-a={!A+;7zz4;u-A%${1Y~8UkS~WEa&|43EYNBa2 zorS74xB4%htr%!nGjQycr>!XeNR7#79+3n^V5+qsVIz1``fGQN8i9w+<~DRv8YFAP zRm}&1N3z$xWV2o2iWj^<>jw*WA#qnw8LTm)gKz*PzN(K_$4(cXZaI1=1l5xKkOMDa zi$o_a!YCJUVeQFH&4Iucunj3Q{BVWZkf@)EQ>B;-_4>&r1K5d`Px{A;%d(q*dahq? zl|Hybm81Z*l_`hT^~s1ndc4`Ai(TMYAdZK~c3lRX6-+#T>8G{Zw(tzMatbGIsSd(0 zg;6b#)%vr9BEB9>s2!n(iE*e5QV*iV0UiHjd7DY*8FUs2OcGoa184CfW5(f=^2qehMg7y1$(7u~9RC z=vhFbo#bKs1psk*WsTtM;cl?IBpAQ>FD@|F&C6yXZU%5@1{Wmi3*>rwNSh6_$Mb`( zB|ilrFYoz19H8J%AjuQ*Mezl%!%y5qqElV8>)W0J4noRyKPmAWtTS0j$EUQp$A1j)lxug&SBt{%0eA)-lOg=-WyZV;wyaG1IMi5*W zx4p$QRhcUpuCDocw60v#IO&8nA`d}=Qr|G4s~jGI3S>afRF}Ux%Xdp}u#e$sfqs`* zuwYH2oesBxJGAo+fnP>Cg{zZ&7AjC&0F1;Q%`<*5Jgg4f>$!wpT~z%Mvpve^PD;ri>2|~dGAqshLPpyQfds1I*Da|o=#i9hhtKX4$8dx>VX&|ia zY(*5|FSiU~}lbX~)P;AsQfv!43%@aoBoXwk2ks2}!m?!n^CGZeCy zGq_RV>%+G-Aj@l|H>a`KqiuM&1Dnfc z3&!=UD{nYp+AXrwX~^+*-MdMZK<9G#2MU+GVaF<5aQ09H8*o$Vx&XLEQ#|YvUJ-F3 z04vVh>9#0g6r20nqPHK4RNskG?;5^HGJy}RA&_MioEjiZA_A0N*&UJw}XS#H-R}53PC(JwZ3M{S>@HY ziRzYw4d5$X03#-#h)%xxs>}+m!9R(p*?dyVrAtV{lbvUNzU6*eqty;>^JU!z#wAag z3EQgy8MV~N`OUz$29_fZJrIJUVa^=AgT|*E^&F8_ec!s#%i~s#+5m*SC2PQ+l_Z}v`Z%Oo zs0mpfe3BY6!Cpb;bLZ3l9Ds6`F~YkhBgjgxW-GO<-Awz2VtIMm*@WbDu5DlE!fdMB z*Oyhj_hTI)ul+N|01AMz6|-(7ueYzn145~Y+lU}`16I$eh~^TOP~J2oGe%u=pC=7s zPD$6NA*EiV8@HY*5`u+_3Y&CxQ~K}^iI0Y?a0M9I7o4{ zyT?+qQ@{%o)O6A!eW@N1Yvxp(wZzbvBnL~1?t}W1Ik|aE;+?uDu`AdjHi)l1_zZhl z9oTB=)zD(LeZ;O(_0ynQE0GY5tMFhVab2*hqpGSZGIFzYPL4mu;4w#F0lV6oJRZE% zBttSm+z~?d#P}wOWxm=#JooD6pgW?o9H_0l!UI)$+QSn>qS?r)QYkUXvWI z+BpC(rXMfjc)KwbyZT6lhe57g-nQ=a^(*uy4jYorXiqq=7+pKf>< z(PD93+t%+feoRF}@|Z4_4`J6{#Jvcc2PeKdWxN8oXHy;A=d;nvetY+`9%A=FlPvuq zGbH3MzZ`j-G$gYBa=h%O=pSBxcv|oHu#sCoXwSy)Qz23h9)j6BvvdcwiD2SxfQifG z{zY5=-Fzy;9&&ICdfSyfNau`YTU&0a`l|Sf2ydh)++16XB@3u41%3ujGPz0D6^tiq zl#h>(TdIaOC**mYg3Mx)cUlPBs!sjg8rw#Yh-$g(J=>+(KlmVc9XXC6PUK>b) zSdK5gubK|2Fg^6(ZKi_iOuw}VQInWyR zwDsTqDIkC%-X#Cq`gcR#P7&XIL=g$9;L6j6Kw(rp0*TuaW9Rl-qgfBW#*A&6p1w!bq_ej2&!^|q zbxT&n6s3L-o`OH6Q$jkMA-N%{=ChKnU%A#0*L6;bEA-EdAAo(}S%Wao3&v;>_a`lP%}1-{J@~g7kLyOVVikN-6AP2l9 zQ6=W-Zm7doE|B`zqL+c>R~r;_*KjY?qRyGls^6`y{JHtbhHqXU9*qxP(xFFqPaY6# z4`9}hzM(scgf5Dmgbi72$v`ASFTuE_#je--K#@%2p|4vIpb?#yU0PqYOxu!mwk6A( z{kPQ_k@r%HDo!MhH`Iez8?AYF@g>oJF8M~Za`pXpnId7O&R#7o&9RieJ{?zrU!brX^{xCifTWUxr(EwLqYFs$)-DRkHG#d?Ep^TC2ujcXdDYz%~0t-`8qhl z6J~R8ZAJE;c@u%4kH}}yr{y23L?P=pR}=ptP#_Y}jtPa8uGs}*l=EsF9Kj^nHy|K* z-ue#M4Xx({8{lm-0S+ZA%!4=AEZNOL92?$GZ>`cIM+ zN1`tCm8XL35rR}ubso5^;DKzoTI*-lSw{D7s>^z`cI4<4zlS^8AE*4}@k?ddb-#aj z1^cCi8iE8|mDH2fH^9E7Hm0nZNb0yz2p?H8c4j;S&0Yy%05$lX)fHZ8#YFMSPpbL` zVg|j!o}yAiP|n)>fEjQ+U3sjyR1fpV_Jjser8k3mXCrMUg$NXb-{#!B z-Q2oC6rX<@rM#tADYBcf?p0A20&m_seq{?D8TYL>Yzg=)>Z7HjUzA?|VpIF2j;NTb zFr$$a+XOyTof>w%eXZo1wRN~@zk*OPTaTF-vaRvR2`g)yRDf%x>s26SDf~eqj1k>5 zK2v3>NeSl@f%2nHotcSZ#58@CAr$5@nZbcPHk3~JblEF~XL~ooU9!Cw#7U`jryn@S z0OR@t^~vc>2QWE@>?tX=co)&qA^#)`pchO0FHH+DVvzj*_9N1c;ps{EED}So!3hJR zI(!5CYJVQ-i(kY>l-H$2A<`G7gpxIi279LuA#kZ63gY|$CCYicG+eUQxEnLYzl9d1y{sm0j0kTnD1lTg@kxCJ5Dil-ukcx@8i?R|L^D|96~)vvL?vI=YA>`i=FaQIoyiVIa}6?eVNSV9g9;QaJUy`DMjVH zWJI9~BnbsQPK73nw;{O~S!TLM7uJBCw0{jQbY5cQE0L#$Eq{?t(-_aaJT0AuXY~Ja z<=ExhwlZ#cFUBO{Lr64B2w-Z0?ocjxx0uS|^@$)j+`K_A3Zx}u?S`_{Km}5FT-Jk- zMYujVK)ICf;d+(qlvNB@RXsEBx5f$RLz@Dg1R0K737WJw^d}Y*-__xIY!nT8`4k|-<5l|QSLfH}Uk=LNBV1e_~YO9XsZ6HaS zQ-g2rAySSEtAQV;(6Oa;Cm(|dU*JO1c$5dMlj-14Q>9e|#)Z@aq#^b2c47bV)P$R& z>PLEazw*y(Kk@G$JGl1VPdWGDPLI8^)3EIdCsPp`Ybsuwf_r+iOVW?O{)wD1bl!ZA z-rl5M_ZokzltJOqV;72d9Up!kW-SuWe9qtU5-4%N7NpG8d!4(Q(U&j~N?Ik5g^nE9 znbht8Y61UJ8d%}3LBsB;5FHA^GP#g$CZTK63#4S7*sBJt09}5bsHn>4l0Xa1HQc?? zEV?`krp#<7#WaX)e--#Yyd*qVF%fOX^)ez z3-Qx(z>xjrLbO_vPjSaS<0xmW=!je8@ci;)Qm=6gkp@=!MVXDBEtkg~?3=msL|H~svrz7XSZw2Hxdn&jn(%RalXT}9%#0VrscGS`5= z7HtDt0S_x*o&`~83>$qX1*nA+{RLr(ReTmdc;L6YXXjbTkE@b(U z2Iu5+_Ut|7toPdi)n!Uh4>pgvh*|lTE-11;Q3|FrY%YUj;xN;VMTKQVNz4xjNYW4ki}=!DRb?Sq_DZ;M9ULh%oL$TB_YWNJ9!&nIn_ zfAXO_1Q1wGpPP5G3Lmn+K8|i**IVR{`6s15Gt#*VuXX1%8V|A5XVR+&93Jf4@P!%$ zLCVYish*^cXuXO(s}oYZe&sw9-+v#?+|L%}g`)D$$fIknr6^P{My>jK=E{VZcU4uV zd_!1(u<>&G-rZmw5RR_E(}ydf5#l0Ijg@MjdoIryqsuRvxpG66hA4Sk3)E#cIxAXW znlmU?^3i9Xn3yyv=r_N^sTy;*@zOncRIo0_f+|vcSX-Jc7SJ`in5hUfmW7l28T1HW zrPe!M;3i_ncoA^09`%(d(ydpP%We3;t?c)cCnar=K4+id7EwULc%e+Yk1k>E3qg(3 ztwebXgn$ivBywz8ONmQ9x_6pLN#USenbKG{ln+SCgCF=3Ql0#Rrc%gz!f!zL?ob+# zV@EnoXkImEz@Jlw520*e=h;(wMw2@IWkMIxxu7`>{{o}p(SY5P-e2eqd*wwgVJU~NM&!nwHq%nxm5bADl z2gE=N6_&ER%{hpa5>Lv~#ytuF)J@?_nUUcD?5zomCRBOzGambxABT7N^ zEjwGlVJW|-e4N{;2|41}{}@k$YJe|>QDnV`|Dv}8F6hzxx45oo zt&*B3)%tG`eZ8aY4O8y{^}fO+1@fiJ*oCg-C;&S;h_d9*U#25SJ9GsN9*vX7J~#;8 zt$?LjejrUQM~jPwYJ>>pR8skb&&(So;U$6;^E)Dm5*=`C%}ga&W@t0u9$HUj=vx#b z5(T@^hROk+VKZk*3Je?xf#3$*3bz{McW@KIEpfa0=l0NwI(NQvL42cJck0oP+-$rZ zFXty|Ec~_n&glX9^m9^_6(kV8>*w3()N(18#C;Qz)D@vPI+ zRW$-z6M?)E%u96KfaPUwr93^dSByHOO9n`3M&BkH(tzk8t#qbz!T2z*Kg>vw{{IDi zzcpk-Q=+}@xRs;|teZP4MBVekBES@74)TwECAYJJW?t|PM34|Yk%*TSohxwUOg6We z4)Mh0p)T)6P$|G83OsaUqM&RQr*aJ44r3_alm8;>PPsm~d;c+YD-=leEmY|YBLoJL zHfz0VHSZsBuNs@amY1`FQ_#bi;3056O@c26DMgjJ(;qh^rBN|e;CZbJvV(fG&V6st zy}ma~&kg_q;7Mk#dKaP7HCRWHwj=|V3BOKdr$wB3>;iDKMsqrPxMirCR$8hcju2nFgj;{ncZF3g3?yP`dK4(X z7l_~UN$1+J$tWEv8<)TKAW_kh^-`5&BYqQBNB)ZlQ2PyCz(eLd|GM!^|Fr#E*-cdc z!Ihz)HaGfcJm#)3DvQ=T&YpVMcQf_?F%O%-RPfa_xkztIYod>>WV8)*KU5SOz+|J} zyGUOmuqy;=C`c9IGVxAXj)FRbGBjA6`B*)ud>nF&@_LozlOJwuxrKLO{0BLDtf?W< z6&ksz8V__6r~&0;^yq|?t>7l0?~@IuNUIq7Dr=9ld7Q9CDaccyUH$wlP=piRie;We zVaTg2G*=}KYG>Lj`HCQ0YZ?d+`8fI?*xmy3DYR4d%^Lg=mnQPp-yhFh@#MttCh_&q z#n^a!V~O&U8bTU)UBG-fzP_`3wSmV+mybm1GnI&?NG|tg-2gcVkFO`S8IsdO0^|iR ziugiUBj^e;La23199X!~LaG-4yC3OV97VUgXQjLn_CS(=lmH2b> znRL20hNv&v8SL;WtGoH4I)h3LZ!k!ncy%*{w&7JlJsJbr!b#tv)H3GWELllX%&qYR zR2HCLtSy?-du!_kS6FU|nH+d6#5Mmm4>KHSyB+J#4N1Xq1>#vSdk2)~j;fSB1#|~8 z^ty!r5IpPuYs9}5f3)I*py7Ojy2a0L5(x~6OglOw z5mHcuGHG0|x3d9b8l5(n=mjDDb7bkc#F1>JSOhtvHRpb21dR>wL9#ovl$q?6&>Ifg zFHw=<+bP-tP|Tl1Ph?yP;x- znh9EMnr8WJ`PcTR)YzhG&z@?Rn`Kg>#DTc4LAE!Hwl3jZLz`Q1y*V36J$~^1neABi zH6je6bYyW0Br9C=$xGu4AB%JdscC+Yqa*2T8)@7lg~oXwm~xhQtNC=04womlKno#V z45iX|AhEcxP>M=X9$Hg*;dmT$HvW2K#a$%sHQX4Aok-purH&%3t1Zl#aOmK=#&l)z^iN5B3U6xCaxz5@MW!U!@pA1scRri+i+@ zsX*79b#*0=m6}>%30`6Zu~EG@tiPR<{!K3t?}79E5xxh8RK&5JQ(@wX?pVgV(8fT<_76>VqIXiSaR zcgwvz`Ck#7?!aO}&Ez`0|3{nC03}>tG@dWy_F2}a!oQ&TU$0C=3q0xWFKU%kZqh6} zu`mH1}ug6Tv@Z z*Bg%dFIj!hKfn5->~HPgFB@Dv{$70apI2KO3if_qSa!9c>bm9DOXIgfs|dg+FDd9^ z^&IH*7R{_p!H`ZP!ej9eT9EG8|h_YPP##_k-w z+3;8YsMYFChIQYl=k%iPE89WxE-5ZIMujbHKTq_`32oCW8;rN{5^bT`WUt@1c&W!2C%bgRO}j>?LT zy^*@w(f{or^CQ1|{eMi@6LKl!-<6DhUQT>vp11-+f&0ulM@ON+_EdsTpqk7vWPv57 zJYjnR_l^xULrhGCeckz^{gvZ~pPWK1C)_t!-FEL*vWi2oUtZ z7kZZvnJgGZYo@0;s{okL&&!nqVWFIaIkneG*pkI-`De_z;Iuo_WO0)nXY>=3*Dc{j%!$HYbQY;B^#P6EiRbyVGSlt&3_|_FLvd@*nie%>T3U=Oj!gD3{yS zhUDp|Hzu2Yh|Dak{fB(KvNGdne$1(HfHriq5NPw8FP`tGX(63hBmyA%zKEM3DhQLg zb&U<(o<#3|X#a=g)21J9ychfZ;tQ(3g?<01)DI&NXeLyWoI^i>Vujblc%I*e7<(Q| z4kV^}(K%E=mWJ>|=sxrX1)_u1VoHcWz$8VljuvwIxr8S(OiQR{RW z@D&5>*^G?OfC$WoI3`00fgDyeBy@Q5#rV@n6os(rbVdLpFHcJo5`T@cwC4^ZDUSe^ zUYt!MNDF2>C(A;!6uQzk%Q(MVdgB>YH4=M>tNeS&(PO_`@-bR`Ma@AyuncwMm1QK3 zp9DuoCkv#gO5E3=L=>4z*Q;d*6)3io@gGET6WSYg%el=Q849DTU*5F%@2&si2Y=5W z;OOB;irH-YSJImwYm3k?)Q>Uoxj;UiS&rtTcNX=|lzk@pw&7jtPj$ao%4S7#ttGcV z-XHz2=_h8!XR{oY1ND_zGJLx`>v!HfQ^N8#VF)j432{p7m1$VZMGbd|up1>&$#xhj8eQe$&?W*wj-~S`#lKr8fEW1W35DSqRw|JBI^WSI@oGPt(=F`d6!%<@p?YP*n zSe39^xM|J1j2}Bs{;eT*NABl;%=+Uw-4FNtSH+(M>~D!ny~t$FJle=^KG!mO@a|gO zEyI=p>F_%9xicN|SHFApKgsYWV6Tts%Bq!n`#D_ZVw^@DUJ~A1wWu%Ysgd2vHjtbbc$mU&laL=l)%q%^Z*)UWj(F5o0W+plax zUjsPgf+BPyTISI<&fe)N(7dh~u?a^yP_r+rL{H+H1ME zcA$IxXovbi^PdaHpIp4-qiNbrnjPn7G;uGdvhQVPWaVv~QqIi5xUb0g~Xj9CA60GJ>1 zoE=$^0{|s0MZ$BF5g^xctLuaDtI4viMX||0u6?5=;elURazzPBGU#kZFF46(N!%IL z{Yj>KOlIRy9H$MVH-eW;Mm=RNfmS+&!0AyR>U{)YbXCdPd!UneL z)8;>RtsPu@QT4ZhKU1~ecWD*NHnG0Q_~+F0iMo$o{^BF=fLE_2toVhQbhi*eoFJ+c zQPt4x@&3IhgN)`bfD@EZC3Z_V6d`B^gvr&=Y(^!9nn~+F3{5(Bx(DZ$fjD1~wMG9b4flI2zDoq{tKDcXLPB zQ$={XrwkoGICo~2(odm^OE1f;_oz3c8S36LK3evkr}?;)f;*xb2NTbP?qxJW(Rq#I zt9C_;&y$AVH7t-=KHn3T8Xeiy|HpyV9!&HEEZCjW{sIG0CH~5}v79do`%UQ#T_ad= zilSukJ4{ZT58$Y97Yf4_cET+$Trqu*?{IHSBHV)7iRqJKv|9JqA2HvJPm*Fp`D*ad z)XO6&7*C$`ojcPYp3!rHx`;fdLRye{ZSImb&OL1XfOJ=ri9kh=GdEGN8fGw8Ev zxVCU9g%OesDcxsN7WX~%8xuTEHTt0Wp<#S%a{`WHQQ65rJzcKl(A5{B|Dn|q#p*x5 z5;}B^qpt7{{nrG`h6fyPey0aHN~XYMz(u>9_fD#S#pCuW#S9(tUJrI?jq}q}O6Cll zmCCM9RWR-aXwjPjt!NnkwThqs(PyaTe-)SOhf-Xo;Vh#o_|q2gjS$T-8yb+QH(wk^ zL<&XtjhmPxC83!97pmSFq{fx5sKc% zf03q+u z#M2jtAEtAO4z-L0Q;Ew$mw!=eNINIZ4<><|R`BQl7SS@^(|Wf5K3y?mjTD72;ag`L z+9=n9y8wKoSpdfX;T()3Nn0|Kw5_XEFTFXfGP5 za~{N@Wzo~qql;1F$h5g1Th^VOkNF;)BM^&9QK~oPferXraHH!`KLX1&59GF0b$46(()_h`|^SJ14t|3{NXlGUfN=R189iwZk5TwVVSBqkjR4~;?C<%BwKbYkec=AorjGt;9A=d~ zv`+Ksqa^9kUD}hX{>QxwJ_Cv4)wH7GOWLHYYA+jorEsb1mkNmVP_ncZHd1 z#4t~qp$uelqkSSU>Ab*~vY=yG(#F9!ml7cb@g8Js?SElF%n&8Znq7S*=&oDI*A>tN zU99QdTkgj}&j44nFP|u5)UY|!hyU|IdF?QR64gyaX6YgV4Q??Qz8D_1q)9@-psm6T zvhUo$f1XspbI9cl+w7L~nsZy-8)I<5&noKB`V;(L4A0aP)BPXjT;JxiGp9?om&Z#^ zV|nvISRfD?OHc^%nZda^N$1dJkhVF|iFv@y9Z<~P_+KwP_X~ethN2bSJq@6HezIX4 z5Uq<>gd8Ykfm!$c!W)~~Z)`ep1?d%M_@NwqiMXhgiWT%dill-u|0=Ej5=|I}q-^oQ zm?4Z^Y;5Gm6--5KEH?BUD!+e-sxZH{=nWhzj<|9t$cnHKFk{&AlYc^3$(J}p1zUx= z{QUhLA;)+iv7ZVaim!CzWSDK(^>+eL|8^GZG0pYHlE1|{b;B{^m1DC4^OLc{ppk{i z>53;OM;6U4`pc4G4I|tQ8du>4$SboNCrJ+y6s3mSux%f@<6#h$R7~YiAljFT$Z;^a zIQIdW!D{greV?D~7AkgzuN`=$-0S5fe_fT6C{GVbNtQSY{61fJKju<+X6T6v+L~;C zljpjn)bM=jw z>lylR`*%k5xj1|tdE-0m6}m?omszd`VJL|~FOmLZ^T1kLN95)m z67#GZ&efQmiC~j112T94+=zOwoiYBANIPdx7qdgt&Wt*{XA%!L30o2xt`r{J{XhSB z*>25TSeCl{EGX1;Yh5l`d6evIfB(Q2plwQcXguyQ9Ij-<0Dmk_nNamT-l%OjJ5k#q z46f}!xQRYPc}T}k8l1xCfVF>7u0qj-Y|*X#$hEzK zMQI^kb3Ts4ofym}#XdnV)RS)KA<-AF=mLja$_R3rT01%E>fUfcm(=ikE01kh3u~yj z_vh8I1B+sFnDW!L9r|94vtny%uwtjUhY|k8o87Np?n?A-=$iQ|L#`Vd6Z99fRMw7X zYsHR&rPou}eOAUfgI0y%TJtJjrcVHNwa2h%7Q+l^q+PzHE^ftNT>sTBIWM({^ez;d zXpw^d0B|wLC+_ZbtIRSH76KNKr`?yWRZb#i^YOLNc45Lg&%dx=s1F=j0eI`|FY!zr5$M> zz9M>glVVB7Nz%j?NTSaRN&fata&JBvzYpIUkL|XSLhCuV5mz2Uz$a4Y;TqDYSCrT) zrCYYaJ`<78{BWt~WaLX{2Fj-pkV^3I@j2KCn_J-fye;!aRy*%#@<{ zw}v&GtyLyUW?ZrPH)a?4#}5rDN*DF9_w1@Mxbciv{U;42XxPKSVR^V-tQ!+&n|v7@ zT-$D*b-?C8-P2gYy7gTibz- zO*;TJ&Qeh{PKNh%KPPwsI|Pc;WWf;*)aeGR=mPIKPH;pq?I0SbSt-f#H#`L<=0+4W z-dTI#C&z-GW4<}2)n5X5uHrPjjbwJ`!EGzk7nDy!+bp9vp$;>%(#AWAjzyDc>4J9H z6Hu8VAPYqyIPtddsa1OZMRv3{F8R2p_So4+k!j)_#&oL`XJw0 zHgNKEgUQ>|(`TyW!{1xibplnBL)Hl9#e6AxsKM56B~51`aGFMV#6;;5qxqDb?wO*6 z`Ty5oRCMAM(aYtou}0@9JL*?UD%#wf)8 z7ce_tTYRA3L!6V7!>Bw8tZo$V>ZrDcx9;+Ar4nB34(vkr@n6dlC91=x>=$dVgiN}2 zw>h&zYu1682`hP2dzoF|(4M_rKXK>I|96eU`1mhHg;N_F);w*%F9d%i*Y5At#kvQ3 zv4uv)-y)397>`5P)qC$};v}{ZYn@t)R)04%ChZ(iebr%%A0Bqe6dZj|V`6PPr7wY> zaE{7}w?K2pI$aFlyqugS)8frHDmq_{42b5Oxj1@Q7rF7+<*w9< z9{Fwh`nDU%fdd$dZx>ry?+!Cks zE%#=`RQ*~9kPT38g!8=0ZFr58mudHk=tRm2Trvnv;pmGX=UX!6d}e|}spjaJV4D8_ z&4;7o8Xj_tQdvhZg>? zWxUrZMx^e)qgin&JP#ZSw>5eDgG-84(I9L&8g#uxM#_iAD6Qf5Q{=29<)e-DpDjOl zT+rp%AJgq9EIh68EJm^e_tDfGE=y=D;nrVD&8X-UHM<&2gyA*3zg2W%rm(BxcK6Km z@b>WlekW(S%yHNhG--(EF`a<90yq=82}J&A)6v0q{&f2xLmxiQA=rItq0s$j$m8egw3a&(zbCwe{b!vhb>EyN5M;(L95A=V0zPoHy z`A;FrnPJzcEoa7BYz>36u>H3>^UA(OWp6$uY_ykDGvoX57;&Xsn2_fq|8})!54yjePmq5Qs{ zf)HJAZ1yt#>Xh%$eGvZMiB5Go%Lh6|93(W5SgeopVe3wY1Vur0_zF`hHNt1wHE8{n zJ}329att=UqV>EX0a%VDcYSWekAsZuFAkQBvFwEN`mO+h( zFMvDTr3=z@WC&t%qXJPLPR2^zn;;TNGniT>+Fhif0dSMqnq z{&abbbA4A;`dscsxg&#D(!9IiP#%Wspn#_G_SnL>z6M_oxMSsvOcAj3x>|GM5*ZG5 zCsnbf)i@`lrwCpC;nERXoIuYXZkqlJtKU4e>)YN#+|wke1Vnud||4p#1IY6N}_nF;bw`cKD-k@UwGClW&?xM~&zt<|n|W zkSu`sSssp?dwOk0Wag?6F~Wn7ZIO~H8%gbMS8EtCqwlUi{-J`Y&+rV46CdZQBqdvR zmB7OmzQ7U6o=l^v?|bwsvpPAjV?jIhX1k++$>Xil;xIFbzx?Hai~B8cl+c?t`xM~>p>pwN*3dQVRDcUnoF}* z*_(P$LQp>5babGVhvPrSo?iQBLs;R!t_L@^TXx9nibGN_vZR42$K&$V<|kf^{@SDY z7o-(}eG{Hun6^AHUBhtpSp~*Iw&g?|LuK`@GP9(N@mBvVDg_z*8o4vIyVZKJHX)q4B#5#ssFSVy zHn0Dn%$C>COKa74)bD}yXi)NLaYub<82}B}y|uik`98|AJ8usLTnKvmJI}39Qcd1B zlHHq8Wa(M-VG0iEXX{T~`S$|Q<(^u(@n~e+rhzPy!n)OaJEcwT>WKhaz{g9%zuL)d zJ?@<3eJL{N_$^;3;E4k)KBzUZwf9#Bc6W+XP^?jES%hq0rW`fvuJD4PBK)I46Nb4-{xhJT_RxUgF<* zIvBLSnbKlQyi7pxq@Ra=%US~B~`{7n$Bn1P&( z-n;+(+k)b@?ZB+WitD4jUfa?d%Ln1%TE=2shA1WurpmCC}Xp z0i38KCbRtOU219bY0%$RqFd_w{TsD!`PH{qOx&9gq;g;Gt>A7bUPE(qoQ%v;87b{* z;}`ZDD&#-}gXPEG6>RbSlz*r2p<3$AOFA+<$?a&8&F#%R_e}!pa+{0L5;Jf(kzU&A z;hf}a>bWRea8{elfu_eyf+MdX_-n74$Ldx23-4?7_G>|-6(oIKR|;(4?WW~NBa0J2 z{SkRq{jcxFcg~IR*Q;}&V#&C#gJ9Lltm0}sE$cg7mB5?=X{KyV4 z6r%QHneOFY>Un73_WkWY*d;EB`$6Qov~e^El^tNU)KaK%_V1$4m~2`q^~fhvzsX8v*?Uhk5C!o0UIj@299cZF_Y6a0WEBP;t5H( zoe`nNuqBPgIa-B10A*)2^RxG7b$TqlaXT2kMEqb>_{| zCOZ!hFR4RW(#VjDlKc)_0AN|2DU|HvhHIw zp^mb7xj^VToK{?!(U>IR}}sFC<#J|iI*`oWei%F{Bdq&^2m+ee#EyJ zG_%DeaFUc5!l)WLc=YhewXQm^1O%wG-0aHx%~6f3-v3S-6y4;u9hO%}CiE8H2W(Dq zr!b(1UA#rkoJ^;%UBa<`XIqCsO`_ZUIeyW9MsgLX^03T3E{5LQa;fK$bO27N-1^PJ zZ^049FEX4mApYWg(a;5~KMHFy4=na8=Bjkp*@>l@ZsBGxT7@NVlC)o2nU%95t~RhZ zg5A^RpaW?I?Ell<$6&&r`Sr9zLVoQ~j^CNsuWn%&r{38HbdAV%ep%TGk2MuO>s@>f z9#tm06E@d5@6S7jTw`Uz+4Sm#5pOBi0U&<-@_^z^#w{Y|K7+m^+Xf_?Qg41g)FsiF zO1@u31Ws`>Z^WS^2tL>bFRS@Z8&D(>W5EB;axJ#Y(^~@Lj-K=S&VJ4Drit~ALRivW z>(=KCt$STBT3ddzCq;Qdd9mQ{bMI_Z^Ruxm`TpmJ?csL}3A<2Wuuk+Y-ySB&8d5Oi z4v3^Jm?D_7F(dth4V4Mvub0T7TXhWkPq@5tt(KLj_HE@WD zo8iIMs_hUnoT*9iL~x^bUS~#cGF!A5?$Ap+v|e6bF2adG<$8ot_rrYwiKbBaj>ChC zpC{;1et$mBo3K*@epLQgi@gdBL*zKqycdk_XOP=@=|+~Dkd?yG04rT()TWhal){HX z^Yz*8&DdWkYdjvgciC_$P-2MGE{({@ETcDdAw;7{7tyauYL&Sqe%Hi9bk9IXdv^&d z^4ZOwX?G6%KhpOkWYdO$Ur(SFgh4mwpbIL^)T66*XtOhR)jl}oKEYHL%}Up9Q?2g2 z)hgP$up`F%N>TCP>`4Bjk*#0(`Mz`q*&5)ph=yb020(r2jvZL_%$Q?=77am}$ya(4EG%FR{SVUPuHXDl9oSvtSy74X0ehCXf zwGQ$j=aIRn`V5f>%>jI91Clp%EU-PiF3|tnp5<{@Kq)X{s^)V8UC7=Z5jn|C)lsy- zv>nb-EpHn+gX-xFBQKgBH(b;?e6M(D!cc1}Hdx+6tC4`SAs)cQz4mC;rTxEsCS22h zCVN#}yK>!YqF+&y@#~2*)eVTY7IG3^{%7qQD>61so#wx;YnPw6G6j(W>s_#*1>`_X ziiu#TtIViG3f@qy7FpKdl*JS?Wto6?!G%H%wBZm0akHyd@$MW%*b5ebCL8l10llxp@U!C^IBQ7U&Q&MxBwL=PKCujFYP#=EJSk(DiT~W-pDV) zL#Q+{<@4gMe$fF{1gXG_WUcsK(f;s8k`^ zs$83IFHJcz{%(C#F@1+}FkJAiGlw=xl5luLyZ3AuvOoHD{C_PwS2q`IwIg5{fQFO)g?0Sw=3x zRpk7zE#_$KAxjj9!4VHac7zc*7XUS@^dv+CDa3CP20qVpUjc)PTIN?)GCSkT^!xo= zx$8tN8YncSZ86YAg)}7SYd8LxYlm+X4JVw0nO7$N>Oop$#!vY>(?9p?)3u-TvM>Ky zwp8R&=oMG87{bNG02)G^sZ5mStr0{Ot`ny?&khgg=YU#4JGMWyH?%_7ez0n8ZMPhJ zR+auZIy$BO-jtWW(!T{!MSWIILG=BBK0`XapzhTh;^B15th~tf;@q=3LWqdMA+AT% zHJ5;agJs#3+Ztj&$b7Rd1CND7&YUnLIDT|{DgHN2N)dyqMQ0*{v&BJHLYl)!=aquc z=(i*P{hOe;9g|V1RcI`8`w_>?LB=Gf{Ja^MD5QtVi&6RJL{16Ki@?a-GVToTEqqYS zDKXeFze-tFVr4?Yipx9SV|z3$%i^wi-KgXj={H7PZBeIk5BTs41BWuwAt`jA_WbWj zojc$AEC+P&Zoo_;MdE6#it|3A?nE~R981R8>EIDFl>;pf z_fP}^K)IWg%N2Rz*1l@WTjX@i1>49gw@ellTo$%%o}L%I*pIi(Xj}4K=!M*TyWC4b zMMcJRmN8Wt7@!MO+q)HJ-t>u;N&$^|^$~2flBI|_@F_$Vq5mO1dafwMGcpbqeD5Dg zwMrs0NMAgd0gXY^Th>yU1op^k^5TeQ442SSD#HlSC*VBDRv<_0ylnNQ&3}4pkHgt3 zwH}2}GWgQ%<#K{G;CgT5Q$i(-XYEiTNB>Z`X!APJhjVKyZtZ@59k|X_nFcSmi;?pwAj==*d)u2 zIZ$mct5@vU8hgdO=>0t_1C@!z1-7AbFi6=VCV2)0p8#{4QQ_MuPDYLdIS~j35f8$2 zLkVh0sR7cy_?25D!V65Mfe|0@>1UFNI&wiw=z{1{vMWJj$9MAUj}6MW|7FvXv&M9K zzDH!-47F836zx|zT(RLHzj*0+&-t@z!Bt04kbVe;H~>W|&ruAClltij?plM49jOaY zAKpU6Xq?C2RXH^@I@QQ77oJp<@ILBKI5pPwB0UnBMoYl!R;Y_v}1pPEj@NEzyRay~Nk zlJnxDcerJoy$b8W@Ce%hBqT_pDZ$EF%Ms0P+Uo&Z1LToEqRj#vRSn|K{3_bsd}%Kw zsP9NXrnZNl9aF~|Kp|4LQnqq`tgwF0SUR7oL2*%;9GzmWCBN@~F40a%Xf{at4W(IY z<~!)Scros@|GA)pmtZz7Rp>fuv7GPpC6B92h|(&$?jGr6pvK{(!W*31-fKxs%uNtx zlf>Q@Qq2Td!AO64EOt-91wte|TNYUGms?EW+ZO$x({{(r! zNHC@Q5i;R!A>za2Tw#J?29>f1NqVweiK)|@XLpy8}in*IBmS4hG$&F{7> z!dcK5;hYdE&u(OF6W*JU%H;N7tSDf*yv;MXs-j#Dt>`8CJlo1*$#9hcHK{mjrcI?Ic$W~*6alm%fPfo7Y@UT3hcPuY#&VO!M ziH)~;+;ewbcq97M$v&Q;_ao-((gG=BA~Sv{$+a~Q1OUljJEjMG{95J^H_-cB&FjmR z0r8wVS>^%kWO@7bojU)PtDYm@K=DssMkhp1BVoY{XD>3Twni-dByF;=`Eg;RG<6|6eB@&LplEdslj#VQd=NUv^sHK&zP9UW3Y9dMKv$pK?DW91yR+fxd4@r~u7gmjw zTnp(g@YO#YtW+jnO&kdp7ItX~!bKQ^MtwoH#V+V4go3M8DfbS}x7eXU*-n8G%ElN0 zDC1|3VvNFGu6Q6<&a5f|C?d;V8cH-fBL1D#&wnGl)hJFD^uACCNUktzgVB)JOw$|^ zEQEvPjm1YCi^L8-J$!+n$iP^O{|%u=aMyV}F9I`Y_e8?m2n3OC7&970#Wyp8!pDzP z!p`?DZGPu&nOEGB?^%(06!|msmm#N>2UM}<8Z9h{7v?!A{SuIT4n6tW z1KBN3``RD6b%2U(tfEfBX}<`rQok;7jAQ1}&JA6)cA!i{?4I;W6BsOq@9@->l6WV} zf)>NIq{xGAGM28U;6jH$zWNP?30ELKH!eQFsf| z0xFYv7~=6jmlA;|uO%AnL!uS~6A?z+^F45%qWrOs0+%n%?>N(&Xzy$g^2`T)nwzvBgc|=?(a7TNz-o&?H$7CV8PF;K`YLs7%Kx}6BRHd;G^>sU8#FcBnZN&?vV@@heFWJ!*1S!P4C*|Q#O8pGx1(hoR(PERW z)FTT{;s%8WmU&d7k_EkCh0Duh55}K#DwE-6g59SSR?B{`ag!;LhnYng#j9Piee)N`B?LCcJ2{f zw_N&UWWBIZw7=r@#>qwAGMA8|_k%(<>vBiBzpx&kG#>vb)AM!<@Q~shx|-`~QN9Mufa_2vZoLw*#AaKOqib290lrdAhj8uHW^|!JN2P z*?B)arhcVR)i$Fj55Ygx@RiYvQ&R<-p|NMDN+Ky=qgM91E+7^OS>yRv%Cw>fsss;y zVG(@3h$XI9{;ap7&xN5=B(Wv{S^>+(A<>enMociaG&ykouYBS?$Om8< z;y6a~s#Er=sun7QOIr#vdM9>#cYW)1-p1VfJkUKsjFXd(g=Ho7=OkPm>+0s%!kJB z8a_XFG)^(EX@d8I@AIp!Mh04kHPj$#38Z51-9%$vSi4e`AONJxTwbbZL1VNM>KC#H zeekjJl979flzT}KA86Po1@|_BJaNvJ^v}LI>P{>?5OjF&l-_)Le#&97@8EF=1}TAX zusc`c{Oi%fN;|WNr^!7DKbU0o`Ak$V_@){g)0s}nxG}N)yDwYLK0n2=%qL~&-dNwT zGlzuLQDtBO610cFGv=Q1E4=1x0LJ~UP8DrwlaBST)FhTy&FNHdOB3B>0bMsz52T&I zjAidypWSRZF0D2}7qXhnipXOsI5y6|0^QDwLl0WS!^uVxauAlKNgR^#pO}uN7#s;m z&iLe>-E|A+NPc*1SxgjVm3FLfPt+mOy#zC&obPiuE7K{AlY4X^I%Jg+tn*w55dSij@~#R?wf|JpMqOIIfDdo)DQY z8(;=D8`+J3Kh6)8gX;!LV&+A<01`C<+xL%{!E8WG$9Lbv~TqQ=O3a*EOIk?HMpAT zPVs=^41G^thLZBiz_IhrVN}69*7G|5&x`l(&v!=DKfwk3@T4^=jK@sXS&ob~(U^AP zrXhc5=i9V_)3S&Z?L^gfl54^jgYaE}ogTzI&*>w^R2*J}f(06{cC0P){-c5m`hXvn zmRDKNkOz*ln>gTmHhnvw=IOvP+;5d0%$_*l1>K3KggN|TR+u+*g7w;`HWPG0&KR4i>23G*AGADm> z1#K`9y9*svYLw_g#+8>C`ezJUGDxBch(4h3rV7d#BgaMTSRXik{8_2{nhNo=PBDF( z_aU(*@MYqElYinG|MSuZBKl?Jwm+#IK$4ZSaMhZRAF5H|y4XXsk?hbBUGv1cYBBTi|D|FjA3oUfJ#ZV9Jdr)HZTwvC8) z+M zgE8wqmqq>8-nu-i?TUGQH;v&dH}{Ai%Srz!|C_wk1=jn1MMZxo^RE2fKW^4bRns>AEw5VE z#NFeoi@#Nea*vR{czaVHwR_k$w?N2h7SRso;yjV!p^kTEUn_HJgTS?)_)acJ`8{H` zB(n>d6K;DJ(lt=d_<{H$o?DJMo(%LmF>NEOgR_82M$ML&9%OUc95`c2v{sokE-CCT zJ#I!JlbwrM+z_(D++lpsk-{-v_uNE-QyP91vG3aLsOz4|}AP=GkeRFAbjJ9Vt=ykKI6oulK7QkD0_{vCnB8Ggu;5b4nvpJBbF>02%3vmor6n z0C@qcMB*!?8v75`2OlH$gB@SLbQzOWX{t(Y4kn0qWD5`uHv|^vHSJeLOSGY-vPEFc zp~f1IP;qEiMQ>te0@*(iL$Le8H2vd_Gq;vLQ8vf^rEl!w(T5oK5q+?D2xs7swWu_& zNfmD?qcVW11u14q;}L^u8-0Fe%aZlRl#qqCB)~6Y1`gMIu4DM7tzYkyjgpa8fEQ1! z3zvxKvD*QI{h=3)!Wi@20a9q*UE=0MUuUNQy@O$3{csIm>NPz$+ek!$r0_(RSDt@; zG&;#)tHV~IQJ~BF%@v)g2b1ZALER7QkR!;Ld`TyF80ymIc4JYnZ4mE)@yj?9J|qBP zt+5NtsB&A=aAzz=-87Mm=W8;0CJU*9xkXgRk_G8eD zD=!D&3npf0X%*>dI&M2p`Ad5Fi3_49^zEi9q;>nb#TX2L&k1$~li-t{Z#4Iz9i@kka<($rTTx9{Ust8qcP; zO008k*2 zEFj=UPHvE7!Cc;6fYU;;tR6C^)K7~Ii)To**VUoxMrBnv?NC*KcyqV=)v|M20gdKBAM^i(;}dhvLC zoZHGoXhhh9;)Gsnp~c>n>Y(Pa6Di-i=c(>JsV|mqbG7@Uo3m14%D$*ziP z6~`TNubfj;<$K_pzfjcOtdxPqWjy2R={qyOA8MUts23K$WveI+q?I6g& zmm>OoP+*p{IEQfaj7dHzEi0!I`z1OQG?Po=K=;)!Sws+8X-JTWgq2@BPkC9`A=mR? zm(S6axwW5Pw!L`O(`N%{H zN}z-U2oWpx(Rx4w;1G#cBz@byU^gJOiC%xpd{5IEc7Kiyk~f4mr3V*c2nNaF9aIS~s?Hq)WDN z*PP~iAFV!{9DDZ?*S}1mjtZ`xAd5JENim8GgYxuQd0S5Stx3%7A#nlUR)pmkQE(9+ z4%2{FaN}HMuvi4VDzR$8q5!fba?Fr~f5W`^*uPL6xtHDx{pb3ur2e+i%dvN_v7*Eq zm+egqJ7M{?XWHgZ93(OG>e(YZueCfoB^k?P77jCm20`$ScB_@{;F)c90{QQYU*ygR((y@GUX_< zTUrAQi<&v{h+~6P_I#X>On*$IpmX{*zIjaFb@K~Z)wZ4%`b1ri_=;38)iw;4|jg(9=3cct*t=!hn0dEQa3PcqY4>2kO>jI z`Ok-cmOAfBxO-*mxxucE*rFXP{vPqN-u6to^XVJQh8>1_9^&vQF@AYlJ8e^U@(6XN zyruqH+p}vev<0U#u9=mh11?(wTQ0X5WPZ!n{ibQom#+NgvR)haQ+M#>$*66|dnd-_ z2`9N9v10H1C(*GZny#LDa&tVDHMDQC(el{>qqsKv^7-d!!Ya|zure9irf zKmB0Yk`rq(CeqsMgxTenE-ZZK?-wHHZu_qN9hEp^Q;~J*?vU81Jz!DtvK0EjsZrz2 z!2;f=UyB0a#K}UAKG^Ae@UCF2|Lw@Vv9B0Ea`3Pw8pe)J`q6?&s|A}vlwf$y%F`@R zq?Os3P~VUjhw$_Fn^%v-<`iCY7#Yy*b!#ngYN_4z#TPk-sfAm=-#7b$!c$}j^x-Cm^w5Wpyjp0tIQqwz+gJYt1~3i|}@>*H4M7 zDm%9Y9$2-<(k;CX>%LjIv_@eV)%WNYsLi#qxdGp6R6~#Be;Hwofb8I+<33SPTED}U z`r|ie(Z7!5eRpb{>wzi)TPOdouM$GYB$VJsDKF+*e<(z2t}Rr+Hbc+A0)uuzv!M%I z*16R>s^i&!z;xh(k~4lc>Tp=IL!S4^Gac{hj7uwdlc$AfoIN-q-B9sh;khX)|K%SF zeWx<0gm;np+p{z_v*s(LqjRkf9IkX9a-wTXbRU#uFF@? zkqm{|D#cT)s|Qd6=-CC7L{;3r6IaH%rsUa`xsQ5z;pR|znZpPjKoP16rz6AC%r52e z!`He3bMkt^*f>i;SoQ6-Wy2eKqNZ&UL$WE=WE!I3;?d9xVd>Ik!~ROagfq>(7C3%r zOmOa+7{_Qh&LW+EX}SUM){5J7a`MzGRa1MPy}ida_a~TJBCcXGh|qWO<&`?L(c!4m zG_-%UoAkP8yyYs*skkKJOAHIaRbuPV;&f|OdUZ`}Lu*Og&Nz z{MhknV$oE0O_jB`-$!}nNwx>_?4~VWwsBvs-vs80d_*j`ax)-jmCjSPvIBhvnPe#Z zIptrP%2J1{7ChBaFu(m7K+*nly_p|b^mlp7bnmbpf_pZ#+%L_nu_LJw6X1|iZtlD8e zzskGum|ZwKDoEzEP0N+KSo%uTbKW4J?g3+8KS-!^owbj_8h0+X%L&8fpWmfOO}v2@%iq z33q7A@%?-!WYKT{YsapD_+`b>uU!leMXpBgohhd{#&^)Y;h=m;uYIoGT7?Bo@^6hS zGD@!AHL9wosOW`gE|CKs5?2p!)C&?&ojG=3 z@yf7SAVYOO-1k73Zj1|b%%B7bJ^Pfo^#VF^>g%PTF)D{6Br*q5X@!|9z&o$at4qE# zdcLh^=!eG=!yCR0NQsn}9*Xv>-ik&JU{iVdM(z0rS;FvC-@2vEhCaPIotr`3jGTJQ z*`U(&2zx$CN09`Y;w))0F1Zw1((JrbC$n?!8CWeCjG8C6ud-I~T>x*|TM&Al)yzv} z_6P~5gI%LV1eVq;@3}VsCDrZP$51->p87*aq?41JPIa$)`Jn_YDYYc)>f&m zY{|c&=5rejCshV=;|TVk#4wRdO{Nv?$g2zbY5is8iH!RX+7~BuYTJhwX5aqq(u&>5 z$tx&O))2ak7k<{tDte*ULip=2)C@aA4>kdoJ#G%TUtukD z5~>XBXmbR+?d86d+tW5@>P+dW;}dYoQpSW|O8k6z@C~3lyVI(ocpfE*`WBo;)Z{T z*|DQ3_q!w1qe(aU_-sk!f_m8k!@XA`R#*#Qw`)KLxVyKnsAP8FKlF(XLuLGF8};i8 zl}BGW_1v$%bDe(IJ^T6Bm2{1tfR2><>ieJ$Ns=6K!%5F0@A9kQkv{!JFqB(FA5PZy zO${1Od5>cPgt@xp~G9k=aTb$;Q4lsQFSahz}$ME^Ez zIK?yM9eiDL_t@nRm%QOuc5TPjfz0mnFMG~n<#@UsNdXE;~_3g8n}`H)qAv`3}y4 z6IEu;r%2~KC&AMJfj;dx-4F_w>q3A&kdlN+_Zf0ELFoPTKKNhseZ?t}m(%YDzTNlV zDbBxg9`k{HGd}p4`p$5K;%MYm)_fV~KYk5a{Q2BARa~s}sLnf2Uz&EQx2v{OMBPMd zCr@V%fga}4s@erQ+uY-dR!VY-H_$ncMoraPI!h^-dJAO5yKmerPMLE#^iMk$a)1`% z#o&yQ)@kH4S8SPcrPclIwsn>JA17Tcd8d+X%v=)?c`C%!S5rpSv}i!>P||=BYaZp0 zS)xB;uHS+fDdU+0xA zV;NPo+38r+boOXwajLHYXvc3Pog(gMe}|on_ zH(R1-DudC-7-amOE9fyg2&!u6h+gKbTVU$v{k)zpTWd(S>|@nhzxCu$s{@)X z`-bR%XhVhx0paXq1DYO* zLO7Oxq|+VE?mhe?)V|@|TfMviUaW=BYrajp_vjmC+Y5rdZ9`jAw_*&upB-4kvgAm5 zVL*La%Vbo*Ko8%Nz|-`Gmgsv1F-E1hRz5$w<~&v9YZ;fZv4>kEU%YNm4f>z+FHSpd z{VTk!a*$B9_Rj(>DL$X~{T2G|K$n;0FC0^7$@2r2`PR>}n`XOE8~Us#B9O#0^QA77 zm*o>*43p{@2xz@cv*|Y+8z0s$fOQn(h45f-U=CXNw8Xd3TKZ!a&x5C4E|cERL-Ocsa9xoBL&wf3>K%Z6zu%X?tt9}=c7 zO_xpE#4+G^94yJTC2Dj3zE`fa`Wkjd1;m;oeAVtp=v$Uoz;rZ1c)1k!|25fwj>!<+ zMqQNfmJz{0*0l{dnPvT@6+x?k~5@_BGz6gX}C# z{*8I{>E`z8$o&Z<^c@_w2|!gMfF3 z*#x;gE_3*cTgmb@XiryOGBBp94>SWFK<2rf3?69@>yZpYcS-#2__xQGoE^3=PPe=T zB5-L2sIz3b9)f`Ym0&fe%o7)DHr8A2Dq&t!{J7%6YZ>kh4V7 z6JhH*Voz)JBC{3&c>oa;0;oZjUQv&-Vyd4f@(y`d$KFa-4e3e}1G4-RAr(4fID{SL zZ8y#{xS7%}pjtP&W3#D{SI2HpqQ9L!WWS_-CLe)X41CYo`qwNZXN4BNeHgcDRQPRF zt&3P+5b~N4OklV+FR`SB9-q7lT^J-5&^t}Bs)tT}0CqN&)Gdt}qH7lz+Dl9~4H{+M zy9%=_>JqsC)0KBLsHKUHHQ>k9pn(gv*+`}w7dwlI0#Z(*mRuxZQo`i!YxEYGZ>dC7 zgYVR1R(*+K1K5hGFKPcW%PWDhEf#L>sBK=YWMclybrVTn<(*Nb)g?ztP(9IIm;*pk zP1Aho8M2F%0mJBn1bMRKm|dw1MAqT5Bc1HtT?(UPi==t%q-BAc3Wzau|IJP{AOr~U z*u|(bEzZ0&*(L$M%)1c`K43k?aql8j=}GIm?3zx&xNj@sYI)lb2ai>XC!ELAsk;q% z1CAZK)Rev*Qg#zB#?X@tF9CWgL!*j)xo*>nFkYQfh)BON^c2P0iYf}^h)^7O2A07n zRCG1S5#Mqi2?Z2NG|u}Rxeiy$Pk?RfXs4p#(ySI%vMyjNdkDLJxe?N(jWa(Vhq#KZDtfDfJ92g`MjUA;#&hFt8)%TJ} zW4ikhqatFF3)jB`ZY^Zp-pmysFASez+GcFbGpZ;(Qxdf?6$Z?BXp^t`Jwby#uHoC7 zEs4u{*Bmd1oN{!YiZ=UK_)c|ET1Ux7b81SF&H~smDasD5r-!ZQRc*ElYlEZj4|7qj z=2xjFkvL}>C}*U*VOQt2!cl6y7HE>B*;%fm18`dXu-y8yB*N*o<#p3eX-@~QL2^bh z8U9j47-_fDNsz5z(A_u4wY*OIcr6&P-~`wXXjOo5o$qi7_>++H0M)HvLYQ0FPk%Ud z+P$m0L`}!0vuls1O4{w{U-bw;@7_Hw7J4#`9sv&J#qknk>jDO}cIca6R_2ygQ7PRe zzy<|MQ+fnk%d1p>$Wlo&+8+p24WVkww~jy_=wx&KOVf_%7Svh(>$IG@IrVx-289*0 z%(Be0%uZz)&uXg7j}%*hyB`n?A|P+cteUE#9Sng0A%vFH(PEQ`gJb@QGB1pGp`$KT zvsTZGSaOo19_L!#@Ez&yBq;t-q&zGMPQFuBtYkyDS-W7U*T1a9&{NOJdm5dI&pm$w zOm2|KjeKjn$WkerLx0Q}>QmvdVIt2On+J{(q@>G?1 z`%ou!zpWT3OKbAA{E0m=kE?o^JgkJJ{hmPNVL2{)$w1KZQWYk_!Ih4gJUgD6JgAhp zj%WB4@}B$I8$H+BTPM3AykXhp*ae5i_|E206Hsvw>7kx@tJ2a&k4B+f1X5XQ7eR%w zpY6@G8hK6WmKqVOIm88wLI?aink}C?4+nggEP#momDMC;Sxq9|r4G>cJ*lar#;T3m zf!|F)HSkS?d)M7W8VCY$;#9Q3vafChHFj;qz_iUULT67@R1Ny~@ZQUd3(8An6BW#> zQ}NLNN)nb^Zf`jya~sYr%1);OCSCFdS0lnKehN4OU1Dy_twFz8u!4KFZuK-gtY z(>BpPpQMW{IY} zSn(ZuSh7)y(m~$XzbxMu1mC&`;v}7|^VIKD0dE`Zt;z_NUbcc_C&&#jf~IYnR8y~q z7E>(G0rgCpb3<{!c&iRCG6iRTTq8kMb9MGqj7k|jzDm%y*&{j zTRG2{nd5A8hYklcU)$*R-ZJi&y#Wyjm2cLD9=q`^zmx>+d8s^gxx7^IAbD7F$*aWF zvH88~f3tpN^RET*rfpu@O$yza`Xa=JVz|~a7dT+h?&Af#effc2xtB!ro$>CkE^jdm z9gow`Yh3J$u*vYx=0IzU>i%LBJ|J;6jN}w{HSwp&SJB7-&4qkhaSWidbDT*rOnka} zZNUBN(N33fP;+Y>GwH?CHvF5kT(&U4{0-bboTD$0>b~aH1S7{>5o~%w%V7ld->RDW z+)!l5U(i~jQCOPO>6MbFf6nc~U--CX_6)Yv7M(dQoguGAQ1#YR1-#$$nkG<)!>@J!Nje+2_;NO5%1y!K|`=`+UEXFt4i@uqoTfWo_Y)PTuQ;T z&7r%`MKIw8@GRsd6;In#wvzY`Lkdc%hWmMjkIi?H(A#HurDxbtVqM>1MtJzQ@qV13 z|G9{*W2m0CDRZ!}ZDqjM0AQ__Sho-lXcTSEITSJ`H%?-8$%RWSck`@v9n>0UYj41` z%~z3m=PEFUlGk*3=al$B=`Vt*kJwgZ7JV&Ok&E)FdtNkc^V5agp`PErRObEu5YIdt z|J}vk3XeHYtzgmKdH1hO+Z=cTsrY!T`*U-^^Kw|TKjoc)i!g1oii=O?w^mKtJpR-f zaBwy~c+pZ?Cq?oYFA z{xru%nV0IB2^5?!(nwM+@goSv3?wc@27|AA?jGh^$smx;Lc1mrObgR>V7>m;Dlb89 z86LD^D>_dqk(jGMVJs4VSmN;)@N`@kKbcO2R-2u=M$PAq43<}lICdid$gtP=AVSNm zMDQA2<|Y7%FkM@X+fs2M@T|n>QPF^U21^2^ICJwI#UQvjk+?kEZ{9FaJ*dn}#x`Nc z13E#du+V0gd{IOC!Q%JCrEsPf!NtHK39exLiuo-*h~vE(bdT(Lp3}hn%d=5^Djhsdk$n?{S=;d71)|EjbDo82@+|#L#dID?D_(U}z)~QDN;UujA zZmk0{jhNhOfv&vLfUdp--~v|x$-Y7_*&biLWfR&a0!CuikW?LUqtxWQLsFJ`rovw9 zF?b5^kK`86fxwtCC65d!8lM3_L$(Ke(H#XZ>0w~v5v6BgZ0{{;9`{5&ISv!73b-$E zrn{RE40LpcRm7*Cz&|3$HYto%dNngImo`X?pY^FiKfXXw6A zMffOT<})=2e5GgxpUy}Z>8vh2L#*-?uyqKX3=os_Lg0y^tDSp9YVvLfEd`W@n|sLlO{d26U)5 zCE`T~-y{=6@VbVYDo6+MiP|WlBYDgdIh*4`d=1x^6o#?GLko$CwNwvEW~?B(r2rK` z-i@>4F>U7rIzmxSAO$1nubJuunAr_SZm`6ojs*fa)6EalXsl^XJH=cC&ko^%AB+Fzw^yQ` z@DJ=>3b_Z7b2uk>YT0T5{2!Ax6u%}IxSDetMq5PiVqJi+bXp^*SIhv_1qtHe@{U1U z`E^ua_@eo&uEc<1XWT5b-dLlcj5&wI4TSaFJ_iv`BIQz+S~kKKL8_&o(#^r!zqTgH)E}Os?Fwm0&<^(LgjSHQC5& zqLoHlSwgXUS3g1>VDCYhI2NA~^4x~pzo9@V9vyZ8-(Fa%dy=ff6;H zVr)`d>0*|e5hExpWoGVieWXrphsMyMrReu1C9Owf325g)I!U4xM1eg>%qxeo;F4@3 zH92!pv^|s$2LjZ}MC)0Eq#O#8#eNfzDT44OTOsss*?BE_TX4G5zmm=!@HIGSDKaya zRgiXIr)Cx$rHwpr1Ro$> z@&K^{{B1@DKym6w+cg)$cUr;x&Ph<~pym)NdNt8Hq(v)vAo3wdBG6fwMTBtcLy{Xp zP@6;YEF1Z9h5qC?wa;?O4i#@Bcg&##E5f7zh(+@7z_i^19{&O+2gvQDf=38C` z`-I`_IN)M$kf+d88Pm-Aso`pIMnrzR$poa806d@hE2o{3x>e_28DCp*+yd1#OouBtw%UiDm$AH3Swt zAKlF|v94~|;qzZUoIk1oi-O1);=vi}GZusvU`tB33-i50R&TJ_SD92DaDOy`mX}B| zdU>xE+k#9Ad3kOpQqzIwf@&fVOY&RP7BJ;?P{fc0MuBlvg8{m`My{%bC+hrT)JCR? z%gg|<)Y72&TzmKkbC2K)K!D+j6(j|frAT8=L0joqr7gNs7KFS@tt7_{xHoVYMyfGe z`rtCznqm)M1GWHS!_8C}D7|1dgxS8_P@|=G>*3oAAQl#4Q2{yI4;;85bH=ix{@Bxd zNnseaHA7W~GYGqid7h_nCKZWvn#n~m!T$>xBV-L&BW(L&dsvF5ezUgYEwVCb5#CFW z9lo}e)NS%9)frWT9T97>I#?j20|5Af6YS{+F9Fw1)&V=^Ig8O!y zW)}Hp=0%eQPdh~{P<8{^E(oWPkI*r?gtaLBA*FbDUi8Aa?kS1tH(;RJ6GYR$j>F1` zWi3AsjyZzo*=ok#=K^wc8G(hjkO*_828q#0&SNbp3W(8Q4QBQ-gB}$a&Kj<>-<*L$ zV>k=aW$zKQmK~MbN?}+^5&EA3s0u2s_6j16y8V@yZA|TJ(CRa}0iMY62^T^0al7|; z^`0&+OVPW4`6{p@vd!aZr-%x62!NTFLir-S1RWQ73aCU}!&>N0KBZnS?IKkkO!S2K8V0IvNf$2c2J^B}BwJ{2g zCb!QA47RnTD}l!;Mm?fEsBAUkOV3nlBUoP`GO5(O2!gsX;u;K&@>>FfBq4b+1+e$X z{YlOp6&*86IRnBbkyO-EfqMqqPM=!}bs;6m2e?}J8e-lve}GLkw6C=@r4<*)Y8YoX zA=Id08c+-L1P=@(e!ds%OPH^$HpL)<%Hwy5RD#~89!tSjO0m-WdM-y0d9UB3|Q=NkEotV{LG8A;8}t-UMFth|&c1Q-EXEq<9t#U1eItDzGZ1o;gyOP30A=;xg5^FfC01{AXNc1F!519am zRs>tiE0*c!d#4qX>VLMoVb8cHHd)}GQ5^EQdvUofP?8X+* z-;H#k8JBRz?SL~UALpXI7w!nDuqR#$o-wMslyK?PG=G&z%F-G9usDjyLx|s3Oqns< zn{#Kfgo*)i!iI6Z2#t>Sa+8Qd8-!qvuyR(~alMG$9P%1E!Ng)yb6RlqL=+*;G@7_* zdSS7fCGmtz17%yYe1~}(7nreTFAf;kEW|x$Mot!?n0}kABeV@P?aZ20nI*#*+$dZ~ z{F=_JsiL^Cq^=~cu@d~@^KOtM76j6uvPbziIm0kh@ryG6bkeBO7^`#sW6Of6z38q0AP@F1Yl-+LU!dUI$CN;j2zVKthGm~L0_iBA5* zZG{H0vjiL2(WoqBK;%w{BI5>Z2OXG@L#C4WE@S~vT`cr2t;JU*P{1v_{H=k!vQ?B1Gd4vMYk`^2<19OsSe=Z_;%WPj;eJ zu?V|b$kCrXX#pw+VVBnV+4;4W5VDam%sL`%u)%doS%41VU|{iQB5u9|T|}6dH2Ds~ zEs0Gf+mI17L;;v#h>)<*;WQ$>N>S!tw`n4@Rgz>!s_)RVkh!eZjQBI2k9JIJWUK95 zX1-@6wj18k0~;!=7o2qtqajTAgnS1%ohVYPGMk_C?4ud<+~JTQ9O6bSH-~I9tQApf zf7qs|Jv?ei4%cq8uih2qvv1d>PfP!^pi;#!BCD2m4B{bCMpvC;Iz=3sKd3p@%3d@B zDH9%xMj$5#utYuL3{u$iD!zrZYK+CXzNCo^(+}KP%vK`Hht7hL-dG@ddx7*i`o@AN z%LEl~e!@Hw))<;~rVYNr`gBRq297^%b|gKC`$8PbHCls=|I8vpV|8 zei%ai5RSh|S?al6c!$B-SsV%J2+1iA5v4L`GwAt<Utm)Rd~IBGU&7KQba z3CY?)Z!amvIq<(9f7Od zFA7Jpmu%sY5%dNohY1`5W=4XLFwctwixhkyh$J{tV$ng4#8V<7(i&m=m0|&kh7t0Y zw97t#RIej*fI}r7u>jcBONnJ9ucDXJBFBO`aBkq5Q-QEf@$BS9I9|~kyq{YMON*Lu zL5Ehn+>7VHtBPix2=8D*z1SGcqro{x11Cb#iY7~VO1Zt$h5^%74YoC=xN>AZMo&Iy z?=a|zMjMWNlEGnIlJc)F!x>Pt_ZcN3@}x@+<2ESV5%aOju~SMj5;53w z*P*$fWD)Xal1X?z#sr_)W9QL;l|(`htlIH_oF_0o5yAjp0b#Ac2bBUHdIQ$Q!#Q_0 zXhBbbyp4Mon4d9+W)PH-6(?sCVr`H^e8*R35fU6Mf+F5zqRr4wtw?<>l|hlYn6a27 zzC+w;G-_q!1%E_*$XaGqlh1>`2LY)Zf?$CBn`=rXk=YnHnRj@Echzw9LUtSKK?$Ho z3{4eJzc=G+KtDt7VC#SaI0ByNOzX=TbwV8N*XbEwYd#ky3?7Y$5>5)k;eNn4K&6ie zVCYfET6825Arzv#W|ls(qWd%)Ll5$J&EW=UOpmDI88t<09K^Q~>mDGr;q8Pi0(&wF z)6K5Sy@I_`qZG>VD+Cyskb?buuw<8DVp54^RG+QrKt_ZS#+mFO5vUjT$sVR?eP*~J zujXELC7r#=h|8i#3l2=(-nH|-BGD(%u7_5TVra}fSQnVR0}BD(VmTT?RZ)w_XQyt4 zMT0Lvr@BAXAz$xFxHwkoZy79`bvbEQIOF}H^?DId_z`q*?p4~pN(ZZMEulONiNl=I zaKaP=WJ@f9LyP$lQ2|5!h!Hx4p*){C*Yd=+Ii$HHoGD_!2Qvd=qRoSUsPglFyg~FI zs*u`F9$iFfEie;6*Pzl5iG8Tu#)>77UyUE%ERA<8XVEs4g;FFgseQ z3D9wNw^qTKM+m^$g}pV(J4rg(i3D*`@YAcdt2v|q=#6&bf<8d0t zb)ATo_=uJrEI&(FiACI_x866$kq840-|dXHMq6^M?1tWcmXM=kM>P`r2s=e8(J9(6 z@nA?0521CE85^sRY%GkL-CDp)hMN0-OuY+OlV`RC+^3?2D&28F`mZ-S|9_q*wTO^>m-pN6-fOSDR;u5)MQuH4Y-e~gb-n>{68_{OJ#K_Eb992> z6gAf2f3hT*tuC~GL$evtl`PhJ0x+XE7y zPrqggOrSww#Apz3Y=XDIo9{(dAxj3<0KQU;5wS@D4DLd*7R>~r?8UMUp1SxoP@K)y z!+g;@!|5RK0P|wSX1S@bzoQ{%o!Pe*9@cUfI++GSVVXfgfIT{5`H>+fU+GR_ruk0{ z(!(YzN5wkeRjwSP`WnIaFKA_2vnPaq64;8url?$i`5~KHL#Zq^SYCX>0r^5XT#;@KRIb>d}9WIf-p?e z(ys~M04YYg+HbVy6YDbuS{eFI%bW4(1IW!Wg@dQoCgdi+01_~|Fc(2 z(1oo}3;_N>T;Q_I!WpQ>SRY2I9n8a!>E>}wL%!tVD>{J`{h6uj{Q^b)3Fa`c>^FK( zfXax%*w&f_;2`iKZBA^!Uzl^HBrF-M-y|4B10HQaUI=+)=fIVG@$-TngazOS`C_G@ zJ)74-`cq7>m~jGh5cLSnAv9g^n>KQf?)l_DMWOf8 z1N6^m;0lfXGu1WxBq384$=iVK&bzv$icT!e6kzTX*MxYEQUk+4-9kxPgL+xm9NUG0 zCJr~OFp&2Gpt5F6x)4OMEiVt&oD`@FIB)I6VkaWW_lubNpD&222aXdbWV{{W<)%Xf zu%5nvJhbREvgPAQ8OKQ#8E(DB=nvs&tv`c%O5il~NU+IY(bsXM|K|hnp5!xFcJzBL zt|Vhp^2M7yBll#rNQAl2M6k*tY`SG>uSLI~+9ztPvbTDsko%uNt|hyOSR$jdwF>|9 zhDk5*y%-lyhAw9$jzn1`Ndy*j#<-W-x-^NH45~+z%#1UcbdJ8G&43s?Ma~2NksffW z(fk%^sq8^)#U&+}m*LeJSp2X|Tr~RtERT>AqZ>vTkzv;0@iP5UCwfV4EWa{SSns=R zNs%4-A?wRe?JR0s4^1fKz$eeinMatVk=~D#MXClnQ6{M0q-QU`(@l|{V}ZW zFHxh`A&te)8W6mNoHK>E;{wY1SPi{+lX3ho#1S!{r1i>!2%`eIB^@tB7Zm^QhTixM zve3hBEZ}m}vL-%-RP7RSjj;CscD)L5$D-HZqvxG7dg7#SK^b!#H3BXg1{3U%BSclo zB5l1#3`I7fNP|#V0vENO0=a$pXiG@4=6*wOs#~OovDSZZM><}l7pI?iaU-;O0E0mf z6cCUEXculG{;#qM&k*JAsQ0YC$Pl3-=L2*E|HDpo4yg~;oHxmbP+^s`h_p-bopOv! zBk8uTb|x>c5buKnDy;9&&<>x@kt$tR@Fo2S*L6jP;KdVhW|-8arVT=0Mq~YAhy(}Y z1nEcQIGpr3jRIswM4uOOHJKl%_b7<|M~5V=!Nb zR9`+ug1uh{_LoyV0%buh%6Lt+uCe#owXd6e)S(`i_b~e`OOKXQbQQqZ|=XLBtg*TkC_};^Ccu;Y&99XK zQmGPoRly~x7qMYO)jQH;d*esHx>hWh--{pOvoVfZ`vPU#(-Dl>HbwI#Z5 zmy}q;wDmk}h_<%Dwm8BTl^^!c6k^7*^n=gaf1i53WWGdtcd4Obzf}92|9!*LxaYRN zD}Jrt6*&mQqg1GFqakj(hZZ9#r%A9)y7eve?weo8LU^F}gZ373T|byAGoNo(9#{bY zxQ2t3a>xMjvu2VmfMk!3I5!e5FLt(2Q8r~H(EP?F0&$h4gPg2<+Ruos?qw#c^~x9l z)dATmSsN>nQD8D2Lu?~kpT>xTy24UVA+Td*SW6~rh$aj8oQHPREF}BN$zDaWR-ni) zz99G#;QKf{hS{O(w})Q%G4q>yU#9k7U79Do$^M_kVQlf|&Eto}SZmf;gFP6k!T1CU zDzB9(qT=5iV2<ArA*|3S42NP|L5pti&avWE3f1_2d?i zUI#U;ixr_mg5sCLPYduLX~mhBkfaFMAlAQO;8`=l;Yd{)j)kra29HBmtpFQEqvLF` zu?tF6jA-CtvjqwlVT59n5h>pENB?Wi0jy0&xOqDYX4A2|Tc5t%(R0Jq{a=iF&?~oFtz= z!xh&WvSt{n-1L+1)=d!y+tRgKHj?p{Wxi6RwI(H!U+cam+uT1RJC7`F3_bX|9h7pq z1)tDHkLa-Yf*rDwdEerW!RzU%;OR#DS{j+i3xy0y-Ut95y2U=kRjeUyvap^B2iR{x zAi$%PLU;$z%5v>Ll6vSw>b(Lu zvl5P+cyS)WJT!g*wIfT{VH{yl6G!vdNGfj5gqD9(ul;a7uVukPGMC-9$Q_s2-0(8vq(L6YO+i7LFV_1KUp`Fc5}_&UGK)F ztFGenSFU-Z|D-sqz5z>kQAsKKH+tdTc!YRoP~nLbFQG|7{tu9guNaDNU@hLUlN6E9?q!LZ12T^kT`O zp2+W;KG*-3<1Eq;f$?^k@x-)B$TW39P#U{dU?d(#!0);+UsQlA^s#mIoQMv^n9Df$ znn_r<1$eZ=F#zA)+k9FAOz=1XV7&P8h)edhT3eEj#e(79UNFR>-3(+mX#EfW z$9k?#hAYN1@&w7hw9Kndv`fY-#9|W!Bi94GdR+~<&!~v4dlVEY7jPifLI9`nQqniN zY{tex6ApfsJ9Ge|Sd762VAqjSbBhj~&r1Kdf3CX$oddVtum65e_q&idN} z`ZN|SL#eemB*^DjJMZD2(WEiOA3;G>UrX)=LH&eZg*mrf2oxqFZ~am8qo3#czyQGcx&PX7>x&#`obd|>H9 zK7nw8N=bC~+V?LI)3FKY;qUq2xE^`*$_sIqzW4Vm*mr5oU0wh46Tb$CKIt&KUT@iP z_-kvqK&&$&-Oib94s0|j`BW_puoFosSu#i;fy;RM8A+oel(F5uGW`hP?maT#HF(;| zOM>xA7k`~LekQ9No$!kvBx7yf;~{>v(`qms1@`$lxLzXU{EqA zN%uLmS>f7SKZ60A#u@5R@3Yrg6tEySIL61OHE9l~zGN{siIVTx<@bxm-S z)}xxl=Bc2ZY@ADmC#RdFG0>!&Nw}+3=bTJsdEUbT1S4;ZGV_F&!$qu(u=X+Fjfd(U_=mIR0a_WOem2S4s>Bbe6bQ!O@$pWNZ|87K95@$ zN{v9!;zeNw0y*w29%bu`lbI1oIxBd#IY~5!2e@*7s0(e5>hhWD0wcEL>uYUl7(l@4 zE2PH%lth%68uHbI(34Osfq!G0Ijb-9N#J@?H@v(*s1+tetT_2JVgaQ10Ien68bH&j z=kPVXxxFX*=6QfPi_f3a%XuDgzf>#V!RbR%6v-n9DAw)|DdDq2^M(hK0$Kz|UhntF zYSwwI`QY%>(#}!oHsz=;>4A4_($a|SZJO=nLu&ZxuyN(e@t<6^_7L=9U|ZCP&5z{d zO^7#Q6iVza5&(gZj=pV_Z$qrM)*^Xd+bicH#NlBBU_20IIy=`mCfSLyiw9Y3TnFGpsJOJOD!Oi@XyKT2 z_rBlb9>DNO2PgL2FCuopDM2w2=bMHU!ghw4b$)URq7z^VZD8@or2x1SiumtSS&=-% zxTGf3JqzID=z}$(zo%j!Vr=(W%@8nEU_himM|(C94RPIvK%m*{A<+PakzrTNU-ZS@ z^QUiKJ(+#_7R?;(7M+bf-l053-Q%fscYRzn-zTx)uGBvk7;j*KfGeai_J;`QH%@rx zSbO2H5(v{sKiJ5$l&pv^FCWwNAvc0A~VCSg?c8bz4cK!0qfLe*<>QXu%~N zi(9hmdY-%?31g@Y0FkT$djDU`*BJrWc>4T?kWkvDe~ zVdFtHV&#awxWzf9HSJFHqB1H#V@y9u)yoZ>Hm@w0Eld7>SM2s_l08hOZg-&Cg)`}K zp`m%dTLFyT%+|J4xsmnB?Tvt zxk*}s7LS(e+jRe=_Y}0QUy;AGLwQ-T-&k(gZvWwdt$G@LKShd2wQgMK-uuN2GBaPE zuT34ntX&~{-!yF3!Xw@y{EX<`It#!;dE975~du>6n?MIx@Q74F3U ztS|Va!I&D{>aqZ@A?X02g}R zsV!RtHLd;wLQmp~MLQuFg1c#hnb;y5pFRwLFd}V&!v^5#6o?Nf3e!@Gz6mt3=zpp7 zbfYdjP**zn+}WAxxY%yG5=GSv=p@07sY>O$$Gv)1<(R!|`1x8z3 z2E!G3Gd5R@D*>S@U)**@C3T@+Gav)Hz-$GZ4KWuxT)5i^xxljcc0aUjyy88*1?fjh z5}g)Ecgj$agvY%V-LPV38{_O`TkX1oaYy%UCtNG1l?`#*;bMy46gG?06mkoM29T1C z!$VZ|X^fmC0mI1Z#7b4iFYdi2=iZ2wk%ttuiZM0LiB+~q2EFOFJr$qa|7*-rSc024w>%z~r)-?%NN`&pnDA|RaNOom8@UZ%nx>))Qb^)Jq zdk+EJX5pTI4U6+Z5&OSEU|097P1|Z-JOlo5-!_zMy4$!RNRCH^;mg83StGu)8-N|3 zR;>8+a7{2qrr)1bK3sGlIev|A9=p}5TxWvov&Y=aGg&Rr#t7leXD>R&2x8I+xJtpU#-JUcoD zYFiGbHtauSeIZOh%ELw}crwo0^kl(BVqK6a3?(+i-1Y^cx+*pFOPW0Q*Q>{sYQZ%kGg@pAvZU--~`hkdYbsj15*uW zGZnbmv(_tg*<7F3`hzr4dH4%;kczFH%#K<0*;ro7QTG9D-nlbfO7Bm?92|{;b|Jew z)OoWvD1L6p=SjFAnKi~R2+;hYS9Ev8@=^mH4;I2i_YJa*>lNVdY(R4J5*wUAR~HQh z9n^F%nRZ#oMh1X2OWumS7IX@fI~AQ=F*UNl;N{7P?iPlJ9H|EgBZz4@KYz4k8(d$z zqRU(b1|YU!YRpU;_OINmVyn#w0X3nEF!qp}=*8<6Oez*27`00m1!1UC0AUKve5m7H zNu7WijY^i5ET5lm>X@fbbo>K9W_)WnduV9}z$K2oqm*36cVWzanTfO^X5@uUS?KSX1q@qI`q=F5Y8uI&dN_Q zu$yOI1-+?=lL^{Lv*3cC4r=kqTYAGqdp}w^6C&>$mZ?rRpJ4nNaHhfiR)QuYe=IMp z_;JqIqT+WxvJYAF`YoEY#FWsPT9TQ;p~cmoI1Rb^0OjoWGV5 zl1q!ZT9%{m4TJYng84Prf_Cw`v%LihjY5afj#ijkJ_tE{_WTp=)`X(4*yTSsDr{WF z^0Q=-{P!ILBh72etCTs*g|6FOZHfg?bVB!@b+zz#NfP1I|fy0Ao>_DH^eITyc)0sS8 zQs)gD;5Ng1y|+w}Q0Oe$R#h(f7Y2m2wYr7zVVZniEy~~Uk4~u*{=@0>=mGQfb+xTn zx=df@EzM|I4bysc4L{1rgYK(e?QFr76MLd10Klk z5-;^u6GoYs`t`!>P3K-6^4%vo`|rdX%}QH+`x+NupVjTBYa$jdDh8H}E$A_HFPz3G zj6vXDO@OdsU7s)hMCpy8YjC*Cc4$T(PoX;7uu1sTl+V1TY39OQxVMJoZz@a>hy|^C zoLAa;`l*jnBvj$~RggrbD-gcvV*Cvo%=m`4UnPA-?-<>nu?*UFsa{Sjn$ZXz{$A~? z-1Os<5CJjl23L*@bccVYkM#7U)G3i}jd_CS9@twPcJBpbP?A^~CI6M~OvqED#Bxo( zf{^+j3Y%Sv%?|f_1`XIMlJNC95+;1g#7^MDB3a04&&TIh%iB${O7ir9zO0g9IEWl4 zX=qsnux|BRQBXtDAHevld7PjXGP6M_?Ig$3QH*h+P4maXG7QGuk2yz8-UZxsgb|a)*%LD`O62p2tG_mqU$Iy391mu(*G{P<`3Et^^NXDEXJ#dP?NP=qw_XfXx9nc_$&5(vLx?bAw!1IKct5 zUC{%dKKCqK?aJR{Pzx>;b|DdE2?Q}Ji0L+CE*Z{(YLdbsI}O92L-M4k2@Z!6pFW}s zibN2nI^%^ac2+HMJ6EBWq~LT_)4cvnSVcw}I1#>K1C1&h7L3GH1!rN2tI1dB>Wi)bP)=izg-`M|bOv2DAqdr!QRkS;Xy;1bZ z3Ql4Wx|OaY8!;J&hf!a&a7KO>y8sRi^j2q71v5kFU5pdB2b8F5EG%b&tf9v-0V)G< zTNBXX$=to*bO;P9N-%%3Yirw>k5BoM{ZPGnHF7PDD6AzU3ZxFy5bRK9h3q4O$vOe{ znefHKz3mb|Bb==Zu7GsZkjbQQ7_TBv;0aukD8+2u>Od;0fwFI!Z0ZqBw~ZDFRSIkbe^3 z#u3m9d`%R=g}&BxYY;Z$G!#ssS}a_2S{d|)>dcHz!t&*3Hm5ng1@}=6Y#=o%TPJKU z2IL1)Clu2W=-v|a=g}Skyq0<^F(Ao zs?RGrR+`_Ed_~L6+LaOGyQpWMs9sXnSlO_i$*5o4V18ZdK?UE8q<_VD^NQR=tSzAz zm_TIVp#|0xT_2QRH-bf|#`tNZl@^D8K>mXRBmJe;f=Wm#s7`W{`1__#0j3`s%e&wLH-++LYJz~jSmNe4IXt_(Oh1!I#gpu; zJNs&;p1zk#%ZCTe$9Q)%^`kLR)Y+yV3Sy6^H#_TRMLbY+<+>WPLj!#v+V8v7q9_@J zKy{1R71ZilZHF@c=F@;%V4ktj7z!KW;G=FZx&}JJgJ|^qtRE`qZ2-#EAHOpdhHav`}$$Z!nIJC-E-#u6t^}a@eULNXln|$DwqOsE&BNu1~?Mk~l z_O?-+VSas}%DgoKPnd4y8V6m8Pkx$XcS?OG>$|MfoXNc7Y#jf0~seTN~I)Wj=YRJeYF&(G7Ft>!0@eXfv$Ljs zY~{)2!M1+wH4(4El|_JOnb}T5vcTiD^z#9DN=U!aEh;W>M=j+XxX0`9c+Q%dcMDWh zXS;bd(Eq^p0YjY@xmB94Tmew^RG$6pRhUF#~`Re=7Wau7}f0n zYG5l42JsD0gEj6z_*`U|igQpy7J8u1(0KTpWL{0gA|&dmW*&G4WF85v(M8Hd02^Kf zsDh2fnO^$eZWqf3wn6nDIhonBprjbI6-J_58;(#J;?olJ(ck44*n`_y>&}U;@Ndei ze8!gj@-@or5=&*CRQ#OpcJ;T;yZ>`kkNZ>~SnriFoH-Nj@{IoOO>;bzNQ>cWvfm5M zbNF%KwH=fPwl#njaYQ!KRG5K*!;dJ*6q1mMPM39#ssZ6h1ckMz0k2 zT#UINVGe$r4x2qG4SmLccjHW}{m=6zDJ?!58C;J;L8iPx@BK2a7d7*Qd4_YQ` zL$V2q%Yh?;FRSv<`mF{Y+@`-wbaMK(l?){Pj3rfY~UoI zrVWfG91E>^wb}WpChK^0Yl~zmXITK-a_sgYqX1jh*zq)f)6(l=v#qN{B>HsDh1f26 zRjty6owD`taGPvQa5~xXNd%H)TYVW7*vW~LE(0f5B(OFYu{!H`7@aFl z`uY8DPIb!OTbDU|z9+Di>ZqdC++E9dJutm1sO9p4R&BIus${0^#A-g>HMBwr1=7BW zzA=71yON9hi(3m#p~rR54a+3^25$)K1Cuwc%4i?}0`nEktE}Wu-#FVng|y#X87ZU} z@POed#_d?uU1X>Uzl1r?Yi_!_=3aI6!xlfa8J$mZN_m1v!*;`l-)qy$*WL}DEjXmr zNNP$rX(_{{5BO=9?@XOu?vof^wXE*&=m%5jsF!Su76k07+@y1O4J&Y zl8gx9dUj%g9vp65H^B+0K#fU073-42c74QJx@&gZEqW`Yqy4)%XNp4-pI_S2bZ094 zuDoMKUEuBJ2M^ylAFpe@o4Eed%gJwl8M@{6)IUEe%Sv-UG1-?Bb+|LeEI$2sSvDuO z7RQD|wW?;2q~F@~z;|rm;YF_@L!QJg6F>3tg(MF1<@@QqW;>Sh+gQS79fC;F7K}(9 z*hoQSup9bID9$2HBBL87oUyp%v3XqUXMn)6$FUvv9&?MTU~q!8962-u3P|hmw{Ks&^?61MX4;TVfJ0$D3nY9OXVxy{x07UPe8u0KW30x@XTp0QJ z(`xe`Z|tH8=qxT}V!TCweBK4wo=E=~eH<$T2$2<=iA`VZy;idpPJ1jkDPXbd_Y8@-rn?q6=;W?h=w%6qt<2@O{>6RMDVeAJtZj9_OVX5@Q0T zGScIVy;8UP|N8Q;A5Jahf9?03;PTn;9C8)8tNuzU|FJ#i*Z8r-U40+t!fk;11(fxZ z`Jg>u_Vtvg^0#|szsW0q`<4Kl=Qq(23{XCC?LlluZR4?pk7z zCt*YvwlZ|2^zN@Cjz_BA`1-=qq|d(|oXUA!w?8m-$FcAJd2R1^+rtOxRkCfirbc6Q zLa5F*WIdN1l)03Q57`50M$GhtT3ApEn` zaBG7@haW4rm|uv%eZMXds0NFY7OQnD7I;$k-gWu3VWr#ZB?%ryKV;T&cYPXBZ_hmW zU3T)ev@b1_<~0a!ELu6kE>0Ev0xMQHcckb1eUrvRK(COeblGEjIUo2blC-TYo zjc-iXXJ*U@h^i8g^ek&PI+r0BnV1ddA#?i2D|vfWrUa>{v$Gd##49Lsbo*YrIjP&` z%KMLh`!#ppjJo{TW#zY%zfIXKzSbuE{EK7a!PaYDX4lWsx696db$mRd5t=@r&`&10 zC61#6!^PKuXlTD`cB6xLPas?XUxYjesvFm3!W{?6hwOa3(Dxc#%+hvN_x!`WTdPJ5 z$ZW-Kgj-}_U|RcykR2`-nU65rc^3xMQjR6vKDJ#!{~Y}#OV@GzgLZbasHeR2tB*r} z5O8O=zvKGukDuN+7{EZ`EwZnrqJ6)aU_;aq0fgi;(^qvsIF|v4G3X zqpnxlA%m;y8l1g*|z&f=;CTK|};TL&>P%A0of2=W0^ZF(~z9rd(y|>}_TbLKF$zSh`J=vCc_3_ay z_g1V-dvY?j`ayPO-B~iPT;EmjWr5X!#5Zh(ULn^cnyM|x)tp2c~IWmjh7FwrEok`L&&-=BPL_RV;r zwh*n>Jo)gZFJFIbzx>BPx&ONAqixqlIU-HWhgUq0|D^sf_4n5^xBp}Ndw07JtP|6C zq@6b$G(&GQa!fFvC-rN4%I4`FN{n5$FmoSHu?EZ;PJ?qHhxXjPXrTw&Lyb}wg$iw2x=stW z_XGw^3I>aB0Va!hrkA?SJOaxMAO3%6?BtOC?<+|9XXZG(k3KX9KRqbxZM)_b8u*@n z|H#%S;{|QAiPj#`%aG??yx+jS*t4W=GP{HpoM`7Ai__Wo-tC?<=K<#0X?-Fw6-Mf1 zu)x{~Y}RxOZ~bvC&H3NmzFRrZ?+by~3)`W+gaWZCNOb zp0Btv{}Wo|w1XDCQ>JOPUBRRxQCq1*RAbHOU#mRdx1Ic=6x1HhyF?&K1@OS2=z6|( z;NO)gk8(5&Rp-9xXKJ&6&P|7J9g03#M^twLS8UqTSU;7oiN9$+h8a82j2{)K$yxeI zsxj#OLe<^I0h4yOZ@YuplorQGE9kd@_t~UT80XW4=DqC5JX?Oh_u1SaxfT@EVUUI! zhE~jObbGpUfK_$u+6pit6PdDS-R`}AqdFk*Wqt=o>4YmGj@mjo)hue@EolfS-i|jh zjp#_^vQ7YyN0mU%FVz-7eZ(7&PJOT;srx~aV)7FGA!lGh^X~MsZ>pB?oalT?O+=Ck zevI!IczUT50j>u(&L3SHI4QPB=_$3iW93}A77WrYF!ima1Mr% zKLTVgsDUE88~Ph0otRg8`j^}dzQ}mLi#Ozc=)sb@`;V>fW}SB-6fj7u#-w~4v)+}} zvOo1`y#I~X#T|1QsV4?3=B7|8xjs*>?!EyZn-Z4qKVDCYHphPO_WiFJeNTpQk3s&D zz1+UAJs;1KI*%rPxaG#d#n-AE>-PRSy=&T7fBNP#%iItLAg#W$-lpKN>_F7vj$`{K ze%V6b54zwz@XS(3kW*YxWGh>!>qX>CZi}JNZnNKJpqi^>=nA$Y2pq@V3 z>^A>9?wO;d5(==N%^QtV&-Cd{fd?zm7CevA@G!xqj**)Ov7Q?ToBp}E1#KuaMA8bp~c9@AI=Z3e#i{Lq)C>l-E?cN_jT zMd6(e#s6b*xW71`UVeLp<=+}GSc39%R0Ws&w9V(cg^Y-b#&6PpPYB~YY?vUBl{$xi zM}CyykGU4S7v8bta*nu5A}FH{{`cO^`(4)0Bci_=IlCqzwl@>`d{)|{j0~x7669Nov963 zk!v6IKlt&Y#yPoBlEJDf&wDopv}D}Mxzik-qwh_|xg}ltQj4N_kZGLke|GhG=aXRE zyKFM(!Tgc`jr=5IHF-;X0*Wb>bp1HHC%NgH+uf-{Qz!)Tq4hW*pwB| zA#ZDEt9b6#Bl|xV+|f(UITfCw?zI^1BEcCb7qa98JBc zU@Xm8;j=pD(srlKL$e#U{ZkX}&)PKTLCOB+KA$MNsL;u@I>B);Jsar2#yfpf(b_ZYPkWHdxFq4{SxE{3HU#zJ*F!Wc$=DJ@3YxetY z9?f(-G5Kv&&xYsHQj2x~GYtH%6p(Ob=!#efA%d-%4Are6eYfoJ!JnT0@d`)7A1~s( zFG&B}1^3w%EQ9EJtD?v5zC@iEDfQn}5+W;`vG`w~%y?oWYjhKsF7l&h6!o$OBfG5N z7_5-YZO>}Wey?(=sRNzwzZv);BWu~g><=9@=|3s|;Vkvv;HO)3H{kNzt-kxe-*V)sjCGPAGD_;v!osd zS@vAU?5wOYr8~$$FMP_guPh2*q7hNq#@;V0+TalYb*(S)G^DFcDpS!h-`LBCO3zQ0 zBrb{lb~ah->%|LR?9c^E4W>Cj0U6N4p9K7P1f#R{^80=I`>F?yAPz}(re*Lg)kR^A zR9)ur;N-aUn@NU$FAg~~_?A-S&&$=DEEU|@qz4xTM;7;OZV66Wk{|dqL9z6r2faa* zk(B^ONuZY>?9DsWIZ+*omfmLBg#fwkRvAe4lCQqBm%e7Hs(;@$cWFIsJORM2Ww_UBXx7pVWQbC5wC2c&y-t9*oLf|Ni~}$+vX$bC57vg zg`tbD4$D8ax0j^cv7F}Q0k{v!D_kl~jt(fx%*r%>PU0s%Lr3~da*;MX-SF+t; z$)Npv=kz_nK1ZXj+ffCjF!7|$n!?Hf^w*A8bUibfZx^pj92`DkUu99s?l*lK4d~xX z9HUhygqJ*)PYhttr$qSlpp(|8;@Yf`sUJQJ**H$V<#1=ubd+A2TD45#W8#`m;mTZ~ z^(3WeeA7}z#VWotpE|9eui@%pW`XB4F7S@g+H9JR(!x$mn=f_tgtwfBBi!MI%r%zc z>b7%EA0J&e&Q$MLR$e!n9p+ZO#5b&+Q){a73Ct^Qm(r_eIJ5V?>&6W3Ll}n&3BVSV zmtMxo-7N6*n^SiO**UcGzN+JK>d&gOcrN3Ml4tl&+thZBZ|e?q`RNd~=o3D+OwJg!?~StR2LfbO#f(Kfl+jU_uP zCUQ^jKVF{dnVXoKu%>!ps_$!iJeR3kJz0s0b<8W#At63xohdAZPkwck zI+tonb!EU=K-Idv!9OK-ziaXBz!=A3&ZL@5$058K{j}^>{QGXTljXF0SQQ=AAZY&3 zl~*3RX%=-_yJA6BCjb1D&5|sGm*YvW#qHtdws(#S?#YOnL0C&K38>JSr=MLgt$tQ; zX>Fq0F1HlcX&7@Mg8`#~JSJPBiEuXdtCxR5*#>Mi$&lRa+6RyD0yzJ3{ny+@bybbQYp#GFy_zyJFjlLNfWf%!?dYJ z;hQCvcrth}=&nq|O0h%0^_A`8x`Y4TuaA``$E^2U8_@UDP4l(9D1}YA8QxQ^4y`kp zO`P{3YSe1%pMR4W9a)F7$!DPx@!}9}&66Edx>Yb+B^c9l4cnKRz)yD?4+HPTN8_>} z6MjlHti-&%>U`PNdIy!hA9m1dRE~qno(iA*KVI43_GCoAN5{T-zV`?!pOAH9`R6MO zbZ`-xheW6N#fK=|C+K&jTWssvPkNz|jm;&=3TI&+AD9Jx=5!^`ZmC=2hKp2sy0cg0a5hyGH4=rVV z%RWnkT~h|^VI01fvd;IU#2|0-ohZe=&8d78)3+h<@#Ww4pnRLng_bL>jI9bN9smUsTHKP(@w@QucC zpzZ;dYps}H_6=Wr{hvSmOOhKp>A(2wXDN%Kj=cWkz8n7i*H`{%u{JNz&ycboZ1n2e zb_*D|B%57!B^8SG)ECLoL&hF=^K`d?-NJZ!iIHqNu8Y+~m~u1Cm+Y|WKy|!hWBJ>z z7+ZAYRC;sb+JX5$SyfSS1*|WCJzz`VF90zk)EF8rj1LPa9~>U;)8>KXm+2bs8QlBp zisn{b`mcf17a7rwJ#;5ge~6~C_cuL?~q%uz_(X`FU;be}fgS$VWD_?!J}e{4P6 z9rL}MDuO=OOvXV|`U&b_sE|AK)*pt>Tzvp!F{djhCC)c1tU=W3sdRue~MIraSfZMY-eu^g&Lx6d|{!JqB+ z?Tc8#H8+}98OZP`dcyKXHuOdB=GEIcuZ*o$yI4wFSX5enf$Cz;!8}2Z%6!hwLCa^~?RmNeh$u%RY^t@-qkbkNE^t3P#3-E2HAS0et`y&(?W9 zrL3T+!PpZVSdV+K3^QJ4BK?!xW(tg%ao#rUZw&9r8SOb*VW@++ zyC3CD1ffH9J<@O4$KyG}%}Jy0d~xS5nNKXIq~IukW^lSP(b-GDYyz6OcVyKQ%c1l# zj4q|nA63GFv)~38s_1x~^-2R*L6K-9(e5^+KRjHOCuN{@mZ33VbPWs9d{nM7mYXhF z4vEYdg2j>vgJ75vwLr9LTFsr|L`mHHvOB>C))oE3R5%2 zbK1xf%viKTq*iiC3%j)9#>&{r3`_1tl6TW>;o(k-~^hdu^=l|NWNH}8gvaOn zpDab73PpW zp^_%~`%toO1ho~c(|^3OW%0v@mxJ=EI~ygFuuI|vs}A)xM8@nO zNiyG*9pqq0;JVGOr&A3HZ<~~!^r|#RdZOL(3!wv;*XX+j_jE>KxJl)wn>;aDQufCy zQv4<(x*v0b`Vvk&V>2>=B3W#4_d#<)H~xheP|+rh*H2!z{8VaU=(X?XrT?9$TnX{{ z&8%9%#C#{qBs&{92j=&1Zx=1tCFz`q;G7lgHLCgAUE%6X@e-)>vUX%#9%ylxdu_b; zgt41lp)!_quMFW2^JJI)cizPu#<&DqoxnCURf<4RErES52!#n{o?xJAtH-jqj#D47 zSc&K6zX>b-do8 z4cs8%VwHO_y8@n2c&t{8%lJtlsYgSG!i3Ii@5$;pdUyI<)tecS(Sgv8kaY4Y3p-&o z_@t6JUt*APv_szJrh*&9o;~U1`aTh-Sx^m%GtYAL&!LX2?84{HD;GUZzh+jL^XbdC zf_tYUDs(+@bUehc2mMKtmd-lj8Byi$wb35lqTo%EdWw%jXe8ZzcdZ&C` zF!d_WVQxY%6IPhER2JGv-C&q>`f*&pgqE(Zh0V6_d*4Q3b~-w~hvVw?_JU zeMhq_iuO~Rq{&aZh?oM;aw;6=RKU(Z#<-w>F}p;%EFv#M7^H#iQ=_qPX}fLu?+0o3 zx)cv*??MI9JJ`cCDQ4uu0hf$OjUu`3rCLZjxHZzS>B>Rx5g2AQv8Vh8ukT~jK+SYg zrv96>3fFf&LJ1N9KSay4tNyiEAojL7=J#3aV?;&b!Pch{}7*Jjx>yn zK$cQ3Npq(I??W(9k4*e8=mT>MOK;I*OP`EY4ontY(pC(Y6i1+TFhr#Wi?=4XQ(RzR zX*+?<-y2oRCV8CEz<9=}EKY(+9XtO-!OX%F=2oByl&Iz4lJTp8!>ch>o)7Ztic(jQb`R_A1%BNPK1MYff44g(4I%21W8GDzM{>KY8&lsqswxu zoA*xGxCSxTl?Zx586(IY*ZN3z({$Oq}81P7BHw1Z|bJ9_HSHQ}n9y-J`OIBmQ?eXG%Ctck?omWL&83 zBslU7XU9v&0budR1p5mWV@KQ!j8xMN_C;Jq7HG8N;V#sFQX$BJ(SC-Gin%HJ=ND;+ zf0<$V|Th=cU8p@z` z)XlX6-xr13+s43hJJCT8Su+={y`BAH)r^;WIrc0{l&IqcRg5dFnJ3?n4BIcxSl}@F zJRwzJ3NJ6|0VS%wUUCxOP|RP46RmBgvD8pxw`@hmu(Gqkus}@reN{IqA08mnPd^Oz zZ7Q9CFXRYOdgMql5+%+|T?uE$@|zkyv$>y2Rz(@ooRRBd%iKHSs{yx{Fh1yMOlbq6 zY%}>zpLFfj%SX$n;bMyYk_WuRjK8u7%gWos;lv@BFU z*cwxoz8=o%Dh%=P1`QCSwp_?KR<||GWb7!Ve(YYX|u z&gK)A3IqEXeB<<%O2-J_Ea)`PKj7;#8N+)7g|=;Ldu+MJZXq;fuS6LOr5JiCF7rmg zXD4}&iD3~T)vFXeQy9SG2IqNrRQ9ew-!5cq$-{V-9V9-Mmti;?3o^~UoL651y^AnZ zh|FPl&)P{qesu2!C(+Ascp@5$)X9LHk~Bgk-ZA5YdKjuZw1alNVTHB~!TwfRwFX=6 z^TYDtTWF4+u24D6rpjCO(+R=0ZrgBldSw`9ov9l(&cfw~X7=iOi_Nd;IKvo4<4gob zMfbMx><&L*j)d=qRWi&51h-h2Rvz-gGaCSQ-|5OU_ZlsHU&qqbW#}*Q4NMioFhN!z z@|yNiD&y(QcREa9Ndnp$#HKW-kK0CR-v=;xhEZr)5xdLG6~hktQFU3}L}28s!1CYa zhaVm(V?xOp?89K`CnElsZ}=L$FRv7AcVtVao5h&L+bpKvgRvW9i$j|^n06*5qjb#( zNGEbGRP{Mg8tJ0GUEpMQNOPtnTg`9rqsDv}1+=vpmR}ja3CA~E43muLB>ax3@vy+r z8}Ot&13ip_9*PSYCjAZ8(JPp$b)2lzB7g9ypvWu=b%P<4>^25Qilxb8Wm2bbIBrj{ zDzq$%CaoJ9#`^soGx-OpE> z3(X;+rbl}sA@oJ`Vyl~_ew2o4&~hRuF3>R4K+F7EdB7`Gr5K(zn%AaZ#XB#ANZDos zCzaF4iLgBCu`OuoRW3`f7Bu8E&YRsx0yFp6SkK?lt0657H@getQE_p>2< zXCf5@zDAC&R9~$Dg(PsiRKF*Z(Mo)e@`+UOtDdMF^N16;w^FvLTZ3o}6^9nOh7M@P z1ZZ7-UxJgi;GB6i;uo&EZKl4*!4TZrsHGwqElV=#tr#$3t(gCl!g7vleiMF1XnTA4 z4foSF93I3Rb^REc$J5-Q(1jh?sD#dUwD~h#*xO^0iLt`KNUmFl^sNwnl!0sVDT8HX zBLySmRYiB_z$Jmc&5|^?dU~Q>ay&W!hFigPQO+xY8e-P~>klDkI2UM`rLaQFs6Va5 zCQw|9aZk?Xp0_aiPR8`vco&Us(aKFVG+!0gr!E~2-;;^K8F4P&JaN3>3xqf=U?sB% z6vvEDC+2ojZMtv~wF85!q;K)r=9Dj|DnOH$(A+{UP;(J zt(&Q~+KA{fHOFk+n6=1jn~Xaxq5)ENyfuHBo;O&zBS(3d`48HwKCkl#3-N~wd2 zt`x{&?Yq2%`f9@XsL)c<7iC^ZzkayCZu?>t&lUq|t=)YsHqzC9yb>QIbvIY}f?sO( zFu(R$U%h#uv92N9v0oe1S8r2(kFS$l_A^G&n{Ji6b_bp*H(H9F424S~8Q`EwF)?jp zX_v&o2*ps}Aeb;t3u%+tg9h^877ciZIpPJqx?v$_wheiOGgIZ>gN@SD&t$vDiqSx> zuTYv71e&o!tKZ1`$P~Avy+>mtcFcu>6Y-EA<E zry$2Lub9bE)5i&*l#yBi_B>~s2+J-wp@x=%4T{zXNBb*S$1&7f zxRLHKJI#bXNHTB=8;P_k{Rq2FNAv4d?8;N!|1VW<9?f>z|Bd&1&$PX#+L|tcDyFqf z#WMD)?Vh%%wY3JZw31kpC~6OWtw9N5OYAi$MZ^*$cGGG^gsLTo2qpF<8nuB(UJ?#fXHZu06a~TQjbCM zz#@ux8OX8*0lTYNhc8!pyUIk@J{~rNcvyu1yP@3}%AbEctitXe$gBc7+JKEii_Crq z034OsWgL2x9Ea@!D_T0h3HWb=3S{No?t82JJI9(2P2|m_TYf<8VWradjY?n2i~tg5 zCBlFS>u^oqM}dGZ$^JLZ@u5o~QwZ&S3YKg4SI$+JPLfv3V zmqdDu#U#l9%OD{3#k7mAICW3$7?nwiK73*bgiC3MaRZyfuK*T&xBGPhAk=Iw3=nUw z079`J0dtDWVt*Okl~`*7u*JiXGV7**yes#&=O;AalvX?{B1^C=BS1mdW=E6-Xl)(c zkF6g8;vzsBHUnbah>>?@v>HH;Uju||oDN^TtIwSP?2LwLft*lpN_rOamtm!+N2TSf zx(Op&z(ePE&y{{aHp0Dm_1>??x6Zpa?@E^dbK*ik?J+hicH=w%7`uP?_O(9{DQJfd zyD-2X(7;T%8o1f7g;$$oEzixm#{dDuuz5ZD5%5H;USb`>;m5ZRAAUSme`s<8OM-li z7QeZx7Fn?FC9g27)`c7E$`=RR5)Es1Vp@*5*a_*iH-}ZS&w+{P4~2I6>g(bWRoA48 z-Oj&c0%B5yvlGNYq2|D4qt0)%l!~Qb`S#!i<09rv=NiT5+NYB09%2D z=Kw$gNVfNH0y-6$u>dybKk=;F*T(Ju{wzNO8^7a!i2(w2z_mTr3_$`sQH8ZXrAsT{ z1MSHT)zbF~Q7LK7Kytyp21;1Kv-vpYpZ7*2fX5Gc@S9J_4~){R^KskVn>h;Xep;C(XYClpnKS zKPDYw_dyRgUwW>+SG_AeoB`+@9KLk{J_^wDv5o+D=>NR^G4p=*BeR+*?ELYkf#yl_ zW5A(dham&_-8z~bzc6{{DM}R2u z-**rE?f>)Zq$=_;t~PyQ<=5l$pP)ed z%$ljaQMuvEOaQTT36KZ}%AsF@?i^5DmagC)lBI-rdQxQf&qM;xXKm5LZohGvA_1hTKJ zM=5TkA%+wK1>1r%tti8~O0w-M|7bIhlcg8#BFE{&W4&U<}W zGUP(iGeE*7rm>t@>huJZ__vPXLe$OXgfNb^vfEo`+|1Prv%nw(>cZN3p z0Pv;2IK@tSZ4&s7fadMtM)0ARs>|WS^{8KV{+DqA^z1+MtpP-@Z}I&fzHk6j(#IWt z=%`XRA^qmZW^Uc60Z@ehEdz+=vc)V_RtYdq&Z#h418Ur3JtON#palV@?XQ6&0z@8O z{uc%f+?4;G*{}Zr2tmL6n5sYcZ%_XN9xb|+ZaVRbczou)+GU{p1J>m0kB$L4++6^{ z1K8ekb2k0gfP)0G9_uDRxl9ALaEJbT%Rqr+nRO@!Fi*;4Pd)%c4Y4)=2NwI}-cA?x z*wm=R^Vs(IRjgyT`N`{;&PbfgA#0Lt0O zWz_)o5zuZl#IMCR0i;}9nbDueXNR$?riT}V_kOTkj`Y5tvRAb|j*nb3`n!uL3OP&! zpy75vgRxO_(h9(+q#JOd|o5e6*6shQH|OtE6855j@tfrd5Yd0Haivu|qZp z+?6e^02bBb9wd*ZAN?I5KMKgkX8uUr55AwWYyhguU*%3-yI0EWwE*HFkX_hn-AEmP z;_?QxuzQ}TyMHQ@gt)jD!GZ419fB8;iSxN4Y0Ri zC&&lM% zfDSxs6%dc#;q5$#7MH~Wn)mSH8K!jJ^MA69ZaQMeC(xvYEsk5(vb6LcW&{ppqUyt^Y+56eZ z4%i|kem^x=2w)oaB6f``fs4LVaN}2`^j-lX%YkP1#8&Cyl|!E&yAGoVKi(7N-^UW7N3qgnxIKjM8p99(AOLinq{y7L zH-HDh%4GL{Xh)5rz|#T@YStitk2~`?SoUP9&1knklt19HqIJkn*aZ*&9E~_hDBjVJ zHr-ACe(KxB;t?Q%kX1h(|2z8ebK#GPJ3x1MLMYygk7+Xl#_@+UM)ow;p-0srZ&fY& zDj@7*6kEIlgi6fp#=~mBr6vi0xf+?p8~{;lvOD(0>61hH24FKib`S9Hu?D1T_9p>B znN_E**8q?4`zhM#k(fB(Ij&7{e{*>I*#7&eE-=7&TK5=_N!qDqKQ8imU)SjcaXy<;}kpj&F89`hE)T0Xzt}@25`v0L(x>;@;dm1g`+4 zJ#b5b5x40fC>s3zRFAL1O3C3uhI(Yz%h*3-Qg?pvbfW>Q!;hZ8E~Wc^){4if*!NQ* zu${p5*gvDgceGaS{r0@>{;o&Ke}BOB`>Ar#qsZ^4oPnw=vLVFtFkn@+qT9NA_`HW( z^e+l5nO&prr+((G4UOaO1AKm>=xD52w7lxhk!bCmI->Mu5WveTUJ>gy2Lea=jmYKW z|FDfV+y3_t0YKRf(!C0pRIIe_)KwYS${Z_xKQ(dQ!vT97W>jwq99mP|y&aXTlkC{_ z1l4NVNgDv8?H(~RYHNroI+QMn)>$pyPZF*MLQ-o(%));qS499U(oy#D1JT3(iRm%g zFqd{ZT;JDL1=edPX@<#wYxGLpWZ7}__o-9={-6Ij^*^UiRmgd^z$>(qM^?;NtosVC zkrW4NErbnd`8`~1kBFaUHTbv=<)X&r3`7;Cg&mfZr+om8vb4m6AW6M!QTAdP<$6Pb zRH%FFnm*fa9Z*L$)@jP$78`bVB&Y@1C-Vi9^y2G|2jvinTb9ULrbyO2_{qUhLjfI) zZ_$4_{dA(bt4B*pDIzd?8c~JKWTw=q1xxF|&g#gkxX0_>(U6u&qv=etU0XJ~1r45b z*yakYp**qICTIS4Xne0n+@$X3&k&1 zITH6u@iJjm+b-peF3KGUY6?XlvsFFRZsieL0BvJ?F-^#t?w`l~9x<{cXOK=)gUQWu zSDYLkknA*HztZ+WxsZ#_J=t{qy;iYgz6OfUL$#@SdeU$9t{In3r8heeoyJEg{t6^Q zb8fRa;ZDv!%qN~b@|Nn*fYYCK8P7}ReLfC6_CwGiNO{q%ss+%shbBdx7x6ptaeVs|=TX+Pe|YWnvVchY7N8gUiK-%9V#9~s zBeIvxgT6=eksIt~SNIsU=7v$*N$n_QKK*Ob2g>u^;Gm(ZHI_;=N_kp;zNIk91Hr$IlR zs4+nM|MmEq=&iQK+U4|-)xM8C{V)?1^BT+xwQWhk)~Fgk4;Sl)OZT3Yo-8|aNb3Bc zhvj*4<`D-Qp{hNs?lnmV3aD}~?-IuO(TTZ!RE`MKLdV=WxX0(ov_Xs_UV#x2OI_NO}LCB4`3_8M%tD;vK@td1wozCr#5K7%w-&QIpaA8f0__nR0vq}B)k3I{d*Bomr z^vHRecA!n;fMiye=;A{$_gD1NFtt?PA5^Y)Dr7)pziurpH_t9O!FF zK#em0zFk%uCRR-dx8wuKC6XeN-!v`_xb}NVxnJm3%tLK-aPrghq1qRj4*|PRzmH zmLu)zdsZOxGLoM>HPHVm$MIF9`Qj~aw+|C47LR$`HjpchoV`brRc9NJsp5^H3)Fo7 zmRV=0JpaNBudOkkOU*nc@zW#-P)Nh}7(rF(p8?msskK6a5H$;gQ&{-SCJm5~Q3GS( zL3Cipbn3qF!XGvZYVGq;(X4^k0S>Btf$gHcQN!U4h+Q8^)4W*)wt2_QQ20`zzY;}F z=18kjWTf+-Ak^7cr=7+2wXNF;u<2rDmkCFF#_uRAup`Fz&2tNmv`>6v<=!(Guc1M} z$l=w%Iqns%;!o!K^&>>8$>+uq+fEdyv|LuLm!2a?Da^w^J})#}{>T+JN;A5{?T3C+N3O7lD&gpi>21WN7vCH0F$iUijj# z2V#)9qKE718dCI|YMVj!J+3VK=8ui=hkO@s7x`8n@VoakEdT%G#R~Y@q?oqpL}67H+$N1QZL8HYZ8U@n*7MXN`y_ZaOi;o zV{f;lV%TX4!Fp0DwZBu!a?gs7^qQvBh0ffWp=nR#Z*JXlTf+ruHj$d1?@C+dCa$X{OFq3#nPEwZiAX3@>+9X5B`!C~k3vw2gz`tkDOR=AIkinS zY+8?JhZIChxVeG;WO~fw@Z}=9V=b^D-|DT+O_3R8$ZFOd_&&;>)jm8r`lI# z&_Uy_=ezua(`h}VWTK1|GRu|h|KMw4>x+UEq;mtgHih)NzNYEBET@gE9zQ%C?vOS> z%KBr`oD-##^tb^FGL9~9V)4aY`R|70$Q9%Ey+lOCFVC0a7Ntx*KUjU3kg^Nw;T0BY z$$j1>)?IO;3fp@m#-r~rKJ{ecd^?yf%6oUeW!+t5Sz*6denOWBtUm$1PJ%Ep}+;xg5 zOi;0!tT@)*&-N=wmH>}0eF^yXtgRy~5!&jk1U1OZ3ds!Ic2gmob7=wh{h38TqK(jG@U(>fM zoGVy^5*X37sxttsGvg*=LuvVmKJSC%V*BsDsVX4bd3c7x|Fuzi1hfImS zIYS{b+zC@b8|>}N2HeX>`R8_8^BH3MX?16I2g7nqB)9wml9wAnVItEOj#e(s{$|mg zO3LMy9L=oW;i@tf6YUMO_SAZ@x3K&f1m_WVGq5qeyb94#t;Vk$aIJN9oQgODr_7jT zze!&(ne8KaQwA@=)J5ql<@iZ>eH#nBd?PTK%-Anw^1Fb;o>j4dq+( z7yXWlE(Bh1SzzM;7PVcnW-`ymYA=EpreQg5odZ$IUH5b@#23CfR|R$BQK$WGMN$M6 z4tr%_w&SBlAq_+GvV#VW8ImLv7`!Epi#n}i>mf_Di1>p@>K)XOrzu1et%h0Sz2{^5 z+e1n=h^n3$sDk3=ws2Opt{UP&Pd+uu>eYGd*~^)(p?)<-mOE+-(~o)vmfr2n7;{h` z-nsv$StXR}6oCh)lL*Lz4Z-GTga(lKlqXU~Dz;vBfxURhlmc&C4n&h!LS@c^LQ|ai zsa^AZ^e(%^Ku3jCC5HOs-`0{!@{^rKEUN_jB8?W#u$qnVHE+7Gp$P%St@K*-mnd3P z*Vm#4wWzVZI4ll`D+9VZ!ufb)i5zM)`GW9Sq~yKP`fcbw6X`~8h}$SoN0DrIN4WVQ zpYX6y69aCZyZH)z0P**?IPH|90wAGJ#S=X^+&9Ix|>1DsJ@(gxb@> zZb~{dm?5>y$7*XRBVC`On(}8IYTBCy+F3T+;lnM9zcaT}p`vP)M+I+iVQ>N8obS`W zToy9@=&QfTpbdPp+PrJ+qtc7Mp=@VcbxpdD*6S0vGgy@7=yCnpHBE-AGGWSJJ#YmR zBDdie>t;KR#HBVmhYzH5i)T|M(<$$Eode+|UuNRC6a;gMjhLHpEDzfWp$M#%zn_W> zXcpo2&|19=INH;x8HwqEaTy4m{&zzbmn@`DJ5gAMY-{DVTNF#EVuN5;`Z_kSN~h7A zqqbRtd$IV3(?MQI>4(0r$i$*jHdHxdkW5~);F(z3lNr=rEGn>3g=M{r>m+Q!2zBxt zO?17NRn4v;2JaD-S+48<$aPwnP}6l!avU?cfdI;eskw$Me;cHYB^oE?QYN{EBamh- zl+D%VOG;n#+~Yl{)w7DZTiaJ4gW!6ISUjo9I@PcWP6fT!w-Ot%s>X>ZDdUw4QqMM7 zO?b;PRC!=?7Q6;cA-Uke2^6)BN+>Li z))L7!l7Ozl%ZDcYSV3K#lNV!D?I;;@R5>GiKYt`}T#y5?Xls%K{ZmTpH;$Z6Lk*H_EzrzpK zWzNvbt+lw&mu=G0nHA>{G(R-CttRu$zlrf87241XPJ7!1?Z)+!&&Vz%Ui`XbH_CQk zi-Q#XqIO*q-Se9ja_j9lO+Pes0&A~^+=O5y?h-G1H@Fh+4#FY9&!Pu$9X`K_q2_evv39F}!%1bx~ zHVwF?I3P()M7|1sKlJYGxV}ghZ~6;_xONFgNiRVF)?%O zjRqnN>VQC{5Rn^RQ?1=F0dkhI2R#i)Al^brY4lHPH980tvs# z4gK4>l!HaoN@DZ9DYGo!*OW7eDWaZW*I!lCiP6jR*AYo!_R2!N1UYXrK@w@Lzt%-| zKnZr?nQyxjtsge)N*#RFkp7MB2DGh9u!U>4`YP;V@~pNIVdY_!NBy`kJN~cRW6nM_ zKdo=pAJ=l%vJTdu=T!f{E^TZ{DT}C_P)^x}O;$it9vxI`wa!(u4zvl&aq0(0Iv8UC zwXqs9Y1_M=HVWN@hH*6E<5r(?s^Qi+(9uSxU=gSx`o4|>N z1Z6ZwmX-?#C&m;l$0uz{pc zz`_0b>bG>&Y?<=cO56Qr#-?ohryY>cN*nk30}*g z%mAh2?VPG(RyAyS`pM!tyfsqe=z6f#2fefdZtw)CF7bNxsCYvEJEk4T_m2S8`>pbu z`?qVxEj8li8xm3R6LTZrMZL*d>5NSZr6lXj3bpt`~b3Yn!nLnHi-E_u7GURnpy@G#*#zEvhfDnqgHuE^PxZkS34 z#Om0N-dT35^8vHnCM&qgiwQTNecTU2grQMwM9|WUq0~H7@`nSp$)QBER}&+x&|ywq z4J3;e9G!ETuFN10*NWL&f+zjZG+>rA?})LU zS?jo{P1QI3=Lv@`gk~q=DEAIKm*gx06d@sP)fmEjxo+y9<7_cgUk8jVrz%0S_|E%E zM+A?jbNq#`{_t@<6%S?Y^+63tuUQfoMnwWV$)btzPFFxhnPIjBWtw|Hq z;;GCWMC$ij_N+B_dGq;ZlnrH^%)X}Ds^&HR*@gwyc4+XRR5=OORg+gLUXyhsa-urB zILb5n&}0&2SzEOJi{$v^eD}>Kx3~V7LZ5d{HE?q@-TFCe2| zNJ~ZIa|JGCp~hg<0P0qK^&d}MVlHk8fgdOp20U%Q-WXUQQdCcr^BSQ=eWVp-56q$e zW^|dXW6FZtvJ6-A$izFaES}+QWj8Q*q>){wm0T%Fd*(Re=|jIi*fnd%K|U+=7URR_ zpTcWZ{*@A=gEAULl;j|O*$gblAuJ3M-uknV^Vx4_+U=RhsAb-zK7lVZut(YXb}}nK zd-h6~;nzU%&$@%p@4bUwzrt}#{{pXaovda;FV5l ze0&EH6xq+T-7Uv{B8IYuyBo?p#)omKCe~`AJm)=KMddC(tkkod4+&pn8yAej$Dc%myp2{F%gX!(}D*IEq;c-5a93{0{a z#;&b4lm(RCS=Feki<0sEj-oP-U5D|y=R{`59gj7(9v{6C3V9MB?zWiWwi(~maGWii zi9gQto@I4!UJ<>Sx6cAD>x84hd0$}kNO0j-@ohm%1ap=j^E!e9^A9G!M(_lat|k%^ zX=g7GTLne!I)<`&#qT#E0TM&D-_FdJA9OT@aGZ@&D&z;khwoR^_p?mt3Y?1QiW1Z% zRI(}C2G0{{1iv39KHccPI$vl{;9YapzF5ZQDsiG5JlxLa_eJD`+Yn)%GjCBG!wq_; z;U+CC6ve+%8}$#_yuyBv0#8O5*MCdqJODR)PPOzTur9ZO$|MWd;%x83u#SX)i{Lvb zf%9xK&ATAkiADKL_B38~>Fm-E_4l^fR4RB&sMfH71QJMmd`fM6KX*{lb5byQq=cSq ziG*7`e{>Kf-_m&42kvEwhfkGqeoiE}#e!U13a0UDU&QU+7upS7uWiQNRBa|!644O04SDv zp6NLYYh}3q`Oy_`9^}w~ORtV{+jPbmAPvrcwN>*P1B9`n4U`g0*@#H)2g+^a!Rw8V42H2Yk6rsH4~GS8Z|-6UU^QY#*mlKa%(^Ous;b zfeW-iDEG?mUx(^MiJBtS_04N<3{z~Jlld?D?E=r`jY`?i_A%k0xiYDkuNq}2IMdUG za^z;tkuTb_?E26@!D(eCu$;XiB9w_Nd9FP)W|!k4bpbr@JN)*=+I)>fN`DoC?vJdW zBTv=X#G$ANZKx~$?HtEo*n__Nj~#tK*Il{$#$P?1(+;quU|#I(H1+qIAZP7X$9<`D zZWxDK3{o40&_qSmKqTCp*OMECLa+|UiS|H16nPN|*zG(NiKgg||tn7bG z*n3$qc$M>KynaAH`=-@YGCB+7*EHpYamkTu*o;mQoodp*hDEL6|0p5JBPpaXiFS$9 zQ5}gY=Pwkc!E8W7q6B?KDuzuqA4=~`+^m)Evs1uanB)vkvQZ=2lTn+hNF7dqvPATW z>}S59*g%PTF~_i>wiXiMCxSIt8t^|sUAB+?)O6bntkI0ywgm`~r6 z7Re+kNaTSgm#RK58`r@Nm?my(w>nF*LXv6ZC%L_zB%jrc8?kbd<1;l-r0+4|YF%S5 zcP~}MZ7kL8;@2xt9i7?hh!J#eCimwxpbYO(vm zKmy4>$zUl`IGYKHBlOc5n&hBr^=+-<4I*e!5xZTB8Ze82*fKk|a`4R#t?jrxhUauA zbDJcx2t;)6d)i+v6cN+5HrM(e+hNb)DURUg@$nCi=6CcXuG^_uvix$azMr~0_8>gV z@MnysvN?#Bn!~ZF;rR7hmD@4MB!WATWIi$KgZB0+1?ozcsZB~GX_YL#3xrukd_Wcp zb1bo1C_wErM`^i@C*m?{>@v#0K#|na%MBAz^RC*zYTcfK45RCcgxEZKSLjvd6{!i& zGH^5J4o`%5wsSO&j9$_QWg(Gdg_gLZD^e#Z70Xxt;A`(W)C$Sfb0+D{ABoUhtJmS;6z-1D49 zjiq-9xXJ&(LfG5HP|uDk&IzW5E8{@=3Cn35+MZJ$+OUQy{Y)QPhzR1t&aB^2?(R!uvac@r z!_LYiY+ajL)Vc0H`+LiIZH@3|rSGTKypJLBTF3G(Z33$C9!iw0%k0ggfYdjFtj*yi z`**C~{I)E7LoUL?#M*hhX=!YJ3I3M(dUc?}bHV=!--kx1-<(wrk?15Lz1bsS-`uZb z)90pKyJiEa6lO@4M1|jy!_+)_Ix^+9a?-qW{`XS@G-Pvl7$+H<)1QJFHNk4~?cJ|l|a;MN*`Ha6}_OvW2Sl-#8I3T5KJPV5^LN_nF zk}0pZ6&ktj6-@QUf2u-guuj!~&_r`jX5#OAP|LEp&`?$0B$9kk>c#6JJ9~frcJKiL zYn@VP=kGfqgV?Kf-i%OMTV`If*!EkfrYCb&Sqs#=BKUslNTVE~${hog%#3KydWL_iCn5 zb$a=lmSWS`>@xrK_uR1DynUyEJRe++WPH}O$cAPgWtT={<3E3wjAAwD-K5@1r`*SS zna!{e*_R=*nxl@k`VP0AtD&;LU95tU{n(0_3DDZg(NW1(P4Ql+=^jcr)7S7}_nt2{ z)+}lo$!Mi{PV~UE^|c{A&pVEkw4t4EdUfEKL7|Aq?1eg0YnZHEA;V7C$jfsZ#MND( z4e%PGcg0$-8r~DZb(7*diG~8L{VJhA3#~{s3~KfD9agimHKlTU!NjW9-e3lB@<^Cp1<{#_pO zqPnL;L`|g^msQ^J9GyK8#YWqyZC$dOvXI(2q4^HBLqZ1fT;nxbYv(N^SS}2gb~iI^ z-~LbnSw~#U#KI{w2bt1kJ>KmNiU6zZD)af6a@%EqI1{k*4#>srk^IaSf$9FN|> z>p<*n5OE4gY^|^cjVsd-L<&>Rd=pqSUasY-=wP$^Hk*c!IERe5zzlt8K{+rG68l2g zb57)r z3klzDdgTRqwh^f7OZXO}nPQ*cp=927axdG!G6+XFw|I9z|J^{pH^|hm2-=8>54Nv0ciH1VLp!*6L*EYPSr^S% z=!EvN)hj-!ljTGviX_-!)~X13pmkWB`rvzBzM%CA4Huk3F9>=v>s{q;Cf54%jLO|c z*PS*C38`^{dSEy^=4Q>%KMpm87pke(CEuuC@Z%hE9Ol`2`kad#62&ENtMxr3XDD^E zmDwn&<=gXtt@wo>7;!l{;@_=@;;sEAXkQbwmDBW=z@>x0ITHn&0~(%23L6puhs~4) z${jTDMm#e?xtv=c z=sS$8DQ0Vqv(=DSR2u`cJoAo&yZ}jFr5vKl%0Qd9vLXSKVWcOAA@(AMs+ zT$I{0HW)j#|tb?`xG@vRK5VuA%os2ln`kPlNEs+?fhxo?5^s zS|=$*cV%F#eB`y{$66l$8t6-xa=*Wnn~5S3jLI@(;c4X)N{Wk8clW$o;n)$8QB{9+ z=Txf(R1FaWQup+lV~hK2eCc;3K(zVZNu5^m=nss>HVH&cZ=t&d!xhz8F+9nc+amXr zd!iFKQdF$u3T%3+Y$2rsFL6{D7Sf*#Z;Mi@DW?}kY@|S$3W+iE9e+tbE1>0BuV3>* zp39+VdcVt`>6BjwQFBl;O&>ANr(HANC`wtf9JpTC0Cka>1<@Osby6pryxDerXcJIM zOGQ{HMBV~adhr!f1hiU{T+jsLPOTqV3TiQ<8T+_qy}M>2%m%GUBh)w=Uv7APkY#AN zb*lc>Q6!n;$7DMY*o_-TX>O?*Sung(0kX1dRLQ%-55({Xky7%jC)(cUeXcx6uV={_ z3rScvlfwh`@lkp=C)HUC3_=1$8p|!gc9`QA;#@)g^ccvZCpWL<}x~V5=mRQ zkiFbq8`a#}KRMW^gjI3yWM6yMZzo?$5n*q?tAHyFO3V0BK~LaYmZ{ZVzM~o`QTbyP zPZrg^9aP(cQSZgW47S=Tw-umGOkd;q593xYjJ(T;>N~Gp;;S_k%^jX*8QV7{k6%EG zOn;lOLg(LVZ-PV#^NafVC>wMMBx0tWg8$Mk9JGioheRf}T2kgks6Jg`#6<$1T?u(g zb~ZFBWKzOA>TIx#s&vKw*>jUqwAqY)qfvE zHXa6hH-^8WRURoWs0aEI=4rjM-9*c75l3i}^7{sXqcKINx@+jSy;eniouXbg8$LN1 zWfEP|Jvq))VSl7l7lZHhd-?U6J4lNlNfcxhCa&T>3E6BB6@e))oi4b$Fg=kKh|B7# z+sqV|&pS@g6AnqD<^;f`44P94qC4@Fa5fe|nuw5sxs9M@S>O;%EMXXrtR(l3N5d8oGnJDc+^3YbgTNxc<*?16Z)sTBWWWfTr} z(;+Z|bT`Jo#71(rQ9^ky3O9`h<-eb5c^Alqc5Puz9mYieaUrB%<2hZ*K_UUWm#%&cHS@O3QhDEEfGn7 zZ1;ovZL((_iVaHmfz3JEptaAFgJfDR_p{T^;-qK6=ay}W52t$r#2LCRt}O!{p#Z#$ zoA-x%1$+%&9UynL?H=7B0F_W}b(E@IV8Z8m7suPq4IlLJDY+8F$)#XFV)i?`pVT(-r{$VvAVho=n` zjEe%UV(+q~~>OXATXSJEDGb-J-dv zCdWAH)f$U0AXFPyovy0d)Xv;H^3`sCpbhngT^uftJMEcm+WSU(kj?QN&O!LqL}Bo1 zb7bwE7p;2p6=m{gRVAypmpV;57-pEv;t1NpqLtDso}hd}GA zYH;SjQVBf8(RrJgYZS*hLP6j))AxJbzw#8WE(*RXk{bKDd(K`*$d?D(v{(17aQS^u z;tf7uzjm>4@@s)Qya7YGHvp0GGGCJd+xy~N0<^H+_4|&-Ix65clzy*%t)r=sR)*^; zR?Tu5s4^>o4UuLpxsS|n9hCl~QNCd*(RFcCD-??9cv_k)M{0pBvRv~Bf%La;M0zp~eaCo%(AT+HB z3iHd;7QeB9Hb^jw62khz4M@xLWOPk=Jet*>k7(EzCH8bOQ%5rfSh~mxL&r_tVx!Gw zN0zomz>==w<1f14rEqrh_5kGBa)T=`0)yr#4+fDG`zPlnu89c0D5tQzIWn7%_JTYf z=f&uPcq2x2L{-|z;=z4-&+pTp6`47L3FDl{>&OD_ERGX1t(RymS;lbfh_cvlNGS|9 z=YTaf(AW(mmvYgFRNu0rOtQh4<#67*IJGy8kKb)KCQlK!>h7Jr${pI!)m;H?{P1~ z&r*#k{Tdq%IXC{{6@0$UVe(oAmoK;~Z~V>_Y?JESRGZrrltpwVQfK&5TXK97vhoO9 z@%4JkAXP6%f)k;DbnVs0f{wLt&o*54+L(>)jZ^S@w9MpyKNnlunE2|&4_g%8HllVb zj%l}{UfOOU_IXA7b`_q-UV+ADR-6un^#qQrgmerJLbSNTA#mlv8Uf$Mk*jI==MDZk zOx{m@j}D7SPJ)GRtj1lyQ*Ntl^*r&M^Yi{x;F@@OCFn@MpJSSJh1S}rhFmRVzMXGl z@bZm&*r2)EfkM!H{B4eBlm+w}1(R*RgnV_;Z*cRgzl^l}#w&qX1jNA_y&H96`*k%( z#T7*F(^K3QeVDSaRR`;P(kZD1SFHy?2iEG}?iNi56LtrA;;j0o(CUstlSR@@kD*)v zs&bG_N*xl*@0Re|zka1Ntnk8c%hb03m7h~WM%LrW2QHBJ9|hzwBxix5hZJ~dsgKI5 z&C0o7Z$&=l`qoLbSS?!IWCAboVbp^8+`fw~!j@6#ZHA`A(zV4HapKgT(~845DU)LF z#E|mEL1-PJ%&)(tLFfH;3#AVB;c})5%E#74<+f@j^7=EueY{^@2Ak)j5UVa7J5R&DgsL|@JAIh zsT00-o4@YGQxJR9yX9FY4<NIy%~J$E%FN0GqfY}ngWDt)+kf+sDSrXFbDh|#im zI*t|So~3zN3G$XzILa3DofhnJOe(0~nY`8)s(LBXStoOHAPTEZO%>ZWXDn`6{7FF+ zNd#QE_JDuu?f@;19oD z`Uw9-mit-Wvd%9-iv9XD!y3Pb+y>QDg@EgU+USLySGZ1y0NKcybJ|~EqFHn82U3_tr zdf}%zHu~n-UK|V#Pu9=%8HiFGd$%*OSi>$^bO5&)hiQgP@mCG?;zY)!RIfnh)VK)2 zP9pC!vH>ww7^{o)x)>&Li@~d>HX*_s5Wy8nBTA+Hn97I?o()xMvYOb}Xc3ng$A+#@ zUEx>#<1>$fpw<%HF?J}wycdK%O3qyI8)Bk?(jttj!H|ik8Oa#ZT zGmKHY)sRflTlOt!c0Q{i^&dR`Vk10ui`p=%!U;s9)K3FcDIp7SjK~;c&e?_{z_h$l zxguZid7_HSnH8cDQV#056R0$0GST@qK)&-Fm`3Ee#Z~R06dD8f&JF2^pFzdbsGV+m z7V6Y%FrE6fJZ{DULa3TkB>j2JBL;~5#$9PSN{0s80$;5cXgNO(o5|f zc%_!i6DR_NAt$hH`&jXH-PxwO|R_8;ttn&&Fpm}{eSazvhdGHYWIQR^_3S+fjH=LHjk zCCi7XL3nkYE@A9VhBqB4WmhDoPrQ-EAZ0*hxZJ?+r|8&sDFvs~yFpmNFYN*mM2m}h zhp`PVrMh+<-hf5tS(PFv-L#ELEV42s`D!V7IOlpayqj;;uvSP{M z3m9x?M>#D%UrScZzpULNCukW_V_hVBh+}?w7bIp|mxb(tF7T!_P?~v^P~~Q`#U9l; z!=K&Lw^Dx{5Q9b`FBrU4urqDqLsjLxR!wZucBNdn!b z&8>(Y{2MBF6|`42BM;-|Qe){69VTvr-tsOA%w^h};CvQ!rcHWM1GH~PYYh#rourD3 zyV26A6zlfAqOi}(UvU}L;69n7tI6BHLsu+f`hy%RzglR1MeijYKcK~JH@tgkSrVF_0rR~>%~gBVhV0_g>4JrO&cAMZmF$Z@qC%|D zuAPHtJKrN_9+QVKa-;;>=XvxI5bhEa6RI}#Ff(7fUL`*331)xHw6(j(Y${Z;DBYM%00<}CmEgsvOYygkWqy)*17YwTVn(%21J~y|>Lnb5nq~1{# zEy|D&2cpH=Y%QhAwe&)YrX4w6{rNbkJn(ed5*s} zRHWvWvAEe8M9tgaQ*;K1?=_3XhF1Om4@GAlmSn!L|MPp#H1keY&P*d}rcRlbBAS?* zxpbyd%O%SNL|jrp69ID<#d>ENb8;gWa7|B{mLe`FAg)t}h`3~KteOH=CMr0h=5l_V zfA|Of;DYOVzRz>t_vgN&w!N<^zq;+EF^NcU+G-T?gRNov%i%R_;6CYg zs9F=BggiLr%w4(XfHT1+mMilh&Ddf#ib+c|@+`aWF6>aG)v*|yH%b(2@4KJCXXmiGNnyiOyuq#v!{BK9E}p_wyMA5b}b!1orBXG|7stiHe9;h|1d7Gf`2Ek z9ra;asjRzwEH@*0R}I_R-GSP%Im6=nHVO(9OCvJ8=M)%9m%N2R zCp^8aaIR(o$0xcrf|^{taN|89u^9eO*w)|FhW+q} z%E4v-)W1xjuT6Bn5tRN$2Zk~*DX_$Vm!~S~=WDo+6?BpRNlB(FgjbsjY#y-kt+r8Cx1boyw=|`Akb9@z!P+ws6IA;&GPO` zDjKu=RPV`TuNpa5V!pUKZ%?Lwm&XpM23{Q~G;M~cXV^vEw8{?N$2yX^7j*i_RJQU+9=dB);qRK7XxcQBApso#QSfRoR}>MG;g~FZ z;dd@l!);0LzFWjVR$y@f?e%6BFfGGp5v|IwI%+z-vkR7*0#Hv9GoxBnkSj7PmwkcH z=ETh_5LX|PJmUe@L=H@09kM1^T^S0gZMf;v!TMg;x7H^Y3aSLga0l817CqyR~{v&FSKvl7-QY5xd1+lh)O3S3eR?MFCQJA+XS+@ zT-ASHZjG5OTHUeWsO=DQi&df#R4U16k=eXBO{tIK;Ygk;y-Iw1d8*yb-5i1Q<1$46 z6@$Hfo9<~+^6pEq(MwF|mq(%Jjd22uy^-0|SMTd`u4KQ&^eefNI1J@MOE z&Ecqtu>9QEH&fRs40>tc>8uy)ry)dEG$%|Q>i#eN+J1YcTKDMIZ=Na3?`AU6Ym63a z$E&j(W!T@YW2fGF@O}pO0xegcStgX3dO%p4yNP1UK3Ey)4*PA2c}J&xOz5;9W8-I>gI=&$6o+s<2>{Xm zk}!fqyB16)ACj_r*yo}U27O#d4mYO2obO9NwAU5qitE(|FT$~1|5mOx_F+eTd&YlF zDEAnF>9ZI}l>?;bNz0R0FI{rp$m2DLswKR~ayQQ#revmi=^t;%5L!1d)&gr}RWqZH zUHw524N=x|R`Z`)54EY7<|7yUE2E@Ec)yX#W+Y_O;{BNtr*qsS=xGQiiG=kJM%D)F z2=A{lT(2!g$L zr9@cgpmuXK11X94@8jgqLd?MM1*~IgzEUjgdd>5DEhD2Or0^h*$==9HHf{z`Y34bG-LR8OMU(Y9C%YO6Ii445~B z!1KJhg8`EGK$JYkECs&V}n z9=yrdh!^h$;CG2FMF+k=R=%RyN93T*Nt%(o__<5Y^ z?woEkxS7nj#D}L7u@EY)F0aS+ zA6w<8bCcnXAK!9{|F_yezZIyT0<&Cui!&I18|`5-IP1PeS1I(=91-Plxb8X{rL`t$ihzE%UvpBB&v*)(fzC` zX9YlfVtDO2O^sBcikZfVR^z774GMMTt;j|&sI?b+?AkEWokq2> zK|YKlp`|I)TyL>wDf?fHqk8I5gAf-b;$CC+HTVhZKgJoscnQsY&G1zMyqkjHWt2|q zCtggV&x`nda|#9H(d7Rt$Z3>AUOxP$q{+NU@C&DioeDb#eKJJCdkGfANE(;XJ0iY1 zjQnt_*>E~s>&>P>#W=J<}Ln&QUVIRI5ccg{RPCk925s} zY>93Zl~uv*4R&mhJbP z@crLq=`7qGUdJ%C3V}-fcby7$IDfT~lAU^GMm)u>v~%m?U1Ksm)FAB)xIymSVlA;?h?7q%x$8Mt&lC5GOiS9&3E)Y$AZM?)F`k|@Jro-;GXkN9 zo$RF)o>|RCI;Bii(x#rmjx>$#Qp|X}PUqq+v^2nJFqeM26gTVR{tWh<8O=RCB;pj3 zMutD$&B(REVU2BbaR#pP;jz4Of9fi*Kn1KZi9EP6c!k3Ge&)&FFGKVu8S_WcZ3{jt zjOpjwXy{>pWYDGAodEmc3kkqT`UnQGMrsVXa`t_b()OTKJ678~qoJ@v^MyvQA6TYo zPV|SO31Y0fOP2mV)?@IQGNxwwjH{J*k7n;=K^5r;dKA*Ra|F+DOdAKK`MfMg#A+8U zu)-3L<|Ob}5VDwvxZ7L#I`gofWtbe*(UN(7v$B1)Y|9TxV-YMkChgGXkJ&NOg=D8R zRjfnabj@ZRH2aSr>LBLtS)-G$aGL-K)B-V77@`36$=f3|@KVyu3(hyEG+~AEb~|L+ zhwb4-@6mQBWbwG|y=BL0SAJ;fxt-;?Mz>Z33+H5*#jz;AD9e24<#1xv%Ip(wAlUZa zsFU)1+Jhep$RR0CGkYM^z0I3dZeI5~V%9GTnFSG1zIty_O7x4ph*D+KtNV7H|K0|1 zD<4Y`Rw`*m2GF@|D*APrXx<9A-Cykg?MWk#hvuPkTDkTBNGHxxkI1YAwb$h;Ih$(Z zp9MJAPotbU$Nb(;On5r8_@~(94B(iTWe3-T_=I7%FKp|UOqv&4Py`8qHVNO?_0eop z%>0+8*pT}Q!6Fyg7n3~Xe_oKApv*0z>00`ey$?pU$${XFi|<%sFbiYvoB4=0s#@>@ zEHdzcNARZ7S}z$5yfie@y+TisrCzw)FTTZr{}Nf78R5=@O6z-mP`Hbddz@lniVv`~<1X$gO5m8!$FVnrawJ|6Rk z-l!)uXb3YYwNx0`(t3mXdo=$ul|i**cyM0u!vIc>15Y?e%SP*RTcfmC5Ue+*;wOio zWJ~^ZC0|(Y!)lWdZdPUK6H~86NTjamw%fYw0$!oOFZQ>q0}$k!WuUFmg1hA=4N5s3 ze5Wct&i(pVI zkx4#vx)rkv7O-ml|32R42tsZe;6Id9Pa@|Fh$l>s+D%D5pu&!eq_A$z6oF zfxfkG4$iOnp6~-T*DEOnm$&+8bv9vj6I6WqK|HzMXI1VngtI`(+XH1wRym2#st}Q` zgCOxbXXJ%{mG?_Wh*cO9@SlI^6p0lpPFPsCNMV?o5%Oc_Ku+9Vs9r@Ybskxn^k$`c z`k7+a(jrVp=S}11EZYTW9Ii4WAQw}&C=DDT0Gxo^i`jq8LAA;+e@U43k0=Sj-GIXb zxLMDqX&U&}(f5A*J04|lwK=%Xy97P$ zZujja^*cd9b4#pO5Zi*En(W!leV_?8N`&lG+QCkn3UIld2IO6U7L)d~Zof^S4`CBz z$%3_n2)d)tG%V3DCqZK-{T)3Y03WtpZDg~WET;eghsAdg}MfD6`qE=CL>7D&?S$3ypYn&BR|Rso80!`D{=q5D$GL@el_tJc zS9U3Y`PcW|8+k>w*1fghRb@Ndb|HoBL!A{$qXkI7IN0dOhEndHOEmN@dCMUlPGUde z2>gb7B5jp+vD~yxBIw>H1De%JUb(`fV+oXxbsUUPxkswJY_YOY9aY2mohwn7&$u}k z<%RuvRktv*Vj~R$Egm>IhH;FKl1@`u()X~=x|D6o?I;0%ylrS&jgOyS1Y_wISTF)T z`^+osv%f_~bb3{)X|a|tF---jtl-xNle&OUwyaH?-qBufye>`r&SZ!Xn<%rdQ^@fa z;bXLkgg&>-4bc(?59W^+yBu+z*)V7+jP^PhPr7VgYlHt*%d%>4ZVAH&>)%^o6(b4; zH?pRp7vnrav+_=cu2@-vys)%eugTkaCrb=)kfWv6SHIl=_a5Y%P1k)|PYFcy_l$Q}6U}Qh7zOXKqa@P|*KRMh zZgj%yvnochw1SG91$Srj-s*Xp&=$aDhE}?Vc6;*4jS6`tCCc)FUUQ>=%110&i7B;? z&9z$wDGIw}PBPig(Xu*}jD)4j+UP`kt#ZaTj$r3{Hc-h=;a+2TO)M@|+9u$>EG7DI zRTNMlnsFWW9mwH@m;=ugc#p?-mZ*L` zA{3rH^96)s9kYwVUo>g;_ma|9!cBEL-I@RTcwRX_)#8pcd_LD7;R)S#5kJ8t$br)V? z`>|nTTI>7*szG&D2js0+KGO9?s8pe>T$LHkGZkw zoiX!2RaK&4y<~9Z5&!)#K#gubF{dtz-RQzJdeXUUSDIBv_BHn3*T?+?|4;#0JQ@D@ z_r37wLBL`Kb$gK1xf@jfW)p8C0fC$rrrPhgy?U}-F>!n5Rb!K7vIpl{pM?h};8LLO z^Q(>4SC&tt-^fZw8<~*{c%AZNv+i?hTz9Yljxe<+1GEC2@jvFeqID!ozPcu5aB*Si zlDpN_zWK6-?9|*#eImnL#f6%0Z=`{>zWu=N8fP#Km-JgLU6ZfsmMwG*$oN+NLv40p z83wv`k4Z~PVpXHAeNJME%|`j*#PUO<;+GeOHy*j-@?Ki!6CZd1*MRz4H)d7$zp}tR z3KH)cG||g|kTb(Bpw5t5)hTF^)-5>J%-NV1%UsLFYH4w^&l+&yH(lM>4(~xiz(P$hU^8_6YIqoX^zE86?yKg(*jy!4D%e zVTMhFuvS52Mum3ACUTrKiY0-VvDjj8P-t>i_o%W6PNexpL}^}O_So_ijqC4D(m(%x zaBe;hcX^1mm~jj*LCBHpz7#-)CN%}kh^%CR$a$I)7ler4EW(XA-`CQ=m~Jj zEUUXmt-sxE7X$0iT3#BEr&E1+tnzT_;+N=N;a;*hF79zN!ZdsfGKoE4hQ4>_qy}Q} z%BAMeKKr>ra-dY1oA2WvjfuOfx+RL@q6)*Z66_%}wh`F*qm_LVG6zCH(;i|_L9exe z{K#sq9?z~HM zy1kN@VK!WUJMiZ&%@ZRk*i+WvRllWs1MXtk1`kwMCMox6Aci870$!%NX=Yg|I>dE{BP(?haJ6j)$;a&0g6`P#?c;RzM|*YRMQm4LT`Pu&ZmK~QITwt<>8TLAu}8W zp~Y|JEJco<9n1OnjF^~TrpRH(BcfmbnPF*fY?!a58FVq?v~`2p>Dg_Cn16FRQ1&zK zE_DKWy*DcC8bX3>+~vItl|Nw~lQ!3_LyX3n2+1C;puu1FW3vWBjib|Rq7y{G_LWso zT~V{vsl}d4$X6=VO+i8oqZgK3!*vMBdL>M2Rut= z={eg^_T1IL1w34ordh(=-c86&bKlV0dyx5OGcVOm10q`ZTOs=vCkS=z6J7E*!%Kh7 zRRKU9q7bGIqx~Qo8~woeP2QYqafnvsJzd>HMK3p<9`7C<^-^rSfUmE3JpSIq+OoUEek+k8&nTt3U zyZqEH^JfJ*c}7d>(o{76g_Hh;E>YKk1s*NV>~ z@&2eCh$L~04J}=$7=PTSzL1inIRTx8Yq^ASa8VR7z-KDw{pwvk{~X}HkBJp_Z3SHJ zkOW%ACXvVSmEhf~ztc1gq7ULKCoTV(2BY&-gJrFVpw(k;PnOO;(WW&UdHOo{Ij@MW4?A6=5A@hJYRF9 zR}PaWxe3yYaPz6sOHHNVJi@fUDB*7!ySr{W4h|^DxhX5)u+q!#0gY!P+qnaZ)o_me zjO}*c|MFf#h-bfVz!4stD*b(|`pYA6;76&$@8y*KmUJBKHfA=%h!1wGrfsB+s? zae--vO11OBSrAB(Ls^9e-f}P+{*<1ezrE?$xncj_$onv4E{{7nO^NT+Xz-Ygv{lh* z=3|UtB+cD4bZp*i+-$t44;ZPk65UKRe2TB~vGPBDnV~5XNDJQW!7$PTC+#d(x{+_C z$+@Q9@aRsiCWqBnzx&&0K<85hwpF?nqexq+W9a)eTTa`2f3AeB4c7^}VG z_YVM8(YR@r3w5Nsm!1Rt7OG*o#OsjQCm-59OkU%F=(HIEFWg$+H2BwIbP}t7K zjHXS^6WZw{dAlCoOGjSin&>&7m@^*Vh1at6zgepAt_TAS7Duo!P{b%=Ri(#d{nWfV z>YqOGu!!!NP@!q|Lw*^8>B#*l;+cx$nrjd?==L@uB&^+uxTJDN-H5mr z-~;3xnN=QKoX72)0e%LhI5CRbVu0sTIeQ;lE8(Y^?Ph7vt7gJ^$ksFL;FWT)ZMKw3TIqB{ zag@n_HRNqiU{GyAX-)Z(zo9h}G-I)J2#ye09e$x6sdqZv+2Ri{I9t%=?c?^UOgVr) zl5=dZf_OLviyq0ih7g>|B>A@0CJSCPFdB+uAmMk57=nP&AO{PDOmk=Ix&-;pKjL%v zjz`G$JF$s|K%KW`j7=K_r1>(@Kl@Lrk(IR;=nZxyS}8v2H+{7?+RV+`ocd0*n$!eu zq_)}z5>H+^qXe$vfx0}#ruq&96GV$N(@6d?e!Klc_m=}4E^>@(1u->dxH(slz~ zp1yC^no7fEyXS)m$*pY@L>;X=&%wy;n>pa1tbRWi48}@mwax=>3cN%Yy@gOi#j4j?ZIE67R7Iu{i9Q$4q zV~&ZEG-!~o{mha#v>}~;gGPJ%fszO_$L(6hn(5?n+v^_kXj21A(75j^=Faal(nR>N zGwK8UAMB+dtIu+$SgmRi4C|2L%)W=Q3eV-sz-j6+_MR`Av*?sUUD$^I=N~WMgBHd> z3p>2D>d(5$UWs>~OIIV8t*M_S+>fF@bhU{Zy}i1om2A4^9`(9lFqHmdY0R}Pr%Sa~ z?DC5{pw?)9u+iWIHrE|XDrX5~?jfnK)(Xqx5>`*NKW<0A>vIQoSQbF82aZSqiZ|l6 zs3L)#mU+l4epGP7vkLT#b23(e9&e+>MgLRqvox?~(-X)hL@x5;Q;c=v<7a(Wz;5<1 z9f$~=%qHnDg7qC71H;XetfGcm91h{9?No2}mMy~{x$pC>wrR7+eg$i*NwO*-qn$K3>}MqCX)}Ud`eSZt zdQ-+ygrwW0xm%CC{9Lwm@i6{q4*q}8RR`dnRWoS$+hJAN3iN?HXw;HWVif!gMbTLf zt!G{=FEvHu@OgUFFa$P2<2jkcC6}U@?fu$}A(r*eB2+!^ca8^L3JhKp%w7@RQ0JS{ z*VIkh7-G%<^?hpB`PDf8IBrM75E_g-4s+0P_udv%PsJHsvTvKFC@ervecOGIf{v|| z>7(J6N~~LFg^e=j^^^O}F4{rMm52{1R z7uiFRsMOBkwR7ywS|hYR)2>m5zc905#!Q945OG%TOMUMwb)P8~oq@(l?sO2+wF@<4 zzXUA#Eng}45n&iIVS6G5l3yY+um844^g(oEeH->v4JdC zMcJ%xH$U+AtSqp-q45H0^Cc;wHF)!}e>Lyxrw#+ps!*>47)$~jc(c1Z&}Flj&An8{ zGB@X<1LX#(GEn>)u5w;R5v?`*7Y!9HC7caQpYT0Hv)QrrH7>a#+Htd7-vVU81L1EFtJc@m#Sy&d*20WRW_F2Jl2efV!Z$PZxsw8|+$lqXprD`gI4 zGuwSJd1W@W_H*?<1&&NZ>$64^m9glaPRvLpgp+#ZNN0Bw!3F6RPCAn%39-GPzcIX7<2!Ke`i~L`s=LOA*4EtaI zx52Z7ZN5k|GP~PxJFLY>_4&Udk)xiC>M%QXI#N>a4}x=QZiK$i!J(mcu$)Z<+byKb zAKeK2L3svx$Wzg#D^B`l!(4KN&tE513rCSc z6eSi6;gTB#w7?HC@a@GVE0W_$rf=$#gR#jrIlK=v8q9FdSyk2D^o{r5#n9u5h7qzg zgweq#O-$@eTubqJMrvp07q%MTI5%mdE3&WZO@> zI{3@}O$#iSz$y)soM-A7-Mm0W!pxiA6-uRPumncY1hIKn=6}8Ee*@=9Ha?ZdG{B(YInW{VIN<>=_0euPkn8MwHdM5I!eDiw<^<61 zZ|~8Zq2%tQ`fCzZ0H>=9tZ7J^yRr$djs`*E{_+Yx zL61=S{cu8=?POu!C1n4pfKFpW_#UC=p>Uch%@pGMja7QYuPOWb1o(Y2?rdsaMkd=Q zwIOzy!HWwiTVDv^GCx{2+`P#;yw+xGwDI#~>SH~}!zS9Ni7RI^wt>ABRH?7ks%F@M z)Hyifb!c>s^Q~Ktas?J9eT(&ADVv6vhpLHZwJRujd}JLN6Eu=>5^vEt%9Zw{q|cu{ z{?H{cEieJFZs5CbatX4on1%vBWbCzEmWFOtKN!qd)?GJLKhG(3^mm3RrO4dv-m=P`o(&z8MB5mLI#4M~yDdP2C?>DQEsK^aHvM_%KRov~6 z1SgS!AaV9BmhdcKKt^xNuA$D(LB4>g67@t1k>*H;mE58FhG zPepa^KHp20uB>UrrUijbq(e_bbA%HitqzdLWTRlP0)QoBpctyqyyA${5Ij?}tdp^m z#uR3;rYzU{76Ram;kDI~jJ>SXogY|QxrJ?^`{l)nQJIpgo({Q~TMDjWB>{VWuN;1{ zRf1}tQNV8y{^X`YOVb*|)0+S}q-^>ddRR9k)xkh1NY&NWN+ku3WZy=Y@;pG(2nBRl0Hwd}SoB4>gErSe; zSpx!je^y%#++HoFr$2p3Y&L{3#e$m}5 z&rzOqcO$a5n|RjJ=F6uZuzL~-(EnR$)mf(&TYqq}4_7iq$$PQPt9!8lmpP29>y{nH zk8u8+#qQyjudAzd7elADY2xWixO0e6l1ty>YQK}F<OV|tg z1g60_rFah29EkZ}u^%b!DlE*5<+AujF+APBvW$}WpZ<6rvJ^bf2l6sIXVOLa32mW|JOM&fLx}$EK+@0Lbgj&o`U5WL z@5Z$fgv1Lz3nU1(8jSgkBw682&rnCtHq~K=aiz_E%n%3ePrqIjOcppfItR#dA3J+=?2ESS~x*Zctzi3h!Q=aYZes@ z1Fcw1_%MjS{ndVZxc%!ez4&pF7$jus)aa>qUqE(yQ23{Fy8rn{l=#`s{l&V=zX+f2 z12j7*WM^qE8xM%sgd z#5ACUGHUjvd5}+YOz#0U^vij)n;s2*-rroy@qUY~}MLi+oTCBzPJ;7aQ zW_p(j250l4-L1mSb4yv-r1n7hGucu{Sx=7fmZFES*)+2O%T6iJwmT(cfY7D&jvB*& zr=$dS;=?DA4MR#%4zox60gMM=fT$%=p1ttk)~H9WYVbnqL7<5LQhv0K%u#(itC_W9 zC~z$@rxb+B+1)BOE|J%+NG*HNP>a9lodWrA`{CfsRqMyXIzn_}j>yPW&BmShJQ<z*%9+ z`n|jRbT?yG@?6x%-{AU8gi3;&1LiDO<8i<2mH|GWiYnB=0Bz9}8zDJ^a94C^DzkSv zh8sXBdO5c2!ikO6^wGWB0$@f2gcWggYP~o3^5U12Eb`%K^K$zAnu>vj%6vw0k>s5f1-E zR?m8kGOzbZ>eWQ}a`SWF-JSt9C;_ho8kp?bq1PySI4NMN2TA%92 zs)L@X6N}881R9mzDWnK7I9V4QIPxC0u-8zr47*L@xM$Ys-?Yzrsg*Ns{m-nk1Cegq zS-?lFot32vD$O-)6U6>#Gyw8a&`$Fc@=quRMmtQx&ieKoyC4Ww16 znb{>2bMBdj;fWf-t(Rxr``g$N2^X8^HVjh4GXUwy8NP5^sgVF_|1Dr>!wPjk-`lrK zNfm!GPV--6KmlxYxsAkfcn~`|ct=L@tEvZDX6)H#V74)um}b2*W)kA;SFJ_s#1V6U znTdKzt5+1BE&4W9&hm}3l%4d%*qI>!PR=!%7Ti?8&TfpMZw;|t*USvNaKZySC_EbpJ=^lt#)Z*P- zW!Cmvo)X-`{uO6u@^zU=q&PT1^IbR@xMEOmTk$>qMi7ju|7j(RQ8g89$LOZ6p&h!o z{%e+_GqFh9+YXq!+$@`gm`@M?)z%T*6vGTAt*S+#vEQ9k{k*s_AXs|dY&kTb3Iy^~ zSK48u-lo`gyJwde%0(7N4+CocshePLqc{)NsP(Sk!uudWv^4Q{xU7!6xHuQ8BRlCL zFAv>(wkiU3{q~XOy68U&L3X#(-5}W+hj+ef!Y9;ajtYpG70p%Zq}H8d0qgkt7*l5{ zIPLN&`7@%*aDu3E^>leDdm3w8^M1Jc!JlFAzm;r&dKOiZZlEj!-mUT zlIYKfW;1e4ol<+`^CZfJkQVJO3G=VGc!NAgWe-|K5eTP%)sOqLa?04jwTq?e?TSqx z_EUJwW4%@Z;C0bpFmB!XWVNb5ytLS2UASuTMZU94Sz;XzyMs_IyE)e!;w5IpS|oH| z5$(5I5BbgPHu=QGV`)_dZ#0&_XK($|_K1`Ck&C=Yh@&~JY@N_yCbwgCeJCq^zpm%7 z(=HT$I72vgjrvC3fYW4-94uh=8PFUz55Exu%?ROj;32k}04g_J_pQkP^ zXLA~RGQP=TclZulo+-=l}T!(P4-w-T#`=|BcK% z_}<9^;V!D{8C@L4trw;?)L41tkV)|8{8cO!Et26{2yLK#>-@%qG(qTr8B!8~N{lcb zK-B;)ICs$TR#)i%C2o`-U;gsG|Chr3r(T-RVOO1;KGx-S=|e6csrp1f5r2h~Gn7{4 z$2eK^Uj@%lywLr$M=*yE8^MCQzAJti^tMU}>xYLAl=V1G!9&*^wJ9 z8buf(6s1BRqE{7z7b0J$Q)Xmy4Pj~=ndUi_minE}(B0A2r8T8uhh;wUs>Sa1#`irT zb+DQYXvkI_EsWGw8V%PKG?E){u4=v1j}?K+F*VTHFi=1-46VNO zd^JQz-M>pUQn-r?sxw8*u5Te&v1>J4li`m%~w=NlPBOzj>Pmo z|FHQGgVYqdo&C*=6L6ujA0coq+O@eA)Hu!)qBUcyKg9z?o?!X7&z~WP; ze!e9kuzpBcat)=P<-q4i2QPAmo9jMSl$rk z$q3KLuSv|J*Zk1(xRjm4Gdn{7<2u(!(Mk$f{B3aQ2bEprBVJ%}&PXoCc3Li4{fRb~ zm-Eq-7>Ym9liDl8>jbLIqMO^Mx^6T=xQnmU%Wp*WE{#`(zp9^PHZW%0IMH-a_R$3E zj=E|48(k|UE+l=NMczS;ma+EZnh8Yo-+GnI?*jU3V_bjw__x0H=LGt`Yof71r-uOL zYa{}L6*Pn1lJb-Rks~~c`1>1Co5FkB(8JyGDCN#Q#&aRK8xIi%z){+V%G5JnR_}-C z#|`g}BsKK}fFqj-=s?fKsXKL}FNemNBcv~-2AaL0P=#=JcY5;4$TXh7&#x(p_C4!@ zp@&p^_SQI%N+r>_O5XGCFLmqSE27=