// ==UserScript== // @name Bazar minimalne ceny // @namespace http://tampermonkey.net/ // @version 0.5 // @description Zapamiętuje w local storage najniższe ceny gier z listy życzeń i pokazuje je obok aktualnie najniższej ceny. Jeśli aktualna cena jest mniejsza od dotychczas zapisanej, wtedy tytuł oznaczany jest na zielono, jeśli cena jest równa naniższej - na niebiesko. // @author nochalon // @match https://bazar.lowcygier.pl/ // @match https://bazar.lowcygier.pl/?* // @icon https://bazar.lowcygier.pl/favicon.ico // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; var re = /\d+\.\d+ zł/g; var ths = document.querySelectorAll(".row.game-list.wishlist-item"); console.log("Local storage contains " + localStorage.length + " items"); for (var i = 0; i < ths.length; i++) { var titleElem = ths[i].querySelector(".media-heading > a"); var title = titleElem.innerHTML; var priceElem = ths[i].querySelector(".pc > p.prc"); var price = priceElem.innerHTML; var priceFloat = parseFloat(price.replace(',', '.')); var inStorage = JSON.parse(localStorage.getItem(title)); if (inStorage === null || inStorage.price > priceFloat) { console.log("Replacing " + title + " " + inStorage + " with " + priceFloat); var newItem = {'price': priceFloat, 'timestamp': Date.now()}; localStorage.setItem(title, JSON.stringify(newItem)); if (inStorage === null) continue; } var diff = inStorage.price - priceFloat; if (diff > 0) { titleElem.style.color = '#00E000'; priceElem.style.color = '#00E000'; var lowestPriceElem = document.createElement("p"); lowestPriceElem.innerHTML = "" + parseFloat(inStorage.price).toFixed(2) + "zł (+" + (diff/priceFloat*100.0).toFixed(2) + "%)"; priceElem.parentNode.appendChild(lowestPriceElem); } else if (diff < 0) { var lowestPriceElem = document.createElement("p"); lowestPriceElem.innerHTML = "" + parseFloat(inStorage.price).toFixed(2) + "zł (" + (diff/priceFloat*100.0).toFixed(2) + "%)"; priceElem.parentNode.appendChild(lowestPriceElem); var time = document.createElement("time"); var timeVal = new Date(inStorage.timestamp).toLocaleString(); time.innerHTML = timeVal; priceElem.parentNode.appendChild(time); } else { titleElem.style.color = '#0000E0'; priceElem.style.color = '#0000E0'; } } })();