main
KingRan 2023-09-27 08:52:14 +08:00
parent fb523ba8d9
commit 8d266e0937
1 changed files with 64 additions and 22 deletions

View File

@ -1,13 +1,4 @@
/* /*
================================================================================
魔改自 https://github.com/shufflewzc/faker2/blob/main/jdCookie.js
修改内容与task_before.sh配合由task_before.sh设置要设置要做互助的活动的 ShareCodeConfigName ShareCodeEnvName 环境变量
然后在这里实际解析/ql/log/.ShareCode中该活动对应的配置信息由code.sh生成和维护注入到nodejs的环境变量中
修改原因原先的task_before.sh直接将互助信息注入到shell的env中在ck超过45以上时互助码环境变量过大会导致调用一些系统命令
如date/cat时报 Argument list too long而在node中修改环境变量不会受这个限制也不会影响外部shell环境确保脚本可以正常运行
魔改作者风之凌殇
================================================================================
此文件为Node.js专用其他用户请忽略 此文件为Node.js专用其他用户请忽略
*/ */
//此处填写京东账号cookie。 //此处填写京东账号cookie。
@ -31,11 +22,13 @@ if (JSON.stringify(process.env).indexOf('GITHUB')>-1) {
})() })()
} }
CookieJDs = [...new Set(CookieJDs.filter(item => !!item))] CookieJDs = [...new Set(CookieJDs.filter(item => !!item))]
console.log(`\n====================共${CookieJDs.length}个京东账号Cookie=========\n`); if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => { };
console.log(`==================脚本执行- 北京时间(UTC+8)${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('zh', {hour12: false}).replace(' 24:',' 00:')}=====================\n`) console.log(`\n====================共${CookieJDs.length}个京东账号Cookie=================\n`);
if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; console.log(`===========脚本执行时间:${formatdate(new Date(new Date().getTime() + new Date().getTimezoneOffset() * 60 * 1000 + 8 * 60 * 60 * 1000))}============\n`)
console.log('==================KR 提示:任务正常运行中================\n')
for (let i = 0; i < CookieJDs.length; i++) { for (let i = 0; i < CookieJDs.length; i++) {
if (!CookieJDs[i].match(/pt_pin=(.+?);/) || !CookieJDs[i].match(/pt_key=(.+?);/)) console.log(`\n提示:京东cookie 【${CookieJDs[i]}】填写不规范,可能会影响部分脚本正常使用。正确格式为: pt_key=xxx;pt_pin=xxx;(分号;不可少)\n`); if (!CookieJDs[i].match(/pt_pin=(.+?);/) || !CookieJDs[i].match(/pt_key=(.+?);/)) console.log(`\n提示:京东cookie 【${CookieJDs[i]}】填写不规范,可能会影响部分脚本正常使用。正确格式为: pt_key=xxx;pt_pin=xxx;(分号;不可少)\n`);
CookieJDs[i] = CookieJDs[i].replace(/[\u4e00-\u9fa5]/g, (str) => encodeURI(str));
const index = (i + 1 === 1) ? '' : (i + 1); const index = (i + 1 === 1) ? '' : (i + 1);
exports['CookieJD' + index] = CookieJDs[i].trim(); exports['CookieJD' + index] = CookieJDs[i].trim();
} }
@ -43,10 +36,9 @@ for (let i = 0; i < CookieJDs.length; i++) {
// 以下为注入互助码环境变量仅nodejs内起效的代码 // 以下为注入互助码环境变量仅nodejs内起效的代码
function SetShareCodesEnv(nameChinese = "", nameConfig = "", envName = "") { function SetShareCodesEnv(nameChinese = "", nameConfig = "", envName = "") {
let rawCodeConfig = {} let rawCodeConfig = {}
// 读取互助码
shareCodeLogPath = `${process.env.QL_DIR}/log/.ShareCode/${nameConfig}.log`
let fs = require('fs') let fs = require('fs')
// 读取互助码
let shareCodeLogPath = fs.existsSync(`${process.env.QL_DIR}/data`) ? `${process.env.QL_DIR}/data/log/.ShareCode/${nameConfig}.log` : `${process.env.QL_DIR}/log/.ShareCode/${nameConfig}.log`;
if (fs.existsSync(shareCodeLogPath)) { if (fs.existsSync(shareCodeLogPath)) {
// 因为faker2目前没有自带ini改用已有的dotenv来解析 // 因为faker2目前没有自带ini改用已有的dotenv来解析
// // 利用ini模块读取原始互助码和互助组信息 // // 利用ini模块读取原始互助码和互助组信息
@ -54,12 +46,12 @@ function SetShareCodesEnv(nameChinese = "", nameConfig = "", envName = "") {
// rawCodeConfig = ini.parse(fs.readFileSync(shareCodeLogPath, 'utf-8')) // rawCodeConfig = ini.parse(fs.readFileSync(shareCodeLogPath, 'utf-8'))
// 使用env模块 // 使用env模块
require('dotenv').config({path: shareCodeLogPath}) require('dotenv').config({ path: shareCodeLogPath })
rawCodeConfig = process.env rawCodeConfig = process.env
} }
// 解析每个用户的互助码 // 解析每个用户的互助码
codes = {} let codes = {}
Object.keys(rawCodeConfig).forEach(function (key) { Object.keys(rawCodeConfig).forEach(function (key) {
if (key.startsWith(`My${nameConfig}`)) { if (key.startsWith(`My${nameConfig}`)) {
codes[key] = rawCodeConfig[key] codes[key] = rawCodeConfig[key]
@ -70,7 +62,7 @@ function SetShareCodesEnv(nameChinese = "", nameConfig = "", envName = "") {
let helpOtherCodes = {} let helpOtherCodes = {}
Object.keys(rawCodeConfig).forEach(function (key) { Object.keys(rawCodeConfig).forEach(function (key) {
if (key.startsWith(`ForOther${nameConfig}`)) { if (key.startsWith(`ForOther${nameConfig}`)) {
helpCode = rawCodeConfig[key] let helpCode = rawCodeConfig[key]
for (const [codeEnv, codeVal] of Object.entries(codes)) { for (const [codeEnv, codeVal] of Object.entries(codes)) {
helpCode = helpCode.replace("${" + codeEnv + "}", codeVal) helpCode = helpCode.replace("${" + codeEnv + "}", codeVal)
} }
@ -81,14 +73,55 @@ function SetShareCodesEnv(nameChinese = "", nameConfig = "", envName = "") {
// 按顺序用&拼凑到一起,并放入环境变量,供目标脚本使用 // 按顺序用&拼凑到一起,并放入环境变量,供目标脚本使用
let shareCodes = [] let shareCodes = []
let totalCodeCount = Object.keys(helpOtherCodes).length let leftIndex = 1, rightIndex = Object.keys(helpOtherCodes).length
for (let idx = 1; idx <= totalCodeCount; idx++) {
// 判断是否是ptask并行触发若是则修改实际需要设置的互助码范围
let ptaskLeft = process.env.PTASK_LEFT
let ptaskRight = process.env.PTASK_RIGHT
if (ptaskLeft && ptaskRight) {
leftIndex = Number(ptaskLeft)
rightIndex = Number(ptaskRight)
}
for (let idx = leftIndex; idx <= rightIndex; idx++) {
shareCodes.push(helpOtherCodes[`ForOther${nameConfig}${idx}`]) shareCodes.push(helpOtherCodes[`ForOther${nameConfig}${idx}`])
} }
let shareCodesStr = shareCodes.join('&') let shareCodesStr = shareCodes.join('&')
process.env[envName] = shareCodesStr process.env[envName] = shareCodesStr
console.info(`${nameChinese} 的 互助码环境变量 ${envName},共计 ${totalCodeCount} 组互助码,总大小为 ${shareCodesStr.length} 字节`) let totalCodeCount = rightIndex - leftIndex + 1
//console.info(`${nameChinese}的 互助码环境变量 ${envName},共计 ${totalCodeCount} 组互助码,总大小为 ${shareCodesStr.length} 字节`)
}
// 判断当前活动脚本是否在互助脚本列表中
function IsShareJsFile() {
// 尝试获取在task_before.sh中设置的 互助活动的脚本文件名的关键部分 列表
let rawJsNameList = process.env.ShareCodeJSNameList
if (!rawJsNameList) {
return false
}
// 转换为list
let jsNameList = process.env.ShareCodeJSNameList.split(" ")
// 判断当前
let currentActivityScriptFileName = GetCurrentActivityScriptFileName()
let isShareJsFile = false
for (let idx = 0; idx < jsNameList.length; idx++) {
if (currentActivityScriptFileName.includes(jsNameList[idx])) {
isShareJsFile = true
break
}
}
return isShareJsFile
}
// 获取当前活动脚本的文件名
function GetCurrentActivityScriptFileName() {
const path = require('path')
return path.basename(process.argv[1])
} }
// 若在task_before.sh 中设置了要设置互助码环境变量的活动名称和环境变量名称信息则在nodejs中处理供活动使用 // 若在task_before.sh 中设置了要设置互助码环境变量的活动名称和环境变量名称信息则在nodejs中处理供活动使用
@ -101,3 +134,12 @@ if (nameChinese && nameConfig && envName) {
console.debug(`KingRan 频道通知https://t.me/KingRan521\n`) console.debug(`KingRan 频道通知https://t.me/KingRan521\n`)
console.debug(`云服务器IP须知域名前缀为 'lzdz' 的禁用勿跑容易黑号\n`) console.debug(`云服务器IP须知域名前缀为 'lzdz' 的禁用勿跑容易黑号\n`)
} }
function formatdate(date) {
const year = date.getFullYear();
const month = ('0' + (date.getMonth() + 1)).slice(-2);
const day = ('0' + date.getDate()).slice(-2);
const hours = ('0' + date.getHours()).slice(-2);
const minutes = ('0' + date.getMinutes()).slice(-2);
const seconds = ('0' + date.getSeconds()).slice(-2);
return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`;
}