Provides utility functions to make your geoguessr scripts independent of arbitrary changes to class name suffixes
Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/460322/1408713/Geoguessr%20Styles%20Scan.js
// ==UserScript==
// @name Geoguessr Styles Scan
// @description Provides utility functions to make your geoguessr scripts independent of arbitrary changes to class name suffixes
// @version 1.0.1
// @author victheturtle#5159
// @license MIT
// @namespace https://greasyfork.org/users/967692-victheturtle
// ==/UserScript==
const _cndic = {};
const _hrefset = new Set();
async function scanStyles() {
for (let node of document.querySelectorAll('head link[rel="stylesheet"], head style[data-n-href*=".css"]')) {
const href = node.href || location.origin+node.dataset.nHref;
if (_hrefset.has(href)) continue;
_hrefset.add(href);
await fetch(href)
.then(res => res.text())
.then(stylesheet => {
for (let className of stylesheet.split(".")) {
const ind = className.indexOf("__");
if (ind != -1) _cndic[className.substr(0, ind+2)] = className.substr(0, ind+7);
};
});
};
};
const cn = (classNameStart) => _cndic[classNameStart]; // cn("status_section__") -> "status_section__8uP8o"
const checkAllStylesFound = (STYLES_USED) => STYLES_USED.reduce((res, className) => res && cn(className), true);
async function requireClassName(classNameStart) {
if (_cndic[classNameStart]) return _cndic[classNameStart];
return await scanStyles().then(() => _cndic[classNameStart]);
}