gj-boomlings-api 0.4.0 → 1.0.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.
Files changed (43) hide show
  1. package/README.md +14 -3
  2. package/config.json +10 -1
  3. package/docs/blockUser.md +21 -0
  4. package/docs/deleteAccountPost.md +23 -0
  5. package/docs/getCreatorScores.md +60 -0
  6. package/docs/getGauntlets.md +2 -2
  7. package/docs/getLevelByID.md +51 -0
  8. package/docs/getMapPacks.md +88 -0
  9. package/docs/getTop100.md +56 -0
  10. package/docs/getUserLevels.md +84 -0
  11. package/docs/objects/level.md +1 -1
  12. package/docs/searchLevels.md +113 -0
  13. package/docs/updateLevelDesc.md +23 -0
  14. package/docs/uploadAccountPost.md +2 -2
  15. package/docs/uploadComment.md +28 -0
  16. package/functions/blockUser.js +60 -0
  17. package/functions/deleteAccountPost.js +52 -0
  18. package/functions/dlLevel.js +3 -2
  19. package/functions/getAccountPosts.js +13 -9
  20. package/functions/getCommentHistory.js +9 -0
  21. package/functions/getComments.js +4 -0
  22. package/functions/getCreatorScores.js +222 -0
  23. package/functions/getGauntlets.js +3 -0
  24. package/functions/getLevelByID.js +30 -0
  25. package/functions/getMapPacks.js +42 -0
  26. package/functions/getOfficialSongInfo.js +1 -7
  27. package/functions/getProfile.js +4 -2
  28. package/functions/getSongInfo.js +1 -0
  29. package/functions/getTop100.js +222 -0
  30. package/functions/getUserLevels.js +191 -0
  31. package/functions/reportLevel.js +2 -0
  32. package/functions/searchLevels.js +174 -0
  33. package/functions/updateLevelDesc.js +55 -0
  34. package/functions/uploadAccountPost.js +1 -0
  35. package/functions/uploadComment.js +66 -0
  36. package/index.js +21 -1
  37. package/misc/decodeAccountPost.js +6 -1
  38. package/misc/decodeLevel.js +166 -0
  39. package/misc/decodeMapPack.js +55 -0
  40. package/misc/decodeUserResult.js +53 -0
  41. package/misc/gjp.js +8 -0
  42. package/misc/officialsongs.json +0 -18
  43. package/package.json +2 -2
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
- # gj-boomlings-api
2
1
  <div align="center">
2
+ <a href="https://www.npmjs.com/package/gj-boomlings-api"><img src="https://shikoshib.github.io/font1.png" width="600"></a><hr>
3
3
  <a href="https://www.npmjs.com/package/gj-boomlings-api"><img src="https://img.shields.io/npm/v/gj-boomlings-api.svg?maxAge=3600" alt="npm version" /></a>
4
4
  <a href="https://www.npmjs.com/package/gj-boomlings-api"><img src="https://img.shields.io/npm/dt/gj-boomlings-api.svg?maxAge=3600" alt="npm downloads" /></a>
5
5
  <a href="https://snyk.io/test/github/shikoshib/gj-boomlings-api"><img src="https://snyk.io/test/github/shikoshib/gj-boomlings-api/badge.svg" alt="Known Vulnerabilities" /></a>
@@ -57,7 +57,6 @@ Returns:
57
57
  }
58
58
  }
59
59
  ```
60
-
61
60
  ### getProfile(user)
62
61
 
63
62
  With this function, you can get somebody's profile info. You can use a player ID (not the account ID) or a name string, it doesn't matter.
@@ -90,8 +89,20 @@ Returns:
90
89
  twitch: 'https://twitch.tv/robtopgames'
91
90
  }
92
91
  ```
92
+ ### uploadComment(comment, id, user, password, percent)
93
+
94
+ You can post comments with this function.
95
+
96
+ For example,
97
+ ```js
98
+ const gd = require("gj-boomlings-api");
99
+ gd.uploadComment("I love gj-boomlings-api!", 83925274, "gmdshxdow", "*********", 99).then(console.log);
100
+ // of course you need to replace the asterisks with your password
101
+ ```
102
+
103
+ Posts a comment on the level with the ID of 83925274, with 99 percent, on gmdshxdow's behalf.
93
104
 
94
- Check out [docs](./docs/) for more info.
105
+ **Check out [docs](./docs/) for more info.**
95
106
 
96
107
  ---
97
108
 
package/config.json CHANGED
@@ -1 +1,10 @@
1
- {"headers":{"Content-Type":"application/x-www-form-urlencoded","user-agent":"","Accept-Encoding":"*","Accept":"*/*"},"server":"http://www.boomlings.com/database/"}
1
+ {
2
+ "headers": {
3
+ "Content-Type":"application/x-www-form-urlencoded",
4
+ "user-agent":"",
5
+ "Accept-Encoding":"*",
6
+ "Accept":"*/*"
7
+ },
8
+ "server":"http://www.boomlings.com/database/",
9
+ "secret":"Wmfd2893gb7"
10
+ }
@@ -0,0 +1,21 @@
1
+ # blockUser()
2
+
3
+ Blocks the user.
4
+
5
+ ## Parameters
6
+ `target` - the user that is being blocked.
7
+
8
+ `user` - the player ID or the username of the user that blocks.
9
+
10
+ `gjp` - the password of the user that blocks.
11
+
12
+ ## Example
13
+ ```js
14
+ const gd = require("gj-boomlings-api");
15
+ gd.blockUser("colon", "gmdshxdow", "*********").then(console.log);
16
+ ```
17
+
18
+ ## Response
19
+ ```js
20
+ 1
21
+ ```
@@ -0,0 +1,23 @@
1
+ # deleteAccountPost()
2
+
3
+ Posts a comment to a profile.
4
+
5
+ ## Parameters
6
+ `id` - the account post ID. Returned by `getAccountPosts()`.
7
+
8
+ `user` - the username or player ID.
9
+
10
+ `gjp` - the user's password.
11
+
12
+ ## Example
13
+ ```js
14
+ const gd = require("gj-boomlings-api");
15
+ gd.deleteAccountPost("18183557", "gmdshxdow", "*********").then(console.log);
16
+ ```
17
+
18
+ ## Response
19
+ ```js
20
+ 1
21
+ ```
22
+
23
+ Returns `1` if the comment was successfully deleted.
@@ -0,0 +1,60 @@
1
+ # getCreatorScores()
2
+
3
+ Gets the top 100 creators leaderboard, sorted by creator points.
4
+
5
+ ## Parameters
6
+ None!
7
+
8
+ ## Example
9
+ ```js
10
+ const gd = require("gj-boomlings-api");
11
+ gd.getCreatorScores().then(console.log);
12
+ ```
13
+
14
+ ## Response
15
+ ```
16
+ [
17
+ {
18
+ username: 'YunHaSeu14',
19
+ playerID: 36314,
20
+ accountID: 1187377,
21
+ rank: 1,
22
+ stars: 33615,
23
+ diamonds: 68501,
24
+ secretCoins: 121,
25
+ userCoins: 9431,
26
+ demons: 123,
27
+ creatorPoints: 290
28
+ },
29
+ {
30
+ username: 'ViPriN',
31
+ playerID: 1078150,
32
+ accountID: 2795,
33
+ rank: 2,
34
+ stars: 29533,
35
+ diamonds: 28327,
36
+ secretCoins: 149,
37
+ userCoins: 3256,
38
+ demons: 1026,
39
+ creatorPoints: 281
40
+ },
41
+ {
42
+ username: 'Serponge',
43
+ playerID: 4170784,
44
+ accountID: 119741,
45
+ rank: 3,
46
+ stars: 85,
47
+ diamonds: 17,
48
+ secretCoins: 0,
49
+ userCoins: 5,
50
+ demons: 1,
51
+ creatorPoints: 234
52
+ }
53
+ ...and so on
54
+ ```
55
+
56
+ This function returns an array of [user objects](./objects/user.md).
57
+
58
+ ---
59
+
60
+ **NOTE:** Here, the users' rank is their actual position on the leaderboard.
@@ -3,7 +3,7 @@
3
3
  Gets the list of gauntlets and decodes it.
4
4
 
5
5
  ## Parameters
6
- No parameters!
6
+ None!
7
7
 
8
8
  ## Example
9
9
  ```js
@@ -73,7 +73,7 @@ gd.getGauntlets().then(console.log);
73
73
  }
74
74
  ]
75
75
  ```
76
- This function returns an array of gauntlets.
76
+ This function returns an array of gauntlet objects.
77
77
 
78
78
  ### Properties
79
79
  `name` - the gauntlet name.
@@ -0,0 +1,51 @@
1
+ # getLevelByID()
2
+
3
+ Gets the basic info about the level by its ID.
4
+
5
+ ## Parameters
6
+ `level` - the level ID.
7
+
8
+ ## Example
9
+ ```js
10
+ const gd = require("gj-boomlings-api");
11
+ gd.getLevelByID(11940).then(console.log);
12
+ ```
13
+
14
+ ## Response
15
+ ```
16
+ {
17
+ id: 11940,
18
+ name: 'Level Easy',
19
+ description: 'Cody',
20
+ creator: '-',
21
+ level_version: 1,
22
+ difficulty: 'Normal',
23
+ stars: 3,
24
+ downloads: 66447749,
25
+ likes: 3781481,
26
+ disliked: false,
27
+ length: 'Long',
28
+ demon: false,
29
+ featured: true,
30
+ epic: false,
31
+ objects: 0,
32
+ stars_requested: 0,
33
+ game_version: 'Pre-1.7',
34
+ copied: 0,
35
+ two_p: false,
36
+ coins: 0,
37
+ verified_coins: false,
38
+ song: {
39
+ name: 'Stereo Madness',
40
+ id: 'Level 1',
41
+ artist: 'ForeverBound',
42
+ link: 'https://www.youtube.com/watch?v=JhKyKEDxo8Q'
43
+ }
44
+ }
45
+ ```
46
+
47
+ Returns a [level object](./objects/level.md).
48
+
49
+ ---
50
+
51
+ **NOTE:** This is pretty much the same thing as `dlLevel()`, but `getLevelByID()` doesn't provide the password, update and upload date and the LDM checkbox. On the other hand, it's much faster (especially for object-heavy levels).
@@ -0,0 +1,88 @@
1
+ # getMapPacks()
2
+
3
+ Gets the list of map packs and decodes it.
4
+
5
+ ## Parameters
6
+ `page` (optional) - the page of the map packs list. Defaults to 1.
7
+
8
+ ## Example
9
+ ```js
10
+ const gd = require("gj-boomlings-api");
11
+ gd.getMapPacks(2).then(console.log);
12
+ ```
13
+
14
+ ## Response
15
+ ```
16
+ [
17
+ {
18
+ name: 'Ruby Pack',
19
+ levels: [ 1446958, 1063115, 1734354 ],
20
+ stars: 4,
21
+ coins: 1
22
+ },
23
+ {
24
+ name: 'Electro Pack',
25
+ levels: [ 5131543, 8157377, 8571598 ],
26
+ stars: 4,
27
+ coins: 1
28
+ },
29
+ {
30
+ name: 'Laser Pack',
31
+ levels: [ 12178580, 11357573, 11591917 ],
32
+ stars: 4,
33
+ coins: 1
34
+ },
35
+ {
36
+ name: 'Glow Pack',
37
+ levels: [ 4449079, 6979485, 10110092 ],
38
+ stars: 4,
39
+ coins: 1
40
+ },
41
+ {
42
+ name: 'Spirit Pack',
43
+ levels: [ 13766381, 13242284, 13963465 ],
44
+ stars: 4,
45
+ coins: 1
46
+ },
47
+ {
48
+ name: 'Hard Pack',
49
+ levels: [ 217631, 3785, 281148 ],
50
+ stars: 5,
51
+ coins: 1
52
+ },
53
+ {
54
+ name: 'Morph Pack',
55
+ levels: [ 364445, 411459, 509393 ],
56
+ stars: 5,
57
+ coins: 1
58
+ },
59
+ {
60
+ name: 'Phoenix Pack',
61
+ levels: [ 674454, 750434, 835854 ],
62
+ stars: 5,
63
+ coins: 1
64
+ },
65
+ {
66
+ name: 'Power Pack',
67
+ levels: [ 809579, 741941, 577710 ],
68
+ stars: 5,
69
+ coins: 1
70
+ },
71
+ {
72
+ name: 'Shiny Pack',
73
+ levels: [ 980341, 1541962, 1160937 ],
74
+ stars: 5,
75
+ coins: 1
76
+ }
77
+ ]
78
+ ```
79
+ This function returns an array of map pack objects.
80
+
81
+ ### Properties
82
+ `name` - the map pack name.
83
+
84
+ `levels` - the array of levels in a map pack.
85
+
86
+ `stars` - the amount of stars you get from beating the map pack.
87
+
88
+ `coins` - the amount of coins you get from beating the map pack.
@@ -0,0 +1,56 @@
1
+ # getTop100()
2
+
3
+ Gets the top 100 players leaderboard, sorted by stars.
4
+
5
+ ## Parameters
6
+ None!
7
+
8
+ ## Example
9
+ ```js
10
+ const gd = require("gj-boomlings-api");
11
+ gd.getTop100().then(console.log);
12
+ ```
13
+
14
+ ## Response
15
+ ```
16
+ [
17
+ {
18
+ username: 'Smiffy777',
19
+ playerID: 7708568,
20
+ accountID: 1413859,
21
+ rank: 1,
22
+ stars: 227040,
23
+ diamonds: 156320,
24
+ secretCoins: 149,
25
+ userCoins: 45920,
26
+ demons: 5581,
27
+ creatorPoints: 0
28
+ },
29
+ {
30
+ username: 'Gormuck',
31
+ playerID: 8247386,
32
+ accountID: 1775477,
33
+ rank: 2,
34
+ stars: 222121,
35
+ diamonds: 166422,
36
+ secretCoins: 149,
37
+ userCoins: 28509,
38
+ demons: 5050,
39
+ creatorPoints: 2
40
+ },
41
+ {
42
+ username: 'volplay',
43
+ playerID: 14188128,
44
+ accountID: 5189757,
45
+ rank: 3,
46
+ stars: 221320,
47
+ diamonds: 121349,
48
+ secretCoins: 149,
49
+ userCoins: 25076,
50
+ demons: 5291,
51
+ creatorPoints: 2
52
+ }
53
+ ...and so on
54
+ ```
55
+
56
+ This function returns an array of [user objects](./objects/user.md).
@@ -0,0 +1,84 @@
1
+ # getUserLevels()
2
+
3
+ Gets the list of levels made by a specified user.
4
+
5
+ ## Parameters
6
+ `user` - the user's username or a player ID.
7
+
8
+ `page` (optional) - the page. Defaults to 1.
9
+
10
+ ## Example
11
+ ```js
12
+ const gd = require("gj-boomlings-api");
13
+ gd.getUserLevels("shikoshib", 2).then(console.log);
14
+ ```
15
+
16
+ ## Response
17
+ ```
18
+ [
19
+ {
20
+ id: 79650761,
21
+ name: 'Lost or Not',
22
+ description: "I'm going to make a level trilogy with my own song. Part 2 soon!",
23
+ creator: 'shikoshib',
24
+ level_version: 1,
25
+ difficulty: 'Harder',
26
+ stars: 0,
27
+ downloads: 139,
28
+ likes: 13,
29
+ disliked: false,
30
+ length: 'Long',
31
+ demon: false,
32
+ featured: false,
33
+ epic: false,
34
+ objects: 12020,
35
+ stars_requested: 6,
36
+ game_version: '2.1',
37
+ copied: 0,
38
+ two_p: false,
39
+ coins: 3,
40
+ verified_coins: false,
41
+ song: {
42
+ name: 'Not Lost',
43
+ id: 1107430,
44
+ artist: 'shikoshib',
45
+ artistId: 10001037,
46
+ fileSize: '8.5 MB',
47
+ link: 'https://audio.ngfiles.com/1107000/1107430_Not-Lost.mp3?f1643365615'
48
+ }
49
+ },
50
+ {
51
+ id: 76643578,
52
+ name: 'Ok Just Get It',
53
+ description: 'pass 2305',
54
+ creator: 'shikoshib',
55
+ level_version: 1,
56
+ difficulty: 'Harder',
57
+ stars: 0,
58
+ downloads: 96,
59
+ likes: 13,
60
+ disliked: false,
61
+ length: 'Long',
62
+ demon: false,
63
+ featured: false,
64
+ epic: false,
65
+ objects: 4568,
66
+ stars_requested: 2,
67
+ game_version: '2.1',
68
+ copied: 0,
69
+ two_p: false,
70
+ coins: 0,
71
+ verified_coins: false,
72
+ song: {
73
+ name: 'F-777 - Medusa',
74
+ id: 798747,
75
+ artist: 'F-777',
76
+ artistId: 286,
77
+ fileSize: '7.39 MB',
78
+ link: 'https://audio.ngfiles.com/798000/798747_F-777---Medusa.mp3?f1522612006'
79
+ }
80
+ }
81
+ ]
82
+ ```
83
+
84
+ Returns an array of [level objects](./objects/level.md).
@@ -80,7 +80,7 @@ Used by ```dlLevel()```.
80
80
 
81
81
  ```stars_requested``` - basically how many stars the creator has requested. Returns ```0``` if no stars have been requested.
82
82
 
83
- ```game_version``` - the version required to play the level.
83
+ ```game_version``` - the version required to play the level. Returns `Pre-1.7` if the level has been uploaded or last updated earlier, than 1.7 came out.
84
84
 
85
85
  ```ldm``` - a boolean that shows if the level has a "Low Detail Mode" checkbox.
86
86
 
@@ -0,0 +1,113 @@
1
+ # searchLevels()
2
+
3
+ Searches the levels by a specified query.
4
+
5
+ ## Parameters
6
+ `query` - the search string, for example, the level name. If you'll leave it empty, you'll just get the list of most liked levels.
7
+
8
+ `page` (optional) - the page. Defaults to 1.
9
+
10
+ ## Example
11
+ ```js
12
+ const gd = require("gj-boomlings-api");
13
+ gd.searchLevels("", 2).then(console.log);
14
+ ```
15
+
16
+ ## Response
17
+ ```
18
+ [
19
+ {
20
+ id: 27319926,
21
+ name: 'through time',
22
+ description: 'Run... run through time. For you all! Follow me on twitter: @ItsBerkoo',
23
+ creator: 'Berkoo',
24
+ level_version: 2,
25
+ difficulty: 'Normal',
26
+ stars: 3,
27
+ downloads: 28632458,
28
+ likes: 2503368,
29
+ disliked: false,
30
+ length: 'Long',
31
+ demon: false,
32
+ featured: true,
33
+ epic: false,
34
+ objects: 0,
35
+ stars_requested: 2,
36
+ game_version: '2.0',
37
+ copied: 0,
38
+ two_p: false,
39
+ coins: 1,
40
+ verified_coins: true,
41
+ song: {
42
+ name: 'Promises',
43
+ id: 678497,
44
+ artist: 'KabukiTunes',
45
+ artistId: 47258,
46
+ fileSize: '8.23 MB',
47
+ link: 'http://audio.ngfiles.com/678000/678497_Promises.mp3'
48
+ }
49
+ },
50
+ {
51
+ id: 28179535,
52
+ name: 'Acid Factory',
53
+ description: 'Geometry dash - Poison Gauntlet - Thanks for play! [Acid Factory] 11,000,000 Downloads! <3 ',
54
+ creator: 'TrinckyFinki',
55
+ level_version: 3,
56
+ difficulty: 'Hard',
57
+ stars: 4,
58
+ downloads: 51023385,
59
+ likes: 2446217,
60
+ disliked: false,
61
+ length: 'Long',
62
+ demon: false,
63
+ featured: true,
64
+ epic: false,
65
+ objects: 14193,
66
+ stars_requested: 3,
67
+ game_version: '2.1',
68
+ copied: 28178503,
69
+ two_p: false,
70
+ coins: 3,
71
+ verified_coins: true,
72
+ song: {
73
+ name: 'VGMusicRox - Frantic Factory (',
74
+ id: 550260,
75
+ artist: 'Viproxi',
76
+ artistId: 4107,
77
+ fileSize: '5.94 MB',
78
+ link: 'http://audio.ngfiles.com/550000/550260_VGMusicRox---Frantic-Facto.mp3'
79
+ }
80
+ },
81
+ {
82
+ id: 55520,
83
+ name: 'THE LIGHTNING ROAD',
84
+ description: 'Removed Coins, ~ Timeless Real / Reduloc',
85
+ creator: 'timeless real',
86
+ level_version: 3,
87
+ difficulty: 'Easy Demon',
88
+ stars: 10,
89
+ downloads: 44657564,
90
+ likes: 2440721,
91
+ disliked: false,
92
+ length: 'Long',
93
+ demon: true,
94
+ featured: true,
95
+ epic: false,
96
+ objects: 3527,
97
+ stars_requested: 10,
98
+ game_version: '2.1',
99
+ copied: 55520,
100
+ two_p: false,
101
+ coins: 0,
102
+ verified_coins: false,
103
+ song: {
104
+ name: 'Dry Out',
105
+ id: 'Level 4',
106
+ artist: 'DJVI',
107
+ link: 'https://www.youtube.com/watch?v=FnXabH2q2A0'
108
+ }
109
+ },
110
+ ...and so on
111
+ ```
112
+
113
+ Returns an array of [level objects](./objects/level.md), sorted by the amount of likes.
@@ -0,0 +1,23 @@
1
+ # updateLevelDesc()
2
+
3
+ Updates the description of a level.
4
+
5
+ ## Parameters
6
+ `level` - the level ID.
7
+
8
+ `description` - the new description of a level.
9
+
10
+ `user` - the username or player ID.
11
+
12
+ `gjp` - the user's password.
13
+
14
+ ## Example
15
+ ```js
16
+ const gd = require("gj-boomlings-api");
17
+ gd.updateLevelDesc("83430836", "I love gj-boomlings-api!", "gmdshxdow", "*********").then(console.log);
18
+ ```
19
+
20
+ ## Response
21
+ ```js
22
+ 1
23
+ ```
@@ -12,14 +12,14 @@ Posts a comment to a profile.
12
12
  ## Example
13
13
  ```js
14
14
  const gd = require("gj-boomlings-api");
15
- gd.uploadAccountPost("i'm a furry", "colon", "*********").then(console.log);
16
- // basically this function posts the "i'm a furry" message to Colon's profile
15
+ gd.uploadAccountPost("I love gj-boomlings-api!", "gmdshxdow", "*********").then(console.log);
17
16
  ```
18
17
 
19
18
  ## Response
20
19
  ```js
21
20
  1
22
21
  ```
22
+
23
23
  Returns `1` if the comment was successfully posted.
24
24
 
25
25
  ---
@@ -0,0 +1,28 @@
1
+ # uploadComment()
2
+
3
+ Posts a comment to a profile.
4
+
5
+ ## Parameters
6
+
7
+ `content` - the actual comment content.
8
+
9
+ `id` - the level ID.
10
+
11
+ `user` - the username or player ID.
12
+
13
+ `gjp` - the user's password
14
+
15
+ `percent` (optional) - the comment percentage. Defaults to 0.
16
+
17
+ ## Example
18
+ ```js
19
+ const gd = require("gj-boomlings-api");
20
+ gd.uploadComment("I love gj-boomlings-api!", 83925274, "gmdshxdow", "*********", 99).then(console.log);
21
+ ```
22
+
23
+ ## Response
24
+ ```js
25
+ 1
26
+ ```
27
+
28
+ Returns `1` if the comment was successfully posted.