RohanPhuyal

(Auto)MSN SHOPPING SCRIPT CONSOLE

Jun 21st, 2023 (edited)
3,127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 4.29 KB | Source Code | 0 0
  1. (async function(){
  2.     var iterationNumber = 0;
  3.     var selectButton = null;
  4.     var selectExists = null;
  5.     var scroll = document.querySelector("shopping-page-base")
  6.       ?.shadowRoot.querySelector("shopping-homepage")
  7.       ?.shadowRoot.querySelector("msft-feed-layout")
  8.       ?.shadowRoot.querySelector("msn-shopping-game-pane");
  9.  
  10.     if (scroll) {
  11.       scroll.scrollIntoView({ behavior: 'smooth' });
  12.     } else {
  13.       alert("Couldn't Load Game, Reload");
  14.       return;
  15.     }
  16.  
  17.     var msnShoppingGamePane2 = document.querySelector("shopping-page-base")
  18.       ?.shadowRoot.querySelector("shopping-homepage")
  19.       ?.shadowRoot.querySelector("msft-feed-layout")
  20.       ?.shadowRoot.querySelector("msn-shopping-game-pane");
  21.  
  22.     var shoppingGame = document.querySelector("shopping-page-base")
  23.       ?.shadowRoot.querySelector("shopping-homepage")
  24.       ?.shadowRoot.querySelector("msft-feed-layout")
  25.       ?.shadowRoot.querySelector("msn-shopping-game-pane")
  26.       ?.shadowRoot.querySelector("msft-stripe");
  27.  
  28.     async function getObjectIndexFromArray(objects, id) {
  29.       for (let i = 0; i < objects.length; i++) {
  30.         if (objects[i].id === id) {
  31.           return i;
  32.         }
  33.       }
  34.       return -1;
  35.     }
  36.  
  37.     async function getLowestPriceItemID(priceMap) {
  38.       var lowestPriceItemID;
  39.       var currLowestPrice = Infinity;
  40.       for (const [itemID, item] of Object.entries(priceMap)) {
  41.         let price = parseFloat(item.price.substring(1));
  42.         if (currLowestPrice > price) {
  43.           lowestPriceItemID = itemID;
  44.           currLowestPrice = price;
  45.         }
  46.       }
  47.       return lowestPriceItemID;
  48.     }
  49.  
  50.     async function highlightItems(correctIndex, items) {
  51.       for (let i = 0; i < items.length; i++) {
  52.         if (i == correctIndex) {
  53.           selectButton = shoppingGame.getElementsByClassName("shopping-game-card-outline")[correctIndex]
  54.             ?.querySelector("fluent-card")
  55.             ?.querySelector("msn-shopping-card")
  56.             .getElementsByClassName("shopping-select-overlay-button")[0];
  57.           items[i].style.borderColor = "red";
  58.         }
  59.       }
  60.     }
  61.  
  62.     async function refreshGame() {
  63.       var lowestPriceItemID = await getLowestPriceItemID(msnShoppingGamePane2.originalPricesbyId);
  64.       var itemIndex = await getObjectIndexFromArray(msnShoppingGamePane2.displayedShoppingEntities, lowestPriceItemID);
  65.       console.log("Correct Index: " + itemIndex);
  66.       await highlightItems(itemIndex, shoppingGame.getElementsByClassName("shopping-game-card-outline"));
  67.       if (selectButton != null) {
  68.         console.log("SEL Button received" + selectButton);
  69.         await selectButtonClick();
  70.       } else {
  71.         console.log("Select Button Null");
  72.       }
  73.       const msnShoppingGamePane = document.querySelector("shopping-page-base")
  74.         ?.shadowRoot.querySelector("shopping-homepage")
  75.         ?.shadowRoot.querySelector("msft-feed-layout")
  76.         ?.shadowRoot.querySelector("msn-shopping-game-pane");
  77.       if (msnShoppingGamePane.getAttribute('gamestate') == 'win' || msnShoppingGamePane.getAttribute('gamestate') == 'idle' || msnShoppingGamePane.getAttribute('gamestate') == 'lose') {
  78.         msnShoppingGamePane.setAttribute('gamestate', 'active');
  79.         msnShoppingGamePane.resetGame();
  80.       }
  81.     }
  82.  
  83.     async function selectButtonClick() {
  84.       console.log("Iteration no: " + iterationNumber);
  85.       selectButton.click();
  86.       iterationNumber++;
  87.       if (iterationNumber >= 10) {
  88.         clearInterval(fixIntervalId);
  89.       }
  90.     }
  91.  
  92.     async function executeFixFunction() {
  93.       selectExists = document.querySelector("shopping-page-base")
  94.         ?.shadowRoot.querySelector("shopping-homepage")
  95.         ?.shadowRoot.querySelector("msft-feed-layout")
  96.         ?.shadowRoot.querySelector("msn-shopping-game-pane").getAttribute("gamestate");
  97.       console.log("Execute Fix Function: " + selectExists);
  98.       if (selectExists == 'win' || selectExists == 'idle' || selectExists == 'active' || selectExists == 'lose') {
  99.         await refreshGame();
  100.       }
  101.     }
  102.  
  103.     async function startFixExecution() {
  104.       console.log("Start Fix Function");
  105.       fixIntervalId = setInterval(async function () {
  106.         await executeFixFunction();
  107.       }, 1100);
  108.     }
  109.  
  110.     await startFixExecution();
  111.   })();
Advertisement
Add Comment
Please, Sign In to add comment