// ==UserScript== // @name Total of all purchases // @name:ru Сумма покупок // @namespace http://tampermonkey.net/ // @version 1.0 // @description Calculates the sum of all completed orders that are visible on the page (scroll down to the end to count the orders for the entire time). // @description:ru Подсчитывает сумму всех завершенных заказов, которые видны на странице (прокрутите вниз до конца, чтобы подсчитать заказы за всё время). // @author Титан // @match https://www.aliexpress.com/p/order/index.html // @match https://trade.aliexpress.ru/orderList.htm* // @icon https://www.google.com/s2/favicons?sz=64&domain=aliexpress.com // @grant GM_registerMenuCommand // @license CC BY-NC-SA // @downloadURL none // ==/UserScript== let autoRedirect = true //Автоматически редиректить на нормальную страницу заказов if (document.URL.indexOf("www.aliexpress.com")>=0) GM_registerMenuCommand("Подсчитать цены на этой странице", CalculateTotalPrice); else if (autoRedirect) GoToNormalPage else GM_registerMenuCommand("Перейти на нормальную страницу заказов", GoToNormalPage) function GoToNormalPage() { window.location.replace("https://www.aliexpress.com/p/order/index.html"); } let finishedWords = ["Finished", "С отделкой"]; //: "Finished" word in all shitty AliExpress' translations function CalculateTotalPrice() { let total = 0; let purchases = ""; for(let item of document.querySelectorAll(".order-item")) { if (finishedWords.indexOf(item.querySelector(".order-item-header-status-text").textContent)<0) continue; //: checks is the order is finished let price = parseFloat(onlyNumbers(item.querySelector(".order-item-content-opt-price-total").textContent)); let itemName = item.querySelector(".order-item-content-info-name")?.textContent; total+= price purchases+= "\n\n" + itemName + "\n>>> " + price + " <<<" } alert("Сумма покупок: " + total + "\n\nПокупки:" + purchases); } function onlyNumbers(str) { let num = "" let dot = false; for(char of str) { if(isNumber(char)) num+=char; else if(!dot && (char == '.' || char == ",")) { num+="."; dot = true; } else if (dot) { break; } } return num } function isNumber(c) { return c >= '0' && c <= '9'}