Skip to content

Instantly share code, notes, and snippets.

@heypoom
Last active September 18, 2023 15:22
Show Gist options
  • Save heypoom/33d3578ceeabb15a3040fd9079564f37 to your computer and use it in GitHub Desktop.
Save heypoom/33d3578ceeabb15a3040fd9079564f37 to your computer and use it in GitHub Desktop.
// First, go to https://shopee.co.th/user/purchase, and open DevTools.
// Step 1 - Run this code to scroll all the way to the bottom.
const timer = setInterval(() => scrollTo(0, 10000000), 800)
setTimeout(() => {
// Step 2 - Stop scrolling after 1 minute.
clearInterval(timer)
// Step 3 - Sum the total purchase price!
const total = [...document.querySelectorAll('.purchase-card-buttons__total-price')]
.map(n => parseInt(n.innerText.slice(1).replace(/,/g, '')))
.reduce((a, b) => a + b)
console.log('Total =', total)
}, 60 * 1000)
@wit03
Copy link

wit03 commented Jul 6, 2021

Right now the element's classname is changed to "isoXOF"

function median(numbers) {
    const sorted = numbers.slice().sort((a, b) => a - b);
    const middle = Math.floor(sorted.length / 2);

    if (sorted.length % 2 === 0) {
        return (sorted[middle - 1] + sorted[middle]) / 2;
    }

    return sorted[middle];
}

// Step 1 - Keep scrolling until scroll position has stopped increasing for 5 intervals
const scrollHistory = [];
const historySize = 5;  // Increase this if autoscroll ends too soon
const timer = setInterval(() => {
    scrollTo(0, document.body.scrollHeight);
    if(scrollHistory.length === historySize && scrollHistory.every(val => val === scrollHistory[0])) {
        clearInterval(timer);
        // Step 2 - Sum the total purchase price!
        const priceList =  [...document.querySelectorAll('.isoXOF')]
                    .map(n => parseInt(n.innerText.slice(1).replace(/,/g, '')));
        const total = priceList.reduce((a, b) => a + b);
        const mean = total / priceList.length;
        console.log("Total =", total);
        console.log("Mean =", mean);
        console.log("Median =", median(priceList))
        console.log("Max =", Math.max(...priceList));
        console.log("Min =", Math.min(...priceList));
        console.log("Number of purchases =", priceList.length);
    } else {
        if(scrollHistory.length === historySize) scrollHistory.shift();
        scrollHistory.push(window.scrollY)
        console.log('Looking through your orders, please do not touch anything and wait...');
    }
}, 800)

@jukbot
Copy link

jukbot commented Aug 16, 2021

กลับมาดู script shopee ควรทำ BI analytics การซื้อของแต่ละคน 😂

@chino-pack
Copy link

ไม่ทราบว่าตอนนี้ element's classname ถูกเปลี่ยนอีกแล้วหรอครับ ใช้โค้ดข้างบนแล้วรันไม่ได้

@wit03
Copy link

wit03 commented Sep 25, 2021

@PackChinoros ใช่ครับ ตอนนี้เปลี่ยนจาก ".isoXOF" เป็น "._1MS3t2" ได้เลยครับ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment