NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Sorare - Trading Long Terme
// @namespace http://tampermonkey.net/
// @version 0.3
// @description Identify the underrated players
// @author You
// @include /^(?:https?:\/\/)?(?:www\.)?soraredata.com\/publicOffers/
// @icon https://www.google.com/s2/favicons?domain=soraredata.com
// @grant none
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @license MIT
// ==/UserScript==
(function() {
'use strict';
window.addEventListener("load", () => {
quickCheckOffers();
addButton("Quick Check offers");
addBlueLegend("Blue");
addGreenLegend("Green");
addYellowLegend("Yellow");
});
function quickCheckOffers() {
$('.infinite-scroll-component > div > div').each(function(index) {
let box = $(this);
let infoBox = box.find('.iMQCHk');
// valeurs
let ethValues = infoBox.children("div:first")
let ethVal = ethValues.find('div:eq(1) p').text();
let num = ethVal.match(/[\d\.]+/g);
let ethValNum = parseFloat(num[0]);
let marketVal = ethValues.find('div[data-tip="Best market price"] p').text();
let marketValNum = marketVal.match(/[\d\.]+/g);
if (marketValNum == null) {
marketValNum = 10000000;
} else {
marketValNum = parseFloat(marketValNum[0]);
}
let monthVal = ethValues.find('div[data-tip="3 days average"] p').text();
let monthValNum = monthVal.match(/[\d\.]+/g);
if (monthValNum == null) {
monthValNum = 10000000;
} else {
monthValNum = parseFloat(monthValNum[0]);
}
//percent 5 games.
let pointValues = infoBox.find('.eZKQvz');
let percent5Game = pointValues.find("span[data-tip='% of games played over the past 5 games']").text();
let percent5GameNum = percent5Game.match(/[\d\.]+/g);
percent5GameNum = percent5GameNum && percent5GameNum[0]?parseInt(percent5GameNum[0]):0;
//points 5 games.
let points5Game = pointValues.find("span[data-tip='Average score over the past 5 games']").text();
let points5GameNum = points5Game.match(/[\d\.]+/g);
points5GameNum = points5GameNum && points5GameNum[0]?parseInt(points5GameNum[0]):0;
//percent 15 games.
let percent15Game = pointValues.find("span[data-tip='% of games played over the past 15 games']").text();
let percent15GameNum = percent15Game.match(/[\d\.]+/g);
percent15GameNum = percent15GameNum && percent15GameNum[0]?parseInt(percent15GameNum[0]):0;
//points 15 games.
let points15Game = pointValues.find("span[data-tip='Average score over the past 15 games']").text();
let points15GameNum = points15Game.match(/[\d\.]+/g);
points15GameNum = points15GameNum && points15GameNum[0]?parseInt(points15GameNum[0]):0;
if ((ethValNum <= marketValNum) && (ethValNum <= monthValNum) && points15GameNum >= (points5GameNum+10) && percent15GameNum > 40) {
box.css('border', '5px solid rgb(0,0,255)');
} else if ((ethValNum <= marketValNum) && (ethValNum <= monthValNum) && points15GameNum >= points5GameNum && percent15GameNum > 40) {
box.css('border', '5px solid rgb(0,255,0)');
} else if ((ethValNum <= marketValNum) && (ethValNum > monthValNum) && points15GameNum >= (points5GameNum+10) && percent15GameNum > 40) {
box.css('border', '5px solid yellow');
}
else {
box.css('border', '5px solid grey');
}
});
}
function addButton(text, onclick, cssObj) {
cssObj = cssObj || {
position: "fixed",
bottom: "5%",
right: "1%",
"z-index": 3,
fontWeight: "600",
fontSize: "14px",
backgroundColor: "#00cccc",
color: "white",
border: "none",
padding: "10px 20px"
};
let button = document.createElement("button"),
btnStyle = button.style;
document.body.appendChild(button);
button.innerHTML = text;
// Setting function for button when it is clicked.
button.onclick = quickCheckOffers;
Object.keys(cssObj).forEach(key => (btnStyle[key] = cssObj[key]));
return button;
}
function showBlueInfo()
{
alert("- Lowest price on the market\n- Price below the average of the last month\n- L15 at least 10 points higher than L5\n- At least 40% of the last 15 games played");
}
function showGreenInfo()
{
alert("- Lowest price on the market\n- Price below the average of the last month\n- L15 less than 10 points higher than L5\n- At least 40% of the last 15 games played");
}
function showYellowInfo()
{
alert("- Lowest price on the market\n- Price above last month's average\n- L15 more than 10 points above L5\n- At least 40% of the last 15 games played");
}
function addBlueLegend(text, onclick, cssObj) {
cssObj = cssObj || {
position: "fixed",
bottom: "10%",
right: "1%",
"z-index": 4,
fontWeight: "600",
fontSize: "14px",
backgroundColor: "#55acee",
color: "white",
border: "none",
padding: "10px 20px"
};
let button = document.createElement("button"),
btnStyle = button.style;
document.body.appendChild(button);
button.innerHTML = text;
// Setting function for button when it is clicked.
button.onclick = showBlueInfo;
Object.keys(cssObj).forEach(key => (btnStyle[key] = cssObj[key]));
return button;
}
function addGreenLegend(text, onclick, cssObj) {
cssObj = cssObj || {
position: "fixed",
bottom: "15%",
right: "1%",
"z-index": 4,
fontWeight: "600",
fontSize: "14px",
backgroundColor: "#78b159",
color: "white",
border: "none",
padding: "10px 20px"
};
let button = document.createElement("button"),
btnStyle = button.style;
document.body.appendChild(button);
button.innerHTML = text;
// Setting function for button when it is clicked.
button.onclick = showGreenInfo;
Object.keys(cssObj).forEach(key => (btnStyle[key] = cssObj[key]));
return button;
}
function addYellowLegend(text, onclick, cssObj) {
cssObj = cssObj || {
position: "fixed",
bottom: "20%",
right: "1%",
"z-index": 4,
fontWeight: "600",
fontSize: "14px",
backgroundColor: "#fdcb58",
color: "white",
border: "none",
padding: "10px 20px"
};
let button = document.createElement("button"),
btnStyle = button.style;
document.body.appendChild(button);
button.innerHTML = text;
// Setting function for button when it is clicked.
button.onclick = showYellowInfo;
Object.keys(cssObj).forEach(key => (btnStyle[key] = cssObj[key]));
return button;
}
setInterval(function(){
quickCheckOffers();
}, 500);
})();