Advertisement
Guest User

Untitled

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