11import { execSync } from "child_process" ;
22import { close_api , delay , send , startService } from "./utils/utils.js" ;
3+ import { printBlue , printGreen , printMagenta , printRed , printYellow } from "./utils/colorOut.js" ;
34
45async function qrcode ( ) {
56
67 // 启动服务
78 const api = startService ( )
89 await delay ( 2000 )
910 let qrcode = ""
10- const userinfo = [ ]
11+ const USERINFO = process . env . USERINFO
12+ const APPEND_USER = process . env . APPEND_USER
13+ const userinfo = ( USERINFO && APPEND_USER == "是" ) ? JSON . parse ( USERINFO ) : [ ]
1114 const args = process . argv . slice ( 2 ) ;
1215 const number = parseInt ( process . env . NUMBER || args [ 0 ] || "1" )
1316 const pat = process . env . PAT
@@ -19,24 +22,24 @@ async function qrcode() {
1922 qrcode = result . data . qrcode
2023 const img_base64 = result . data . qrcode_img ;
2124 const chunkSize = 1000 ;
22- console . log ( "二维码链接如下, 请在浏览器打开使用APP扫描并确认登录" )
25+ printMagenta ( "二维码链接如下, 请在浏览器打开使用APP扫描并确认登录" )
2326 for ( let i = 0 ; i < img_base64 . length ; i += chunkSize ) {
2427 console . log ( img_base64 . slice ( i , i + chunkSize ) ) ;
2528 }
2629 } else {
27- console . log ( "响应内容" )
30+ printRed ( "响应内容" )
2831 console . dir ( result , { depth : null } )
2932 throw new Error ( "请求出错" )
3033 }
31- console . log ( "正在等待,请扫描二维码并确定登录" )
34+ printMagenta ( "正在等待,请扫描二维码并确定登录" )
3235 // 登录
3336 for ( let i = 0 ; i < 25 ; i ++ ) {
3437 const timestrap = Date . now ( ) ;
3538 const res = await send ( `/login/qr/check?key=${ qrcode } ×trap=${ timestrap } ` , "GET" , { } )
3639 const status = res ?. data ?. status
3740 switch ( status ) {
3841 case 0 :
39- console . log ( "二维码已过期" )
42+ printYellow ( "二维码已过期" )
4043 break
4144
4245 case 1 :
@@ -47,21 +50,34 @@ async function qrcode() {
4750 // console.log("二维码未确认,请点击确认登录")
4851 break
4952 case 4 :
50- console . log ( "登录成功!" )
51- userinfo . push ( {
52- userid : res . data . userid ,
53- token : res . data . token
54- } )
53+ let userAlreadyExist = false
54+ printGreen ( "登录成功!" )
55+ if ( APPEND_USER == "是" ) {
56+ for ( let i = 0 ; i < userinfo . length ; i ++ ) {
57+
58+ if ( userinfo [ i ] . userid == res . data . userid ) {
59+ userAlreadyExist = true
60+ printYellow ( `userid: ${ userinfo [ i ] . userid } 此账号已存在, 仅更新登录信息` )
61+ userinfo [ i ] . token = res . data . token
62+ }
63+ }
64+ }
65+ if ( ! userAlreadyExist ) {
66+ userinfo . push ( {
67+ userid : res . data . userid ,
68+ token : res . data . token
69+ } )
70+ }
5571 break ;
5672 default :
57- console . log ( "请求出错" )
73+ printRed ( "请求出错" )
5874 console . dir ( res , { depth : null } )
5975 }
6076 if ( status == 4 || status == 0 ) {
6177 break
6278 }
6379 if ( i == 24 ) {
64- console . log ( "等待超时\n" )
80+ printRed ( "等待超时\n" )
6581 break
6682 }
6783 await delay ( 5000 )
@@ -72,14 +88,14 @@ async function qrcode() {
7288 if ( pat ) {
7389 try {
7490 execSync ( `gh secret set USERINFO -b'${ userinfoJSON } ' --repo ${ process . env . GITHUB_REPOSITORY } ` ) ;
75- console . log ( "secret <USERINFO> 更改成功" )
91+ printGreen ( "secret <USERINFO> 更改成功" )
7692 } catch ( error ) {
77- console . log ( "自动写入出错,登录信息如下,请手动添加到secret USERINFO" )
78- console . log ( userinfoJSON )
93+ printRed ( "自动写入出错,登录信息如下,请手动添加到secret USERINFO" )
94+ printRed ( userinfoJSON )
7995 }
8096 } else {
81- console . log ( "登录信息如下,把它添加到secret USERINFO 即可" )
82- console . log ( userinfoJSON )
97+ printGreen ( "登录信息如下,把它添加到secret USERINFO 即可" )
98+ printBlue ( userinfoJSON )
8399 }
84100 }
85101 } finally {
0 commit comments