From c183564c8bd82f2ee854a0f92ef04c829c8ccedb Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sat, 16 Jun 2018 14:26:27 +0200 Subject: [PATCH 1/9] Basic automation --- client/submitter/submit.user.js | 57 ++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index b325a56..3351e57 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @name Submit to Cream // @namespace https://steamsal.es/ -// @version 0.2.4 +// @version 0.2.5 // @description Submit Steam Store searches to a Cream API server // @author Cutie Cafe // @match *://store.steampowered.com/search* @@ -21,6 +21,13 @@ (function () { var lambda; var key; + var automate; + if(localStorage.getItem('automate') === undefined){ + automate = localStorage.setItem('automate', 'false'); + } else { + automate = localStorage.getItem('automate'); + } + console.log(automate); function error(info) { if (info === undefined) info = "Cream experienced an internal error."; @@ -28,10 +35,32 @@ ShowConfirmDialog("Cream Error", info, "Close", "Reconfigure").fail(function () { GM_deleteValue("lambda"); GM_deleteValue("apikey"); + localStorage.setItem('automate', 'false'); history.go(0); }); + if(automate == 'true'){ + setTimeout(scrape, 3000); + } } - + if(automate == 'true') {window.onload = next();} + function next() { + if(window.location.search.indexOf('&cc=us&l=english') == -1) { + window.location.search += '&cc=us&l=english'; + } else { + setTimeout(scrape, 3000); + } +} + function pressbtn(){ //next page + var classes = document.getElementsByClassName('pagebtn'); + var rightbtn; + if(window.location.search.indexOf('page') == -1) { + rightbtn = classes[0]; + } else { + rightbtn = classes[1]; + } + rightbtn.click(); + next(); + } function scrape() { try { var dialog = ShowBlockingWaitDialog("Cream", "

"); @@ -118,7 +147,10 @@ try { var rt = JSON.parse(data.responseText); if (rt === "Invalid API key") error(rt); - else ShowAlertDialog("Cream", rt.split("\n").join("
")); + else { + ShowAlertDialog("Cream", rt.split("\n").join("
")); + if(automate == 'true') pressbtn(); + } } catch (e) { error(); @@ -147,11 +179,27 @@ key = GM_getValue("apikey"); var elem = document.createElement("div"); elem.setAttribute("class", "block"); - elem.innerHTML = "Submit to " + lambda.replace("https://", "").replace("http://", "") + " "; elem.addEventListener("click", scrape); jQuery(elem).insertBefore(jQuery(".rightcol").children()[0]); + var auto = document.createElement("div"); + auto.setAttribute("class", "block"); + var isChecked; + if(automate == 'true'){ + isChecked = "checked"; + } else { + isChecked = ""; + } + auto.innerHTML = "Automate"; + jQuery(auto).insertBefore(jQuery(".rightcol").children()[0]); + auto.addEventListener("click", function (e) { + localStorage.setItem('automate', 'true'); + history.go(0); + }); + + + var resetButton = document.createElement("div"); resetButton.setAttribute("style", "display: inline"); resetButton.innerHTML = "Reset Cream  |  "; @@ -161,6 +209,7 @@ e.preventDefault(); GM_deleteValue("lambda"); GM_deleteValue("apikey"); + localStorage.setItem('automate', 'false'); history.go(0); }); } From 605e798bdb1b4500a0cb7ef60e8c643d0bf01fc8 Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sat, 16 Jun 2018 14:30:10 +0200 Subject: [PATCH 2/9] Deleted unnecessary bits --- client/submitter/submit.user.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index 3351e57..fe0d4bd 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -185,12 +185,6 @@ var auto = document.createElement("div"); auto.setAttribute("class", "block"); - var isChecked; - if(automate == 'true'){ - isChecked = "checked"; - } else { - isChecked = ""; - } auto.innerHTML = "Automate"; jQuery(auto).insertBefore(jQuery(".rightcol").children()[0]); auto.addEventListener("click", function (e) { From bad03ad84407567c5cdea3dc15f3aa86b621f6b9 Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sat, 16 Jun 2018 15:11:42 +0200 Subject: [PATCH 3/9] Polish --- client/submitter/submit.user.js | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index fe0d4bd..cc8eb94 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -22,15 +22,24 @@ var lambda; var key; var automate; + var delay = 3000; //delay of retrying and continuing + if(localStorage.getItem('automate') === undefined){ automate = localStorage.setItem('automate', 'false'); } else { automate = localStorage.getItem('automate'); } - console.log(automate); + console.log("automate: "+automate); function error(info) { - if (info === undefined) info = "Cream experienced an internal error."; + var autoMsg; + if(automate == 'true') { + autoMsg = "Retrying in "+delay+"ms"; + } else { + autoMsg = ""; + } + + if (info === undefined) info = "Cream experienced an internal error.
"+autoMsg; ShowConfirmDialog("Cream Error", info, "Close", "Reconfigure").fail(function () { GM_deleteValue("lambda"); @@ -39,17 +48,20 @@ history.go(0); }); if(automate == 'true'){ - setTimeout(scrape, 3000); + setTimeout(scrape, delay); } } - if(automate == 'true') {window.onload = next();} + + if(automate == 'true') {window.onload = next();} + function next() { if(window.location.search.indexOf('&cc=us&l=english') == -1) { window.location.search += '&cc=us&l=english'; } else { - setTimeout(scrape, 3000); + setTimeout(scrape, delay); } -} + } + function pressbtn(){ //next page var classes = document.getElementsByClassName('pagebtn'); var rightbtn; @@ -61,6 +73,7 @@ rightbtn.click(); next(); } + function scrape() { try { var dialog = ShowBlockingWaitDialog("Cream", "

"); @@ -185,15 +198,13 @@ var auto = document.createElement("div"); auto.setAttribute("class", "block"); - auto.innerHTML = "Automate"; - jQuery(auto).insertBefore(jQuery(".rightcol").children()[0]); + auto.innerHTML = "Automate"; + jQuery(auto).insertBefore(jQuery(".rightcol").children()[1]); auto.addEventListener("click", function (e) { localStorage.setItem('automate', 'true'); history.go(0); }); - - var resetButton = document.createElement("div"); resetButton.setAttribute("style", "display: inline"); resetButton.innerHTML = "Reset Cream  |  "; From 5fc3eca02d8ef64728e60fed0ec2f7098b80af46 Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sat, 16 Jun 2018 15:49:07 +0200 Subject: [PATCH 4/9] Polish Automate button changes to stop button if it's on. --- client/submitter/submit.user.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index cc8eb94..3264854 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -198,10 +198,14 @@ var auto = document.createElement("div"); auto.setAttribute("class", "block"); - auto.innerHTML = "Automate"; + var autoBtnMsg; + if(automate == 'true') autoBtnMsg = "Stop"; + else autoBtnMsg = "Automate"; + auto.innerHTML = ""+autoBtnMsg+""; jQuery(auto).insertBefore(jQuery(".rightcol").children()[1]); auto.addEventListener("click", function (e) { - localStorage.setItem('automate', 'true'); + if(automate == 'true') localStorage.setItem('automate', 'false'); + else localStorage.setItem('automate', 'true'); history.go(0); }); From e61d78712de48cc405de8cfc44f243e31188007d Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sat, 16 Jun 2018 16:02:07 +0200 Subject: [PATCH 5/9] Less stupid if-statements --- client/submitter/submit.user.js | 42 +++++++++++++-------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index 3264854..0d93de1 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -24,20 +24,16 @@ var automate; var delay = 3000; //delay of retrying and continuing - if(localStorage.getItem('automate') === undefined){ - automate = localStorage.setItem('automate', 'false'); - } else { - automate = localStorage.getItem('automate'); - } + if(localStorage.getItem('automate') === undefined) automate = localStorage.setItem('automate', 'false'); + else automate = localStorage.getItem('automate'); + console.log("automate: "+automate); function error(info) { var autoMsg; - if(automate == 'true') { - autoMsg = "Retrying in "+delay+"ms"; - } else { - autoMsg = ""; - } + + if(automate == 'true') autoMsg = "Retrying in "+delay+"ms"; + else autoMsg = ""; if (info === undefined) info = "Cream experienced an internal error.
"+autoMsg; @@ -47,29 +43,23 @@ localStorage.setItem('automate', 'false'); history.go(0); }); - if(automate == 'true'){ - setTimeout(scrape, delay); - } + + if(automate == 'true') setTimeout(scrape, delay); + } - if(automate == 'true') {window.onload = next();} + if(automate == 'true') window.onload = next(); function next() { - if(window.location.search.indexOf('&cc=us&l=english') == -1) { - window.location.search += '&cc=us&l=english'; - } else { - setTimeout(scrape, delay); - } + if(window.location.search.indexOf('&cc=us&l=english') == -1) window.location.search += '&cc=us&l=english'; + else setTimeout(scrape, delay); } function pressbtn(){ //next page var classes = document.getElementsByClassName('pagebtn'); var rightbtn; - if(window.location.search.indexOf('page') == -1) { - rightbtn = classes[0]; - } else { - rightbtn = classes[1]; - } + if(window.location.search.indexOf('page') == -1) rightbtn = classes[0]; + else rightbtn = classes[1]; rightbtn.click(); next(); } @@ -200,12 +190,12 @@ auto.setAttribute("class", "block"); var autoBtnMsg; if(automate == 'true') autoBtnMsg = "Stop"; - else autoBtnMsg = "Automate"; + else autoBtnMsg = "Automate"; auto.innerHTML = ""+autoBtnMsg+""; jQuery(auto).insertBefore(jQuery(".rightcol").children()[1]); auto.addEventListener("click", function (e) { if(automate == 'true') localStorage.setItem('automate', 'false'); - else localStorage.setItem('automate', 'true'); + else localStorage.setItem('automate', 'true'); history.go(0); }); From 704a46413d64a2a67f823d9bab5061316d7c2db4 Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sat, 16 Jun 2018 17:01:31 +0200 Subject: [PATCH 6/9] Added variable to remember currency This should remove unnecessary refreshes if the store already uses USD as standard. --- client/submitter/submit.user.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index 0d93de1..ec205ea 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -21,17 +21,20 @@ (function () { var lambda; var key; - var automate; + var automate = localStorage.getItem('automate'); var delay = 3000; //delay of retrying and continuing + var notUsd = localStorage.getItem('notUsd'); + + if(localStorage.getItem('automate') === null) localStorage.setItem('automate', 'false'); + + if(localStorage.getItem('notUsd') === null) notUsd = localStorage.setItem('notUsd', 'false'); - if(localStorage.getItem('automate') === undefined) automate = localStorage.setItem('automate', 'false'); - else automate = localStorage.getItem('automate'); - console.log("automate: "+automate); + console.log("notUsd: "+notUsd); function error(info) { var autoMsg; - + if(automate == 'true') autoMsg = "Retrying in "+delay+"ms"; else autoMsg = ""; @@ -45,13 +48,13 @@ }); if(automate == 'true') setTimeout(scrape, delay); - + } if(automate == 'true') window.onload = next(); function next() { - if(window.location.search.indexOf('&cc=us&l=english') == -1) window.location.search += '&cc=us&l=english'; + if((notUsd == 'true') && (window.location.search.indexOf('&cc=us&l=english') == -1)) window.location.search += '&cc=us&l=english'; else setTimeout(scrape, delay); } @@ -91,6 +94,8 @@ else if (price === "") price = -1; else if (price.indexOf("Season") > -1) price = -1; // temporary workaround for Series apps else if (price[0] != "$") { + localStorage.setItem('notUsd', 'true'); + localStorage.setItem('automate', 'false'); dialog.Dismiss(); ShowConfirmDialog("Cream Error", "Your Steam Store prices are not in USD. Please log out and append ?cc=us&l=english to search URLs.", "Log out for me", "Close").done(function () { Logout(); From 95cb8915953996f9163a748b0a6dedb4c3518d6b Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sat, 16 Jun 2018 19:13:13 +0200 Subject: [PATCH 7/9] Remove dialog and stop button Now removes dialog boxes when retrying. Also added a button to stop retrying in said dialog box. --- client/submitter/submit.user.js | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index ec205ea..8d27da2 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -33,22 +33,36 @@ console.log("notUsd: "+notUsd); function error(info) { - var autoMsg; + var autoMsgTime; + var autoMsgBtn; - if(automate == 'true') autoMsg = "Retrying in "+delay+"ms"; - else autoMsg = ""; + if(automate == 'true') { + autoMsgTime = "Retrying in "+delay+"ms"; + autoMsgBtn = "Stop retrying"; + } + else autoMsgTime = ""; + + if (info === undefined) info = "Cream experienced an internal error.
"+autoMsgTime; - if (info === undefined) info = "Cream experienced an internal error.
"+autoMsg; - ShowConfirmDialog("Cream Error", info, "Close", "Reconfigure").fail(function () { + var dialog = ShowConfirmDialog("Cream Error", info, "Close", "Reconfigure", autoMsgBtn).done(function (choice) { + if ( choice != 'OK' ){ + localStorage.setItem('automate', 'false'); + location.reload(); + } + }).fail(function () { GM_deleteValue("lambda"); GM_deleteValue("apikey"); localStorage.setItem('automate', 'false'); history.go(0); }); - if(automate == 'true') setTimeout(scrape, delay); - + if(automate == 'true') { + setTimeout(function(){ + document.querySelector(".btn_green_white_innerfade.btn_medium").click(); //Can't seem to find what to call to simply close. + scrape(); + },delay); + } } if(automate == 'true') window.onload = next(); From 0830bb2a6e2ae891e89962e24436f5b677dde55b Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Sun, 17 Jun 2018 01:11:25 +0200 Subject: [PATCH 8/9] Un-fuck previous commit Stop button in dialog works now. Actually closes dialog boxes as well. (Last commit was a just a prank.) Should work fine both on EU and US stores. --- client/submitter/submit.user.js | 39 ++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index 8d27da2..b586fcb 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -37,7 +37,7 @@ var autoMsgBtn; if(automate == 'true') { - autoMsgTime = "Retrying in "+delay+"ms"; + autoMsgTime = "Retrying in "+delay+"ms."; autoMsgBtn = "Stop retrying"; } else autoMsgTime = ""; @@ -45,21 +45,26 @@ if (info === undefined) info = "Cream experienced an internal error.
"+autoMsgTime; - var dialog = ShowConfirmDialog("Cream Error", info, "Close", "Reconfigure", autoMsgBtn).done(function (choice) { - if ( choice != 'OK' ){ - localStorage.setItem('automate', 'false'); + var dialog = ShowConfirmDialog("Cream Error", info, "Reconfigure", "Close", autoMsgBtn).done(function (choice) { + + automate = localStorage.setItem('automate', 'false'); + //location.reload(); + + }).done(function (choice) { + if(choice == 'SECONDARY'){ + automate = localStorage.setItem('automate', 'false'); location.reload(); + } else { + GM_deleteValue("lambda"); + GM_deleteValue("apikey"); + localStorage.setItem('automate', 'false'); + history.go(0); } - }).fail(function () { - GM_deleteValue("lambda"); - GM_deleteValue("apikey"); - localStorage.setItem('automate', 'false'); - history.go(0); }); if(automate == 'true') { setTimeout(function(){ - document.querySelector(".btn_green_white_innerfade.btn_medium").click(); //Can't seem to find what to call to simply close. + dialog.Dismiss(); scrape(); },delay); } @@ -86,6 +91,8 @@ var dialog = ShowBlockingWaitDialog("Cream", "

"); var logdiv = document.getElementById("cream_status"); + + logdiv.innerText = "Gathering data..."; var payload; @@ -111,6 +118,7 @@ localStorage.setItem('notUsd', 'true'); localStorage.setItem('automate', 'false'); dialog.Dismiss(); + if(automate == 'true') location.reload(); ShowConfirmDialog("Cream Error", "Your Steam Store prices are not in USD. Please log out and append ?cc=us&l=english to search URLs.", "Log out for me", "Close").done(function () { Logout(); return; @@ -170,8 +178,13 @@ var rt = JSON.parse(data.responseText); if (rt === "Invalid API key") error(rt); else { - ShowAlertDialog("Cream", rt.split("\n").join("
")); - if(automate == 'true') pressbtn(); + var alert = ShowAlertDialog("Cream", rt.split("\n").join("
")); + if(automate == 'true') { + setTimeout(function() { + alert.Dismiss() + pressbtn(); + }, delay); + } } } catch (e) { @@ -212,7 +225,7 @@ else autoBtnMsg = "Automate"; auto.innerHTML = ""+autoBtnMsg+""; jQuery(auto).insertBefore(jQuery(".rightcol").children()[1]); - auto.addEventListener("click", function (e) { + auto.addEventListener("click", function () { if(automate == 'true') localStorage.setItem('automate', 'false'); else localStorage.setItem('automate', 'true'); history.go(0); From 8d273a4042285fc7e8219ea4eb02491aa719d6dd Mon Sep 17 00:00:00 2001 From: BrentVDJ <27026234+BrentVDJ@users.noreply.github.com> Date: Mon, 18 Jun 2018 12:20:14 +0200 Subject: [PATCH 9/9] Changes to delay Actually uses the EventListener now. Scrapes immediately on page load without var issues. Removed wrong .done(). --- client/submitter/submit.user.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/client/submitter/submit.user.js b/client/submitter/submit.user.js index b586fcb..a4501ae 100644 --- a/client/submitter/submit.user.js +++ b/client/submitter/submit.user.js @@ -22,8 +22,8 @@ var lambda; var key; var automate = localStorage.getItem('automate'); - var delay = 3000; //delay of retrying and continuing var notUsd = localStorage.getItem('notUsd'); + const DELAY = 3000; if(localStorage.getItem('automate') === null) localStorage.setItem('automate', 'false'); @@ -37,7 +37,7 @@ var autoMsgBtn; if(automate == 'true') { - autoMsgTime = "Retrying in "+delay+"ms."; + autoMsgTime = "Retrying in "+DELAY+"ms."; autoMsgBtn = "Stop retrying"; } else autoMsgTime = ""; @@ -46,11 +46,6 @@ var dialog = ShowConfirmDialog("Cream Error", info, "Reconfigure", "Close", autoMsgBtn).done(function (choice) { - - automate = localStorage.setItem('automate', 'false'); - //location.reload(); - - }).done(function (choice) { if(choice == 'SECONDARY'){ automate = localStorage.setItem('automate', 'false'); location.reload(); @@ -66,15 +61,15 @@ setTimeout(function(){ dialog.Dismiss(); scrape(); - },delay); + },DELAY); } } - if(automate == 'true') window.onload = next(); + function next() { if((notUsd == 'true') && (window.location.search.indexOf('&cc=us&l=english') == -1)) window.location.search += '&cc=us&l=english'; - else setTimeout(scrape, delay); + else scrape(); } function pressbtn(){ //next page @@ -83,6 +78,7 @@ if(window.location.search.indexOf('page') == -1) rightbtn = classes[0]; else rightbtn = classes[1]; rightbtn.click(); + //SearchLinkClick(rightbtn); also works next(); } @@ -181,9 +177,9 @@ var alert = ShowAlertDialog("Cream", rt.split("\n").join("
")); if(automate == 'true') { setTimeout(function() { - alert.Dismiss() + alert.Dismiss(); pressbtn(); - }, delay); + }, DELAY); } } } @@ -243,6 +239,9 @@ localStorage.setItem('automate', 'false'); history.go(0); }); + + if(automate == 'true') next(); + } }); })();