diff --git a/SakuraUtil.js b/SakuraUtil.js new file mode 100644 index 0000000..2c3e990 --- /dev/null +++ b/SakuraUtil.js @@ -0,0 +1,90 @@ +/************************************** +* +✿  ╱╲*╱╲ ✿ + ╱╳ ✿ ▲╱  ╲ ✿ +╱╱ ◢◣ ✿  ╳╲ +╱ ✿ ◢█◣ /  ╲ ✿ +✿  ◢██◣ SakuraUtil + _▂▂█▂▂ by Sliverkiss 2024.02.03 +---------------------------------------- +//Sakura多功能工具模块,引入模块方法如下: +async function loadSakuraUtils() { + let code = ($.isNode() ? process.env['SakuraUtil_code'] : $.getdata('SakuraUtil_code')) || ''; + if (code && Object.keys(code).length) { + console.log(`✅ ${$.name}: 缓存中存在SakuraUtil代码, 跳过下载`) + eval(code) + return creatUtils(); + } + console.log(`🚀 ${$.name}: 开始下载SakuraUtil代码`) + return new Promise(async (resolve) => { + $.getScript( + 'https://cdn.jsdelivr.net/gh/Sliverkiss/QuantumultX@main/Utils/SakuraUtil.js' + ).then((fn) => { + $.setdata(fn, SakuraUtil_code) + eval(fn) + const SakuraUtil = creatUtils(); + console.log(`✅ SakuraUtil加载成功, 请继续`) + resolve(SakuraUtil) + }) + }) +} +------------------------------------------ +方法列表 +------------------------------------------ +MD5 加密 | @param string a 'xxx' => MD5_Encrypt(a) +SHA1 加密 | @param string s 'xxx' => SHA1_Encrypt(s) +UTF8编码 | @param string s 'xxx' => encodeUTF8(s) +随机MAC网络地址 | randomMac() +随机UUID(由时间戳生成) 8-4-4-4-12 | guid() +手机号中间遮挡 | @param string phone_num 'xxx' => phone_num(phone_num) +随机 数字 + 大写字母 生成 | @param int e 32 => randomszdx(e) +随机 数字 + 大写字母 生成 | @param int e 32 => randomszxx(e) +随机整数生成 | @param int min,max => randomInt(min, max) +时间戳 13位 | ts13() +时间戳 10位 | ts10() +时间戳 转 日期 | @param string time 'xxx' => tmtoDate(time = +new Date()) +获取当前小时数 | local_hours() +获取当前分钟数 | local_minutes() +获取当前年份 | local_year() +获取当前月份(数字) | local_month() +获取当前月份(数字) 补零 | local_month_two() +获取当前天数(数字) | local_day() +获取当前天数 补零 | local_day_two() +base64 编码 | @param string data 'xxx' => base64_encode(data) +base64 解码 | @param string data 'xxx' => base64_encode(data) +统计对象属性数量 | @param array data,int col [{col:xxx}] => getTotal(data,col) +对象属性转换成小写 | @param obj obj {} => ObjectKeys2LowerCase(obj) +Json转换成字符串拼接 | @param obj data {} => JsonToUrl(data) +字符串拼接转换成Json | @param string data {} => UrlToJson(data) +******************************************/ +function creatUtils(){return new(class{MD5_Encrypt(a){function b(a,b){return(a<>>(32-b));}function c(a,b){var c,d,e,f,g;return((e=2147483648&a),(f=2147483648&b),(c=1073741824&a),(d=1073741824&b),(g=(1073741823&a)+(1073741823&b)),c&d?2147483648^g^e^f:c|d?1073741824&g?3221225472^g^e^f:1073741824^g^e^f:g^e^f);}function d(a,b,c){return(a&b)|(~a&c);}function e(a,b,c){return(a&c)|(b&~c);}function f(a,b,c){return a^b^c;}function g(a,b,c){return b^(a|~c);}function h(a,e,f,g,h,i,j){return(a=c(a,c(c(d(e,f,g),h),j))),c(b(a,i),e);}function i(a,d,f,g,h,i,j){return(a=c(a,c(c(e(d,f,g),h),j))),c(b(a,i),d);}function j(a,d,e,g,h,i,j){return(a=c(a,c(c(f(d,e,g),h),j))),c(b(a,i),d);}function k(a,d,e,f,h,i,j){return(a=c(a,c(c(g(d,e,f),h),j))),c(b(a,i),d);}function l(a){for(var b,c=a.length,d=c+8,e=(d-(d%64))/64,f=16*(e+1),g=new Array(f-1),h=0,i=0;c>i;)(b=(i-(i%4))/4),(h=(i%4)*8),(g[b]=g[b]|(a.charCodeAt(i)<>>29),g);}function m(a){var b,c,d="",e="";for(c=0;3>=c;c++)(b=(a>>>(8*c))&255),(e="0"+b.toString(16)),(d+=e.substr(e.length-2,2));return d;}function n(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;cd?(b+=String.fromCharCode(d)):d>127&&2048>d?((b+=String.fromCharCode((d>>6)|192)),(b+=String.fromCharCode((63&d)|128))):((b+=String.fromCharCode((d>>12)|224)),(b+=String.fromCharCode(((d>>6)&63)|128)),(b+=String.fromCharCode((63&d)|128)));}return b;}var o,p,q,r,s,t,u,v,w,x=[],y=7,z=12,A=17,B=22,C=5,D=9,E=14,F=20,G=4,H=11,I=16,J=23,K=6,L=10,M=15,N=21;for(a=n(a),x=l(a),t=1732584193,u=4023233417,v=2562383102,w=271733878,o=0;o>>6<<4)+16,s=new Uint8Array(l<<2);s.set(new Uint8Array(data.buffer)),s=new Uint32Array(s.buffer);for(t=new DataView(s.buffer),i=0;i>2]|=0x80<<(24-(data.length&3)*8);s[l-1]=data.length<<3;var w=[],f=[function(){return m[1]&m[2]|~m[1]&m[3];},function(){return m[1]^m[2]^m[3];},function(){return m[1]&m[2]|m[1]&m[3]|m[2]&m[3];},function(){return m[1]^m[2]^m[3];}],rol=function(n,c){return n<>>(32-c);},k=[1518500249,1859775393,-1894007588,-899497514],m=[1732584193,-271733879,null,null,-1009589776];m[2]=~m[0],m[3]=~m[1];for(i=0;i>6&0x1F),0x80+(c&0x3F));else{if((x=c^0xD800)>>10==0) +c=(x<<10)+(s.charCodeAt(++i)^0xDC00)+0x10000,r.push(0xF0+(c>>18&0x7),0x80+(c>>12&0x3F));else r.push(0xE0+(c>>12&0xF));r.push(0x80+(c>>6&0x3F),0x80+(c&0x3F));};return r;} +randomMac(){return"XX:XX:XX:XX:XX:XX".replace(/X/g,function(){return"0123456789ABCDEF".charAt(Math.floor(Math.random()*16))});} +guid(){function S4(){return(((1+Math.random())*0x10000)|0).toString(16).substring(1);} +return(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());} +phone_num(phone_num){if(phone_num.length==11){let data=phone_num.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2");return data;}else{return phone_num;}} +randomszdx(e){e=e||32;var t="QWERTYUIOPASDFGHJKLZXCVBNM1234567890",a=t.length,n="";for(i=0;i{dataContainer[item[`${col}`]]=dataContainer[item[`${col}`]]||[];dataContainer[item[`${col}`]].push(item)});let total=[];let dataName=Object.keys(dataContainer);dataName.map((nameItem)=>{let count=0;dataContainer[nameItem].map((item)=>{count++});total.push({name:nameItem,value:count})});return total} +ObjectKeys2LowerCase(obj) { const _lower = Object.fromEntries(Object.entries(obj).map(([k, v]) => [k.toLowerCase(), v])); return new Proxy(_lower, { get: function (target, propKey, receiver) { return Reflect.get(target, propKey.toLowerCase(), receiver) }, set: function (target, propKey, value, receiver) { return Reflect.set(target, propKey.toLowerCase(), value, receiver) } }) }; +JsonToUrl(data){var tempArr=[];for(var i in data){var key=encodeURIComponent(i);var value=encodeURIComponent(data[i]);tempArr.push(key+'='+value)};var urlParamsStr=tempArr.join('&');return urlParamsStr}; +UrlToJson(data){let tempArr=data.split(`&`);let obj={};for(let item of tempArr){let itemInfo=item.split(`=`);let _key=itemInfo[0];let _value=decodeURIComponent(itemInfo[1]);obj[`${_key}`]=_value};return obj}; +})();}