gj-boomlings-api 2.0.1 → 2.0.3

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.
Files changed (44) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -9
  3. package/functions/blockUser.js +8 -2
  4. package/functions/deleteAccountPost.js +11 -5
  5. package/functions/deleteComment.js +14 -7
  6. package/functions/deleteLevel.js +13 -7
  7. package/functions/dlLevel.js +64 -4
  8. package/functions/dlMessage.js +23 -5
  9. package/functions/getAccountPosts.js +23 -4
  10. package/functions/getBlockedList.js +20 -6
  11. package/functions/getCommentHistory.js +35 -6
  12. package/functions/getComments.js +31 -3
  13. package/functions/getCreatorScores.js +18 -0
  14. package/functions/getDailyLevel.js +5 -1
  15. package/functions/getFriendsList.js +21 -6
  16. package/functions/getGauntlets.js +11 -0
  17. package/functions/getLevelByID.js +43 -0
  18. package/functions/getLevelScores.js +32 -9
  19. package/functions/getMapPacks.js +16 -0
  20. package/functions/getMessages.js +22 -5
  21. package/functions/getOfficialSongInfo.js +15 -4
  22. package/functions/getProfile.js +46 -7
  23. package/functions/getSongInfo.js +21 -6
  24. package/functions/getSongsLibrary.js +31 -4
  25. package/functions/getTab.js +8 -0
  26. package/functions/getTop100.js +4 -0
  27. package/functions/getTopLists.js +5 -0
  28. package/functions/getUserLevels.js +11 -5
  29. package/functions/getWeeklyDemon.js +4 -0
  30. package/functions/reportLevel.js +5 -0
  31. package/functions/searchLevels.js +6 -0
  32. package/functions/searchLists.js +24 -0
  33. package/functions/unblockUser.js +7 -1
  34. package/functions/updateLevelDesc.js +11 -4
  35. package/functions/uploadAccountPost.js +10 -3
  36. package/functions/uploadComment.js +17 -8
  37. package/functions/uploadMessage.js +18 -9
  38. package/misc/GJDecode.js +14 -3
  39. package/misc/colors.json +109 -1
  40. package/misc/gauntlets.json +36 -1
  41. package/misc/officialsongs.json +248 -1
  42. package/misc/rgbToHEX.js +17 -1
  43. package/package.json +1 -1
  44. package/xor.js +9 -3
@@ -1,24 +1,33 @@
1
1
  module.exports = {
2
- uploadMessage: async function (receiver, subj, content, user, pass) {
3
- if (!receiver) throw new Error("Please specify a message receiver!");
4
- if (!subj) throw new Error("Please specify a message subject!");
2
+ /**
3
+ * Sends a message.
4
+ * @param {string} recipient - The message recipient.
5
+ * @param {string} subject - The message subject.
6
+ * @param {string} content - The message content.
7
+ * @param {string} username - The sender's username or player ID.
8
+ * @param {string} password - The sender's password.
9
+ * @returns {number} Returns 1 if everything's OK, and -1 if something went wrong.
10
+ */
11
+ uploadMessage: async function (recipient, subject, content, username, password) {
12
+ if (!recipient) throw new Error("Please specify a message recipient!");
13
+ if (!subject) throw new Error("Please specify a message subject!");
5
14
  if (!content) throw new Error("Please specify a message content!");
6
- if (!user) throw new Error("Please provide a username or a player ID!");
7
- if (!pass) throw new Error("Please provide a password!");
15
+ if (!username) throw new Error("Please provide a username or a player ID!");
16
+ if (!password) throw new Error("Please provide a password!");
8
17
 
9
18
  const { gjReq } = require("../gjReq");
10
19
  const XOR = require("../xor");
11
20
  const xor = new XOR;
12
21
 
13
22
  let userSearch = await gjReq("getGJUsers20", {
14
- str: user,
23
+ str: username,
15
24
  secret: "Wmfd2893gb7"
16
25
  });
17
26
  if (userSearch.data == -1) throw new Error(-1);
18
27
  let userAccID = userSearch.data.split(":")[21];
19
28
 
20
29
  let recSearch = await gjReq("getGJUsers20", {
21
- str: receiver,
30
+ str: recipient,
22
31
  secret: "Wmfd2893gb7"
23
32
  });
24
33
  if (recSearch.data == -1) throw new Error(-1);
@@ -27,8 +36,8 @@ module.exports = {
27
36
  let res = await gjReq("uploadGJMessage20", {
28
37
  accountID: userAccID,
29
38
  toAccountID: recAccID,
30
- gjp: xor.encrypt(pass, 37526),
31
- subject: Buffer.from(subj).toString("base64"),
39
+ gjp: xor.encrypt(password, 37526),
40
+ subject: Buffer.from(subject).toString("base64"),
32
41
  body: xor.encrypt(content, 14251),
33
42
  secret: "Wmfd2893gb7"
34
43
  });
package/misc/GJDecode.js CHANGED
@@ -108,9 +108,19 @@ module.exports = class GJDecode {
108
108
  22: "2.2"
109
109
  }
110
110
 
111
+ const epicObj = {
112
+ 0: null,
113
+ 1: "epic",
114
+ 2: "legendary",
115
+ 3: "mythic"
116
+ }
117
+
118
+ let description = Buffer.from(s[35], "base64url").toString();
119
+
111
120
  let lvl = {
112
121
  id: Number(s[1]),
113
122
  name: s[3],
123
+ description: description ? description : "(No description provided)",
114
124
  levelVersion: Number(s[5]),
115
125
  playerID: Number(s[7]),
116
126
  difficulty: diffObj[s[11]],
@@ -121,7 +131,8 @@ module.exports = class GJDecode {
121
131
  length: lengthObj[s[37]],
122
132
  demon: Boolean(Number(s[21])),
123
133
  featured: Boolean(Number(s[29])),
124
- epic: Boolean(Number(s[31])),
134
+ epic: Number(s[31]) >= 1,
135
+ rating: epicObj[Number(s[31])],
125
136
  objects: Number(s[33]),
126
137
  starsRequested: Number(s[47]),
127
138
  gameVersion: versionObj[s[17]] ? versionObj[s[17]] : "Pre-1.7",
@@ -141,8 +152,8 @@ module.exports = class GJDecode {
141
152
  if (officialSongID != 0 && songID == 0) song = getOfficialSongInfo(officialSongID + 1);
142
153
  if (officialSongID == 0 && songID == 0) song = getOfficialSongInfo(1);
143
154
 
144
- lvl['creator'] = encCreators[playerId] ? encCreators[playerId] : "-";
145
- lvl['song'] = song;
155
+ lvl.creator = encCreators[playerId] ? encCreators[playerId] : "-";
156
+ lvl.song = song;
146
157
 
147
158
  result.push(lvl);
148
159
  }
package/misc/colors.json CHANGED
@@ -1 +1,109 @@
1
- {"0":"125,255,0","1":"0,255,0","2":"0,255,125","3":"0,255,255","4":"0,125,255","5":"0,0,255","6":"125,0,255","7":"255,0,255","8":"255,0,125","9":"255,0,0","10":"255,125,0","11":"255,255,0","12":"255,255,255","13":"185,0,255","14":"255,185,0","15":"0,0,0","16":"0,200,255","17":"175,175,175","18":"90,90,90","19":"255,125,125","20":"0,175,75","21":"0,125,125","22":"0,75,175","23":"75,0,175","24":"125,0,125","25":"175,0,75","26":"175,75,0","27":"125,125,0","28":"75,175,0","29":"255,75,0","30":"150,50,0","31":"150,100,0","32":"100,150,0","33":"0,150,100","34":"0,100,150","35":"100,0,150","36":"150,0,100","37":"150,0,0","38":"0,150,0","39":"0,0,150","40":"125,255,175","41":"125,125,255","42":"255,250,127","43":"250,127,255","44":"0,255,192","45":"80,50,14","46":"205,165,118","47":"182,128,255","48":"255,58,58","49":"77,77,143","50":"0,10,76","51":"253,212,206","52":"190,181,255","53":"112,0,0","54":"82,2,0","55":"56,1,6","56":"128,79,79","57":"122,53,53","58":"81,36,36","59":"163,98,70","60":"117,73,54","61":"86,53,40","62":"255,185,114","63":"255,160,64","64":"102,49,30","65":"91,39,0","66":"71,32,0","67":"167,123,77","68":"109,83,57","69":"81,62,42","70":"255,255,192","71":"253,224,160","72":"192,255,160","73":"177,255,109","74":"192,255,224","75":"148,255,228","76":"67,161,138","77":"49,109,95","78":"38,84,73","79":"0,96,0","80":"0,64,0","81":"0,96,96","82":"0,64,64","83":"160,255,255","84":"1,7,112","85":"0,73,109","86":"0,50,76","87":"0,38,56","88":"80,128,173","89":"51,83,117","90":"35,60,86","91":"224,224,224","92":"61,6,140","93":"55,8,96","94":"64,64,64","95":"111,73,164","96":"84,54,127","97":"66,42,99","98":"252,181,255","99":"175,87,175","100":"130,67,130","101":"94,49,94","102":"128,128,128","103":"102,3,62","104":"71,1,52","105":"210,255,50","106":"118,189,255"}
1
+ {
2
+ "0": "125,255,0",
3
+ "1": "0,255,0",
4
+ "2": "0,255,125",
5
+ "3": "0,255,255",
6
+ "4": "0,125,255",
7
+ "5": "0,0,255",
8
+ "6": "125,0,255",
9
+ "7": "255,0,255",
10
+ "8": "255,0,125",
11
+ "9": "255,0,0",
12
+ "10": "255,125,0",
13
+ "11": "255,255,0",
14
+ "12": "255,255,255",
15
+ "13": "185,0,255",
16
+ "14": "255,185,0",
17
+ "15": "0,0,0",
18
+ "16": "0,200,255",
19
+ "17": "175,175,175",
20
+ "18": "90,90,90",
21
+ "19": "255,125,125",
22
+ "20": "0,175,75",
23
+ "21": "0,125,125",
24
+ "22": "0,75,175",
25
+ "23": "75,0,175",
26
+ "24": "125,0,125",
27
+ "25": "175,0,75",
28
+ "26": "175,75,0",
29
+ "27": "125,125,0",
30
+ "28": "75,175,0",
31
+ "29": "255,75,0",
32
+ "30": "150,50,0",
33
+ "31": "150,100,0",
34
+ "32": "100,150,0",
35
+ "33": "0,150,100",
36
+ "34": "0,100,150",
37
+ "35": "100,0,150",
38
+ "36": "150,0,100",
39
+ "37": "150,0,0",
40
+ "38": "0,150,0",
41
+ "39": "0,0,150",
42
+ "40": "125,255,175",
43
+ "41": "125,125,255",
44
+ "42": "255,250,127",
45
+ "43": "250,127,255",
46
+ "44": "0,255,192",
47
+ "45": "80,50,14",
48
+ "46": "205,165,118",
49
+ "47": "182,128,255",
50
+ "48": "255,58,58",
51
+ "49": "77,77,143",
52
+ "50": "0,10,76",
53
+ "51": "253,212,206",
54
+ "52": "190,181,255",
55
+ "53": "112,0,0",
56
+ "54": "82,2,0",
57
+ "55": "56,1,6",
58
+ "56": "128,79,79",
59
+ "57": "122,53,53",
60
+ "58": "81,36,36",
61
+ "59": "163,98,70",
62
+ "60": "117,73,54",
63
+ "61": "86,53,40",
64
+ "62": "255,185,114",
65
+ "63": "255,160,64",
66
+ "64": "102,49,30",
67
+ "65": "91,39,0",
68
+ "66": "71,32,0",
69
+ "67": "167,123,77",
70
+ "68": "109,83,57",
71
+ "69": "81,62,42",
72
+ "70": "255,255,192",
73
+ "71": "253,224,160",
74
+ "72": "192,255,160",
75
+ "73": "177,255,109",
76
+ "74": "192,255,224",
77
+ "75": "148,255,228",
78
+ "76": "67,161,138",
79
+ "77": "49,109,95",
80
+ "78": "38,84,73",
81
+ "79": "0,96,0",
82
+ "80": "0,64,0",
83
+ "81": "0,96,96",
84
+ "82": "0,64,64",
85
+ "83": "160,255,255",
86
+ "84": "1,7,112",
87
+ "85": "0,73,109",
88
+ "86": "0,50,76",
89
+ "87": "0,38,56",
90
+ "88": "80,128,173",
91
+ "89": "51,83,117",
92
+ "90": "35,60,86",
93
+ "91": "224,224,224",
94
+ "92": "61,6,140",
95
+ "93": "55,8,96",
96
+ "94": "64,64,64",
97
+ "95": "111,73,164",
98
+ "96": "84,54,127",
99
+ "97": "66,42,99",
100
+ "98": "252,181,255",
101
+ "99": "175,87,175",
102
+ "100": "130,67,130",
103
+ "101": "94,49,94",
104
+ "102": "128,128,128",
105
+ "103": "102,3,62",
106
+ "104": "71,1,52",
107
+ "105": "210,255,50",
108
+ "106": "118,189,255"
109
+ }
@@ -1 +1,36 @@
1
- {"1":"Fire","2":"Ice","3":"Poison","4":"Shadow","5":"Lava","6":"Bonus","7":"Chaos","8":"Demon","9":"Time","10":"Crystal","11":"Magic","12":"Spike","13":"Monster","14":"Doom","15":"Death","21":"Water","35":"Portal","36":"Strange","37":"Fantasy","43":"Castle","46":"World","47":"Galaxy","48":"Universe","49":"Discord","50":"Split"}
1
+ {
2
+ "1": "Fire",
3
+ "2": "Ice",
4
+ "3": "Poison",
5
+ "4": "Shadow",
6
+ "5": "Lava",
7
+ "6": "Bonus",
8
+ "7": "Chaos",
9
+ "8": "Demon",
10
+ "9": "Time",
11
+ "10": "Crystal",
12
+ "11": "Magic",
13
+ "12": "Spike",
14
+ "13": "Monster",
15
+ "14": "Doom",
16
+ "15": "Death",
17
+ "16": "Forest",
18
+ "18": "Force",
19
+ "21": "Water",
20
+ "22": "Haunted",
21
+ "29": "Halloween",
22
+ "34": "Inferno",
23
+ "35": "Portal",
24
+ "36": "Strange",
25
+ "37": "Fantasy",
26
+ "38": "Christmas",
27
+ "40": "Mystery",
28
+ "41": "Cursed",
29
+ "42": "Cyborg",
30
+ "43": "Castle",
31
+ "46": "World",
32
+ "47": "Galaxy",
33
+ "48": "Universe",
34
+ "49": "Discord",
35
+ "50": "Split"
36
+ }
@@ -1 +1,248 @@
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"},"dash":{"name":"Dash","id":"Level 22","artist":"MDK","link":"https://www.robtopgames.com/dash"},"exp":{"name":"Explorers","id":"Level 23","artist":"Hinkik","link":"https://www.youtube.com/watch?v=fc1tg9qkGyI"},"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"},"ps":{"name":"Press Start","id":"Level 1 (Geometry Dash: SubZero)","artist":"MDK","link":"https://www.youtube.com/watch?v=XoLouT7TqZY"},"ne":{"name":"Nock Em","id":"Level 2 (Geometry Dash: SubZero)","artist":"Bossfight","link":"https://www.youtube.com/watch?v=ePv2X_CCaGg"},"pt":{"name":"Power Trip","id":"Level 3 (Geometry Dash: SubZero)","artist":"Boom Kitty","link":"https://www.youtube.com/watch?v=l6OsF7RlQb4"},"unknown":{"name":"Unknown","id":null,"artist":"DJVI","link":null}}
1
+ {
2
+ "1": {
3
+ "name": "Stereo Madness",
4
+ "id": "Level 1",
5
+ "artist": "ForeverBound",
6
+ "link": "https://www.youtube.com/watch?v=JhKyKEDxo8Q"
7
+ },
8
+ "2": {
9
+ "name": "Back on Track",
10
+ "id": "Level 2",
11
+ "artist": "DJVI",
12
+ "link": "https://www.youtube.com/watch?v=N9vDTYZpqXM"
13
+ },
14
+ "3": {
15
+ "name": "Polargeist",
16
+ "id": "Level 3",
17
+ "artist": "Step",
18
+ "link": "https://www.youtube.com/watch?v=4W28wWWxKuQ"
19
+ },
20
+ "4": {
21
+ "name": "Dry Out",
22
+ "id": "Level 4",
23
+ "artist": "DJVI",
24
+ "link": "https://www.youtube.com/watch?v=FnXabH2q2A0"
25
+ },
26
+ "5": {
27
+ "name": "Base After Base",
28
+ "id": "Level 5",
29
+ "artist": "DJVI",
30
+ "link": "https://www.youtube.com/watch?v=TZULkgQPHt0"
31
+ },
32
+ "6": {
33
+ "name": "Cant Let Go",
34
+ "id": "Level 6",
35
+ "artist": "DJVI",
36
+ "link": "https://www.youtube.com/watch?v=fLnF-QnR1Zw"
37
+ },
38
+ "7": {
39
+ "name": "Jumper",
40
+ "id": "Level 7",
41
+ "artist": "Waterflame",
42
+ "link": "https://www.youtube.com/watch?v=ZXHO4AN_49Q"
43
+ },
44
+ "8": {
45
+ "name": "Time Machine",
46
+ "id": "Level 8",
47
+ "artist": "Waterflame",
48
+ "link": "https://www.youtube.com/watch?v=zZ1L9JD6l0g"
49
+ },
50
+ "9": {
51
+ "name": "Cycles",
52
+ "id": "Level 9",
53
+ "artist": "DJVI",
54
+ "link": "https://www.youtube.com/watch?v=KDdvGZn6Gfs"
55
+ },
56
+ "10": {
57
+ "name": "xStep",
58
+ "id": "Level 10",
59
+ "artist": "DJVI",
60
+ "link": "https://www.youtube.com/watch?v=PSvYfVGyQfw"
61
+ },
62
+ "11": {
63
+ "name": "Clutterfunk",
64
+ "id": "Level 11",
65
+ "artist": "Waterflame",
66
+ "link": "https://www.youtube.com/watch?v=D5uJOpItgNg"
67
+ },
68
+ "12": {
69
+ "name": "Theory of Everything",
70
+ "id": "Level 12",
71
+ "artist": "DJ-Nate",
72
+ "link": "https://www.newgrounds.com/audio/listen/354826"
73
+ },
74
+ "13": {
75
+ "name": "Electroman Adventures",
76
+ "id": "Level 13",
77
+ "artist": "Waterflame",
78
+ "link": "https://www.youtube.com/watch?v=Pb6KyewC_Vg"
79
+ },
80
+ "14": {
81
+ "name": "Clubstep",
82
+ "id": "Level 14",
83
+ "artist": "DJ-Nate",
84
+ "link": "https://www.newgrounds.com/audio/listen/396093"
85
+ },
86
+ "15": {
87
+ "name": "Electrodynamix",
88
+ "id": "Level 15",
89
+ "artist": "DJ-Nate",
90
+ "link": "https://www.newgrounds.com/audio/listen/368392"
91
+ },
92
+ "16": {
93
+ "name": "Hexagon Force",
94
+ "id": "Level 16",
95
+ "artist": "Waterflame",
96
+ "link": "https://www.youtube.com/watch?v=afwK743PL2Y"
97
+ },
98
+ "17": {
99
+ "name": "Blast Processing",
100
+ "id": "Level 17",
101
+ "artist": "Waterflame",
102
+ "link": "https://www.youtube.com/watch?v=Z5RufkDHsdM"
103
+ },
104
+ "18": {
105
+ "name": "Theory of Everything 2",
106
+ "id": "Level 18",
107
+ "artist": "DJ-Nate",
108
+ "link": "https://www.newgrounds.com/audio/listen/790340"
109
+ },
110
+ "19": {
111
+ "name": "Geometrical Dominator",
112
+ "id": "Level 19",
113
+ "artist": "Waterflame",
114
+ "link": "https://www.newgrounds.com/audio/listen/641172"
115
+ },
116
+ "20": {
117
+ "name": "Deadlocked",
118
+ "id": "Level 20",
119
+ "artist": "F-777",
120
+ "link": "https://www.youtube.com/watch?v=QRGkFkf2r0U"
121
+ },
122
+ "21": {
123
+ "name": "Fingerdash",
124
+ "id": "Level 21",
125
+ "artist": "MDK",
126
+ "link": "https://www.youtube.com/watch?v=BuPmq7yjDnI"
127
+ },
128
+ "22": {
129
+ "name": "Dash",
130
+ "id": "Level 22",
131
+ "artist": "MDK",
132
+ "link": "https://www.robtopgames.com/dash"
133
+ },
134
+ "23": {
135
+ "name": "Explorers",
136
+ "id": "Level 23",
137
+ "artist": "Hinkik",
138
+ "link": "https://www.youtube.com/watch?v=fc1tg9qkGyI"
139
+ },
140
+ "24": {
141
+ "name": "The Seven Seas",
142
+ "id": "Level 1 (Geometry Dash: Meltdown)",
143
+ "artist": "F-777",
144
+ "link": "https://www.youtube.com/watch?v=38fPQ5JKQ_Q"
145
+ },
146
+ "25": {
147
+ "name": "Viking Arena",
148
+ "id": "Level 2 (Geometry Dash: Meltdown)",
149
+ "artist": "F-777",
150
+ "link": "https://www.youtube.com/watch?v=RaJ6Vf2w9hY"
151
+ },
152
+ "26": {
153
+ "name": "Airborne Robots",
154
+ "id": "Level 3 (Geometry Dash: Meltdown)",
155
+ "artist": "F-777",
156
+ "link": "https://www.youtube.com/watch?v=guBpnPY32s0"
157
+ },
158
+ "27": {
159
+ "name": "Random Song 06",
160
+ "id": "Level 22 (The Challenge)",
161
+ "artist": "RobTop",
162
+ "link": "https://www.newgrounds.com/audio/listen/633385"
163
+ },
164
+ "28": {
165
+ "name": "Payload",
166
+ "id": "Level 1 (Geometry Dash: World)",
167
+ "artist": "Dex Arson",
168
+ "link": "https://www.youtube.com/watch?v=2SFOjJxEL7g"
169
+ },
170
+ "29": {
171
+ "name": "Beast Mode",
172
+ "id": "Level 2 (Geometry Dash: World)",
173
+ "artist": "Dex Arson",
174
+ "link": "https://www.newgrounds.com/audio/listen/589874"
175
+ },
176
+ "30": {
177
+ "name": "Machina",
178
+ "id": "Level 3 (Geometry Dash: World)",
179
+ "artist": "Dex Arson",
180
+ "link": "https://www.youtube.com/watch?v=EWjZOxs87yg"
181
+ },
182
+ "31": {
183
+ "name": "Years",
184
+ "id": "Level 4 (Geometry Dash: World)",
185
+ "artist": "Dex Arson",
186
+ "link": "https://www.youtube.com/watch?v=0MZvDD_sy-w"
187
+ },
188
+ "32": {
189
+ "name": "Frontlines",
190
+ "id": "Level 5 (Geometry Dash: World)",
191
+ "artist": "Dex Arson",
192
+ "link": "https://www.youtube.com/watch?v=f3wAripOdag"
193
+ },
194
+ "33": {
195
+ "name": "Space Pirates",
196
+ "id": "Level 6 (Geometry Dash: World)",
197
+ "artist": "Waterflame",
198
+ "link": "https://www.youtube.com/watch?v=Cu7HaeRHMhM"
199
+ },
200
+ "34": {
201
+ "name": "Striker",
202
+ "id": "Level 7 (Geometry Dash: World)",
203
+ "artist": "Waterflame",
204
+ "link": "https://www.youtube.com/watch?v=MU9wRCGt9h8"
205
+ },
206
+ "35": {
207
+ "name": "Embers",
208
+ "id": "Level 8 (Geometry Dash: World)",
209
+ "artist": "Dex Arson",
210
+ "link": "https://www.youtube.com/watch?v=nMDMlIvdqlA"
211
+ },
212
+ "36": {
213
+ "name": "Round 1",
214
+ "id": "Level 9 (Geometry Dash: World)",
215
+ "artist": "Dex Arson",
216
+ "link": "https://www.youtube.com/watch?v=NvQoY4gTIGU"
217
+ },
218
+ "37": {
219
+ "name": "Monster Dance Off",
220
+ "id": "Level 10 (Geometry Dash: World)",
221
+ "artist": "F-777",
222
+ "link": "https://www.youtube.com/watch?v=B8YkwDbGBr8"
223
+ },
224
+ "38": {
225
+ "name": "Press Start",
226
+ "id": "Level 1 (Geometry Dash: SubZero)",
227
+ "artist": "MDK",
228
+ "link": "https://www.youtube.com/watch?v=XoLouT7TqZY"
229
+ },
230
+ "39": {
231
+ "name": "Nock Em",
232
+ "id": "Level 2 (Geometry Dash: SubZero)",
233
+ "artist": "Bossfight",
234
+ "link": "https://www.youtube.com/watch?v=ePv2X_CCaGg"
235
+ },
236
+ "40": {
237
+ "name": "Power Trip",
238
+ "id": "Level 3 (Geometry Dash: SubZero)",
239
+ "artist": "Boom Kitty",
240
+ "link": "https://www.youtube.com/watch?v=l6OsF7RlQb4"
241
+ },
242
+ "-1": {
243
+ "name": "Unknown",
244
+ "id": null,
245
+ "artist": "DJVI",
246
+ "link": null
247
+ }
248
+ }
package/misc/rgbToHEX.js CHANGED
@@ -1 +1,17 @@
1
- module.exports={rgbToHEX:function(col){if(!col)col="255,255,255";let r=col.split(",")[0];let g=col.split(",")[1];let b=col.split(",")[2];if(b.includes("#"))b=b.split("#")[0];let rHex=Number(r).toString(16);let gHex=Number(g).toString(16);let bHex=Number(b).toString(16);return`#${rHex.length==1?"0"+rHex:rHex}${gHex.length==1?"0"+gHex:gHex}${bHex.length==1?"0"+bHex:bHex}`.toUpperCase()}};
1
+ module.exports = {
2
+ rgbToHEX: function (col) {
3
+ if (!col) col = "255,255,255";
4
+
5
+ let r = col.split(",")[0];
6
+ let g = col.split(",")[1];
7
+ let b = col.split(",")[2];
8
+
9
+ if (b.includes("#")) b = b.split("#")[0];
10
+
11
+ let rHex = Number(r).toString(16);
12
+ let gHex = Number(g).toString(16);
13
+ let bHex = Number(b).toString(16);
14
+
15
+ return `#${rHex.length == 1 ? "0" + rHex : rHex}${gHex.length == 1 ? "0" + gHex : gHex}${bHex.length == 1 ? "0" + bHex : bHex}`.toUpperCase()
16
+ }
17
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gj-boomlings-api",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "A light-weight Geometry Dash API wrapper",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/xor.js CHANGED
@@ -1,5 +1,11 @@
1
1
  module.exports = class XOR {
2
- xor(str, key) { return String.fromCodePoint(...str.split('').map((char, i) => char.charCodeAt(0) ^ key.toString().charCodeAt(i % key.toString().length))) }
3
- encrypt(str, key = 37526) { return Buffer.from(this.xor(str, key)).toString('base64').replace(/\//g, '_').replace(/\+/g, '-'); }
4
- decrypt(str, key = 37526) { return this.xor(Buffer.from(str.replace(/\//g, '_').replace(/\+/g, '-'), 'base64').toString(), key) }
2
+ xor(str, key) {
3
+ return String.fromCodePoint(...str.split('').map((char, i) => char.charCodeAt(0) ^ key.toString().charCodeAt(i % key.toString().length)))
4
+ }
5
+ encrypt(str, key = 37526) {
6
+ return Buffer.from(this.xor(str, key)).toString('base64').replace(/\//g, '_').replace(/\+/g, '-');
7
+ }
8
+ decrypt(str, key = 37526) {
9
+ return this.xor(Buffer.from(str.replace(/\//g, '_').replace(/\+/g, '-'), 'base64').toString(), key);
10
+ }
5
11
  }