inADayTribeRankingGenerator should wait 200ms after each request

This commit is contained in:
Dawid Wysokiński 2020-08-06 12:35:49 +02:00
parent 6606c3804d
commit 352bd25d56
3 changed files with 29 additions and 11 deletions

View File

@ -204,11 +204,24 @@ class InADayParser {
}
exports.default = InADayParser;
},{"../utils/getIDFromURL":"tQUs"}],"s4G3":[function(require,module,exports) {
},{"../utils/getIDFromURL":"tQUs"}],"oUdd":[function(require,module,exports) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = t => new Promise(resolve => setTimeout(resolve, t));
exports.default = _default;
},{}],"s4G3":[function(require,module,exports) {
"use strict";
var _InADayParser = _interopRequireDefault(require("./libs/InADayParser"));
var _wait = _interopRequireDefault(require("./utils/wait"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// ==UserScript==
@ -216,10 +229,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/inADayTribeRankingGenerator.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/inADayTribeRankingGenerator.js
// @version 0.1.0
// @version 0.1.1
// @description 'In A Day' Tribe Ranking Generator
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=ranking&mode=in_a_day*
// @match *://*/game.php*screen=ranking*mode=in_a_day*
// @grant none
// @run-at document-end
// ==/UserScript==
@ -266,6 +279,7 @@ const handleFormSubmit = async e => {
if (parser.trs.length !== 26) break;
players = [...players, ...parser.parse()];
page++;
await (0, _wait.default)(200);
} catch (error) {
break;
}
@ -273,7 +287,7 @@ const handleFormSubmit = async e => {
players = players.slice(0, limit);
Dialog.show('iad_result', "\n <textarea cols=30 rows=8 readonly>[table]\n[**][||]Player[||]Tribe[||]Rank[||]Result[||]Date[/**]\n".concat(players.map((player, index) => {
return "[*]".concat(index + 1, "[|][player]").concat(player.name, "[/player][|][ally]").concat(player.tribe, "[/ally][|]").concat(player.rank, "[|]").concat(player.score.toLocaleString(), "[|]").concat(player.date);
return "[*]".concat(index + 1, ".[|][player]").concat(player.name, "[/player][|][ally]").concat(player.tribe, "[/ally][|]").concat(player.rank, "[|]").concat(player.score.toLocaleString(), "[|]").concat(player.date);
}).join('\n'), "\n[/table]</textarea>\n "));
};
@ -295,4 +309,4 @@ const renderUI = () => {
console.log("'In A Day' Tribe Ranking Generator", error);
}
})();
},{"./libs/InADayParser":"dSAr"}]},{},["s4G3"], null)
},{"./libs/InADayParser":"dSAr","./utils/wait":"oUdd"}]},{},["s4G3"], null)

View File

@ -2,6 +2,8 @@ parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcel
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>parseInt(new URLSearchParams(e).get("id"));exports.default=e;
},{}],"dSAr":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=t(require("../utils/getIDFromURL"));function t(e){return e&&e.__esModule?e:{default:e}}class r{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.dom=(new DOMParser).parseFromString(e,"text/html"),this.trs=this.dom.querySelectorAll("#in_a_day_ranking_table tbody tr"),this.filters=t}isValidRow(e){return!!e&&((!this.filters.playerID||e.playerID===this.filters.playerID)&&!(this.filters.tribes&&Array.isArray(this.filters.tribes)&&!this.filters.tribes.some(t=>t===e.tribe)))}parseRow(t){if(!t||!t instanceof HTMLTableRowElement)return;let r={};return r.rank=parseInt(t.children[0].innerText.trim()),r.name=t.children[1].innerText.trim(),r.playerID=(0,e.default)(t.children[1].querySelector("a").getAttribute("href")),r.tribe=t.children[2].innerText.trim(),r.tribeID=0,r.tribe&&(r.tribeID=(0,e.default)(t.children[2].querySelector("a").getAttribute("href"))),r.score=parseInt(t.children[3].innerText.trim().replace(/\./g,"")),r.date=t.children[4].innerText.trim(),r}parse(){const e=[];for(let t=1;t<this.trs.length;t++){const r=this.trs[t],i=this.parseRow(r);this.isValidRow(i)&&e.push(i)}return e}}exports.default=r;
},{"../utils/getIDFromURL":"tQUs"}],"s4G3":[function(require,module,exports) {
"use strict";var e=t(require("./libs/InADayParser"));function t(e){return e&&e.__esModule?e:{default:e}}const n="iad_tribes",a="iad_limit",r=()=>{const e=document.querySelector("#iad_tribes"),t=document.createElement("div");t.innerHTML='\n <label>Tribe: </label>\n <input type="text" required />\n <button type="button">Delete</button>\n ',t.querySelector("button").addEventListener("click",()=>{e.children.length>1&&t.remove()}),e.appendChild(t)},i=async t=>{t.preventDefault();const n=parseInt(document.querySelector("#iad_limit").value),a=[],r=new URLSearchParams(window.location.search).get("type")||"kill_att";document.querySelectorAll("#iad_tribes input").forEach(e=>{e.value&&a.push(e.value.trim())});let i=[],o=0;for(;i.length<n;){Dialog.show("iad_loading","Loaded: <strong>".concat(i.length,"/").concat(n,"</strong>"));try{const t=await fetch(TribalWars.buildURL("",{screen:"ranking",mode:"in_a_day",type:r,offset:25*o})),n=await t.text(),l=new e.default(n,{tribes:a});if(26!==l.trs.length)break;i=[...i,...l.parse()],o++}catch(c){break}}i=i.slice(0,n),Dialog.show("iad_result","\n <textarea cols=30 rows=8 readonly>[table]\n[**][||]Player[||]Tribe[||]Rank[||]Result[||]Date[/**]\n".concat(i.map((e,t)=>"[*]".concat(t+1,"[|][player]").concat(e.name,"[/player][|][ally]").concat(e.tribe,"[/ally][|]").concat(e.rank,"[|]").concat(e.score.toLocaleString(),"[|]").concat(e.date)).join("\n"),"\n[/table]</textarea>\n "))},o=()=>{const e=document.createElement("div"),t='\n <form>\n <div id="'.concat("iad_tribes",'">\n </div>\n <div>\n <label>Limit: </label>\n <input id="').concat("iad_limit",'" type="number" min="1" value="10" required />\n </div>\n <button type="submit">Generate</button>\n <button id="').concat("iad_add",'" type="button">Add tribe</button>\n </form>\n ');e.innerHTML=t,document.querySelector("#content_value > table > tbody > tr > td:nth-child(2)").prepend(e),e.querySelector("form").addEventListener("submit",i),e.querySelector("#iad_add").addEventListener("click",r),r()};!function(){try{o()}catch(e){console.log("'In A Day' Tribe Ranking Generator",e)}}();
},{"./libs/InADayParser":"dSAr"}]},{},["s4G3"], null)
},{"../utils/getIDFromURL":"tQUs"}],"oUdd":[function(require,module,exports) {
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var e=e=>new Promise(t=>setTimeout(t,e));exports.default=e;
},{}],"s4G3":[function(require,module,exports) {
"use strict";var e=n(require("./libs/InADayParser")),t=n(require("./utils/wait"));function n(e){return e&&e.__esModule?e:{default:e}}const a="iad_tribes",r="iad_limit",i=()=>{const e=document.querySelector("#iad_tribes"),t=document.createElement("div");t.innerHTML='\n <label>Tribe: </label>\n <input type="text" required />\n <button type="button">Delete</button>\n ',t.querySelector("button").addEventListener("click",()=>{e.children.length>1&&t.remove()}),e.appendChild(t)},o=async n=>{n.preventDefault();const a=parseInt(document.querySelector("#iad_limit").value),r=[],i=new URLSearchParams(window.location.search).get("type")||"kill_att";document.querySelectorAll("#iad_tribes input").forEach(e=>{e.value&&r.push(e.value.trim())});let o=[],l=0;for(;o.length<a;){Dialog.show("iad_loading","Loaded: <strong>".concat(o.length,"/").concat(a,"</strong>"));try{const n=await fetch(TribalWars.buildURL("",{screen:"ranking",mode:"in_a_day",type:i,offset:25*l})),a=await n.text(),d=new e.default(a,{tribes:r});if(26!==d.trs.length)break;o=[...o,...d.parse()],l++,await(0,t.default)(200)}catch(c){break}}o=o.slice(0,a),Dialog.show("iad_result","\n <textarea cols=30 rows=8 readonly>[table]\n[**][||]Player[||]Tribe[||]Rank[||]Result[||]Date[/**]\n".concat(o.map((e,t)=>"[*]".concat(t+1,".[|][player]").concat(e.name,"[/player][|][ally]").concat(e.tribe,"[/ally][|]").concat(e.rank,"[|]").concat(e.score.toLocaleString(),"[|]").concat(e.date)).join("\n"),"\n[/table]</textarea>\n "))},l=()=>{const e=document.createElement("div"),t='\n <form>\n <div id="'.concat("iad_tribes",'">\n </div>\n <div>\n <label>Limit: </label>\n <input id="').concat("iad_limit",'" type="number" min="1" value="10" required />\n </div>\n <button type="submit">Generate</button>\n <button id="').concat("iad_add",'" type="button">Add tribe</button>\n </form>\n ');e.innerHTML=t,document.querySelector("#content_value > table > tbody > tr > td:nth-child(2)").prepend(e),e.querySelector("form").addEventListener("submit",o),e.querySelector("#iad_add").addEventListener("click",i),i()};!function(){try{l()}catch(e){console.log("'In A Day' Tribe Ranking Generator",e)}}();
},{"./libs/InADayParser":"dSAr","./utils/wait":"oUdd"}]},{},["s4G3"], null)

View File

@ -1,14 +1,15 @@
import InADayParser from './libs/InADayParser';
import wait from './utils/wait';
// ==UserScript==
// @name 'In A Day' Tribe Ranking Generator
// @namespace https://github.com/tribalwarshelp/scripts
// @updateURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/inADayTribeRankingGenerator.js
// @downloadURL https://raw.githubusercontent.com/tribalwarshelp/scripts/master/dist/inADayTribeRankingGenerator.js
// @version 0.1.0
// @version 0.1.1
// @description 'In A Day' Tribe Ranking Generator
// @author Kichiyaki http://dawid-wysokinski.pl/
// @match *://*/game.php*screen=ranking&mode=in_a_day*
// @match *://*/game.php*screen=ranking*mode=in_a_day*
// @grant none
// @run-at document-end
// ==/UserScript==
@ -67,6 +68,7 @@ const handleFormSubmit = async (e) => {
if (parser.trs.length !== 26) break;
players = [...players, ...parser.parse()];
page++;
await wait(200);
} catch (error) {
break;
}
@ -80,7 +82,7 @@ const handleFormSubmit = async (e) => {
[**][||]Player[||]Tribe[||]Rank[||]Result[||]Date[/**]
${players
.map((player, index) => {
return `[*]${index + 1}[|][player]${player.name}[/player][|][ally]${
return `[*]${index + 1}.[|][player]${player.name}[/player][|][ally]${
player.tribe
}[/ally][|]${player.rank}[|]${player.score.toLocaleString()}[|]${
player.date