Advertisement
Guest User

Untitled

a guest
Jan 26th, 2017
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. var http = require('./util/http.js');
  2. var cheerio = require('cheerio');
  3. var getVerificationInputs = require('./util/getVerificationInputs.js');
  4.  
  5. // Define
  6. function getPlayersOnPage(players, html, limit, online) {
  7. var $ = cheerio.load(html);
  8. $('div[class=Avatar]').each(function(index, element) {
  9. if (limit && players.add.length >= limit) {
  10. return;
  11. }
  12. var link = $(element).find('a').first();
  13. var img = $(element).find('span').find('image').first();
  14. if (!online || img.attr('src') == '../images/online.png') {
  15. var id = link.attr('href').match(/\d+/)[0];
  16. var add = {};
  17. add[link.attr('title')] = id;
  18. players.add.push(add);
  19. }
  20. });
  21. }
  22.  
  23. function getPlayersInRole(players, done, url, role, online, limit, callbacks) {
  24. var completed = 1;
  25. http(url, {method: 'GET'}, function(err, res, body) {
  26. if (err && callbacks.failure) {
  27. if (callbacks.always)
  28. callbacks.always();
  29. callbacks.failure(err, 'getPlayers1');
  30. } else {
  31. var post = getVerificationInputs(body);
  32. post.ctl00$cphRoblox$rbxGroupRoleSetMembersPane$dlRolesetList = role;
  33. post.ctl00$cphRoblox$rbxGroupRoleSetMembersPane$currentRoleSetID = role;
  34. post.__ASYNCPOST = 'true';
  35.  
  36. http(url, {method: 'POST', form: post, headers: {'User-Agent': 'Mozilla'}}, function(err, res, body) {
  37. if (err && callbacks.failure) {
  38. if (callbacks.always)
  39. callbacks.always();
  40. callbacks.failure(err, 'getPlayers2');
  41. } else {
  42. var $ = cheerio.load(body);
  43. var pages = parseInt($('div[id=ctl00_cphRoblox_rbxGroupRoleSetMembersPane_dlUsers_Footer_ctl01_Div1]').find('div[class=paging_pagenums_container]').text(), 10) || 1;
  44. if (limit) {
  45. pages = Math.min(pages, Math.ceil(limit/12));
  46. }
  47. getPlayersOnPage(players, body, limit, online);
  48. if (pages == 1) {
  49. done();
  50. return;
  51. }
  52.  
  53. delete post.ctl00$cphRoblox$rbxGroupRoleSetMembersPane$dlRolesetList;
  54. post.ctl00$cphRoblox$rbxGroupRoleSetMembersPane$dlUsers_Footer$ctl01$PageTextBox = 1;
  55. post.ctl00$cphRoblox$rbxGroupRoleSetMembersPane$dlUsers_Footer$ctl01$HiddenInputButton = '';
  56.  
  57. for (var i = 2; i <= pages; i++) {
  58. post.ctl00$cphRoblox$rbxGroupRoleSetMembersPane$dlUsers_Footer$ctl01$PageTextBox = i;
  59.  
  60. http(url, {method: 'POST', form: post, headers: {'User-Agent': 'Mozilla'}}, function(err, res, body) {
  61. completed++;
  62. if (err && callbacks.failure) {
  63. if (callbacks.always)
  64. callbacks.always();
  65. callbacks.failure(err, 'getPlayers3');
  66. } else
  67. getPlayersOnPage(players, body, limit, online);
  68. if (completed >= pages) {
  69. done();
  70. return;
  71. }
  72. });
  73. }
  74. }
  75. });
  76. }
  77. });
  78. }
  79.  
  80. module.exports = function(group, roles, online, limit, callbacks) {
  81. var players = {add: []};
  82. var url = 'http://www.roblox.com/Groups/group.aspx?gid=' + group;
  83. var completed = 0;
  84.  
  85. function done() {
  86. completed++;
  87. if (completed >= roles.length) {
  88. if (callbacks.always)
  89. callbacks.always();
  90. if (callbacks.success)
  91. callbacks.success(players.add);
  92. }
  93. }
  94.  
  95. for (var i = 0; i < roles.length; i++) {
  96. getPlayersInRole(players, done, url, roles[i].ID, online, limit, callbacks);
  97. }
  98. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement