Advertisement
Guest User

Untitled

a guest
May 24th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.42 KB | None | 0 0
  1. const request = require('request');
  2.  
  3. const url = 'https://www.supremenewyork.com/mobile_stock.json';
  4. const url2 = 'https://www.supremenewyork.com/shop/';
  5.  
  6.  
  7. var retryInterval = 2000;
  8. var category = 'jackets';
  9. var keyword = 'GORE-TEX court jacket';
  10. var negativekeyword = 'leopard';
  11. var colour = 'black';
  12. var size = 'medium';
  13. var itemId;
  14.  
  15.  
  16. getDesiredId();
  17.  
  18. function getDesiredId() {
  19.  
  20. console.log('Fetching Stock...');
  21.  
  22. var p = new Promise((resolve, reject) => {
  23.  
  24. //Do something until promise is fullfilled (resolve) or not fullfilled (rejected)
  25.  
  26. var options = {
  27. method: 'GET',
  28. url: url
  29. };
  30.  
  31. request(options, (error, response, body) => {
  32. var data = JSON.parse(body.toLowerCase());
  33.  
  34. var items;
  35.  
  36. switch(category.toLowerCase()) {
  37. case 'jackets':
  38. items = data.products_and_categories.jackets;
  39. break;
  40. case 'shirts':
  41. items = data.products_and_categories.shirts;
  42. break;
  43. case 'tops/sweaters':
  44. items = data.products_and_categories.tops/sweaters;
  45. break;
  46. case 'sweatshirts':
  47. items = data.products_and_categories.sweatshirts;
  48.  
  49. break;
  50. case 'pants':
  51. items = data.products_and_categories.pants;
  52. break;
  53. case 'shorts':
  54. items = data.products_and_categories.shorts;
  55. break;
  56. case 't-shirts':
  57. items = data.products_and_categories.t-shirts;
  58. break;
  59. case 'hats':
  60. items = data.products_and_categories.hats;
  61. break;
  62. case 'bags':
  63. items = data.products_and_categories.bags;
  64. break;
  65. case 'accessories':
  66. items = data.products_and_categories.accessories;
  67. break;
  68. case 'skate':
  69. items = data.products_and_categories.skate;
  70. break;
  71. case 'new':
  72. items = data.products_and_categories.new;
  73. break;
  74. }
  75.  
  76.  
  77.  
  78. for(var i = 0; i < items.length; i++) {
  79. if(items[i].name.toLowerCase().includes(keyword.toLowerCase())
  80. && !items[i].name.toLowerCase().includes(negativekeyword.toLowerCase())) {
  81. console.log(items[i].name);
  82. console.log(items[i].id);
  83. itemId = items[i].id;
  84. }
  85. }
  86. if(itemId != null) {
  87. //item found, fullfill promise
  88. resolve('ITEM FOUND');
  89. } else {
  90. //item not found
  91. reject('ITEM NOT FOUND, RUNNING AGAIN');
  92. }
  93. });
  94.  
  95. });
  96.  
  97. p.then((message) => {
  98. console.log(message);
  99.  
  100. var options = {
  101. method: 'GET',
  102. url: url2 + itemId + '.json'
  103. };
  104.  
  105. request(options, (error, response, body) => {
  106. var data = JSON.parse(body.toLowerCase());
  107. data = data.styles;
  108.  
  109. var colourId;
  110. var sizes;
  111. var sizeId;
  112.  
  113. for(var i = 0; i < data.length; i++) {
  114. if(data[i].name.toLowerCase().includes(colour.toLowerCase())) {
  115. colourId = data[i].id;
  116. console.log(data[i].name);
  117. console.log(colourId);
  118.  
  119. sizes = data[i].sizes;
  120.  
  121. for(var j = 0; j < sizes.length; j++) {
  122. if(sizes[j].name.toLowerCase().includes(size.toLowerCase())){
  123. sizeId = sizes[j].id;
  124. console.log(sizeId);
  125. }
  126. }
  127. }
  128. }
  129. addToCart(sizeId, colourId);
  130. });
  131.  
  132.  
  133.  
  134.  
  135. }).catch((message) => {
  136. console.log(message);
  137. setTimeout(getDesiredId, retryInterval);
  138. });
  139. }
  140.  
  141.  
  142. function addToCart(sizeId, colourId) {
  143. console.log('adding to cart...');
  144.  
  145. var cookie;
  146.  
  147. var p = new Promise((resolve, reject) => {
  148.  
  149. console.log('https://supremenewyork.com/shop/' + itemId + '/add.json');
  150.  
  151. console.log('s: ' + sizeId.toString());
  152. console.log('st: ' + colourId.toString());
  153.  
  154. var options = {
  155. method: 'POST',
  156. url: 'https://www.supremenewyork.com/shop/' + itemId + '/add.json',
  157. qs: {
  158. 's': sizeId.toString(),
  159. 'st': colourId.toString(),
  160. 'qty': 1
  161. },
  162. headers: {
  163. 'Cache-Control': 'no-cache',
  164. 'Connection': 'keep-alive',
  165. 'content-length': '',
  166. 'accept-encoding': 'gzip, deflate',
  167. 'Host': 'www.supremenewyork.com',
  168. 'Accept' : '*/*',
  169. 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14E277 Safari/602.1',
  170. 'Content-Type': 'application/x-www-form-urlencoded' },
  171. form: false };
  172.  
  173. request(options, (error, response, body) => {
  174.  
  175. for(var i = 0; i < response.rawHeaders.length; i++) {
  176. if(response.rawHeaders[i] == 'Set-Cookie' && response.rawHeaders[i+1].includes('_supreme_sess')) {
  177. cookie = response.rawHeaders[i];
  178. }
  179. }
  180.  
  181. console.log(body);
  182.  
  183. /*
  184. if(body == '[{"size_id":"' + sizeId + '","in_stock":true}]') {
  185. resolve('Added To Cart');
  186. } else if(body == '[]') {
  187. reject('Out Of Stock. Retrying...');
  188. }
  189. */
  190.  
  191.  
  192. });
  193.  
  194. });
  195.  
  196. p.then((message) => {
  197. console.log(message);
  198. }).catch((message) => {
  199. console.log(message);
  200. //setTimeout(addToCart, retryInterval);
  201. });
  202.  
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement