const { checkConfigs, hk4e_getConfigs, hk4e_makeHeader, hk4e_ListNotification, hk4e_AckNotification, hk4e_Wallet, hk4e_AppVersion, nap_getConfigs, nap_makeHeader, nap_ListNotification, nap_AckNotification, nap_Wallet, nap_AppVersion, SendLog, getGlobalConfig, SendResult, } = require("./config"); const { log, addLogContent, getLogs, sleep } = require("./util"); const nodemailer = require("nodemailer"); (async () => { log.info("开始获取全局配置"); var globalConfig = getGlobalConfig(); log.info("获取成功"); log.info("组装邮件发射器"); var transporter = nodemailer.createTransport({ host: globalConfig.mailConfig.smtpServer, port: globalConfig.mailConfig.smtpPort, secure: globalConfig.mailConfig.smtpSecure, auth: { user: globalConfig.mailConfig.user, pass: globalConfig.mailConfig.pass, }, }); var minDelay = globalConfig.minDelay; var maxDelay = globalConfig.maxDelay; var hk4e_configs = hk4e_getConfigs(); var nap_configs = nap_getConfigs(); log.info(`正在检测原神配置有效性`); checkConfigs(hk4e_configs); log.info("检测完毕!"); log.info(`正在检测绝区零配置有效性`); checkConfigs(nap_configs); log.info("检测完毕!"); log.info("正在获取版本号"); var hk4e_appversion = await hk4e_AppVersion(); var nap_appversion = await nap_AppVersion(); hk4e_appversion = hk4e_appversion.data.package_version; nap_appversion = nap_appversion.data.package_version; log.info(`获取成功!当前版本号:原神${hk4e_appversion},绝区零${nap_appversion}`); var successNum = 0, totalNum = 0; for (key in hk4e_configs) { var delay = Math.round( Math.random() * (maxDelay - minDelay) + minDelay ); log.info(`暂停:${delay}毫秒`); await sleep(delay); totalNum++; log.info(`${key} - 正在执行配置 ${key}`); log.info(`${key} - 尝试签到原神……`); var hk4e_header = hk4e_makeHeader(hk4e_configs[key], hk4e_appversion); var hk4e_WalletRespond = await hk4e_Wallet(hk4e_header); addLogContent( `${key} hk4e_Wallet返回体
${JSON.stringify( hk4e_WalletRespond )}
` ); if (hk4e_WalletRespond.data != null) { var hk4e_NotificationRespond = await hk4e_ListNotification(hk4e_header); addLogContent( `${key} hk4e_Notification返回体
${JSON.stringify( hk4e_NotificationRespond )}
` ); successNum++; log.info( `${key} - 签到完毕! 原神获得时长:${hk4e_WalletRespond.data.free_time.send_freetime}分钟,总时长:${hk4e_WalletRespond.data.free_time.free_time}分钟` ); if (hk4e_configs[key].email != null) { SendResult( transporter, globalConfig.mailConfig.user, hk4e_configs[key].email, `签到完毕! 获得时长:${hk4e_WalletRespond.data.free_time.send_freetime}分钟,总时长:${hk4e_WalletRespond.data.free_time.free_time}分钟`, key ); } let hk4e_NotificationLength = hk4e_NotificationRespond.data.list.length; let hk4e_postHeader = hk4e_header; Object.assign(hk4e_postHeader, { "Content-Length": 28, "Content-Type": "application/json; charset=UTF-8", }); for (var i = 0; i < hk4e_NotificationLength; i++) { hk4e_AckNotification( hk4e_postHeader, hk4e_NotificationRespond.data.list[i].id ); } } else { log.error(`${key} - 签到失败`); if (hk4e_configs[key].email != null) { SendResult( transporter, globalConfig.mailConfig.user, hk4e_configs[key].email, "签到失败", key ); } } } for (key in nap_configs) { var delay = Math.round( Math.random() * (maxDelay - minDelay) + minDelay ); log.info(`暂停:${delay}毫秒`); await sleep(delay); totalNum++; log.info(`${key} - 正在执行配置 ${key}`); log.info(`${key} - 尝试签到绝区零……`); var nap_header = nap_makeHeader(nap_configs[key], nap_appversion); var nap_WalletRespond = await nap_Wallet(nap_header); addLogContent( `${key} nap_Wallet返回体
${JSON.stringify( nap_WalletRespond )}
` ); if (nap_WalletRespond.data != null) { var nap_NotificationRespond = await nap_ListNotification(nap_header); addLogContent( `${key} nap_Notification返回体
${JSON.stringify( nap_NotificationRespond )}
` ); successNum++; log.info( `${key} - 签到完毕! 绝区零获得时长:${nap_WalletRespond.data.free_time.send_freetime}分钟,总时长:${nap_WalletRespond.data.free_time.free_time}分钟` ); if (nap_configs[key].email != null) { SendRnapt( transporter, globalConfig.mailConfig.user, nap_configs[key].email, `签到完毕! 获得时长:${nap_WalletRespond.data.free_time.send_freetime}分钟,总时长:${nap_WalletRespond.data.free_time.free_time}分钟`, key ); } let nap_NotificationLength = nap_NotificationRespond.data.list.length; let nap_postHeader = nap_header; Object.assign(nap_postHeader, { "Content-Length": 28, "Content-Type": "application/json; charset=UTF-8", }); for (var i = 0; i < nap_NotificationLength; i++) { nap_AckNotification( nap_postHeader, nap_NotificationRespond.data.list[i].id ); } } else { log.error(`${key} - 签到失败`); if (nap_configs[key].email != null) { SendResult( transporter, globalConfig.mailConfig.user, nap_configs[key].email, "签到失败", key ); } } } if (globalConfig.sendMail == true) { log.info(`暂停:10秒`); await sleep(10000); log.info(`运行完毕!丢出日志`); SendLog( transporter, globalConfig.mailConfig.user, globalConfig.mailConfig.mailto, successNum, totalNum, getLogs() ); } })();