gj-boomlings-api 1.4.5 → 1.5.0
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/config.json +1 -10
- package/functions/blockUser.js +8 -2
- package/functions/deleteAccountPost.js +8 -2
- package/functions/deleteLevel.js +7 -1
- package/functions/dlLevel.js +5 -1
- package/functions/dlMessage.js +9 -2
- package/functions/getAccountPosts.js +8 -2
- package/functions/getBlockedList.js +6 -1
- package/functions/getCommentHistory.js +10 -3
- package/functions/getComments.js +9 -2
- package/functions/getCreatorScores.js +6 -2
- package/functions/getDailyLevel.js +3 -0
- package/functions/getFriendsList.js +6 -1
- package/functions/getGauntlets.js +6 -2
- package/functions/getLevelByID.js +153 -10
- package/functions/getLevelScores.js +50 -0
- package/functions/getMapPacks.js +5 -1
- package/functions/getMessages.js +7 -1
- package/functions/getOfficialSongInfo.js +4 -0
- package/functions/getProfile.js +5 -1
- package/functions/getSongInfo.js +5 -1
- package/functions/getTab.js +95 -0
- package/functions/getTop100.js +4 -1
- package/functions/getUserLevels.js +6 -1
- package/functions/getWeeklyDemon.js +5 -2
- package/functions/reportLevel.js +7 -1
- package/functions/searchLevels.js +6 -1
- package/functions/searchUsers.js +5 -1
- package/functions/unblockUser.js +7 -1
- package/functions/updateLevelDesc.js +8 -1
- package/functions/uploadAccountPost.js +7 -1
- package/functions/uploadComment.js +22 -14
- package/functions/uploadMessage.js +9 -1
- package/index.js +1 -65
- package/misc/GJDecode.js +1 -0
- package/misc/colors.json +1 -44
- package/misc/decB64.js +1 -2
- package/misc/encB64.js +1 -3
- package/misc/officialsongs.json +1 -216
- package/misc/rgbToHEX.js +1 -0
- package/package.json +4 -1
- package/misc/decCommentFromHistory.js +0 -38
- package/misc/decMessage.js +0 -34
- package/misc/decMsg.js +0 -30
- package/misc/decScoresUser.js +0 -45
- package/misc/decodeAccountPost.js +0 -23
- package/misc/decodeGJComment.js +0 -36
- package/misc/decodeGJGauntlet.js +0 -43
- package/misc/decodeLevel.js +0 -144
- package/misc/decodeLevelRes.js +0 -118
- package/misc/decodeMapPack.js +0 -54
- package/misc/decodeUserResult.js +0 -41
package/misc/officialsongs.json
CHANGED
|
@@ -1,216 +1 @@
|
|
|
1
|
-
{"sm": {
|
|
2
|
-
"name": "Stereo Madness",
|
|
3
|
-
"id": "Level 1",
|
|
4
|
-
"artist": "ForeverBound",
|
|
5
|
-
"link": "https://www.youtube.com/watch?v=JhKyKEDxo8Q"
|
|
6
|
-
},"bot": {
|
|
7
|
-
"name": "Back on Track",
|
|
8
|
-
"id": "Level 2",
|
|
9
|
-
"artist": "DJVI",
|
|
10
|
-
"link": "https://www.youtube.com/watch?v=N9vDTYZpqXM"
|
|
11
|
-
},
|
|
12
|
-
"pg": {
|
|
13
|
-
"name": "Polargeist",
|
|
14
|
-
"id": "Level 3",
|
|
15
|
-
"artist": "Step",
|
|
16
|
-
"link": "https://www.youtube.com/watch?v=4W28wWWxKuQ"
|
|
17
|
-
},
|
|
18
|
-
"dout": {
|
|
19
|
-
"name": "Dry Out",
|
|
20
|
-
"id": "Level 4",
|
|
21
|
-
"artist": "DJVI",
|
|
22
|
-
"link": "https://www.youtube.com/watch?v=FnXabH2q2A0"
|
|
23
|
-
},
|
|
24
|
-
"bab": {
|
|
25
|
-
"name": "Base After Base",
|
|
26
|
-
"id": "Level 5",
|
|
27
|
-
"artist": "DJVI",
|
|
28
|
-
"link": "https://www.youtube.com/watch?v=TZULkgQPHt0"
|
|
29
|
-
},
|
|
30
|
-
"clg": {
|
|
31
|
-
"name": "Cant Let Go",
|
|
32
|
-
"id": "Level 6",
|
|
33
|
-
"artist": "DJVI",
|
|
34
|
-
"link": "https://www.youtube.com/watch?v=fLnF-QnR1Zw"
|
|
35
|
-
},
|
|
36
|
-
"j": {
|
|
37
|
-
"name": "Jumper",
|
|
38
|
-
"id": "Level 7",
|
|
39
|
-
"artist": "Waterflame",
|
|
40
|
-
"link": "https://www.youtube.com/watch?v=ZXHO4AN_49Q"
|
|
41
|
-
},
|
|
42
|
-
"tm": {
|
|
43
|
-
"name": "Time Machine",
|
|
44
|
-
"id": "Level 8",
|
|
45
|
-
"artist": "Waterflame",
|
|
46
|
-
"link": "https://www.youtube.com/watch?v=zZ1L9JD6l0g"
|
|
47
|
-
},
|
|
48
|
-
"c": {
|
|
49
|
-
"name": "Cycles",
|
|
50
|
-
"id": "Level 9",
|
|
51
|
-
"artist": "DJVI",
|
|
52
|
-
"link": "https://www.youtube.com/watch?v=KDdvGZn6Gfs"
|
|
53
|
-
},
|
|
54
|
-
"xs": {
|
|
55
|
-
"name": "xStep",
|
|
56
|
-
"id": "Level 10",
|
|
57
|
-
"artist": "DJVI",
|
|
58
|
-
"link": "https://www.youtube.com/watch?v=PSvYfVGyQfw"
|
|
59
|
-
},
|
|
60
|
-
"cf": {
|
|
61
|
-
"name": "Clutterfunk",
|
|
62
|
-
"id": "Level 11",
|
|
63
|
-
"artist": "Waterflame",
|
|
64
|
-
"link": "https://www.youtube.com/watch?v=D5uJOpItgNg"
|
|
65
|
-
},
|
|
66
|
-
"toe": {
|
|
67
|
-
"name": "Theory of Everything",
|
|
68
|
-
"id": "Level 12",
|
|
69
|
-
"artist": "DJ-Nate",
|
|
70
|
-
"link": "https://www.newgrounds.com/audio/listen/354826"
|
|
71
|
-
},
|
|
72
|
-
"ea": {
|
|
73
|
-
"name": "Electroman Adventures",
|
|
74
|
-
"id": "Level 13",
|
|
75
|
-
"artist": "Waterflame",
|
|
76
|
-
"link": "https://www.youtube.com/watch?v=Pb6KyewC_Vg"
|
|
77
|
-
},
|
|
78
|
-
"cs": {
|
|
79
|
-
"name": "Clubstep",
|
|
80
|
-
"id": "Level 14",
|
|
81
|
-
"artist": "DJ-Nate",
|
|
82
|
-
"link": "https://www.newgrounds.com/audio/listen/396093"
|
|
83
|
-
},
|
|
84
|
-
"ed": {
|
|
85
|
-
"name": "Electrodynamix",
|
|
86
|
-
"id": "Level 15",
|
|
87
|
-
"artist": "DJ-Nate",
|
|
88
|
-
"link": "https://www.newgrounds.com/audio/listen/368392"
|
|
89
|
-
},
|
|
90
|
-
"hf": {
|
|
91
|
-
"name": "Hexagon Force",
|
|
92
|
-
"id": "Level 16",
|
|
93
|
-
"artist": "Waterflame",
|
|
94
|
-
"link": "https://www.youtube.com/watch?v=afwK743PL2Y"
|
|
95
|
-
},
|
|
96
|
-
"bp": {
|
|
97
|
-
"name": "Blast Processing",
|
|
98
|
-
"id": "Level 17",
|
|
99
|
-
"artist": "Waterflame",
|
|
100
|
-
"link": "https://www.youtube.com/watch?v=Z5RufkDHsdM"
|
|
101
|
-
},
|
|
102
|
-
"toeii": {
|
|
103
|
-
"name": "Theory of Everything 2",
|
|
104
|
-
"id": "Level 18",
|
|
105
|
-
"artist": "DJ-Nate",
|
|
106
|
-
"link": "https://www.newgrounds.com/audio/listen/790340"
|
|
107
|
-
},
|
|
108
|
-
"gd": {
|
|
109
|
-
"name": "Geometrical Dominator",
|
|
110
|
-
"id": "Level 19",
|
|
111
|
-
"artist": "Waterflame",
|
|
112
|
-
"link": "https://www.newgrounds.com/audio/listen/641172"
|
|
113
|
-
},
|
|
114
|
-
"d": {
|
|
115
|
-
"name": "Deadlocked",
|
|
116
|
-
"id": "Level 20",
|
|
117
|
-
"artist": "F-777",
|
|
118
|
-
"link": "https://www.youtube.com/watch?v=QRGkFkf2r0U"
|
|
119
|
-
},
|
|
120
|
-
"fd": {
|
|
121
|
-
"name": "Fingerdash",
|
|
122
|
-
"id": "Level 21",
|
|
123
|
-
"artist": "MDK",
|
|
124
|
-
"link": "https://www.youtube.com/watch?v=BuPmq7yjDnI"
|
|
125
|
-
},
|
|
126
|
-
"tss": {
|
|
127
|
-
"name": "The Seven Seas",
|
|
128
|
-
"id": "Level 1 (Geometry Dash: Meltdown)",
|
|
129
|
-
"artist": "F-777",
|
|
130
|
-
"link": "https://www.youtube.com/watch?v=38fPQ5JKQ_Q"
|
|
131
|
-
},
|
|
132
|
-
"va": {
|
|
133
|
-
"name": "Viking Arena",
|
|
134
|
-
"id": "Level 2 (Geometry Dash: Meltdown)",
|
|
135
|
-
"artist": "F-777",
|
|
136
|
-
"link": "https://www.youtube.com/watch?v=RaJ6Vf2w9hY"
|
|
137
|
-
},
|
|
138
|
-
"ar": {
|
|
139
|
-
"name": "Airborne Robots",
|
|
140
|
-
"id": "Level 3 (Geometry Dash: Meltdown)",
|
|
141
|
-
"artist": "F-777",
|
|
142
|
-
"link": "https://www.youtube.com/watch?v=guBpnPY32s0"
|
|
143
|
-
},
|
|
144
|
-
"tc": {
|
|
145
|
-
"name": "Random Song 06",
|
|
146
|
-
"id": "Level 22 (The Challenge)",
|
|
147
|
-
"artist": "RobTop",
|
|
148
|
-
"link": "https://www.newgrounds.com/audio/listen/633385"
|
|
149
|
-
},
|
|
150
|
-
"p": {
|
|
151
|
-
"name": "Payload",
|
|
152
|
-
"id": "Level 1 (Geometry Dash: World)",
|
|
153
|
-
"artist": "Dex Arson",
|
|
154
|
-
"link": "https://www.youtube.com/watch?v=2SFOjJxEL7g"
|
|
155
|
-
},
|
|
156
|
-
"bm": {
|
|
157
|
-
"name": "Beast Mode",
|
|
158
|
-
"id": "Level 2 (Geometry Dash: World)",
|
|
159
|
-
"artist": "Dex Arson",
|
|
160
|
-
"link": "https://www.newgrounds.com/audio/listen/589874"
|
|
161
|
-
},
|
|
162
|
-
"m": {
|
|
163
|
-
"name": "Machina",
|
|
164
|
-
"id": "Level 3 (Geometry Dash: World)",
|
|
165
|
-
"artist": "Dex Arson",
|
|
166
|
-
"link": "https://www.youtube.com/watch?v=EWjZOxs87yg"
|
|
167
|
-
},
|
|
168
|
-
"y": {
|
|
169
|
-
"name": "Years",
|
|
170
|
-
"id": "Level 4 (Geometry Dash: World)",
|
|
171
|
-
"artist": "Dex Arson",
|
|
172
|
-
"link": "https://www.youtube.com/watch?v=0MZvDD_sy-w"
|
|
173
|
-
},
|
|
174
|
-
"f": {
|
|
175
|
-
"name": "Frontlines",
|
|
176
|
-
"id": "Level 5 (Geometry Dash: World)",
|
|
177
|
-
"artist": "Dex Arson",
|
|
178
|
-
"link": "https://www.youtube.com/watch?v=f3wAripOdag"
|
|
179
|
-
},
|
|
180
|
-
"sp": {
|
|
181
|
-
"name": "Space Pirates",
|
|
182
|
-
"id": "Level 6 (Geometry Dash: World)",
|
|
183
|
-
"artist": "Waterflame",
|
|
184
|
-
"link": "https://www.youtube.com/watch?v=Cu7HaeRHMhM"
|
|
185
|
-
},
|
|
186
|
-
"s": {
|
|
187
|
-
"name": "Striker",
|
|
188
|
-
"id": "Level 7 (Geometry Dash: World)",
|
|
189
|
-
"artist": "Waterflame",
|
|
190
|
-
"link": "https://www.youtube.com/watch?v=MU9wRCGt9h8"
|
|
191
|
-
},
|
|
192
|
-
"e": {
|
|
193
|
-
"name": "Embers",
|
|
194
|
-
"id": "Level 8 (Geometry Dash: World)",
|
|
195
|
-
"artist": "Dex Arson",
|
|
196
|
-
"link": "https://www.youtube.com/watch?v=nMDMlIvdqlA"
|
|
197
|
-
},
|
|
198
|
-
"round": {
|
|
199
|
-
"name": "Round 1",
|
|
200
|
-
"id": "Level 9 (Geometry Dash: World)",
|
|
201
|
-
"artist": "Dex Arson",
|
|
202
|
-
"link": "https://www.youtube.com/watch?v=NvQoY4gTIGU"
|
|
203
|
-
},
|
|
204
|
-
"mdo": {
|
|
205
|
-
"name": "Monster Dance Off",
|
|
206
|
-
"id": "Level 10 (Geometry Dash: World)",
|
|
207
|
-
"artist": "F-777",
|
|
208
|
-
"link": "https://www.youtube.com/watch?v=B8YkwDbGBr8"
|
|
209
|
-
},
|
|
210
|
-
"unknown": {
|
|
211
|
-
"name": "Unknown",
|
|
212
|
-
"id": "This song is not defined by RobTop. In game it returns \"Back on Track\".",
|
|
213
|
-
"artist": "DJVI",
|
|
214
|
-
"link": null
|
|
215
|
-
}
|
|
216
|
-
}
|
|
1
|
+
{"sm":{"name":"Stereo Madness","id":"Level 1","artist":"ForeverBound","link":"https://www.youtube.com/watch?v=JhKyKEDxo8Q"},"bot":{"name":"Back on Track","id":"Level 2","artist":"DJVI","link":"https://www.youtube.com/watch?v=N9vDTYZpqXM"},"pg":{"name":"Polargeist","id":"Level 3","artist":"Step","link":"https://www.youtube.com/watch?v=4W28wWWxKuQ"},"dout":{"name":"Dry Out","id":"Level 4","artist":"DJVI","link":"https://www.youtube.com/watch?v=FnXabH2q2A0"},"bab":{"name":"Base After Base","id":"Level 5","artist":"DJVI","link":"https://www.youtube.com/watch?v=TZULkgQPHt0"},"clg":{"name":"Cant Let Go","id":"Level 6","artist":"DJVI","link":"https://www.youtube.com/watch?v=fLnF-QnR1Zw"},"j":{"name":"Jumper","id":"Level 7","artist":"Waterflame","link":"https://www.youtube.com/watch?v=ZXHO4AN_49Q"},"tm":{"name":"Time Machine","id":"Level 8","artist":"Waterflame","link":"https://www.youtube.com/watch?v=zZ1L9JD6l0g"},"c":{"name":"Cycles","id":"Level 9","artist":"DJVI","link":"https://www.youtube.com/watch?v=KDdvGZn6Gfs"},"xs":{"name":"xStep","id":"Level 10","artist":"DJVI","link":"https://www.youtube.com/watch?v=PSvYfVGyQfw"},"cf":{"name":"Clutterfunk","id":"Level 11","artist":"Waterflame","link":"https://www.youtube.com/watch?v=D5uJOpItgNg"},"toe":{"name":"Theory of Everything","id":"Level 12","artist":"DJ-Nate","link":"https://www.newgrounds.com/audio/listen/354826"},"ea":{"name":"Electroman Adventures","id":"Level 13","artist":"Waterflame","link":"https://www.youtube.com/watch?v=Pb6KyewC_Vg"},"cs":{"name":"Clubstep","id":"Level 14","artist":"DJ-Nate","link":"https://www.newgrounds.com/audio/listen/396093"},"ed":{"name":"Electrodynamix","id":"Level 15","artist":"DJ-Nate","link":"https://www.newgrounds.com/audio/listen/368392"},"hf":{"name":"Hexagon Force","id":"Level 16","artist":"Waterflame","link":"https://www.youtube.com/watch?v=afwK743PL2Y"},"bp":{"name":"Blast Processing","id":"Level 17","artist":"Waterflame","link":"https://www.youtube.com/watch?v=Z5RufkDHsdM"},"toeii":{"name":"Theory of Everything 2","id":"Level 18","artist":"DJ-Nate","link":"https://www.newgrounds.com/audio/listen/790340"},"gd":{"name":"Geometrical Dominator","id":"Level 19","artist":"Waterflame","link":"https://www.newgrounds.com/audio/listen/641172"},"d":{"name":"Deadlocked","id":"Level 20","artist":"F-777","link":"https://www.youtube.com/watch?v=QRGkFkf2r0U"},"fd":{"name":"Fingerdash","id":"Level 21","artist":"MDK","link":"https://www.youtube.com/watch?v=BuPmq7yjDnI"},"tss":{"name":"The Seven Seas","id":"Level 1 (Geometry Dash: Meltdown)","artist":"F-777","link":"https://www.youtube.com/watch?v=38fPQ5JKQ_Q"},"va":{"name":"Viking Arena","id":"Level 2 (Geometry Dash: Meltdown)","artist":"F-777","link":"https://www.youtube.com/watch?v=RaJ6Vf2w9hY"},"ar":{"name":"Airborne Robots","id":"Level 3 (Geometry Dash: Meltdown)","artist":"F-777","link":"https://www.youtube.com/watch?v=guBpnPY32s0"},"tc":{"name":"Random Song 06","id":"Level 22 (The Challenge)","artist":"RobTop","link":"https://www.newgrounds.com/audio/listen/633385"},"p":{"name":"Payload","id":"Level 1 (Geometry Dash: World)","artist":"Dex Arson","link":"https://www.youtube.com/watch?v=2SFOjJxEL7g"},"bm":{"name":"Beast Mode","id":"Level 2 (Geometry Dash: World)","artist":"Dex Arson","link":"https://www.newgrounds.com/audio/listen/589874"},"m":{"name":"Machina","id":"Level 3 (Geometry Dash: World)","artist":"Dex Arson","link":"https://www.youtube.com/watch?v=EWjZOxs87yg"},"y":{"name":"Years","id":"Level 4 (Geometry Dash: World)","artist":"Dex Arson","link":"https://www.youtube.com/watch?v=0MZvDD_sy-w"},"f":{"name":"Frontlines","id":"Level 5 (Geometry Dash: World)","artist":"Dex Arson","link":"https://www.youtube.com/watch?v=f3wAripOdag"},"sp":{"name":"Space Pirates","id":"Level 6 (Geometry Dash: World)","artist":"Waterflame","link":"https://www.youtube.com/watch?v=Cu7HaeRHMhM"},"s":{"name":"Striker","id":"Level 7 (Geometry Dash: World)","artist":"Waterflame","link":"https://www.youtube.com/watch?v=MU9wRCGt9h8"},"e":{"name":"Embers","id":"Level 8 (Geometry Dash: World)","artist":"Dex Arson","link":"https://www.youtube.com/watch?v=nMDMlIvdqlA"},"round":{"name":"Round 1","id":"Level 9 (Geometry Dash: World)","artist":"Dex Arson","link":"https://www.youtube.com/watch?v=NvQoY4gTIGU"},"mdo":{"name":"Monster Dance Off","id":"Level 10 (Geometry Dash: World)","artist":"F-777","link":"https://www.youtube.com/watch?v=B8YkwDbGBr8"},"unknown":{"name":"Unknown","id":"This song is not defined by RobTop. In game it returns \"Back on Track\".","artist":"DJVI","link":null}}
|
package/misc/rgbToHEX.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gj-boomlings-api",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "A light-weight Geometry Dash API wrapper",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -30,5 +30,8 @@
|
|
|
30
30
|
"engines": {
|
|
31
31
|
"npm": ">=8.19.2 <10.0.0",
|
|
32
32
|
"node": ">=18.0.0 <20.0.0"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"node-fetch": "^3.3.0"
|
|
33
36
|
}
|
|
34
37
|
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decCommentFromHistory:
|
|
3
|
-
function(comment) {
|
|
4
|
-
const {decB64} = require("./decB64.js");
|
|
5
|
-
|
|
6
|
-
let spl = comment.split('~');
|
|
7
|
-
let cmnt = [];
|
|
8
|
-
for(let i =0;i<spl.length;i++) {
|
|
9
|
-
if(i%2!=0) {
|
|
10
|
-
cmnt.push(spl[i-1]+`~`+spl[i]);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let levelID = cmnt[1].split("~")[1];
|
|
15
|
-
let commentContent = cmnt[0].split("~")[1];
|
|
16
|
-
let playerID = cmnt[2].split("~")[1];
|
|
17
|
-
let likes = cmnt[3].split("~")[1];
|
|
18
|
-
let percent = cmnt[4].split("~")[1];
|
|
19
|
-
let age = cmnt[5].split("~")[1];
|
|
20
|
-
let messageID = cmnt[6].split("~")[1].split(":")[0];
|
|
21
|
-
let username = cmnt[7].split("~")[0];
|
|
22
|
-
|
|
23
|
-
if(Number(cmnt[7].split("~")[0]) != NaN) username = cmnt[9].split("~")[0];
|
|
24
|
-
|
|
25
|
-
const res = {
|
|
26
|
-
username: username,
|
|
27
|
-
content: decB64(commentContent),
|
|
28
|
-
levelID: Number(levelID),
|
|
29
|
-
playerID: Number(playerID),
|
|
30
|
-
likes: Number(likes),
|
|
31
|
-
percent: Number(percent),
|
|
32
|
-
id: Number(messageID),
|
|
33
|
-
age: age
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return res;
|
|
37
|
-
}
|
|
38
|
-
}
|
package/misc/decMessage.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decMessage:
|
|
3
|
-
function(msg) {
|
|
4
|
-
const {decB64} = require("./decB64.js");
|
|
5
|
-
const XOR = require("./xor.js");
|
|
6
|
-
const xor = new XOR();
|
|
7
|
-
|
|
8
|
-
let spl = msg.split(":");
|
|
9
|
-
let msgInfo = [];
|
|
10
|
-
for(let i =0;i<spl.length;i++) {
|
|
11
|
-
if(i%2!=0) {
|
|
12
|
-
msgInfo.push(spl[i-1]+`:`+spl[i]);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
let username = msgInfo[0].split("6:")[1];
|
|
17
|
-
let playerID = msgInfo[1].split("3:")[1];
|
|
18
|
-
let accID = msgInfo[2].split("2:")[1];
|
|
19
|
-
let msgID = msgInfo[3].split("1:")[1];
|
|
20
|
-
let title = msgInfo[4].split("4:")[1];
|
|
21
|
-
let content = msgInfo[7].split("5:")[1];
|
|
22
|
-
let age = msgInfo[8].split("7:")[1];
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
username: username,
|
|
26
|
-
title: decB64(title),
|
|
27
|
-
content: xor.decrypt(content, 14251),
|
|
28
|
-
playerID: Number(playerID),
|
|
29
|
-
accountID: Number(accID),
|
|
30
|
-
messageID: Number(msgID),
|
|
31
|
-
age: age
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
}
|
package/misc/decMsg.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decMsg:
|
|
3
|
-
function(msg) {
|
|
4
|
-
const {decB64} = require("./decB64.js");
|
|
5
|
-
|
|
6
|
-
let spl = msg.split("#")[0].split(":");
|
|
7
|
-
let msgInfo = [];
|
|
8
|
-
for(let i =0;i<spl.length;i++) {
|
|
9
|
-
if(i%2!=0) {
|
|
10
|
-
msgInfo.push(spl[i-1]+`:`+spl[i]);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let username = msgInfo[0].split("6:")[1];
|
|
15
|
-
let playerID = msgInfo[1].split("3:")[1];
|
|
16
|
-
let accID = msgInfo[2].split("2:")[1];
|
|
17
|
-
let msgID = msgInfo[3].split("1:")[1];
|
|
18
|
-
let title = msgInfo[4].split("4:")[1];
|
|
19
|
-
let age = msgInfo[7].split("7:")[1];
|
|
20
|
-
|
|
21
|
-
return {
|
|
22
|
-
username: username,
|
|
23
|
-
title: decB64(title),
|
|
24
|
-
playerID: Number(playerID),
|
|
25
|
-
accountID: Number(accID),
|
|
26
|
-
messageID: Number(msgID),
|
|
27
|
-
age: age
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
}
|
package/misc/decScoresUser.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decScoresUser:
|
|
3
|
-
function(user) {
|
|
4
|
-
let spl = user.split(':');
|
|
5
|
-
let userInfo = [];
|
|
6
|
-
for(let i =0;i<spl.length;i++) {
|
|
7
|
-
if(i%2!=0) {
|
|
8
|
-
userInfo.push(spl[i-1]+`:`+spl[i]);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
let name = userInfo[0].split("1:")[1];
|
|
13
|
-
let playerID = userInfo[1].split("2:")[1];
|
|
14
|
-
let coins = userInfo[2].split("13:")[1];
|
|
15
|
-
let userCoins = userInfo[3].split("17:")[1];
|
|
16
|
-
let p1col = userInfo[6].split("10:")[1];
|
|
17
|
-
let p2col = userInfo[7].split("11:")[1];
|
|
18
|
-
let rank = userInfo[4].split("6:")[1];
|
|
19
|
-
let accID = userInfo[10].split("16:")[1];
|
|
20
|
-
let stars = userInfo[11].split("3:")[1];
|
|
21
|
-
let cp = userInfo[12].split("8:")[1];
|
|
22
|
-
let diamonds = userInfo[13].split("46:")[1];
|
|
23
|
-
let demons = userInfo[14].split("4:")[1];
|
|
24
|
-
|
|
25
|
-
let colors = require("./colors.json");
|
|
26
|
-
const { rgbToHEX } = require("./rgbToHEX.js");
|
|
27
|
-
|
|
28
|
-
const result = {
|
|
29
|
-
username: name.trim(),
|
|
30
|
-
playerID: playerID,
|
|
31
|
-
accountID: accID,
|
|
32
|
-
rank: rank,
|
|
33
|
-
color1: rgbToHEX(colors[p1col]),
|
|
34
|
-
color2: rgbToHEX(colors[p2col]),
|
|
35
|
-
stars: stars,
|
|
36
|
-
diamonds: diamonds,
|
|
37
|
-
secretCoins: coins,
|
|
38
|
-
userCoins: userCoins,
|
|
39
|
-
demons: demons,
|
|
40
|
-
creatorPoints: cp
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return result;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decodeAccountPost:
|
|
3
|
-
function(post) {
|
|
4
|
-
const {decB64} = require("./decB64.js");
|
|
5
|
-
|
|
6
|
-
let postContent = post.split("2~")[1].split("~4~")[0];
|
|
7
|
-
let likes = post.split("~4~")[1].split("~9~")[0];
|
|
8
|
-
let age = post.split("~9~")[1].split("~6~")[0];
|
|
9
|
-
let id = post.split("~6~")[1];
|
|
10
|
-
|
|
11
|
-
if(id.includes("~")) id = post.split("~6~")[2];
|
|
12
|
-
if(id.includes("#")) id = id.split("#")[0];
|
|
13
|
-
|
|
14
|
-
const result = {
|
|
15
|
-
content: decB64(postContent).trim(),
|
|
16
|
-
likes: Number(likes),
|
|
17
|
-
age: age,
|
|
18
|
-
id: Number(id)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return result;
|
|
22
|
-
}
|
|
23
|
-
}
|
package/misc/decodeGJComment.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decodeGJComment:
|
|
3
|
-
function(comment) {
|
|
4
|
-
const {decB64} = require("./decB64.js");
|
|
5
|
-
|
|
6
|
-
let spl = comment.split("~");
|
|
7
|
-
let cmnt = [];
|
|
8
|
-
for(let i =0;i<spl.length;i++) {
|
|
9
|
-
if(i%2!=0) {
|
|
10
|
-
cmnt.push(spl[i-1]+`~`+spl[i]);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let commentContent = cmnt[0].split("2~")[1];
|
|
15
|
-
let playerID = cmnt[1].split("3~")[1];
|
|
16
|
-
let likes = cmnt[2].split("4~")[1];
|
|
17
|
-
let percent = cmnt[4].split("10~")[1];
|
|
18
|
-
let age = cmnt[5].split("9~")[1];
|
|
19
|
-
let msgID = cmnt[6].split("6~")[1];
|
|
20
|
-
let username = comment.split(":1~")[1].split("~9")[0];
|
|
21
|
-
|
|
22
|
-
if(msgID.includes(":")) msgID = msgID.split(":")[0];
|
|
23
|
-
|
|
24
|
-
const res = {
|
|
25
|
-
username: username,
|
|
26
|
-
content: decB64(commentContent),
|
|
27
|
-
playerID: Number(playerID),
|
|
28
|
-
likes: Number(likes),
|
|
29
|
-
percent: Number(percent),
|
|
30
|
-
id: Number(msgID),
|
|
31
|
-
age: age
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return res;
|
|
35
|
-
}
|
|
36
|
-
}
|
package/misc/decodeGJGauntlet.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decodeGJGauntlet:
|
|
3
|
-
function(gauntlet) {
|
|
4
|
-
let spl = gauntlet.split(':');
|
|
5
|
-
|
|
6
|
-
let id = spl[1];
|
|
7
|
-
let lvlList = spl[3];
|
|
8
|
-
|
|
9
|
-
let arr = lvlList.split(",");
|
|
10
|
-
let Lvl1 = arr[0];
|
|
11
|
-
let Lvl2 = arr[1]
|
|
12
|
-
let Lvl3 = arr[2];
|
|
13
|
-
let Lvl4 = arr[3];
|
|
14
|
-
let Lvl5 = arr[4].split("#")[0];
|
|
15
|
-
|
|
16
|
-
const glIDs = {
|
|
17
|
-
"1": "Fire",
|
|
18
|
-
"2": "Ice",
|
|
19
|
-
"3": "Poison",
|
|
20
|
-
"4": "Shadow",
|
|
21
|
-
"5": "Lava",
|
|
22
|
-
"6": "Bonus",
|
|
23
|
-
"7": "Chaos",
|
|
24
|
-
"8": "Demon",
|
|
25
|
-
"9": "Time",
|
|
26
|
-
"10": "Crystal",
|
|
27
|
-
"11": "Magic",
|
|
28
|
-
"12": "spike",
|
|
29
|
-
"13": "Monster",
|
|
30
|
-
"14": "Doom",
|
|
31
|
-
"15": "Death"
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let list = [Number(Lvl1),Number(Lvl2),Number(Lvl3),Number(Lvl4),Number(Lvl5)]
|
|
35
|
-
|
|
36
|
-
const result = {
|
|
37
|
-
"name": `${glIDs[id]} Gauntlet`,
|
|
38
|
-
"levels": list
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return result;
|
|
42
|
-
}
|
|
43
|
-
}
|
package/misc/decodeLevel.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
decodeLevel:
|
|
3
|
-
async function(level){
|
|
4
|
-
const {decB64} = require("./decB64.js");
|
|
5
|
-
|
|
6
|
-
let spl = level.split(':');
|
|
7
|
-
let levelInfo = [];
|
|
8
|
-
for(let i =0;i<spl.length;i++) {
|
|
9
|
-
if(i%2!=0) {
|
|
10
|
-
levelInfo.push(spl[i-1]+`:`+spl[i]);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let id = levelInfo[0].split("1:")[1];
|
|
15
|
-
let name = levelInfo[1].split("2:")[1];
|
|
16
|
-
let version = levelInfo[2].split("5:")[1];
|
|
17
|
-
let difficulty = levelInfo[5].split("9:")[1];
|
|
18
|
-
let downloads = levelInfo[6].split("10:")[1];
|
|
19
|
-
let officialSong = levelInfo[7].split("12:")[1];
|
|
20
|
-
let gameVersion = levelInfo[8].split("13:")[1];
|
|
21
|
-
let likes = levelInfo[9].split("14:")[1];
|
|
22
|
-
let demonBool = levelInfo[10].split("17:")[1];
|
|
23
|
-
let stars = levelInfo[13].split("18:")[1];
|
|
24
|
-
let ftrd = levelInfo[14].split("19:")[1];
|
|
25
|
-
let epic = levelInfo[15].split("42:")[1];
|
|
26
|
-
let objs = levelInfo[16].split("45:")[1];
|
|
27
|
-
let desc = levelInfo[17].split("3:")[1];
|
|
28
|
-
let length = levelInfo[18].split("15:")[1];
|
|
29
|
-
let copiedID = levelInfo[19].split("30:")[1];
|
|
30
|
-
let twoPlayer = levelInfo[20].split("31:")[1];
|
|
31
|
-
let coins = levelInfo[21].split("37:")[1];
|
|
32
|
-
let verifiedCoins = levelInfo[22].split("38:")[1];
|
|
33
|
-
let starsRequested = levelInfo[23].split("39:")[1];
|
|
34
|
-
let customSong = levelInfo[26].split("35:")[1].split("#")[0];
|
|
35
|
-
let author = "-";
|
|
36
|
-
|
|
37
|
-
if(levelInfo.length == 29) {
|
|
38
|
-
author = levelInfo[27].split(":")[0];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
let disliked = likes.includes("-") ? true : false;
|
|
42
|
-
|
|
43
|
-
if(desc.includes("/")) desc = desc.split("/")[0];
|
|
44
|
-
if(decB64(desc) == '') desc = "KE5vIGRlc2NyaXB0aW9uIHByb3ZpZGVkKQ=="
|
|
45
|
-
|
|
46
|
-
let featured = Boolean(Number(ftrd));
|
|
47
|
-
|
|
48
|
-
let difficultyDecoding = {
|
|
49
|
-
"-10": "Auto",
|
|
50
|
-
"0": "Unrated",
|
|
51
|
-
"10": "Easy",
|
|
52
|
-
"20": "Normal",
|
|
53
|
-
"30": "Hard",
|
|
54
|
-
"40": "Harder",
|
|
55
|
-
"50": "Insane"
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if(Boolean(Number(demonBool))) {
|
|
59
|
-
difficultyDecoding = {
|
|
60
|
-
"10": "Easy Demon",
|
|
61
|
-
"20": "Medium Demon",
|
|
62
|
-
"30": "Hard Demon",
|
|
63
|
-
"40": "Insane Demon",
|
|
64
|
-
"50": "Extreme Demon"
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const lengthDecoding = {
|
|
69
|
-
"0": "Tiny",
|
|
70
|
-
"1": "Short",
|
|
71
|
-
"2": "Medium",
|
|
72
|
-
"3": "Long",
|
|
73
|
-
"4": "XL"
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const decodeGameVersion = {
|
|
77
|
-
"10": "1.7",
|
|
78
|
-
"18": "1.8",
|
|
79
|
-
"19": "1.9",
|
|
80
|
-
"20": "2.0",
|
|
81
|
-
"21": "2.1",
|
|
82
|
-
undefined: "Pre-1.7"
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const { getOfficialSongInfo } = require("../functions/getOfficialSongInfo.js");
|
|
86
|
-
|
|
87
|
-
let song;
|
|
88
|
-
if(Number(officialSong) > 0) song = getOfficialSongInfo(Number(officialSong) + 1);
|
|
89
|
-
if(Number(officialSong) == 0 && Number(customSong) == 0) song = getOfficialSongInfo(1);
|
|
90
|
-
if(Number(customSong) > 0) {
|
|
91
|
-
let songName = level.split("~|~2~|~")[1].split("~|~3~|~")[0]
|
|
92
|
-
let songId = Number(level.split("#1~|~")[1].split("~|~2~|~")[0])
|
|
93
|
-
let artist = level.split("~|~4~|~")[1].split("~|~5~|~")[0]
|
|
94
|
-
let artistId = Number(level.split("~|~3~|~")[1].split("~|~4~|~")[0])
|
|
95
|
-
let size = `${level.split("~|~5~|~")[1].split("~|~6~|~")[0]} MB`
|
|
96
|
-
let link = decodeURIComponent(level.split("~|~10~|~")[1].split("~|~7~|~")[0])
|
|
97
|
-
|
|
98
|
-
let songinfo = {
|
|
99
|
-
"name": songName,
|
|
100
|
-
"id": songId,
|
|
101
|
-
"artist": artist,
|
|
102
|
-
"artistId": artistId,
|
|
103
|
-
"fileSize": size,
|
|
104
|
-
"link": link
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
song = songinfo;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
let result = {
|
|
111
|
-
id: Number(id),
|
|
112
|
-
name: name,
|
|
113
|
-
description: decB64(desc),
|
|
114
|
-
creator: author,
|
|
115
|
-
level_version: Number(version),
|
|
116
|
-
difficulty: difficultyDecoding[difficulty],
|
|
117
|
-
stars: Number(stars),
|
|
118
|
-
downloads: Number(downloads),
|
|
119
|
-
likes: Number(likes),
|
|
120
|
-
disliked: disliked,
|
|
121
|
-
length: lengthDecoding[length],
|
|
122
|
-
demon: Boolean(Number(demonBool)),
|
|
123
|
-
featured: featured,
|
|
124
|
-
epic: Boolean(Number(epic)),
|
|
125
|
-
objects: Number(objs),
|
|
126
|
-
stars_requested: Number(starsRequested),
|
|
127
|
-
game_version: decodeGameVersion[gameVersion],
|
|
128
|
-
copied: Number(copiedID),
|
|
129
|
-
large: Number(objs) > 40000 ? true : false,
|
|
130
|
-
two_p: Boolean(Number(twoPlayer)),
|
|
131
|
-
coins: Number(coins),
|
|
132
|
-
verified_coins: Boolean(Number(verifiedCoins)),
|
|
133
|
-
song: song
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
if(["Extreme Demon", "Insane Demon"].includes(difficultyDecoding[difficulty])) {
|
|
137
|
-
const { demonlist } = require("./demonlist.js");
|
|
138
|
-
const dlist = await demonlist(name.trim());
|
|
139
|
-
if(dlist != null) result.pointercrate = dlist;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return result;
|
|
143
|
-
}
|
|
144
|
-
}
|