Advertisement
Guest User

Untitled

a guest
May 2nd, 2016
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.53 KB | None | 0 0
  1. var username = 'Dominute';
  2. var password = 'CheekyFireball8912';
  3. var cL = 39; // How many pages long is ?Category=2 in the catalog? This will need updating every now-and-then.
  4.  
  5. var http = require('http');
  6. var https = require('https');
  7. var zlib = require('zlib');
  8. var fs = require('graceful-fs');
  9.  
  10. var RSec = '';
  11. var stringdump = '';
  12.  
  13. var y = 0;
  14.  
  15. var totalItems = 0;
  16. var totalHats = 0;
  17. var totalGear = 0;
  18. var totalFaces = 0;
  19. var itemsChecked = 0;
  20.  
  21. var NewItems = {}
  22. var RAPs = {};
  23. var items = {};
  24.  
  25. function login() {
  26. var dataJson = JSON.stringify({
  27. username: username,
  28. password: password
  29. });
  30. var options = {
  31. hostname: 'uk.roblox.com',
  32. port: 443,
  33. path: '/NewLogin',
  34. method: 'POST',
  35. headers: {
  36. 'Content-Length': Buffer.byteLength(dataJson),
  37. 'Content-Type': 'application/json'
  38. }
  39. };
  40. var req = https.request(options, function(rsp) {
  41. rsp.on('error', function(e) {
  42. console.log('Error!')
  43. login()
  44. return;
  45. })
  46. rsp.on('data', function() {
  47. console.log('Data received!')
  48. })
  49. rsp.on('end', function() {
  50. var setcookie = rsp.headers["set-cookie"];
  51. if (setcookie) {
  52. for (var p = 0; p < setcookie.length; p++) {
  53. if (setcookie[p].charAt(0) == '.') {
  54. RSec = setcookie[p].replace(/ *\_[^)]*\_ */g, "");
  55. RSec = RSec.substring(0, RSec.indexOf(';'));
  56. };
  57. };
  58. };
  59. });
  60. });
  61. req.on('error', function(e) {
  62. console.log('Error with login!');
  63. login()
  64. return;
  65. })
  66. req.write(dataJson);
  67. req.end();
  68. }
  69.  
  70. function coreIH(f) {
  71. var dg3 = {
  72. hostname: 'uk.roblox.com',
  73. path: '/Trade/InventoryHandler.ashx?token=&filter=' + f + '&userid=1&itemsPerPage=14&page=1',
  74. headers: {
  75. 'Cookie':RSec,
  76. 'Accept-Encoding':'gzip',
  77. }
  78. };
  79. var raprequ = http.request(dg3, function(rspv) {
  80. var str3 = [];
  81. var gunzip3 = zlib.createGunzip();
  82. rspv.pipe(gunzip3)
  83. gunzip3.on('error', function(e) {
  84. console.log('Error on ROBLOX\'s inventory prelims!');
  85. return;
  86. })
  87. gunzip3.on('data', function(chunk3) {
  88. str3.push(chunk3);
  89. });
  90. gunzip3.on('end', function() {
  91. var newobj5 = Buffer.concat(str3).toString();
  92. var newobj6 = JSON.parse(newobj5);
  93. if (f == 0 && newobj6.data) {
  94. totalHats = newobj6.data.totalNumber;
  95. totalItems = totalItems + totalHats;
  96. for (var j = 1; j <= Math.ceil(totalHats / 14); j++) {
  97. rapGRAB(f, j)
  98. }
  99. } else if (f == 1 && newobj6.data) {
  100. totalGear = newobj6.data.totalNumber;
  101. totalItems = totalItems + totalGear;
  102. for (var k = 1; k <= Math.ceil(totalGear / 14); k++) {
  103. rapGRAB(f, k)
  104. }
  105. } else if (f == 2 && newobj6.data) {
  106. totalFaces = newobj6.data.totalNumber;
  107. totalItems = totalItems + totalFaces;
  108. for (var l = 1; l <= Math.ceil(totalFaces / 14); l++) {
  109. rapGRAB(f, l)
  110. }
  111. } else {
  112. console.log('error')
  113. };
  114. });
  115. });
  116. raprequ.on('error', function(e) {
  117. console.log('Error requesting info about ROBLOX\'s inventory!')
  118. return;
  119. });
  120. raprequ.end()
  121. };
  122. function rapGRAB(f, rapPAGE) {
  123. var options2 = {
  124. hostname: 'uk.roblox.com',
  125. path: '/Trade/InventoryHandler.ashx?token=&filter=' + f + '&userid=1&itemsPerPage=14&page=' + rapPAGE,
  126. headers: {
  127. 'cookie':RSec,
  128. 'Accept-Encoding':'gzip',
  129. }
  130. };
  131. var requ = http.request(options2, function(response) {
  132. var str2 = [];
  133. var gunzip2 = zlib.createGunzip();
  134. response.pipe(gunzip2)
  135. gunzip2.on('error', function(e) {
  136. console.log('Error on ROBLOX\'s inventory!');
  137. return;
  138. })
  139. gunzip2.on('data', function(chunk2) {
  140. str2.push(chunk2);
  141. });
  142. gunzip2.on('end', function() {
  143. var newobj3 = Buffer.concat(str2).toString();
  144. var newobj4 = JSON.parse(newobj3);
  145. if (newobj4.data) {
  146. for (m in newobj4.data.InventoryItems) {
  147. if (newobj4.data.InventoryItems[m].AveragePrice != "---") {
  148. var RAP = newobj4.data.InventoryItems[m].AveragePrice;
  149. var item = newobj4.data.InventoryItems[m].ItemLink.split("=").pop();
  150. RAPs[item] = RAP;
  151. };
  152. itemsChecked++
  153. };
  154. };
  155. if (itemsChecked >= totalItems) {
  156. for (var c = 1; c < cL+1; c++) {
  157. cataGRAB(c);
  158. };
  159. return;
  160. };
  161. });
  162. });
  163. requ.on('error', function(e) {
  164. console.log('Error requesting ROBLOX\'s inventory!');
  165. return;
  166. })
  167. requ.end();
  168. };
  169. function cataGRAB(page) {
  170. var dg = {
  171. hostname: 'search.roblox.com',
  172. path: '/catalog/json?Category=2&PageNumber=' + page,
  173. headers: {
  174. 'Accept-Encoding': 'gzip'
  175. }
  176. };
  177. var omagawsh = http.request(dg, function(rspn) {
  178. var strn = []
  179. var gunzip = zlib.createGunzip();
  180. rspn.pipe(gunzip)
  181. gunzip.on('error', function (e) {
  182. console.log('Error with catalog data!');
  183. })
  184. gunzip.on('data', function (chunk) {
  185. strn.push(chunk)
  186. });
  187. gunzip.on('end', function() {
  188. var newobj = Buffer.concat(strn).toString();
  189. var newobj2 = JSON.parse(newobj);
  190. for (i in newobj2) {
  191. if (newobj2[i].BestPrice) {
  192. var id = newobj2[i].AssetId;
  193. var price = newobj2[i].BestPrice;
  194. var name = newobj2[i].Name;
  195. items[id] = new Array(price.replace(/\,/g,""), name);
  196. }
  197. };
  198. y++
  199. if (y == cL) {
  200. compa(RAPs, items)
  201. };
  202. });
  203. })
  204. omagawsh.on('error', function(e) {
  205. console.log('Error requesting the ROBLOX catalog!');
  206. return;
  207. })
  208. omagawsh.end();
  209. };
  210. function compa(e, f) {
  211. function isEmpty(damnobject) {
  212. for (var key in damnobject) {
  213. if (damnobject.hasOwnProperty(key)){
  214. return false;
  215. }
  216. }
  217. return true;
  218. }
  219. if (isEmpty(NewItems)) {
  220. var processed = 0;
  221. var localDump = [];
  222. Object.keys(e).forEach(function(n){
  223. if (f[n]) {
  224. NewItems[n] = {"Name":f[n][1], "RAP":parseInt(e[n],10), "LowestPrice":parseInt(f[n][0])}
  225. if (NewItems[n]["RAP"] > NewItems[n]["LowestPrice"]) {
  226. NewItems[n]["PercentOff"] = Math.round(((e[n] - f[n][0]) / e[n]) * 100)
  227. localDump.push(NewItems[n])
  228. };
  229. processed++;
  230. };
  231. });
  232. if (processed === Object.keys(NewItems).length) {
  233. sortIt();
  234. };
  235. function sortIt() {
  236. demSort = localDump.sort(function(a,b) {
  237. return a["PercentOff"] - b["PercentOff"];
  238. });
  239. for (dat in demSort) {
  240. console.log(demSort[dat]["PercentOff"] + "% off. " + demSort[dat]["Name"] + " (RAP: " + demSort[dat]["RAP"] + ") is selling for " + demSort[dat]["LowestPrice"])
  241. }
  242. }
  243. } else {
  244. var processedn = 0;
  245. var processedm = 0;
  246. var SecList = {};
  247. var newDump = [];
  248. Object.keys(e).forEach(function(cur){
  249. if (f[cur]) {
  250. SecList[cur] = {"Name":f[cur][1], "RAP":parseInt(e[cur],10), "LowestPrice":parseInt(f[cur][0])}
  251. if (SecList[cur]["RAP"] > SecList[cur]["LowestPrice"]) {
  252. SecList[cur]["PercentOff"] = Math.round(((e[cur] - f[cur][0]) / e[cur]) * 100)
  253. };
  254. };
  255. processedn++
  256. });
  257. if (processedn => Object.keys(SecList).length) {
  258. sortEt();
  259. };
  260. function sortEt() {
  261. Object.keys(SecList).forEach(function(m) {
  262. if ((NewItems[m]) && ((SecList[m]["LowestPrice"] != NewItems[m]["LowestPrice"]) || (SecList[m]["RAP"] != NewItems[m]["RAP"])) && (SecList[m]["PercentOff"])) {
  263. newDump.push(SecList[m])
  264. };
  265. processedm++
  266. });
  267. }
  268. if (processedm => Object.keys(SecList).length) {
  269. NewItems = SecList
  270. daNS = newDump.sort(function(a,b) {
  271. return a["PercentOff"] - b["PercentOff"];
  272. });
  273. for (dese in daNS) {
  274. console.log("NEW: " + daNS[dese]["PercentOff"] + "% off. " + daNS[dese]["Name"] + " (RAP: " + daNS[dese]["RAP"] + ") is selling for " + daNS[dese]["LowestPrice"])
  275. }
  276. }
  277. }
  278. }
  279. login()
  280. setTimeout(function() {
  281. setInterval(function() {
  282. y = 0;
  283. coreIH(0);
  284. coreIH(1);
  285. coreIH(2);
  286. }, 9500);
  287. }, 10000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement