mirror of
				https://github.com/shufflewzc/faker2.git
				synced 2025-10-31 12:02:44 +08:00 
			
		
		
		
	
							parent
							
								
									202d5607b0
								
							
						
					
					
						commit
						30ce760ea1
					
				
							
								
								
									
										76
									
								
								jdCookie.js
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								jdCookie.js
									
									
									
									
									
								
							| @ -1,10 +1,17 @@ | ||||
| /* | ||||
| ================================================================================ | ||||
| 魔改自 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专用。其他用户请忽略 | ||||
|  */ | ||||
| //此处填写京东账号cookie。
 | ||||
| let CookieJDs = [ | ||||
|   '',//账号一ck,例:pt_key=XXX;pt_pin=XXX;
 | ||||
|   '',//账号二ck,例:pt_key=XXX;pt_pin=XXX;如有更多,依次类推
 | ||||
| ] | ||||
| // 判断环境变量里面是否有京东ck
 | ||||
| if (process.env.JD_COOKIE) { | ||||
| @ -24,12 +31,71 @@ if (JSON.stringify(process.env).indexOf('GITHUB')>-1) { | ||||
|   })() | ||||
| } | ||||
| CookieJDs = [...new Set(CookieJDs.filter(item => !!item))] | ||||
| console.log(`\n====================共${CookieJDs.length}个京东账号Cookie=================\n`); | ||||
| console.log(`============脚本执行时间:${new Date(new Date().getTime() + new Date().getTimezoneOffset()*60*1000 + 8*60*60*1000).toLocaleString('chinese',{hour12:false})}=============\n`) | ||||
| console.log(`\n====================共${CookieJDs.length}个京东账号Cookie=========\n`); | ||||
| 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`) | ||||
| if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; | ||||
| 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`); | ||||
|   const index = (i + 1 === 1) ? '' : (i + 1); | ||||
|   exports['CookieJD' + index] = CookieJDs[i].trim(); | ||||
| } | ||||
| console.log('>>>>>>>>>>>>>>Faker友情提示:您的任务正常运行中>>>>>>>>>>>>>>>\n') | ||||
| 
 | ||||
| // 以下为注入互助码环境变量(仅nodejs内起效)的代码
 | ||||
| function SetShareCodesEnv(nameConfig = "", envName = "") { | ||||
|     let rawCodeConfig = {} | ||||
| 
 | ||||
|     // 读取互助码
 | ||||
|     let shareCodeLogPath = `${process.env.QL_DIR}/log/.ShareCode/${nameConfig}.log` | ||||
|     let fs = require('fs') | ||||
|     if (fs.existsSync(shareCodeLogPath)) { | ||||
|         // 因为faker2目前没有自带ini,改用已有的dotenv来解析
 | ||||
|         // // 利用ini模块读取原始互助码和互助组信息
 | ||||
|         // let ini = require('ini')
 | ||||
|         // rawCodeConfig = ini.parse(fs.readFileSync(shareCodeLogPath, 'utf-8'))
 | ||||
| 
 | ||||
|         // 使用env模块
 | ||||
|         require('dotenv').config({path: shareCodeLogPath}) | ||||
|         rawCodeConfig = process.env | ||||
|     } | ||||
| 
 | ||||
|     // 解析每个用户的互助码
 | ||||
|     let codes = {} | ||||
|     Object.keys(rawCodeConfig).forEach(function (key) { | ||||
|         if (key.startsWith(`My${nameConfig}`)) { | ||||
|             codes[key] = rawCodeConfig[key] | ||||
|         } | ||||
|     }); | ||||
| 
 | ||||
|     // 解析每个用户要帮助的互助码组,将用户实际的互助码填充进去
 | ||||
|     let helpOtherCodes = {} | ||||
|     Object.keys(rawCodeConfig).forEach(function (key) { | ||||
|         if (key.startsWith(`ForOther${nameConfig}`)) { | ||||
|             helpCode = rawCodeConfig[key] | ||||
|             for (const [codeEnv, codeVal] of Object.entries(codes)) { | ||||
|                 helpCode = helpCode.replace("${" + codeEnv + "}", codeVal) | ||||
|             } | ||||
| 
 | ||||
|             helpOtherCodes[key] = helpCode | ||||
|         } | ||||
|     }); | ||||
| 
 | ||||
|     // 按顺序用&拼凑到一起,并放入环境变量,供目标脚本使用
 | ||||
|     let shareCodes = [] | ||||
|     let totalCodeCount = Object.keys(helpOtherCodes).length | ||||
|     for (let idx = 1; idx <= totalCodeCount; idx++) { | ||||
|         shareCodes.push(helpOtherCodes[`ForOther${nameConfig}${idx}`]) | ||||
|     } | ||||
|     let shareCodesStr = shareCodes.join('&') | ||||
|     process.env[envName] = shareCodesStr | ||||
| 
 | ||||
|     console.info(`【风之凌殇】 友情提示:为避免ck超过45以上时,互助码环境变量过大而导致调用一些系统命令(如date/cat)时报 Argument list too long,改为在nodejs中设置 ${nameConfig} 的 互助码环境变量 ${envName},共计 ${totalCodeCount} 组互助码,总大小为 ${shareCodesStr.length}`) | ||||
| } | ||||
| 
 | ||||
| // 若在task_before.sh 中设置了要设置互助码环境变量的活动名称和环境变量名称信息,则在nodejs中处理,供活动使用
 | ||||
| let nameConfig = process.env.ShareCodeConfigName | ||||
| let envName = process.env.ShareCodeEnvName | ||||
| if (nameConfig && envName) { | ||||
|     SetShareCodesEnv(nameConfig, envName) | ||||
| } else { | ||||
|     console.debug(`faker 友情提示:您的脚本正常运行中`) | ||||
| } | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Faker
						Faker