1
- import { BrowserWindow , MenuItemConstructorOptions , Menu , session , dialog } from "electron" ;
1
+ import {
2
+ BrowserWindow ,
3
+ MenuItemConstructorOptions ,
4
+ Menu ,
5
+ session ,
6
+ dialog ,
7
+ ipcMain ,
8
+ } from "electron" ;
9
+ import icon from "../../public/icons/favicon.png?asset" ;
2
10
3
11
const openLoginWin = ( mainWin : BrowserWindow ) => {
4
12
const loginSession = session . fromPartition ( "login-win" ) ;
5
13
const loginWin = new BrowserWindow ( {
6
14
parent : mainWin ,
15
+ title : "登录网易云音乐" ,
7
16
width : 1280 ,
8
17
height : 800 ,
9
18
center : true ,
10
19
modal : true ,
20
+ icon,
11
21
// resizable: false,
12
22
// movable: false,
13
23
// minimizable: false,
@@ -20,35 +30,90 @@ const openLoginWin = (mainWin: BrowserWindow) => {
20
30
} ) ;
21
31
22
32
// 打开网易云
23
- loginWin . loadURL ( "https://music.163.com/#/login " ) ;
33
+ loginWin . loadURL ( "https://music.163.com/#/my/ " ) ;
24
34
25
35
// 阻止新窗口创建
26
36
loginWin . webContents . setWindowOpenHandler ( ( ) => {
27
37
return { action : "deny" } ;
28
38
} ) ;
29
39
40
+ // 登录完成
41
+ const loginFinish = async ( ) => {
42
+ if ( ! loginWin ) return ;
43
+ // 获取 Cookie
44
+ const cookies = await loginWin . webContents . session . cookies . get ( { name : "MUSIC_U" } ) ;
45
+ if ( ! cookies ?. [ 0 ] ?. value ) {
46
+ dialog . showMessageBox ( {
47
+ type : "info" ,
48
+ title : "登录失败" ,
49
+ message : "未查找到登录信息,请重试" ,
50
+ } ) ;
51
+ return ;
52
+ }
53
+ const value = `MUSIC_U=${ cookies [ 0 ] . value } ;` ;
54
+ // 发送回主进程
55
+ mainWin ?. webContents . send ( "send-cookies" , value ) ;
56
+ await loginSession ?. clearStorageData ( ) ;
57
+ loginWin . close ( ) ;
58
+ } ;
59
+
60
+ // 页面注入
61
+ // loginWin.webContents.once("did-finish-load", () => {
62
+ // const script = `
63
+ // const style = document.createElement('style');
64
+ // style.innerHTML = \`
65
+ // .login-btn {
66
+ // position: fixed;
67
+ // left: 0;
68
+ // bottom: 0;
69
+ // width: 100%;
70
+ // height: 80px;
71
+ // display: flex;
72
+ // align-items: center;
73
+ // justify-content: center;
74
+ // background-color: #242424;
75
+ // z-index: 99999;
76
+ // }
77
+
78
+ // .login-btn span {
79
+ // color: white;
80
+ // margin-right: 20px;
81
+ // }
82
+
83
+ // .login-btn button {
84
+ // border: none;
85
+ // outline: none;
86
+ // background-color: #c20c0c;
87
+ // border-radius: 25px;
88
+ // color: white;
89
+ // height: 40px;
90
+ // padding: 0 20px;
91
+ // cursor: pointer;
92
+ // }
93
+ // \`;
94
+ // document.head.appendChild(style);
95
+ // const div = document.createElement('div');
96
+ // div.className = 'login-btn';
97
+ // div.innerHTML = \`
98
+ // <span>请在登录成功后点击</span>
99
+ // <button>登录完成</button>
100
+ // \`;
101
+ // div.querySelector('button').addEventListener('click', () => {
102
+ // window.electron.ipcRenderer.send("login-success");
103
+ // });
104
+ // document.body.appendChild(div);
105
+ // `;
106
+ // loginWin.webContents.executeJavaScript(script);
107
+ // });
108
+
109
+ // 监听事件
110
+ ipcMain . on ( "login-success" , loginFinish ) ;
111
+
30
112
// 菜单栏
31
113
const menuTemplate : MenuItemConstructorOptions [ ] = [
32
114
{
33
115
label : "登录完成" ,
34
- click : async ( ) => {
35
- if ( ! loginWin ) return ;
36
- // 获取 Cookie
37
- const cookies = await loginWin . webContents . session . cookies . get ( { name : "MUSIC_U" } ) ;
38
- if ( ! cookies ?. [ 0 ] ?. value ) {
39
- dialog . showMessageBox ( {
40
- type : "info" ,
41
- title : "登录失败" ,
42
- message : "未查找到登录信息,请重试" ,
43
- } ) ;
44
- return ;
45
- }
46
- const value = `MUSIC_U=${ cookies [ 0 ] . value } ;` ;
47
- // 发送回主进程
48
- mainWin ?. webContents . send ( "send-cookies" , value ) ;
49
- await loginSession ?. clearStorageData ( ) ;
50
- loginWin . close ( ) ;
51
- } ,
116
+ click : loginFinish ,
52
117
} ,
53
118
] ;
54
119
const menu = Menu . buildFromTemplate ( menuTemplate ) ;
0 commit comments