/ *
潮生活 ( 小程序 )
export cshCookie = 'token=xxxxx&openId=yyyyy'
账号并发阅读
每隔2个小时
# new Env ( "潮生活(小程序)" )
# cron 13 * * * * csh . js
* /
const $ = new Env ( "潮生活" ) ;
let envSplitor = [ '\n' , '@' ]
let httpResult , httpReq , httpResp
let userCookie = ( $ . isNode ( ) ? process . env . cshCookie : $ . getdata ( 'cshCookie' ) ) || '' ;
let userList = [ ]
let userIdx = 0
let userCount = 0
let appId = 'wx0d091a64a8f9845d'
let defaultUA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.23(0x18001729) NetType/WIFI Language/zh_CN'
let Origin = 'https://dh.wbgj.cn'
let Referer = 'https://dh.wbgj.cn/my'
let RANDOM_WAIT_TIME = 10000
let ROUND_WAIT_TIME = 10000
///////////////////////////////////////////////////////////////////
class UserInfo {
constructor ( str ) {
this . index = ++ userIdx
this . name = this . index
this . valid = false
this . param = $ . str2json ( str )
this . stopFlag = false
this . articlePageLimit = 3
this . prizePageLimit = 1
this . prizeList = [ ]
}
async getUserInfo ( isNotify = false ) {
try {
let url = ` https://dh.wbgj.cn/integral_applet_2/integral/user/info `
let bodyParam = {
token : this . param . token ,
openId : this . param . openId ,
}
let body = getSign ( bodyParam )
let urlObject = populateUrlObject ( url , body )
await httpRequest ( 'post' , urlObject )
let result = httpResult ;
if ( ! result ) return
//console.log(result)
if ( result . state == 0 ) {
this . valid = true
this . name = result . info . wxUser . nickName
this . integral = result . info . wxUser . integral
if ( isNotify ) {
$ . logAndNotify ( ` [ ${ this . name } ] 积分: ${ this . integral } ` )
} else {
console . log ( ` 昵称: ${ this . name } ` )
console . log ( ` 积分: ${ this . integral } ` )
}
} else {
$ . logAndNotify ( ` 账号[ ${ this . name } ]CK失效: ${ result . message } ` )
}
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
async articleList ( page ) {
try {
let url = ` https://wz.wbgj.cn/integral_applet_2/integral/weixin/article/list `
let bodyParam = {
token : this . param . token ,
openId : this . param . openId ,
page : page ,
perSize : 18 ,
appId : appId ,
}
let body = getSign ( bodyParam )
let urlObject = populateUrlObject ( url , body )
await httpRequest ( 'post' , urlObject )
let result = httpResult ;
if ( ! result ) return
//console.log(result)
if ( result . state == 0 ) {
this . articlePageLimit = result . info . page . totalPage
console . log ( ` 账号[ ${ this . name } ]获取到第 ${ page } 页 ${ result . info . weixinArtivleList . length } 篇文章,共 ${ result . info . page . totalPage } 页 ` )
for ( let item of result . info . weixinArtivleList ) {
if ( ! item . read ) {
await this . visit ( item , result . info . readToken )
if ( this . stopFlag ) break ;
let rndwaittime = Math . floor ( Math . random ( ) * RANDOM_WAIT_TIME ) + ROUND_WAIT_TIME
console . log ( ` 账号[ ${ this . name } ]等待 ${ rndwaittime / 1000 } 秒继续阅读... ` )
await $ . wait ( rndwaittime )
}
}
} else {
console . log ( ` 账号[ ${ this . name } ]获取文章列表失败: ${ result . message } ` )
}
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
async visit ( item , readToken ) {
try {
let url = ` https://wz.wbgj.cn/integral_applet_2/integral/wx/article/visit `
let bodyParam = {
token : this . param . token ,
openId : this . param . openId ,
tag : item . tag ,
appId : appId ,
}
let body = getSign ( bodyParam )
let urlObject = populateUrlObject ( url , body )
await httpRequest ( 'post' , urlObject )
let result = httpResult ;
if ( ! result ) return
//console.log(result)
if ( result . state == 0 ) {
await this . award ( item , readToken )
} else {
console . log ( ` 账号[ ${ this . name } ]开始阅读文章[ ${ item . tag } ]失败: ${ result . message } ` )
}
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
async award ( item , readToken , groupToken = '' ) {
try {
let url = ` https://wz.wbgj.cn/integral_applet_2/integral/h5/wx/article/award `
let bodyParam = {
token : this . param . token ,
openId : this . param . openId ,
tag : item . tag ,
readToken : readToken ,
groupToken : groupToken ,
appId : appId ,
}
let body = getSign ( bodyParam )
let urlObject = populateUrlObject ( url , body )
await httpRequest ( 'post' , urlObject )
let result = httpResult ;
if ( ! result ) return
//console.log(result)
if ( result . state == 0 ) {
console . log ( ` 账号[ ${ this . name } ]阅读文章[ ${ item . tag } ]成功 ` )
} else {
console . log ( ` 账号[ ${ this . name } ]阅读文章[ ${ item . tag } ]失败: ${ result . message } ` )
if ( result . message . indexOf ( '用户处于锁定时间' ) > - 1 ) {
this . stopFlag = true
}
}
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
async getPrizeList ( page ) {
try {
let url = ` https://dh.wbgj.cn/integral_applet_2/integral/convert_center/prize `
let bodyParam = {
token : this . param . token ,
openId : this . param . openId ,
page : page ,
}
let body = getSign ( bodyParam )
let urlObject = populateUrlObject ( url , body )
await httpRequest ( 'post' , urlObject )
let result = httpResult ;
if ( ! result ) return
//console.log(result)
if ( result . state == 0 ) {
this . prizePageLimit = result . info . page . totalPage
for ( let item of result . info . prizeList ) {
this . prizeList . push ( item )
}
} else {
console . log ( ` 账号[ ${ this . name } ]获取第 ${ page } 页提现列表失败: ${ result . message } ` )
}
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
async exchange ( item ) {
try {
let url = ` https://dh.wbgj.cn/integral_applet_2/integral/convert_center/exchange/prize `
let bodyParam = {
token : this . param . token ,
openId : this . param . openId ,
code : '' ,
convertId : item . convertId ,
phone : '' ,
account : '' ,
}
let body = getSign ( bodyParam )
let urlObject = populateUrlObject ( url , body )
await httpRequest ( 'post' , urlObject )
let result = httpResult ;
if ( ! result ) return
//console.log(result)
if ( result . state == 0 ) {
this . integral -= item . integral
$ . logAndNotify ( ` 账号[ ${ this . name } ]提现[ ${ item . prizeName } ]成功 ` )
} else {
$ . logAndNotify ( ` 账号[ ${ this . name } ]提现[ ${ item . prizeName } ]失败: ${ result . message } ` )
}
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
async userExchangeTask ( ) {
try {
await this . getUserInfo ( true ) ;
await this . getPrizeList ( 1 ) ;
if ( this . prizePageLimit > 1 ) {
for ( let i = 2 ; i <= this . prizePageLimit ; i ++ ) {
await this . getPrizeList ( i ) ;
}
}
if ( this . prizeList . length > 0 ) {
for ( let item of this . prizeList . sort ( function ( a , b ) { return b . prizeWorth - a . prizeWorth } ) ) {
if ( this . integral < item . integral ) continue ;
if ( item . prizeCount - item . drawCount <= 0 ) continue ;
await this . exchange ( item )
}
} else {
$ . logAndNotify ( ` 账号[ ${ this . name } ]没有获取到提现选项 ` )
}
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
async userTask ( ) {
try {
await this . articleList ( 1 ) ;
if ( this . articlePageLimit > 1 ) {
for ( let i = 2 ; i <= this . articlePageLimit && ! this . stopFlag ; i ++ ) {
await this . articleList ( i ) ;
}
}
console . log ( ` 账号[ ${ this . name } ]已完成阅读 ` )
} catch ( e ) {
console . log ( e )
} finally {
return Promise . resolve ( 1 ) ;
}
}
}
function c ( e , t ) {
var n = ( 65535 & e ) + ( 65535 & t ) ;
return ( e >> 16 ) + ( t >> 16 ) + ( n >> 16 ) << 16 | 65535 & n
}
function s ( e , t , n , r , o , i ) {
return c ( ( u = c ( c ( t , e ) , c ( r , i ) ) ) << ( a = o ) | u >>> 32 - a , n ) ;
var u , a
}
function l ( e , t , n , r , o , i , u ) {
return s ( t & n | ~ t & r , e , t , o , i , u )
}
function d ( e , t , n , r , o , i , u ) {
return s ( t & r | n & ~ r , e , t , o , i , u )
}
function h ( e , t , n , r , o , i , u ) {
return s ( t ^ n ^ r , e , t , o , i , u )
}
function f ( e , t , n , r , o , i , u ) {
return s ( n ^ ( t | ~ r ) , e , t , o , i , u )
}
function m ( e , t ) {
e [ t >> 5 ] |= 128 << t % 32 , e [ 14 + ( t + 64 >>> 9 << 4 ) ] = t ;
var n , r , o , i , u , a = 1732584193 ,
s = - 271733879 ,
m = - 1732584194 ,
p = 271733878 ;
for ( n = 0 ; n < e . length ; n += 16 ) r = a , o = s , i = m , u = p , s = f ( s = f ( s = f ( s = f ( s = h ( s = h ( s = h ( s = h ( s = d ( s = d ( s = d ( s = d ( s = l ( s = l ( s = l ( s = l ( s , m = l ( m , p = l ( p , a = l ( a , s , m , p , e [ n ] , 7 , - 680876936 ) , s , m , e [ n + 1 ] , 12 , - 389564586 ) , a , s , e [ n + 2 ] , 17 , 606105819 ) , p , a , e [ n + 3 ] , 22 , - 1044525330 ) , m = l ( m , p = l ( p , a = l ( a , s , m , p , e [ n + 4 ] , 7 , - 176418897 ) , s , m , e [ n + 5 ] , 12 , 1200080426 ) , a , s , e [ n + 6 ] , 17 , - 1473231341 ) , p , a , e [ n + 7 ] , 22 , - 45705983 ) , m = l ( m , p = l ( p , a = l ( a , s , m , p , e [ n + 8 ] , 7 , 1770035416 ) , s , m , e [ n + 9 ] , 12 , - 1958414417 ) , a , s , e [ n + 10 ] , 17 , - 42063 ) , p , a , e [ n + 11 ] , 22 , - 1990404162 ) , m = l ( m , p = l ( p , a = l ( a , s , m , p , e [ n + 12 ] , 7 , 1804603682 ) , s , m , e [ n + 13 ] , 12 , - 40341101 ) , a , s , e [ n + 14 ] , 17 , - 1502002290 ) , p , a , e [ n + 15 ] , 22 , 1236535329 ) , m = d ( m , p = d ( p , a = d ( a , s , m , p , e [ n + 1 ] , 5 , - 165796510 ) , s , m , e [ n + 6 ] , 9 , - 1069501632 ) , a , s , e [ n + 11 ] , 14 , 643717713 ) , p , a , e [ n ] , 20 , - 373897302 ) , m = d ( m , p = d ( p , a = d ( a , s , m , p , e [ n + 5 ] , 5 , - 701558691 ) , s , m , e [ n + 10 ] , 9 , 38016083 ) , a , s , e [ n + 15 ] , 14 , - 660478335 ) , p , a , e [ n + 4 ] , 20 , - 405537848 ) , m = d ( m , p = d ( p , a = d ( a , s , m , p , e [ n + 9 ] , 5 , 568446438 ) , s , m , e [ n + 14 ] , 9 , - 1019803690 ) , a , s , e [ n + 3 ] , 14 , - 187363961 ) , p , a , e [ n + 8 ] , 20 , 1163531501 ) , m = d ( m , p = d ( p , a = d ( a , s , m , p , e [ n + 13 ] , 5 , - 1444681467 ) , s , m , e [ n + 2 ] , 9 , - 51403784 ) , a , s , e [ n + 7 ] , 14 , 1735328473 ) , p , a , e [ n + 12 ] , 20 , - 1926607734 ) , m = h ( m , p = h ( p , a = h ( a , s , m , p , e [ n + 5 ] , 4 , - 378558 ) , s , m , e [ n + 8 ] , 11 , - 2022574463 ) , a , s , e [ n + 11 ] , 16 , 1839030562 ) , p , a , e [ n + 14 ] , 23 , - 35309556 ) , m = h ( m , p = h ( p , a = h ( a , s , m , p , e [ n + 1 ] , 4 , - 1530992060 ) , s , m , e [ n + 4 ] , 11 , 1272893353 ) , a , s , e [ n + 7 ] , 16 , - 155497632 ) , p , a , e [ n + 10 ] , 23 , - 1094730640 ) , m = h ( m , p = h ( p , a = h ( a , s , m , p , e [ n + 13 ] , 4 , 681279174 ) , s , m , e [ n ] , 11 , - 358537222 ) , a , s , e [ n + 3 ] , 16 , - 722521979 ) , p , a , e [ n + 6 ] , 23 , 76029189 ) , m = h ( m , p = h ( p , a = h ( a , s , m , p , e [ n + 9 ] , 4 , - 640364487 ) , s , m , e [ n + 12 ] , 11 , - 421815835 ) , a , s , e [ n + 15 ] , 16 , 530742520 ) , p , a , e [ n + 2 ] , 23 , - 995338651 ) , m = f ( m , p = f ( p , a = f ( a , s , m , p , e [ n ] , 6 , - 198630844 ) , s , m , e [ n + 7 ] , 10 , 1126891415 ) , a , s , e [ n + 14 ] , 15 , - 1416354905 ) , p , a , e [ n + 5 ] , 21 , - 57434055 ) , m = f ( m , p = f ( p , a = f ( a , s , m , p , e [ n + 12 ] , 6 , 1700485571 ) , s , m , e [ n + 3 ] , 10 , - 1894986606 ) , a , s , e [ n + 10 ] , 15 , - 1051523 ) , p , a , e [ n + 1 ] , 21 , - 2054922799 ) , m = f ( m , p = f ( p , a = f ( a , s , m , p , e [ n + 8 ] , 6 , 1873313359 ) , s , m , e [ n + 15 ] , 10 , - 30611744 ) , a , s , e [ n + 6 ] , 15 , - 1560198380 ) , p , a , e [ n + 13 ] , 21 , 1309151649 ) , m = f ( m , p = f ( p , a = f ( a , s , m , p , e [ n + 4 ] , 6 , - 145523070 ) , s , m , e [ n + 11 ] , 10 , - 1120210379 ) , a , s , e [ n + 2 ] , 15 , 718787259 ) , p , a , e [ n + 9 ] , 21 , - 343485551 ) , a = c ( a , r ) , s = c ( s , o ) , m = c ( m , i ) , p = c ( p , u ) ;
return [ a , s , m , p ]
}
function p ( e ) {
var t , n = "" ;
for ( t = 0 ; t < 32 * e . length ; t += 8 ) n += String . fromCharCode ( e [ t >> 5 ] >>> t % 32 & 255 ) ;
return n
}
function g ( e ) {
var t , n = [ ] ;
for ( n [ ( e . length >> 2 ) - 1 ] = void 0 , t = 0 ; t < n . length ; t += 1 ) n [ t ] = 0 ;
for ( t = 0 ; t < 8 * e . length ; t += 8 ) n [ t >> 5 ] |= ( 255 & e . charCodeAt ( t / 8 ) ) << t % 32 ;
return n
}
function v ( e ) {
var t , n , r = "" ;
for ( n = 0 ; n < e . length ; n += 1 ) t = e . charCodeAt ( n ) , r += "0123456789abcdef" . charAt ( t >>> 4 & 15 ) + "0123456789abcdef" . charAt ( 15 & t ) ;
return r
}
function w ( e ) {
return unescape ( encodeURIComponent ( e ) )
}
function b ( e ) {
return function ( e ) {
return p ( m ( g ( e ) , 8 * e . length ) )
} ( w ( e ) )
}
function y ( e , t ) {
return function ( e , t ) {
var n , r , o = g ( e ) ,
i = [ ] ,
u = [ ] ;
for ( i [ 15 ] = u [ 15 ] = void 0 , o . length > 16 && ( o = m ( o , 8 * e . length ) ) , n = 0 ; n < 16 ; n += 1 ) i [ n ] = 909522486 ^ o [ n ] , u [ n ] = 1549556828 ^ o [ n ] ;
return r = m ( i . concat ( g ( t ) ) , 512 + 8 * t . length ) , p ( m ( u . concat ( r ) , 640 ) )
} ( w ( e ) , w ( t ) )
}
function q ( e , t , n ) {
return t ? n ? y ( t , e ) : v ( y ( t , e ) ) : n ? b ( e ) : v ( b ( e ) )
}
function A ( e ) {
return ( e = e . toString ( ) ) [ 1 ] ? e : "0" + e
}
function getSign ( e ) {
let t = new Date ( )
e . timestamp = t . getTime ( )
let n = t . getDay ( )
let dayStr = {
1 : "gw2c4y" ,
2 : "n7F41c" ,
3 : "Koyj65" ,
4 : "yLombo" ,
5 : "XAsrDE" ,
6 : "03iTJe" ,
0 : "8osfQu"
}
let r = '' + n + t . getFullYear ( ) + A ( t . getMonth ( ) + 1 ) + A ( t . getDate ( ) ) + A ( t . getHours ( ) ) + A ( t . getMinutes ( ) ) + dayStr [ n ]
o = [ ] ;
for ( var i in e ) o . push ( i ) ;
o . sort ( ) ;
var u = "" ;
for ( i = 0 ; i < o . length ; i ++ ) "" !== e [ o [ i ] ] && null != e [ o [ i ] ] && "null" != e [ o [ i ] ] && ( u += o [ i ] + "=" + e [ o [ i ] ] + "&" ) ;
u += "secret=" + r
e . sign = q ( u ) . toUpperCase ( )
return $ . json2str ( e , '&' ) + '&'
}
! ( async ( ) => {
if ( typeof $request !== "undefined" ) {
await GetRewrite ( )
} else {
if ( ! ( await checkEnv ( ) ) ) return ;
for ( let user of userList ) {
console . log ( ` \n ============= 账号[ ${ user . index } ] ============= ` )
await user . getUserInfo ( false ) ;
}
let validUserList = userList . filter ( x => x . valid )
if ( validUserList . length > 0 ) {
console . log ( ` \n ============= 开始阅读 ============= ` )
let taskall = [ ]
for ( let user of validUserList ) {
taskall . push ( user . userTask ( ) )
}
await Promise . all ( taskall ) ;
console . log ( ` \n ============= 提现 ============= ` )
for ( let user of validUserList ) {
await user . userExchangeTask ( true ) ;
}
}
await $ . showmsg ( ) ;
}
} ) ( )
. catch ( ( e ) => console . log ( e ) )
. finally ( ( ) => $ . done ( ) )
///////////////////////////////////////////////////////////////////
async function GetRewrite ( ) {
}
async function checkEnv ( ) {
if ( userCookie ) {
let splitor = envSplitor [ 0 ] ;
for ( let sp of envSplitor ) {
if ( userCookie . indexOf ( sp ) > - 1 ) {
splitor = sp ;
break ;
}
}
for ( let userCookies of userCookie . split ( splitor ) ) {
if ( userCookies ) userList . push ( new UserInfo ( userCookies ) )
}
userCount = userList . length
} else {
console . log ( '未找到CK' )
return ;
}
console . log ( ` 共找到 ${ userCount } 个账号 ` )
return true
}
////////////////////////////////////////////////////////////////////
function populateUrlObject ( url , body = '' ) {
let host = url . replace ( '//' , '/' ) . split ( '/' ) [ 1 ]
let urlObject = {
url : url ,
headers : {
'Host' : host ,
'Connection' : 'keep-alive' ,
//'Origin': Origin,
'User-Agent' : defaultUA ,
//'Referer': Referer,
} ,
timeout : 5000 ,
}
if ( body ) {
urlObject . body = body
urlObject . headers [ 'Content-Type' ] = 'application/x-www-form-urlencoded;charset=utf-8'
//urlObject.headers['Content-Length'] = urlObject.body ? urlObject.body.length : 0
}
return urlObject ;
}
async function httpRequest ( method , url ) {
httpResult = null , httpReq = null , httpResp = null ;
return new Promise ( ( resolve ) => {
$ . send ( method , url , async ( err , req , resp ) => {
try {
httpReq = req ;
httpResp = resp ;
if ( err ) {
console . log ( ` ${ method } 请求失败 ` ) ;
console . log ( JSON . stringify ( err ) ) ;
} else {
if ( resp . body ) {
if ( typeof resp . body == "object" ) {
httpResult = resp . body ;
} else {
try {
httpResult = JSON . parse ( resp . body ) ;
} catch ( e ) {
httpResult = resp . body ;
}
}
}
}
} catch ( e ) {
console . log ( e ) ;
} finally {
resolve ( ) ;
}
} ) ;
} ) ;
}
////////////////////////////////////////////////////////////////////
//RSA加密,JSEncrypt
function RSA ( msg , key ) {
let enc = new JSEncrypt ( ) ;
enc . setPublicKey ( key )
return enc . encrypt ( msg ) . toString ( ) ;
}
//AES/DES加解密,CryptoJS
function EncryptCrypto ( method , mode , padding , message , key , iv ) {
return CryptoJS [ method ] . encrypt (
CryptoJS . enc . Utf8 . parse ( message ) ,
CryptoJS . enc . Utf8 . parse ( key ) ,
{ mode : CryptoJS . mode [ mode ] , padding : CryptoJS . pad [ padding ] , iv : CryptoJS . enc . Utf8 . parse ( iv ) }
) . ciphertext . toString ( CryptoJS . enc . Base64 ) ;
}
function DecryptCrypto ( method , mode , padding , message , key , iv ) {
return CryptoJS [ method ] . decrypt (
{ ciphertext : CryptoJS . enc . Base64 . parse ( message ) } ,
CryptoJS . enc . Utf8 . parse ( key ) ,
{ mode : CryptoJS . mode [ mode ] , padding : CryptoJS . pad [ padding ] , iv : CryptoJS . enc . Utf8 . parse ( iv ) }
) . toString ( CryptoJS . enc . Utf8 ) ;
}
//Base64加解密
var Base64 = { _ keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" , encode : function ( e ) { var t = "" ; var n , r , i , s , o , u , a ; var f = 0 ; e = Base64 . _ utf8_encode ( e ) ; while ( f < e . length ) { n = e . charCodeAt ( f ++ ) ; r = e . charCodeAt ( f ++ ) ; i = e . charCodeAt ( f ++ ) ; s = n >> 2 ; o = ( n & 3 ) << 4 | r >> 4 ; u = ( r & 15 ) << 2 | i >> 6 ; a = i & 63 ; if ( isNaN ( r ) ) { u = a = 64 } else if ( isNaN ( i ) ) { a = 64 } t = t + this . _ keyStr . charAt ( s ) + this . _ keyStr . charAt ( o ) + this . _ keyStr . charAt ( u ) + this . _ keyStr . charAt ( a ) } return t } , decode : function ( e ) { var t = "" ; var n , r , i ; var s , o , u , a ; var f = 0 ; e = e . replace ( /[^A-Za-z0-9+/=]/g , "" ) ; while ( f < e . length ) { s = this . _ keyStr . indexOf ( e . charAt ( f ++ ) ) ; o = this . _ keyStr . indexOf ( e . charAt ( f ++ ) ) ; u = this . _ keyStr . indexOf ( e . charAt ( f ++ ) ) ; a = this . _ keyStr . indexOf ( e . charAt ( f ++ ) ) ; n = s << 2 | o >> 4 ; r = ( o & 15 ) << 4 | u >> 2 ; i = ( u & 3 ) << 6 | a ; t = t + String . fromCharCode ( n ) ; if ( u != 64 ) { t = t + String . fromCharCode ( r ) } if ( a != 64 ) { t = t + String . fromCharCode ( i ) } } t = Base64 . _ utf8_decode ( t ) ; return t } , _ utf8_encode : function ( e ) { e = e . replace ( /rn/g , "n" ) ; var t = "" ; for ( var n = 0 ; n < e . length ; n ++ ) { var r = e . charCodeAt ( n ) ; if ( r < 128 ) { t += String . fromCharCode ( r ) } else if ( r > 127 && r < 2048 ) { t += String . fromCharCode ( r >> 6 | 192 ) ; t += String . fromCharCode ( r & 63 | 128 ) } else { t += String . fromCharCode ( r >> 12 | 224 ) ; t += String . fromCharCode ( r >> 6 & 63 | 128 ) ; t += String . fromCharCode ( r & 63 | 128 ) } } return t } , _ utf8_decode : function ( e ) { var t = "" ; var n = 0 ; var r = c1 = c2 = 0 ; while ( n < e . length ) { r = e . charCodeAt ( n ) ; if ( r < 128 ) { t += String . fromCharCode ( r ) ; n ++ } else if ( r > 191 && r < 224 ) { c2 = e . charCodeAt ( n + 1 ) ; t += String . fromCharCode ( ( r & 31 ) << 6 | c2 & 63 ) ; n += 2 } else { c2 = e . charCodeAt ( n + 1 ) ; c3 = e . charCodeAt ( n + 2 ) ; t += String . fromCharCode ( ( r & 15 ) << 12 | ( c2 & 63 ) << 6 | c3 & 63 ) ; n += 3 } } return t } }
//MD5
function MD5Encrypt ( a ) { function b ( a , b ) { return a << b | 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 ) << h , i ++ ; return b = ( i - i % 4 ) / 4 , h = i % 4 * 8 , g [ b ] = g [ b ] | 128 << h , g [ f - 2 ] = c << 3 , g [ f - 1 ] = c >>> 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 ; c < a . length ; c ++ ) { var d = a . charCodeAt ( c ) ; 128 > d ? 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 < x . length ; o += 16 ) p = t , q = u , r = v , s = w , t = h ( t , u , v , w , x [ o + 0 ] , y , 3614090360 ) , w = h ( w , t , u , v , x [ o + 1 ] , z , 3905402710 ) , v = h ( v , w , t , u , x [ o + 2 ] , A , 606105819 ) , u = h ( u , v , w , t , x [ o + 3 ] , B , 3250441966 ) , t = h ( t , u , v , w , x [ o + 4 ] , y , 4118548399 ) , w = h ( w , t , u , v , x [ o + 5 ] , z , 1200080426 ) , v = h ( v , w , t , u , x [ o + 6 ] , A , 2821735955 ) , u = h ( u , v , w , t , x [ o + 7 ] , B , 4249261313 ) , t = h ( t , u , v , w , x [ o + 8 ] , y , 1770035416 ) , w = h ( w , t , u , v , x [ o + 9 ] , z , 2336552879 ) , v = h ( v , w , t , u , x [ o + 10 ] , A , 4294925233 ) , u = h ( u , v , w , t , x [ o + 11 ] , B , 2304563134 ) , t = h ( t , u , v , w , x [ o + 12 ] , y , 1804603682 ) , w = h ( w , t , u , v , x [ o + 13 ] , z , 4254626195 ) , v = h ( v , w , t , u , x [ o + 14 ] , A , 2792965006 ) , u = h ( u , v , w , t , x [ o + 15 ] , B , 1236535329 ) , t = i ( t , u , v , w , x [ o + 1 ] , C , 4129170786 ) , w = i ( w , t , u , v , x [ o + 6 ] , D , 3225465664 ) , v = i ( v , w , t , u , x [ o + 11 ] , E , 643717713 ) , u = i ( u , v , w , t , x [ o + 0 ] , F , 3921069994 ) , t = i ( t , u , v , w , x [ o + 5 ] , C , 3593408605 ) , w = i ( w , t , u , v , x [ o + 10 ] , D , 38016083 ) , v = i ( v , w , t , u , x [ o + 15 ] , E , 3634488961 ) , u = i ( u , v , w , t , x [ o + 4 ] , F , 3889429448 ) , t = i ( t , u , v , w , x [ o + 9 ] , C , 568446438 ) , w = i ( w , t , u , v , x [ o + 14 ] , D , 3275163606 ) , v = i ( v , w , t , u , x [ o + 3 ] , E , 4107603335 ) , u = i ( u , v , w , t , x [ o + 8 ] , F , 1163531501 ) , t = i ( t , u , v , w , x [ o + 13 ] , C , 2850285829 ) , w = i ( w , t , u , v , x [ o + 2 ] , D , 4243563512 ) , v = i ( v , w , t , u , x [ o + 7 ] , E , 1735328473 ) , u = i ( u , v , w , t , x [ o + 12 ] , F , 2368359562 ) , t = j ( t , u , v , w , x [ o + 5 ] , G , 4294588738 ) , w = j ( w , t , u , v , x [ o + 8 ] , H , 2272392833 ) , v = j ( v , w , t , u , x [ o + 11 ] , I , 1839030562 ) , u = j ( u , v , w , t , x [ o + 14 ] , J , 4259657740 ) , t = j ( t , u , v , w , x [ o + 1 ] , G , 2763975236 ) , w = j ( w , t , u , v , x [ o + 4 ] , H , 1272893353 ) , v = j ( v , w , t , u , x [ o + 7 ] , I , 4139469664 ) , u = j ( u , v , w , t , x [ o + 10 ] , J , 3200236656 ) , t = j ( t , u , v , w , x [ o + 13 ] , G , 681279174 ) , w = j ( w , t , u , v , x [ o + 0 ] , H , 3936430074 ) , v = j ( v , w , t , u , x [ o + 3 ] , I , 3572445317 ) , u = j ( u , v , w , t , x [ o + 6 ] , J , 76029189 ) , t = j ( t , u , v , w , x [ o + 9 ] , G , 3654602809 ) , w = j ( w , t , u , v , x [ o + 12 ] , H , 3873151461 ) , v = j ( v , w , t , u , x [ o + 15 ] , I , 530742520 ) , u = j ( u , v , w , t , x [ o + 2 ] , J , 3299628645 ) , t = k ( t , u , v , w , x [ o + 0 ] , K , 4096336452 ) , w = k ( w , t , u , v , x [ o + 7 ] , L , 1126891415 ) , v = k ( v , w , t , u , x [ o + 14 ] , M , 2878612391 ) , u = k ( u , v , w , t , x [ o + 5 ] , N , 4237533241 ) , t = k ( t , u , v , w , x [ o + 12 ] , K , 1700485571 ) , w = k ( w , t , u , v , x [ o + 3 ] , L , 2399980690 ) , v = k ( v , w , t , u , x [ o + 10 ] , M , 4293915773 ) , u = k ( u , v , w , t , x [ o + 1 ] , N , 2240044497 ) , t = k ( t , u , v , w , x [ o + 8 ] , K , 1873313359 ) , w = k ( w , t , u , v , x [ o + 15 ] , L , 4264355552 ) , v = k ( v , w , t , u , x [ o + 6 ] , M , 2734768916 ) , u = k ( u , v , w , t , x [ o + 13 ] , N , 1309151649 ) , t = k ( t , u , v , w , x [ o + 4 ] , K , 4149444226 ) , w = k ( w , t , u , v , x [ o + 11 ] , L , 3174756917 ) , v = k ( v , w , t , u , x [ o + 2 ] , M , 718787259 ) , u = k ( u , v , w , t , x [ o + 9 ] , N , 3951481745 ) , t = c ( t , p ) , u = c ( u , q ) , v = c ( v , r ) , w = c ( w , s ) ; var O = m ( t ) + m ( u ) + m ( v ) + m ( w ) ; return O . toLowerCase ( ) }
//SHA1
function SHA1Encrypt ( msg ) { function add ( x , y ) { return ( ( x & 0x7FFFFFFF ) + ( y & 0x7FFFFFFF ) ) ^ ( x & 0x80000000 ) ^ ( y & 0x80000000 ) ; } function SHA1hex ( num ) { var sHEXChars = "0123456789abcdef" ; var str = "" ; for ( var j = 7 ; j >= 0 ; j -- ) str += sHEXChars . charAt ( ( num >> ( j * 4 ) ) & 0x0F ) ; return str ; } function AlignSHA1 ( sIn ) { var nblk = ( ( sIn . length + 8 ) >> 6 ) + 1 , blks = new Array ( nblk * 16 ) ; for ( var i = 0 ; i < nblk * 16 ; i ++ ) blks [ i ] = 0 ; for ( i = 0 ; i < sIn . length ; i ++ ) blks [ i >> 2 ] |= sIn . charCodeAt ( i ) << ( 24 - ( i & 3 ) * 8 ) ; blks [ i >> 2 ] |= 0x80 << ( 24 - ( i & 3 ) * 8 ) ; blks [ nblk * 16 - 1 ] = sIn . length * 8 ; return blks ; } function rol ( num , cnt ) { return ( num << cnt ) | ( num >>> ( 32 - cnt ) ) ; } function ft ( t , b , c , d ) { if ( t < 20 ) return ( b & c ) | ( ( ~ b ) & d ) ; if ( t < 40 ) return b ^ c ^ d ; if ( t < 60 ) return ( b & c ) | ( b & d ) | ( c & d ) ; return b ^ c ^ d ; } function kt ( t ) { return ( t < 20 ) ? 1518500249 : ( t < 40 ) ? 1859775393 : ( t < 60 ) ? - 1894007588 : - 899497514 ; } var x = AlignSHA1 ( msg ) ; var w = new Array ( 80 ) ; var a = 1732584193 ; var b = - 271733879 ; var c = - 1732584194 ; var d = 271733878 ; var e = - 1009589776 ; for ( var i = 0 ; i < x . length ; i += 16 ) { var olda = a ; var oldb = b ; var oldc = c ; var oldd = d ; var olde = e ; for ( var j = 0 ; j < 80 ; j ++ ) { if ( j < 16 ) w [ j ] = x [ i + j ] ; else w [ j ] = rol ( w [ j - 3 ] ^ w [ j - 8 ] ^ w [ j - 14 ] ^ w [ j - 16 ] , 1 ) ; t = add ( add ( rol ( a , 5 ) , ft ( j , b , c , d ) ) , add ( add ( e , w [ j ] ) , kt ( j ) ) ) ; e = d ; d = c ; c = rol ( b , 30 ) ; b = a ; a = t ; } a = add ( a , olda ) ; b = add ( b , oldb ) ; c = add ( c , oldc ) ; d = add ( d , oldd ) ; e = add ( e , olde ) ; } SHA1Value = SHA1hex ( a ) + SHA1hex ( b ) + SHA1hex ( c ) + SHA1hex ( d ) + SHA1hex ( e ) ; return SHA1Value ; }
//SHA256
function SHA256 ( n ) { const r = 8 , t = 0 ; function o ( n , r ) { const t = ( 65535 & n ) + ( 65535 & r ) ; return ( n >> 16 ) + ( r >> 16 ) + ( t >> 16 ) << 16 | 65535 & t } function e ( n , r ) { return n >>> r | n << 32 - r } function u ( n , r ) { return n >>> r } function c ( n , r , t ) { return n & r ^ ~ n & t } function f ( n , r , t ) { return n & r ^ n & t ^ r & t } function i ( n ) { return e ( n , 2 ) ^ e ( n , 13 ) ^ e ( n , 22 ) } function h ( n ) { return e ( n , 6 ) ^ e ( n , 11 ) ^ e ( n , 25 ) } function C ( n ) { return e ( n , 7 ) ^ e ( n , 18 ) ^ u ( n , 3 ) } return function ( n ) { const r = t ? "0123456789ABCDEF" : "0123456789abcdef" ; let o = "" ; for ( let t = 0 ; t < 4 * n . length ; t ++ ) o += r . charAt ( n [ t >> 2 ] >> 8 * ( 3 - t % 4 ) + 4 & 15 ) + r . charAt ( n [ t >> 2 ] >> 8 * ( 3 - t % 4 ) & 15 ) ; return o } ( function ( n , r ) { const t = [ 1116352408 , 1899447441 , 3049323471 , 3921009573 , 961987163 , 1508970993 , 2453635748 , 2870763221 , 3624381080 , 310598401 , 607225278 , 1426881987 , 1925078388 , 2162078206 , 2614888103 , 3248222580 , 3835390401 , 4022224774 , 264347078 , 604807628 , 770255983 , 1249150122 , 1555081692 , 1996064986 , 2554220882 , 2821834349 , 2952996808 , 3210313671 , 3336571891 , 3584528711 , 113926993 , 338241895 , 666307205 , 773529912 , 1294757372 , 1396182291 , 1695183700 , 1986661051 , 2177026350 , 2456956037 , 2730485921 , 2820302411 , 3259730800 , 3345764771 , 3516065817 , 3600352804 , 4094571909 , 275423344 , 430227734 , 506948616 , 659060556 , 883997877 , 958139571 , 1322822218 , 1537002063 , 1747873779 , 1955562222 , 2024104815 , 2227730452 , 2361852424 , 2428436474 , 2756734187 , 3204031479 , 3329325298 ] , a = [ 1779033703 , 3144134277 , 1013904242 , 2773480762 , 1359893119 , 2600822924 , 528734635 , 1541459225 ] , g = new Array ( 64 ) ; let l , d , A , S , m , s , b , p , v , w , y , B ; for ( n [ r >> 5 ] |= 128 << 24 - r % 32 , n [ 15 + ( r + 64 >> 9 << 4 ) ] = r , v = 0 ; v < n . length ; v += 16 ) { for ( l = a [ 0 ] , d = a [ 1 ] , A = a [ 2 ] , S = a [ 3 ] , m = a [ 4 ] , s = a [ 5 ] , b = a [ 6 ] , p = a [ 7 ] , w = 0 ; w < 64 ; w ++ ) g [ w ] = w < 16 ? n [ w + v ] : o ( o ( o ( e ( D = g [ w - 2 ] , 17 ) ^ e ( D , 19 ) ^ u ( D , 10 ) , g [ w - 7 ] ) , C ( g [ w - 15 ] ) ) , g [ w - 16 ] ) , y = o ( o ( o ( o ( p , h ( m ) ) , c ( m , s , b ) ) , t [ w ] ) , g [ w ] ) , B = o ( i ( l ) , f ( l , d , A ) ) , p = b , b = s , s = m , m = o ( S , y ) , S = A , A = d , d = l , l = o ( y , B ) ; a [ 0 ] = o ( l , a [ 0 ] ) , a [ 1 ] = o ( d , a [ 1 ] ) , a [ 2 ] = o ( A , a [ 2 ] ) , a [ 3 ] = o ( S , a [ 3 ] ) , a [ 4 ] = o ( m , a [ 4 ] ) , a [ 5 ] = o ( s , a [ 5 ] ) , a [ 6 ] = o ( b , a [ 6 ] ) , a [ 7 ] = o ( p , a [ 7 ] ) } var D ; return a } ( function ( n ) { const t = [ ] , o = ( 1 << r ) - 1 ; for ( let e = 0 ; e < n . length * r ; e += r ) t [ e >> 5 ] |= ( n . charCodeAt ( e / r ) & o ) << 24 - e % 32 ; return t } ( n = function ( n ) { n = n . replace ( /\r\n/g , "\n" ) ; let r = "" ; for ( let t = 0 ; t < n . length ; t ++ ) { const o = n . charCodeAt ( t ) ; o < 128 ? r += String . fromCharCode ( o ) : o > 127 && o < 2048 ? ( r += String . fromCharCode ( o >> 6 | 192 ) , r += String . fromCharCode ( 63 & o | 128 ) ) : ( r += String . fromCharCode ( o >> 12 | 224 ) , r += String . fromCharCode ( o >> 6 & 63 | 128 ) , r += String . fromCharCode ( 63 & o | 128 ) ) } return r } ( n ) ) , n . length * r ) ) }
////////////////////////////////////////////////////////////////////
function Env ( name , env ) {
"undefined" != typeof process && JSON . stringify ( process . env ) . indexOf ( "GITHUB" ) > - 1 && process . exit ( 0 ) ;
return new class {
constructor ( name , env ) {
this . name = name
this . notifyStr = ''
this . startTime = ( new Date ) . getTime ( )
Object . assign ( this , env )
console . log ( ` ${ this . name } 开始运行: \n ` )
}
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
}
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
}
send ( m , t , e = ( ( ) => { } ) ) {
if ( m != 'get' && m != 'post' && m != 'put' && m != 'delete' ) {
console . log ( ` 无效的http方法: ${ m } ` ) ;
return ;
}
if ( m == 'get' && t . headers ) {
delete t . headers [ "Content-Type" ] ;
delete t . headers [ "Content-Length" ] ;
} else if ( t . body && t . headers ) {
if ( ! t . headers [ "Content-Type" ] ) t . headers [ "Content-Type" ] = "application/x-www-form-urlencoded" ;
}
if ( this . isSurge ( ) || this . isLoon ( ) ) {
if ( this . isSurge ( ) && this . isNeedRewrite ) {
t . headers = t . headers || { } ;
Object . assign ( t . headers , { "X-Surge-Skip-Scripting" : ! 1 } ) ;
}
let conf = {
method : m ,
url : t . url ,
headers : t . headers ,
timeout : t . timeout ,
data : t . body
} ;
if ( m == 'get' ) delete conf . data
$axios ( conf ) . then ( t => {
const {
status : i ,
request : q ,
headers : r ,
data : o
} = t ;
e ( null , q , {
statusCode : i ,
headers : r ,
body : o
} ) ;
} ) . catch ( err => console . log ( err ) )
} else if ( this . isQuanX ( ) ) {
t . method = m . toUpperCase ( ) , this . isNeedRewrite && ( t . opts = t . opts || { } , Object . assign ( t . opts , {
hints : ! 1
} ) ) ,
$task . fetch ( t ) . then ( t => {
const {
statusCode : i ,
request : q ,
headers : r ,
body : o
} = t ;
e ( null , q , {
statusCode : i ,
headers : r ,
body : o
} )
} , t => e ( t ) )
} else if ( this . isNode ( ) ) {
this . got = this . got ? this . got : require ( "got" ) ;
const {
url : s ,
... i
} = t ;
this . instance = this . got . extend ( {
followRedirect : false
} ) ;
this . instance [ m ] ( s , i ) . then ( t => {
const {
statusCode : i ,
request : q ,
headers : r ,
body : o
} = t ;
e ( null , q , {
statusCode : i ,
headers : r ,
body : o
} )
} , t => {
const {
message : s ,
response : i
} = t ;
e ( s , i , i && i . body )
} )
}
}
time ( t ) {
let e = {
"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 ( )
} ;
/(y+)/ . test ( t ) && ( t = t . replace ( RegExp . $1 , ( ( new Date ) . getFullYear ( ) + "" ) . substr ( 4 - RegExp . $1 . length ) ) ) ;
for ( let s in e )
new RegExp ( "(" + s + ")" ) . test ( t ) && ( t = t . replace ( RegExp . $1 , 1 == RegExp . $1 . length ? e [ s ] : ( "00" + e [ s ] ) . substr ( ( "" + e [ s ] ) . length ) ) ) ;
return t
}
async showmsg ( ) {
if ( ! this . notifyStr ) return ;
let notifyBody = this . name + " 运行通知\n\n" + this . notifyStr
if ( $ . isNode ( ) ) {
var notify = require ( './sendNotify' ) ;
console . log ( '\n============== 推送 ==============' )
await notify . sendNotify ( this . name , notifyBody ) ;
} else {
this . msg ( notifyBody ) ;
}
}
logAndNotify ( str ) {
console . log ( str )
this . notifyStr += str
this . notifyStr += '\n'
}
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
}
}
}
} ;
this . isMute || ( this . isSurge ( ) || this . isLoon ( ) ? $notification . post ( e , s , i , o ( r ) ) : this . isQuanX ( ) && $notify ( e , s , i , o ( r ) ) ) ;
let h = [ "" , "============== 系统通知 ==============" ] ;
h . push ( e ) ,
s && h . push ( s ) ,
i && h . push ( i ) ,
console . log ( h . join ( "\n" ) )
}
getMin ( a , b ) {
return ( ( a < b ) ? a : b )
}
getMax ( a , b ) {
return ( ( a < b ) ? b : a )
}
padStr ( num , length , padding = '0' ) {
let numStr = String ( num )
let numPad = ( length > numStr . length ) ? ( length - numStr . length ) : 0
let retStr = ''
for ( let i = 0 ; i < numPad ; i ++ ) {
retStr += padding
}
retStr += numStr
return retStr ;
}
json2str ( obj , c , encodeUrl = false ) {
let ret = [ ]
for ( let keys of Object . keys ( obj ) . sort ( ) ) {
let v = obj [ keys ]
if ( v && encodeUrl ) v = encodeURIComponent ( v )
ret . push ( keys + '=' + v )
}
return ret . join ( c ) ;
}
str2json ( str , decodeUrl = false ) {
let ret = { }
for ( let item of str . split ( '&' ) ) {
if ( ! item ) continue ;
let idx = item . indexOf ( '=' )
if ( idx == - 1 ) continue ;
let k = item . substr ( 0 , idx )
let v = item . substr ( idx + 1 )
if ( decodeUrl ) v = decodeURIComponent ( v )
ret [ k ] = v
}
return ret ;
}
randomString ( len , charset = 'abcdef0123456789' ) {
let str = '' ;
for ( let i = 0 ; i < len ; i ++ ) {
str += charset . charAt ( Math . floor ( Math . random ( ) * charset . length ) ) ;
}
return str ;
}
randomList ( a ) {
let idx = Math . floor ( Math . random ( ) * a . length )
return a [ idx ]
}
wait ( t ) {
return new Promise ( e => setTimeout ( e , t ) )
}
done ( t = { } ) {
const e = ( new Date ) . getTime ( ) ,
s = ( e - this . startTime ) / 1e3 ;
console . log ( ` \n ${ this . name } 运行结束,共运行了 ${ s } 秒! ` )
if ( this . isSurge ( ) || this . isQuanX ( ) || this . isLoon ( ) ) $done ( t )
}
} ( name , env )
}