gj-boomlings-api 2.0.0 → 2.0.2

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 (46) 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 +219 -1
  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 +198 -1
  23. package/functions/getSongInfo.js +21 -6
  24. package/functions/getSongsLibrary.js +107 -1
  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 +15 -6
  37. package/functions/uploadMessage.js +18 -9
  38. package/gjReq.js +18 -1
  39. package/index.js +36 -2
  40. package/misc/GJDecode.js +221 -1
  41. package/misc/colors.json +109 -1
  42. package/misc/gauntlets.json +36 -1
  43. package/misc/officialsongs.json +248 -1
  44. package/misc/rgbToHEX.js +17 -1
  45. package/package.json +1 -1
  46. package/xor.js +11 -1
package/misc/GJDecode.js CHANGED
@@ -1 +1,221 @@
1
- const{getOfficialSongInfo}=require("../functions/getOfficialSongInfo");const{rgbToHEX}=require("./rgbToHEX");const colors=require("./colors.json");module.exports=class GJDecode{decodeScoresUser(u){let iconObj={0:"cube",1:"ship",2:"ball",3:"ufo",4:"wave",5:"robot",6:"spider",7:"swing",8:"jetpack"};let s=u.split(":");return{name:s[1],playerID:Number(s[3]),accountID:Number(s[21]),rank:Number(s[9]),stars:Number(s[23]),diamonds:Number(s[29]),secretCoins:Number(s[5]),userCoins:Number(s[7]),demons:Number(s[31]),moons:Number(s[25]),creatorPoints:Number(s[27]),c1:rgbToHEX(colors[s[13]]),c2:rgbToHEX(colors[s[15]]),iconType:iconObj[s[17]]}}decodeSearchResults(res){let levels=res.split("#")[0].split("|");let creators=res.split("#")[1].split("|");let songs=res.split("#")[2].split("~:~");let result=[];let encCreators={};let encSongs={};creators.forEach(c=>{let playerID=c.split(":")[0];let username=c.split(":")[1];encCreators[playerID]=username});songs.forEach(s=>{let sp=s.split("~|~");let songId=sp[1];let songName=sp[3];let songArtistID=sp[5];let songArtist=sp[7];let size=sp[9];let link=sp[13];encSongs[songId]={name:songName,id:Number(songId),artist:songArtist,artistId:Number(songArtistID),fileSize:`${size} MB`,link:decodeURIComponent(link)}});for(const l of levels){let s=l.split(":");let diffObj={"-10":"Auto",0:"Unrated",10:"Easy",20:"Normal",30:"Hard",40:"Harder",50:"Insane"};if(Boolean(Number(s[21]))){diffObj={10:"Easy Demon",20:"Medium Demon",30:"Hard Demon",40:"Insane Demon",50:"Extreme Demon"}}const lengthObj={0:"Tiny",1:"Short",2:"Medium",3:"Long",4:"XL",5:"Platformer"};const versionObj={10:"1.7",18:"1.8",19:"1.9",20:"2.0",21:"2.1",22:"2.2"};let lvl={id:Number(s[1]),name:s[3],levelVersion:Number(s[5]),playerID:Number(s[7]),difficulty:diffObj[s[11]],stars:Number(s[27]),downloads:Number(s[13]),likes:Number(s[19]),disliked:s[19]<0?true:false,length:lengthObj[s[37]],demon:Boolean(Number(s[21])),featured:Boolean(Number(s[29])),epic:Boolean(Number(s[31])),objects:Number(s[33]),starsRequested:Number(s[47]),gameVersion:versionObj[s[17]]?versionObj[s[17]]:"Pre-1.7",copiedFrom:Number(s[39]),large:s[33]>4e4?true:false,twoPlayer:Boolean(Number(s[41])),coins:Number(s[43]),verifiedCoins:Boolean(Number(s[45]))};let officialSongID=Number(s[15]);let songID=Number(s[53]);let playerId=s[7];let song;if(officialSongID==0&&songID!=0||officialSongID!=0&&songID!=0)song=encSongs[songID.toString()];if(officialSongID!=0&&songID==0)song=getOfficialSongInfo(officialSongID+1);if(officialSongID==0&&songID==0)song=getOfficialSongInfo(1);lvl["creator"]=encCreators[playerId]?encCreators[playerId]:"-";lvl["song"]=song;result.push(lvl)}return result}decodeLists(res){let rawLists=res.split("#")[0].split("|");let rawAccounts=res.split("#")[1].split("|");let accounts=[];rawAccounts.forEach(a=>{let s=a.split(":");accounts.push({username:s[1],playerID:Number(s[0]),accountID:s[2]})});let lists=[];let diffObj={"-1":"N/A",0:"Auto",1:"Easy",2:"Normal",3:"Hard",4:"Harder",5:"Insane",6:"Easy Demon",7:"Medium Demon",8:"Hard Demon",9:"Insane Demon",10:"Extreme Demon"};rawLists.forEach(l=>{let s=l.split(":");let rawLvls=s[21].split(",");let lvls=[];for(let lvl of rawLvls){lvls.push(Number(lvl))}let playerID=accounts.filter(a=>a.accountID==s[9])[0].playerID;lists.push({id:Number(s[1]),name:s[3],description:Buffer.from(s[5],"base64").toString(),difficulty:diffObj[s[15]],username:s[11],playerID:playerID,accountID:Number(s[9]),downloads:Number(s[13]),likes:Number(s[17]),diamonds:Number(s[23]),disliked:s[17]<0?true:false,levels:lvls,required:Number(s[25]),uploadedUnix:Number(s[27])})});return lists}};
1
+ const { getOfficialSongInfo } = require("../functions/getOfficialSongInfo");
2
+ const { rgbToHEX } = require("./rgbToHEX");
3
+ const colors = require("./colors.json");
4
+ module.exports = class GJDecode {
5
+ decodeScoresUser(u) {
6
+ let iconObj = {
7
+ 0: "cube",
8
+ 1: "ship",
9
+ 2: "ball",
10
+ 3: "ufo",
11
+ 4: "wave",
12
+ 5: "robot",
13
+ 6: "spider",
14
+ 7: "swing",
15
+ 8: "jetpack"
16
+ }
17
+ let s = u.split(":");
18
+ return {
19
+ name: s[1],
20
+ playerID: Number(s[3]),
21
+ accountID: Number(s[21]),
22
+ rank: Number(s[9]),
23
+ stars: Number(s[23]),
24
+ diamonds: Number(s[29]),
25
+ secretCoins: Number(s[5]),
26
+ userCoins: Number(s[7]),
27
+ demons: Number(s[31]),
28
+ moons: Number(s[25]),
29
+ creatorPoints: Number(s[27]),
30
+ c1: rgbToHEX(colors[s[13]]),
31
+ c2: rgbToHEX(colors[s[15]]),
32
+ iconType: iconObj[s[17]]
33
+ }
34
+ }
35
+ decodeSearchResults(res) {
36
+ let levels = res.split("#")[0].split("|");
37
+ let creators = res.split("#")[1].split("|");
38
+ let songs = res.split("#")[2].split("~:~");
39
+
40
+ let result = [];
41
+
42
+ let encCreators = {};
43
+ let encSongs = {};
44
+
45
+ creators.forEach(c => {
46
+ let playerID = c.split(":")[0];
47
+ let username = c.split(":")[1];
48
+ encCreators[playerID] = username;
49
+ })
50
+
51
+ songs.forEach(s => {
52
+ let sp = s.split("~|~");
53
+ let songId = sp[1];
54
+ let songName = sp[3];
55
+ let songArtistID = sp[5];
56
+ let songArtist = sp[7];
57
+ let size = sp[9];
58
+ let link = sp[13];
59
+
60
+ encSongs[songId] = {
61
+ "name": songName,
62
+ "id": Number(songId),
63
+ "artist": songArtist,
64
+ "artistId": Number(songArtistID),
65
+ "fileSize": `${size} MB`,
66
+ "link": decodeURIComponent(link)
67
+ };
68
+ })
69
+
70
+ for (const l of levels) {
71
+ let s = l.split(":");
72
+
73
+ let diffObj = {
74
+ "-10": "Auto",
75
+ 0: "Unrated",
76
+ 10: "Easy",
77
+ 20: "Normal",
78
+ 30: "Hard",
79
+ 40: "Harder",
80
+ 50: "Insane"
81
+ }
82
+
83
+ if (Boolean(Number(s[21]))) {
84
+ diffObj = {
85
+ 10: "Easy Demon",
86
+ 20: "Medium Demon",
87
+ 30: "Hard Demon",
88
+ 40: "Insane Demon",
89
+ 50: "Extreme Demon"
90
+ }
91
+ }
92
+
93
+ const lengthObj = {
94
+ 0: "Tiny",
95
+ 1: "Short",
96
+ 2: "Medium",
97
+ 3: "Long",
98
+ 4: "XL",
99
+ 5: "Platformer"
100
+ }
101
+
102
+ const versionObj = {
103
+ 10: "1.7",
104
+ 18: "1.8",
105
+ 19: "1.9",
106
+ 20: "2.0",
107
+ 21: "2.1",
108
+ 22: "2.2"
109
+ }
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
+
120
+ let lvl = {
121
+ id: Number(s[1]),
122
+ name: s[3],
123
+ description: description ? description : "(No description provided)",
124
+ levelVersion: Number(s[5]),
125
+ playerID: Number(s[7]),
126
+ difficulty: diffObj[s[11]],
127
+ stars: Number(s[27]),
128
+ downloads: Number(s[13]),
129
+ likes: Number(s[19]),
130
+ disliked: s[19] < 0 ? true : false,
131
+ length: lengthObj[s[37]],
132
+ demon: Boolean(Number(s[21])),
133
+ featured: Boolean(Number(s[29])),
134
+ epic: Number(s[31]) >= 1,
135
+ rating: epicObj[Number(s[31])],
136
+ objects: Number(s[33]),
137
+ starsRequested: Number(s[47]),
138
+ gameVersion: versionObj[s[17]] ? versionObj[s[17]] : "Pre-1.7",
139
+ copiedFrom: Number(s[39]),
140
+ large: s[33] > 4e4 ? true : false,
141
+ twoPlayer: Boolean(Number(s[41])),
142
+ coins: Number(s[43]),
143
+ verifiedCoins: Boolean(Number(s[45]))
144
+ }
145
+
146
+ let officialSongID = Number(s[15]);
147
+ let songID = Number(s[53]);
148
+ let playerId = s[7];
149
+ let song;
150
+
151
+ if (officialSongID == 0 && songID != 0 || officialSongID != 0 && songID != 0) song = encSongs[songID.toString()];
152
+ if (officialSongID != 0 && songID == 0) song = getOfficialSongInfo(officialSongID + 1);
153
+ if (officialSongID == 0 && songID == 0) song = getOfficialSongInfo(1);
154
+
155
+ lvl.creator = encCreators[playerId] ? encCreators[playerId] : "-";
156
+ lvl.song = song;
157
+
158
+ result.push(lvl);
159
+ }
160
+ return result;
161
+ }
162
+ decodeLists(res) {
163
+ let rawLists = res.split("#")[0].split("|");
164
+ let rawAccounts = res.split("#")[1].split("|");
165
+
166
+ let accounts = [];
167
+ rawAccounts.forEach(a => {
168
+ let s = a.split(":");
169
+ accounts.push({
170
+ username: s[1],
171
+ playerID: Number(s[0]),
172
+ accountID: s[2]
173
+ })
174
+ })
175
+
176
+ let lists = [];
177
+
178
+ let diffObj = {
179
+ "-1": "N/A",
180
+ "0": "Auto",
181
+ "1": "Easy",
182
+ "2": "Normal",
183
+ "3": "Hard",
184
+ "4": "Harder",
185
+ "5": "Insane",
186
+ "6": "Easy Demon",
187
+ "7": "Medium Demon",
188
+ "8": "Hard Demon",
189
+ "9": "Insane Demon",
190
+ "10": "Extreme Demon"
191
+ }
192
+
193
+ rawLists.forEach(l => {
194
+ let s = l.split(":");
195
+ let rawLvls = s[21].split(",");
196
+ let lvls = [];
197
+ for (let lvl of rawLvls) {
198
+ lvls.push(Number(lvl));
199
+ }
200
+ let playerID = accounts.filter(a => a.accountID == s[9])[0].playerID;
201
+ lists.push({
202
+ id: Number(s[1]),
203
+ name: s[3],
204
+ description: Buffer.from(s[5], "base64").toString(),
205
+ difficulty: diffObj[s[15]],
206
+ username: s[11],
207
+ playerID: playerID,
208
+ accountID: Number(s[9]),
209
+ downloads: Number(s[13]),
210
+ likes: Number(s[17]),
211
+ diamonds: Number(s[23]),
212
+ disliked: s[17] < 0 ? true : false,
213
+ levels: lvls,
214
+ required: Number(s[25]),
215
+ uploadedUnix: Number(s[27])
216
+ })
217
+ })
218
+
219
+ return lists;
220
+ }
221
+ }
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","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
+ };