buzzk 1.11.3 โ 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -63
- package/lib/channel.js +7 -10
- package/lib/index.js +2 -0
- package/lib/oauth.js +105 -0
- package/lib/tool.js +125 -1
- package/lib/val.js +22 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -17,97 +17,59 @@
|
|
|
17
17
|
|
|
18
18
|
## ๐ ์
๋ฐ์ดํธ ๋ด์ญ
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
### ๐ 2.0 ์
๋ฐ์ดํธ
|
|
21
|
+
- ๊ณต์ API๋ฅผ ์ผ๋ถ ์ง์ํ๊ธฐ ์์ํ์ด์!
|
|
21
22
|
|
|
22
|
-
>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
>
|
|
27
|
-
|
|
28
|
-
- ์ฑํ
์ฑ๋ ์ฐ๊ฒฐ์ ์ ์งํ์ง ๋ชปํ๋ ๋ฌธ์ ํด๊ฒฐ
|
|
29
|
-
|
|
30
|
-
>
|
|
31
|
-
|
|
32
|
-
- ์ฑํ
์ฑ๋์ด ์์ ๋ ์ค๋ฅ๊ฐ ์๊ธฐ๋ ๋ฌธ์ ํด๊ฒฐ
|
|
33
|
-
|
|
34
|
-
>
|
|
35
|
-
|
|
36
|
-
- onDonation ํจ์ ์ถ๊ฐ
|
|
37
|
-
|
|
38
|
-
- ๋ณธ์ธ ์ธ์ฆ ์ฑํ
์ง์ ์ถ๊ฐ
|
|
39
|
-
|
|
40
|
-
>
|
|
41
|
-
|
|
42
|
-
- ์ฑํ
๋ฐ์ดํฐ์ hasMod ํญ๋ชฉ ์ถ๊ฐ
|
|
43
|
-
|
|
44
|
-
>
|
|
45
|
-
|
|
46
|
-
- JSON์ Parse ํ๋ ์ค ์ค๋ฅ๊ฐ ์๊ธฐ๋ ๋ฌธ์ ํด๊ฒฐ
|
|
47
|
-
|
|
48
|
-
>
|
|
23
|
+
> [!CAUTION]
|
|
24
|
+
> ์ด ๋ฒ์ ์ดํ๋ถํฐ๋ ๊ณต์ API์ ๋น๊ณต์ API๋ฅผ ํผ์ฉํ์ฌ ์ฌ์ฉํฉ๋๋ค.
|
|
25
|
+
> ๊ณต์ API๋ก ๋์ฒด ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ๋ชจ๋ ๊ณต์ API๋ฅผ ์ด์ฉํ ์์ ์
๋๋ค.
|
|
49
26
|
|
|
50
|
-
|
|
27
|
+
> [!WARNING]
|
|
28
|
+
> * ๋น๊ณต์ API ์ ์ฉ ๋ชจ๋์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
|
|
29
|
+
> * ๋น๊ณต์ API๋ก๋ง ์ด๋ฃจ์ด์ง ๋ชจ๋์ ์ฌ์ฉํ์๋ ค๋ฉด
|
|
30
|
+
> `npm install buzzk@1.11.3`
|
|
51
31
|
|
|
52
|
-
## โ๏ธ ๋ง์ด๊ทธ๋ ์ด์
๊ฐ์ด๋ (v.1.
|
|
32
|
+
## โ๏ธ ๋ง์ด๊ทธ๋ ์ด์
๊ฐ์ด๋ (v.1.x -> v.2.0.0)
|
|
53
33
|
|
|
54
34
|
<details>
|
|
55
35
|
<summary>ํผ์ณ๋ณด๊ธฐ</summary>
|
|
56
36
|
|
|
57
|
-
buzzk.
|
|
37
|
+
buzzk.auth
|
|
58
38
|
|
|
59
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> |
|
|
39
|
+
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> | ์ถ๊ฐ |
|
|
60
40
|
|--|--|
|
|
61
|
-
| | buzzk.
|
|
41
|
+
| | buzzk.auth |
|
|
62
42
|
|
|
63
43
|
---
|
|
64
44
|
|
|
65
|
-
|
|
66
|
-
|--|--|
|
|
67
|
-
| | buzzk.channel.follow |
|
|
68
|
-
|
|
69
|
-
---
|
|
45
|
+
buzzk.oauth
|
|
70
46
|
|
|
71
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> |
|
|
47
|
+
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> | ์ถ๊ฐ |
|
|
72
48
|
|--|--|
|
|
73
|
-
| | buzzk.
|
|
49
|
+
| | buzzk.oauth.get |
|
|
74
50
|
|
|
75
51
|
---
|
|
76
52
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> | buzzk.live.getLiveDetail |
|
|
53
|
+
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> | ์ถ๊ฐ |
|
|
80
54
|
|--|--|
|
|
81
|
-
| | buzzk.
|
|
55
|
+
| | buzzk.oauth.refresh |
|
|
82
56
|
|
|
83
57
|
---
|
|
84
58
|
|
|
85
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> |
|
|
59
|
+
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> | ์ถ๊ฐ |
|
|
86
60
|
|--|--|
|
|
87
|
-
| | buzzk.
|
|
61
|
+
| | buzzk.channel.resolve |
|
|
88
62
|
|
|
89
63
|
---
|
|
90
64
|
|
|
91
|
-
buzzk.
|
|
92
|
-
|
|
93
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_change-min.png?raw=true" alt="BUZZK" width="70"> | (return).channel.channelName |
|
|
94
|
-
|--|--|
|
|
95
|
-
| | (return).channel.name |
|
|
96
|
-
|
|
97
|
-
---
|
|
65
|
+
buzzk.channel.get
|
|
98
66
|
|
|
99
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/
|
|
67
|
+
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_delete-min.png?raw=true" alt="BUZZK" width="70"> | (return).channel.description |
|
|
100
68
|
|--|--|
|
|
101
|
-
| | (return).channel.imageURL |
|
|
102
69
|
|
|
103
70
|
---
|
|
104
71
|
|
|
105
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_delete-min.png?raw=true" alt="BUZZK" width="70"> | (return).channel.
|
|
106
|
-
|--|--|
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_delete-min.png?raw=true" alt="BUZZK" width="70"> | (return).channel.verifiedMark |
|
|
72
|
+
| <img src="https://github.com/Emin-G/Img/blob/main/tags/tag_delete-min.png?raw=true" alt="BUZZK" width="70"> | (return).channel.isLive |
|
|
111
73
|
|--|--|
|
|
112
74
|
|
|
113
75
|
</details>
|
|
@@ -120,6 +82,7 @@
|
|
|
120
82
|
## ๐ฅ ๋น ๋ฅธ. ์์.
|
|
121
83
|
|
|
122
84
|
const buzzk = require("buzzk");
|
|
85
|
+
buzzk.auth("ClientID ๊ฐ", "ClientSecret ๊ฐ");
|
|
123
86
|
buzzk.login("NID_AUT ์ฟ ํค ๊ฐ", "NID_SES ์ฟ ํค ๊ฐ");
|
|
124
87
|
|
|
125
88
|
const buzzkChat = buzzk.chat;
|
|
@@ -161,6 +124,22 @@
|
|
|
161
124
|
|
|
162
125
|
## ๐ ์ฌ์ฉ๋ฒ
|
|
163
126
|
|
|
127
|
+
### auth
|
|
128
|
+
|
|
129
|
+
โ
Official API
|
|
130
|
+
|
|
131
|
+
buzzk.auth("ClientID ๊ฐ", "ClientSecret ๊ฐ");
|
|
132
|
+
|
|
133
|
+
https://developers.chzzk.naver.com/application
|
|
134
|
+
๋ค์ด๋ฒ ์น์ง์ง ๊ฐ๋ฐ์ ์ผํฐ์์ ๋ฑ๋ก ํ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
|
|
135
|
+
โ
Official API ํ๊ธฐ๊ฐ ์๋ ๋ชจ๋ ํจ์์์ ์ฌ์ฉ๋ฉ๋๋ค.
|
|
136
|
+
|
|
137
|
+
dotenv์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๊ถ์ฅํฉ๋๋ค.
|
|
138
|
+
|
|
139
|
+
buzzk.auth(process.env.CLIENT_ID, process.env.CLIENT_SECRET);
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
164
143
|
### login
|
|
165
144
|
|
|
166
145
|
buzzk.login("NID_AUT ์ฟ ํค ๊ฐ", "NID_SES ์ฟ ํค ๊ฐ");
|
|
@@ -171,6 +150,56 @@ dotenv์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๊ถ์ฅํฉ๋๋ค.
|
|
|
171
150
|
|
|
172
151
|
---
|
|
173
152
|
|
|
153
|
+
### oauth
|
|
154
|
+
|
|
155
|
+
โ
Official API
|
|
156
|
+
|
|
157
|
+
let oauth = await buzzk.oauth.get("Code ๊ฐ");
|
|
158
|
+
console.log(oauth);
|
|
159
|
+
|
|
160
|
+
<details>
|
|
161
|
+
<summary>return</summary>
|
|
162
|
+
|
|
163
|
+
- Return
|
|
164
|
+
- access
|
|
165
|
+
- refresh
|
|
166
|
+
- expireIn
|
|
167
|
+
|
|
168
|
+
</details>
|
|
169
|
+
|
|
170
|
+
โ
Official API
|
|
171
|
+
|
|
172
|
+
let oauth = await buzzk.oauth.refresh("refreshToken ๊ฐ");
|
|
173
|
+
console.log(oauth);
|
|
174
|
+
|
|
175
|
+
<details>
|
|
176
|
+
<summary>return</summary>
|
|
177
|
+
|
|
178
|
+
- Return
|
|
179
|
+
- access
|
|
180
|
+
- refresh
|
|
181
|
+
- expireIn
|
|
182
|
+
|
|
183
|
+
</details>
|
|
184
|
+
|
|
185
|
+
โ
Official API
|
|
186
|
+
|
|
187
|
+
let oauth = await buzzk.oauth.resolve("accessToken ๊ฐ");
|
|
188
|
+
console.log(oauth);
|
|
189
|
+
|
|
190
|
+
<details>
|
|
191
|
+
<summary>return</summary>
|
|
192
|
+
|
|
193
|
+
- Return
|
|
194
|
+
- channelID
|
|
195
|
+
- name
|
|
196
|
+
- follower
|
|
197
|
+
- imageURL
|
|
198
|
+
|
|
199
|
+
</details>
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
174
203
|
### channel
|
|
175
204
|
|
|
176
205
|
let chSearch = await buzzk.channel.search("๋
น๋๋ก๋ก");
|
|
@@ -194,6 +223,8 @@ dotenv์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๊ถ์ฅํฉ๋๋ค.
|
|
|
194
223
|
|
|
195
224
|
</details>
|
|
196
225
|
|
|
226
|
+
โ
Official API
|
|
227
|
+
|
|
197
228
|
let channel = await buzzk.channel.get("channelID ๊ฐ");
|
|
198
229
|
console.log(channel);
|
|
199
230
|
|
|
@@ -203,10 +234,8 @@ dotenv์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๊ถ์ฅํฉ๋๋ค.
|
|
|
203
234
|
- Return
|
|
204
235
|
- channelID
|
|
205
236
|
- name
|
|
206
|
-
- description
|
|
207
237
|
- follower
|
|
208
238
|
- imageURL
|
|
209
|
-
- isLive
|
|
210
239
|
|
|
211
240
|
</details>
|
|
212
241
|
|
package/lib/channel.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
const { reqChzzk, exChzzk } = require("./tool.js");
|
|
1
|
+
const { CLIENT, reqChzzk, exChzzk } = require("./tool.js");
|
|
2
2
|
|
|
3
3
|
class chzzkChannel {
|
|
4
|
-
constructor(channelID, name,
|
|
4
|
+
constructor(channelID, name, follower, imageURL) {
|
|
5
5
|
this.channelID = channelID;
|
|
6
6
|
this.name = name;
|
|
7
|
-
this.description = description;
|
|
8
7
|
this.follower = follower;
|
|
9
8
|
this.imageURL = imageURL;
|
|
10
|
-
this.isLive = isLive;
|
|
11
9
|
}
|
|
12
10
|
}
|
|
13
11
|
|
|
@@ -19,10 +17,8 @@ class chzzkChannel {
|
|
|
19
17
|
* @typedef {Object} chzzkChannel
|
|
20
18
|
* @property {string} channelID
|
|
21
19
|
* @property {string} name
|
|
22
|
-
* @property {string} description
|
|
23
20
|
* @property {string} follower
|
|
24
21
|
* @property {string} imageURL
|
|
25
|
-
* @property {boolean} isLive
|
|
26
22
|
*/
|
|
27
23
|
|
|
28
24
|
/**
|
|
@@ -42,7 +38,7 @@ async function search (keyword) {
|
|
|
42
38
|
|
|
43
39
|
for (let o in chSearch) {
|
|
44
40
|
let tempChannel = chSearch[o].channel;
|
|
45
|
-
chRes[Object.keys(chRes).length] = new chzzkChannel(tempChannel.channelId, tempChannel.channelName, tempChannel.
|
|
41
|
+
chRes[Object.keys(chRes).length] = new chzzkChannel(tempChannel.channelId, tempChannel.channelName, tempChannel.followerCount, tempChannel.channelImageUrl);
|
|
46
42
|
}
|
|
47
43
|
|
|
48
44
|
return resolve(chRes);
|
|
@@ -58,11 +54,12 @@ async function search (keyword) {
|
|
|
58
54
|
async function get (channelID) {
|
|
59
55
|
return new Promise(async (resolve, reject) => {
|
|
60
56
|
|
|
61
|
-
let chGet = await
|
|
57
|
+
let chGet = await CLIENT.get("open/v1/channels?channelIds=" + channelID);
|
|
62
58
|
if (chGet.code != 200) return resolve(null);
|
|
63
|
-
chGet = chGet.content;
|
|
64
59
|
|
|
65
|
-
|
|
60
|
+
chGet = chGet.content.data[0];
|
|
61
|
+
|
|
62
|
+
let chRes = new chzzkChannel(chGet.channelId, chGet.channelName, chGet.followerCount, chGet.channelImageUrl);
|
|
66
63
|
|
|
67
64
|
return resolve(chRes);
|
|
68
65
|
|
package/lib/index.js
CHANGED
|
@@ -4,7 +4,9 @@ module.exports = {
|
|
|
4
4
|
channel: require("./channel.js"),
|
|
5
5
|
chat: require("./chat.js").chzzkChat,
|
|
6
6
|
live: require("./live.js"),
|
|
7
|
+
oauth: require("./oauth.js"),
|
|
7
8
|
video: require("./video.js"),
|
|
8
9
|
|
|
10
|
+
auth: require("./val.js").auth,
|
|
9
11
|
login: require("./val.js").login
|
|
10
12
|
}
|
package/lib/oauth.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const { USER, CLIENT } = require("./tool.js");
|
|
2
|
+
const { AUTH, state } = require("./val.js");
|
|
3
|
+
|
|
4
|
+
const channel = require("./channel.js");
|
|
5
|
+
|
|
6
|
+
class chzzkToken {
|
|
7
|
+
constructor(access, refresh, expireIn) {
|
|
8
|
+
this.access = access;
|
|
9
|
+
this.refresh = refresh;
|
|
10
|
+
this.expireIn = expireIn;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {Object} chzzkChannel
|
|
16
|
+
* @property {string} channelID
|
|
17
|
+
* @property {string} name
|
|
18
|
+
* @property {string} follower
|
|
19
|
+
* @property {string} imageURL
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @typedef {Object} chzzkTokenData
|
|
24
|
+
* @property {string} access
|
|
25
|
+
* @property {string} refresh
|
|
26
|
+
* @property {string} expireIn
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @param {string} code
|
|
31
|
+
* @returns {Promise<chzzkTokenData>}
|
|
32
|
+
*/
|
|
33
|
+
async function get (code) {
|
|
34
|
+
return new Promise(async (resolve, reject) => {
|
|
35
|
+
let options = {
|
|
36
|
+
grantType: "authorization_code",
|
|
37
|
+
clientId: AUTH.id,
|
|
38
|
+
clientSecret: AUTH.secret,
|
|
39
|
+
code: code,
|
|
40
|
+
state: state
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
options = JSON.stringify(options);
|
|
44
|
+
|
|
45
|
+
let oauthGet = await CLIENT.post("auth/v1/token", options);
|
|
46
|
+
if (oauthGet.code != 200) return resolve(null);
|
|
47
|
+
|
|
48
|
+
oauthGet = oauthGet.content;
|
|
49
|
+
|
|
50
|
+
let oauthRes = new chzzkToken(oauthGet.accessToken, oauthGet.refreshToken, oauthGet.expiresIn);
|
|
51
|
+
|
|
52
|
+
return resolve(oauthRes);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @param {string} refreshToken
|
|
58
|
+
* @returns {Promise<chzzkTokenData>}
|
|
59
|
+
*/
|
|
60
|
+
async function refresh (refreshToken) {
|
|
61
|
+
return new Promise(async (resolve, reject) => {
|
|
62
|
+
let options = {
|
|
63
|
+
grantType: "refresh_token",
|
|
64
|
+
clientId: AUTH.id,
|
|
65
|
+
clientSecret: AUTH.secret,
|
|
66
|
+
refreshToken: refreshToken,
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
options = JSON.stringify(options);
|
|
70
|
+
|
|
71
|
+
let oauthGet = await CLIENT.post("auth/v1/token", options);
|
|
72
|
+
if (oauthGet.code != 200) return resolve(null);
|
|
73
|
+
|
|
74
|
+
oauthGet = oauthGet.content;
|
|
75
|
+
|
|
76
|
+
let oauthRes = new chzzkToken(oauthGet.accessToken, oauthGet.refreshToken, oauthGet.expiresIn);
|
|
77
|
+
|
|
78
|
+
return resolve(oauthRes);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @param {string} accessToken
|
|
84
|
+
* @returns {Promise<chzzkChannel>}
|
|
85
|
+
*/
|
|
86
|
+
async function resolve (accessToken) {
|
|
87
|
+
return new Promise(async (resolve, reject) => {
|
|
88
|
+
|
|
89
|
+
let oauthGet = await USER.get(accessToken, "open/v1/users/me");
|
|
90
|
+
if (oauthGet.code != 200) return resolve(null);
|
|
91
|
+
|
|
92
|
+
oauthGet = oauthGet.content;
|
|
93
|
+
|
|
94
|
+
let oauthChannel = await channel.get(oauthGet.channelId);
|
|
95
|
+
|
|
96
|
+
return resolve(oauthChannel);
|
|
97
|
+
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
module.exports = {
|
|
102
|
+
get: get,
|
|
103
|
+
refresh: refresh,
|
|
104
|
+
resolve: resolve
|
|
105
|
+
}
|
package/lib/tool.js
CHANGED
|
@@ -1,6 +1,122 @@
|
|
|
1
|
-
const { chzzkBaseURL, gameBaseURL, naverBaseURL, NID } = require("./val.js");
|
|
1
|
+
const { chzzkAPIURL, chzzkBaseURL, gameBaseURL, naverBaseURL, NID, AUTH } = require("./val.js");
|
|
2
2
|
const vm = require("./vm.js");
|
|
3
3
|
|
|
4
|
+
function clientGet (path) {
|
|
5
|
+
return new Promise(async (resolve, reject) => {
|
|
6
|
+
|
|
7
|
+
fetch(chzzkAPIURL + path, {
|
|
8
|
+
method: "GET",
|
|
9
|
+
headers: {
|
|
10
|
+
"Client-Id": AUTH.id,
|
|
11
|
+
"Client-Secret": AUTH.secret,
|
|
12
|
+
"Content-Type": "application/json",
|
|
13
|
+
"User-Agent": "BuzzkLib/" + vm.getVersion() + " (Node)"
|
|
14
|
+
}
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
.then(async (response) => {
|
|
18
|
+
let json;
|
|
19
|
+
try {
|
|
20
|
+
json = await response.json();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
catch(error) {
|
|
24
|
+
return resolve({"code": 500});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return resolve(json);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function clientPost (path, body) {
|
|
34
|
+
return new Promise(async (resolve, reject) => {
|
|
35
|
+
|
|
36
|
+
fetch(chzzkAPIURL + path, {
|
|
37
|
+
method: "POST",
|
|
38
|
+
headers: {
|
|
39
|
+
"Client-Id": AUTH.id,
|
|
40
|
+
"Client-Secret": AUTH.secret,
|
|
41
|
+
"Content-Type": "application/json",
|
|
42
|
+
"User-Agent": "BuzzkLib/" + vm.getVersion() + " (Node)"
|
|
43
|
+
},
|
|
44
|
+
body: body
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
.then(async (response) => {
|
|
48
|
+
let json;
|
|
49
|
+
try {
|
|
50
|
+
json = await response.json();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
catch(error) {
|
|
54
|
+
return resolve({"code": 500});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return resolve(json);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function userGet (token, path) {
|
|
64
|
+
return new Promise(async (resolve, reject) => {
|
|
65
|
+
|
|
66
|
+
fetch(chzzkAPIURL + path, {
|
|
67
|
+
method: "GET",
|
|
68
|
+
headers: {
|
|
69
|
+
"Authorization": "Bearer " + token,
|
|
70
|
+
"Content-Type": "application/json",
|
|
71
|
+
"User-Agent": "BuzzkLib/" + vm.getVersion() + " (Node)"
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
.then(async (response) => {
|
|
76
|
+
let json;
|
|
77
|
+
try {
|
|
78
|
+
json = await response.json();
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
catch(error) {
|
|
82
|
+
return resolve({"code": 500});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return resolve(json);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function userPost (token, path, body) {
|
|
92
|
+
return new Promise(async (resolve, reject) => {
|
|
93
|
+
|
|
94
|
+
fetch(chzzkAPIURL + path, {
|
|
95
|
+
method: "POST",
|
|
96
|
+
headers: {
|
|
97
|
+
"Authorization": "Bearer " + token,
|
|
98
|
+
"Content-Type": "application/json",
|
|
99
|
+
"User-Agent": "BuzzkLib/" + vm.getVersion() + " (Node)"
|
|
100
|
+
},
|
|
101
|
+
body: body
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
.then(async (response) => {
|
|
105
|
+
let json;
|
|
106
|
+
try {
|
|
107
|
+
json = await response.json();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
catch(error) {
|
|
111
|
+
return resolve({"code": 500});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return resolve(json);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
4
120
|
function reqChzzk (path) {
|
|
5
121
|
return new Promise(async (resolve, reject) => {
|
|
6
122
|
|
|
@@ -104,6 +220,14 @@ function reqNaver (path) {
|
|
|
104
220
|
}
|
|
105
221
|
|
|
106
222
|
module.exports = {
|
|
223
|
+
CLIENT: {
|
|
224
|
+
get: clientGet,
|
|
225
|
+
post: clientPost
|
|
226
|
+
},
|
|
227
|
+
USER: {
|
|
228
|
+
get: userGet,
|
|
229
|
+
post: userPost
|
|
230
|
+
},
|
|
107
231
|
reqChzzk: reqChzzk,
|
|
108
232
|
exChzzk: exChzzk,
|
|
109
233
|
reqGame: reqGame,
|
package/lib/val.js
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
|
+
const chzzkAPIURL = "https://openapi.chzzk.naver.com/";
|
|
1
2
|
const chzzkBaseURL = "https://api.chzzk.naver.com/";
|
|
2
3
|
const gameBaseURL = "https://comm-api.game.naver.com/";
|
|
3
4
|
const naverBaseURL = "https://apis.naver.com/";
|
|
4
5
|
|
|
6
|
+
const state = "zxclDasdfA25";
|
|
7
|
+
|
|
5
8
|
let NID = {
|
|
6
9
|
AUT: null,
|
|
7
10
|
SES: null
|
|
8
11
|
}
|
|
9
12
|
|
|
13
|
+
let AUTH = {
|
|
14
|
+
id: null,
|
|
15
|
+
secret: null
|
|
16
|
+
}
|
|
17
|
+
|
|
10
18
|
/**
|
|
11
19
|
* @param {string} NID_AUT
|
|
12
20
|
* @param {string} NID_SES
|
|
@@ -16,10 +24,23 @@ function login (NID_AUT, NID_SES) {
|
|
|
16
24
|
NID.SES = NID_SES;
|
|
17
25
|
}
|
|
18
26
|
|
|
27
|
+
/**
|
|
28
|
+
* @param {string} ClientID
|
|
29
|
+
* @param {string} ClientSecret
|
|
30
|
+
*/
|
|
31
|
+
function auth (ClientID, ClientSecret) {
|
|
32
|
+
AUTH.id = ClientID;
|
|
33
|
+
AUTH.secret = ClientSecret;
|
|
34
|
+
}
|
|
35
|
+
|
|
19
36
|
module.exports = {
|
|
37
|
+
chzzkAPIURL: chzzkAPIURL,
|
|
20
38
|
chzzkBaseURL: chzzkBaseURL,
|
|
21
39
|
gameBaseURL: gameBaseURL,
|
|
22
40
|
naverBaseURL: naverBaseURL,
|
|
41
|
+
state: state,
|
|
23
42
|
NID: NID,
|
|
24
|
-
|
|
43
|
+
AUTH: AUTH,
|
|
44
|
+
login: login,
|
|
45
|
+
auth: auth
|
|
25
46
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "buzzk",
|
|
3
3
|
"displayName": "BUZZK",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2.0.1",
|
|
5
5
|
"description": "๋ฟ์ง์ง (BUZZK) - ์น์ง์ง(CHZZK) ์ฑ๋ด์ ๋์ฑ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ๋๋ ๋น๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"type": "commonjs",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"๋ฟ์ง์ง"
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"
|
|
34
|
+
"socket.io-client": "^4.8.1",
|
|
35
|
+
"ws": "^8.18.0"
|
|
35
36
|
}
|
|
36
37
|
}
|