Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //屠龙0.0.1
  2. var keyWord = '+boxer briefs';
  3. var categories = ["Jackets", "Coats", "Shirts", "Tops/Sweaters", "Sweatshirts", "Pants", "Shorts", "T-Shirts", "Hats", "Bags", "Accessories", "Shoes", "Skate"]
  4. // 0 -> "Jackets", 1 -> "Coats", 2-> "Shirts", 3 -> "Tops/Sweaters", 4 ->"Sweatshirts", 5->"Pants", 6->"Shorts", 7->"T-Shirts",
  5. //8-> "Hats", 9->"Bags", 10->"Accessories", 11->"Shoes", 12->"Skate"
  6. var category = categories[10];
  7. var preferredSize = 'large'
  8. var preferColor = 'white';
  9. var autoCheckout = false;
  10. var checkout_delay = 2500;
  11.  
  12. //Address info
  13. var billing_name = "Viktor Tatarov";
  14. var order_email = "waterpolista3@abv.bg";
  15. var order_tel = "0878250091";
  16. var order_address = "Nishava 35";
  17. var order_billing_address_2 = "Apt3";
  18. var order_billing_zip = "1680";
  19. var order_billing_city = "Sofia";
  20. var order_billing_state = "Sofia";
  21. var order_billing_country = "BG"
  22. //<option value="BG">Bulgaria</option>
  23.  
  24. //Payment info
  25. var credit_card_type = "master";
  26. // 欧洲:visa, american_express, master, solo
  27. // 日本:visa, american_express, master, jcb, cod
  28. var cnb = "1111111111111111";
  29. var month = "11";
  30. var year = "1111";
  31. var vval = "111";
  32.  
  33. var startTime = null;
  34. var respondJSON = null;
  35. var isNew = true;
  36.  
  37. var mobile_stock_api = "https://www.supremenewyork.com/mobile_stock.json";
  38.  
  39. var event = document.createEvent('Event');
  40. event.initEvent('change', true, true);
  41.  
  42. var retryFetch = async (url, options=null, retry=0) => {
  43.     if (retry >= 4) return Promise.resolve(1);
  44.     let res = await fetch(url, options);
  45.     if (res.status !== 200) {
  46.         await sleep(Math.min(retry * 500, 2 * 1000));
  47.         return await retryFetch(url, options, retry + 1);
  48.     } else {
  49.         return await res.json();
  50.     }
  51. };
  52.  
  53. function matchKeyWord (itemName, keyWords) {
  54.     let name = itemName.toLowerCase().trim();
  55.     let keyWordsList = keyWords.toLowerCase().split(",");
  56.     for (let i = 0; i < keyWordsList.length; i ++) {
  57.         let word = keyWordsList[i].trim();
  58.         if ((word.includes('+') && !name.includes(word.substr(1))) ||
  59.             (word.includes('-') && name.includes(word.substr(1)))) {
  60.             return false;
  61.         }
  62.     }
  63.     return true;
  64. };
  65.  
  66. var sleep = (ms) => {
  67.     return new Promise(resolve => setTimeout(resolve, ms));
  68. };
  69.  
  70. async function mobileAPIRefreshed(respond) {
  71.     if (respond['products_and_categories'] == null || respond['products_and_categories']['new'] == null) {
  72.         return false;
  73.     }
  74.     let newProducts = respond['products_and_categories']['new'];
  75.     for (let index = 0; index < newProducts.length; index ++) {
  76.         let item =newProducts[index];
  77.         if (item != null && item['name'] != null && matchKeyWord(item['name'], keyWord)) {
  78.             isNew = true;
  79.             return true;
  80.         }
  81.     }
  82.  
  83.     let categoryProduct = respond['products_and_categories'][category];
  84.     if (categoryProduct != undefined) {
  85.         for (let index = 0; index < categoryProduct.length; index ++) {
  86.             let item =categoryProduct[index];
  87.             if (item != null && item['name'] != null && matchKeyWord(item['name'], keyWord)) {
  88.                 isNew = false;
  89.                 return true;
  90.             }
  91.         }
  92.     }
  93.     return false;
  94. }
  95.  
  96. async function monitor() {
  97.     refreshed = false;
  98.        
  99.     let respond = await retryFetch(mobile_stock_api);
  100.     refreshed = respond == null ? false : await mobileAPIRefreshed(respond);
  101.     if (refreshed) {
  102.         respondJSON = respond;
  103.         startTime = new Date();
  104.         console.log("Detect Page refreshed with mobile endpoint at: " + startTime.toISOString());
  105.         window.location.href = isNew? 'https://www.supremenewyork.com/mobile/#categories/new' : ('https://www.supremenewyork.com/mobile/#categories/' + category);
  106.         sleep(150).then(() => start());
  107.     } else {
  108.         console.log("Not refreshed, retrying ...")
  109.         await sleep(1000);
  110.         await monitor();
  111.     }
  112. }
  113.  
  114.  
  115. var start = () => {
  116.     var items = document.getElementsByClassName("name");
  117.     if (items.length > 0) {
  118.  
  119.         for (item of items) {
  120.             var name = item.innerHTML;
  121.  
  122.             if (matchKeyWord(name, keyWord)) {
  123.                 startTime = new Date().getTime();
  124.                 sleep(200).then(() => item.click());
  125.                 break;
  126.             }
  127.         }
  128.  
  129.         (function waitTillArticlePageIsOpen() {
  130.             let atcBtn = document.getElementsByClassName("cart-button")[0];
  131.             // check if article page has loaded by looking at main image
  132.             if (atcBtn) {
  133.                 addToCart();
  134.             } else
  135.                 setTimeout(function(){ waitTillArticlePageIsOpen(); }, 150);
  136.  
  137.             return;
  138.         })();
  139.     } else {
  140.         setTimeout(function(){ start(); }, 150);
  141.     }
  142. }
  143.  
  144.  
  145.  
  146. async function addToCart(){
  147.     if (document.getElementById('cart-update').children[0].innerHTML === "remove") {
  148.         checkout();
  149.         return;
  150.     }
  151.     await chooseColor();
  152.     await sleep(200);
  153.     chooseSize();
  154.     await sleep(200);
  155.     let atcBtn = document.getElementsByClassName("c
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement