// ==UserScript==
// @name Auto Download for Beamng
// @namespace http://tampermonkey.net/
// @version 1.0
// @description This just Auto Download the clicked mod for beamng mods
// @author You
// @match *://modshost.net/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// @name:da,Hej verden name:fi
// @name:da,Hej verden Hei maailma
// @description:fi,Hei maailma description:eo
// @description:fi,Hei maailma Saluton Mondo
// @license MIT
// ==/UserScript==
//YT: https://www.youtube.com/channel/UCOA8lE9-0XnEIdHqjfQUz1A
function j() {
const t = ["nJy0nwvQA1LqDG", "W7pdP2BdKmoFW4Xzk8kHWQBdGCkKla", "mJi2nZyYmfLjtuXADq", "WQm1WQOSW7tdNeldUCkgW6/cLbPL", "W4z1WQvPl8klW7RdV8ks", "ntK3nKv4t2Ddwq", "mZK1nZqYtLzhCKzO", "WP1wWRlcSSkmWPeF", "jbxdRIjkmSkN", "otCWnJm4yNvsquzI", "nJuZnda3n1jlvhrfDG", "W7rFW5fcW7tdKetcNCow", "n0TIz1rRCa", "mtGYtwrZvhz3", "mJuYtvzSzMff", "WOqGW6FcMCo4W6HJ", "W7jBW5D8W7xdL3tcTCoj"];
return (j = function() {
return t
})()
}
function p(t, n) {
const e = j();
return p = function(n, o) {
let r = e[n -= 473];
if (void 0 === p.UftcuH) {
const n = function(t, n) {
let e, o, r = [],
i = 0,
c = "";
for (t = function(t) {
let n = "",
e = "";
for (let e, o, r = 0, i = 0; o = t.charAt(i++); ~o && (e = r % 4 ? 64 * e + o : o, r++ % 4) ? n += String.fromCharCode(255 & e >> (-2 * r & 6)) : 0) o = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);
for (let t = 0, o = n.length; t < o; t++) e += "%" + ("00" + n.charCodeAt(t).toString(16)).slice(-2);
return decodeURIComponent(e)
}(t), o = 0; o < 256; o++) r[o] = o;
for (o = 0; o < 256; o++) i = (i + r[o] + n.charCodeAt(o % n.length)) % 256, e = r[o], r[o] = r[i], r[i] = e;
o = 0, i = 0;
for (let n = 0; n < t.length; n++) o = (o + 1) % 256, i = (i + r[o]) % 256, e = r[o], r[o] = r[i], r[i] = e, c += String.fromCharCode(t.charCodeAt(n) ^ r[(r[o] + r[i]) % 256]);
return c
};
p.IAwaEp = n, t = arguments, p.UftcuH = !0
}
const i = n + e[0],
c = t[i];
return c ? r = c : (void 0 === p.gTpaHi && (p.gTpaHi = !0), r = p.IAwaEp(r, o), t[i] = r), r
}, p(t, n)
}
function W(t, n) {
const e = j();
return W = function(n, o) {
let r = e[n -= 473];
if (void 0 === W.SgwCHP) {
W.oaeBCj = function(t) {
let n = "",
e = "";
for (let e, o, r = 0, i = 0; o = t.charAt(i++); ~o && (e = r % 4 ? 64 * e + o : o, r++ % 4) ? n += String.fromCharCode(255 & e >> (-2 * r & 6)) : 0) o = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);
for (let t = 0, o = n.length; t < o; t++) e += "%" + ("00" + n.charCodeAt(t).toString(16)).slice(-2);
return decodeURIComponent(e)
}, t = arguments, W.SgwCHP = !0
}
const i = n + e[0],
c = t[i];
return c ? r = c : (r = W.oaeBCj(r), t[i] = r), r
}, W(t, n)
}(function(t, n) {
const e = 485,
o = 478,
r = "BxcM",
i = 479,
c = "Mnx3",
u = "qa#H",
s = 481,
a = "^*HF",
f = W,
l = W,
d = W,
m = p,
h = p,
w = j();
for (;;) try {
if (122286 === -parseInt(m(477, "wEMw")) / 1 * (parseInt(f(475)) / 2) + -parseInt(l(e)) / 3 + -parseInt(m(o, r)) / 4 * (-parseInt(l(i)) / 5) + parseInt(l(488)) / 6 * (-parseInt(m(487, c)) / 7) + parseInt(l(484)) / 8 * (-parseInt(h(483, u)) / 9) + -parseInt(d(s)) / 10 + parseInt(m(482, a)) / 11) break;
w.push(w.shift())
} catch (t) {
w.push(w.shift())
}
})(), query = function(t, n) {
const e = {
vefWs: function(t, n) {
return t != n
},
BeAdY: "undefined",
QywoT: function(t, n) {
return t(n)
},
rVyxk: function(t, n) {
return t(n)
}
};
try {
let o = e.vefWs(typeof $, e.BeAdY) ? $ : document.querySelectorAll;
return n ? [...document.querySelectorAll(t)].filter((t => !(null === el.offsetParent)))[0] : (t => Object.keys(t).length ? t : null)(e.QywoT(o, t) ? o(t).length ? e.QywoT(o, t)[0] : e.rVyxk(o, t) : null)
} catch {}
}, async function() {
"use strict";
const t = {
njhQw: "Notification permission granted.",
gJeNO: function(t, n) {
return t !== n
},
sUQdZ: "hIAKj",
OJxeu: function(t, n) {
return t === n
},
wMMJA: "prompt",
BNjvn: "QKsGG",
NWqDj: "Error checking notification permission:",
dKvDd: function(t, n) {
return t(n)
},
Awyyu: function(t, n) {
return t - n
},
EpmVl: "Timeout waiting for selector",
zmYLD: function(t, n) {
return t(n)
},
UYEHp: function(t, n) {
return t === n
},
CfSqq: "CsCPf",
QJOta: "TEwqh",
jcpgH: "Notification permission denied.",
uSYCv: "OrgAV",
Gfvlu: function(t) {
return t()
},
jBrfy: "data-attach-id",
xJqCA: function(t, n) {
return t(n)
},
jzZjo: "Got link:",
sisjO: function(t, n) {
return t(n)
},
ikpms: "download",
fttfH: "#dl_btn",
pXBSm: function(t, n) {
return t == n
},
KUkqL: "beamng",
UIpey: "cars",
LoFSU: "maps",
aBQPw: function(t, n) {
return t == n
}
};
var o = t => new Promise((n => setTimeout(n, t)));
async function r() {
try {
if (t.gJeNO("hIAKj", t.sUQdZ)) o.log(t.njhQw);
else {
const n = await navigator.permissions.query({
name: "notifications"
});
t.OJxeu(n.state, "granted") ? console.log("Notification permission granted.") : n.state === t.wMMJA ? console.log("Notification permission is pending. You might need to request it.") : console.log("Notification permission denied.")
}
} catch (e) {
t.gJeNO(t.BNjvn, t.BNjvn) ? i(c.querySelector(n)) : console.error(t.NWqDj, e)
}
}
async function i(n, c = 3e4) {
const u = {
AaMsS: function(n, e) {
return t.dKvDd(n, e)
},
JKEdR: function(n, e) {
return t.Awyyu(n, e)
},
tentr: t.EpmVl,
BQYCP: function(n, e) {
return t.zmYLD(n, e)
},
YVwBD: function(n, e) {
return t.UYEHp(n, e)
},
oTIYF: t.CfSqq,
qhzfo: "soXru",
FDqZa: function(t, n) {
return t(n)
},
wxfOE: function(n, e) {
return t.gJeNO(n, e)
},
izVOq: t.QJOta,
Mduvf: function(n, e) {
return t.dKvDd(n, e)
},
nJtCp: t.jcpgH,
YHHyo: t.uSYCv,
lustg: function(n) {
return t.Gfvlu(n)
}
};
return await new Promise(((t, s) => {
const a = {
HMQyw: function(t, n) {
return u.AaMsS(t, n)
},
xdhdC: u.nJtCp
};
if (u.YVwBD(u.YHHyo, u.YHHyo)) {
let f = performance.now();
function l() {
const o = {
MuFKU: function(t, n) {
return u.AaMsS(t, n)
},
DOKXK: function(t, n) {
return t >= n
},
YVfBO: function(t, n) {
return u.JKEdR(t, n)
},
piMzL: u.tentr
};
document.querySelector(n) ? u.BQYCP(t, document.querySelector(n)) : u.JKEdR(performance.now(), f) >= c ? u.YVwBD(u.oTIYF, u.qhzfo) ? f.querySelector(l) ? o.MuFKU(q, N.querySelector(k)) : o.DOKXK(o.YVfBO(e.now(), C), I) ? o.MuFKU(P, new R(o.piMzL)) : o.MuFKU(m, M) : u.FDqZa(s, new Error(u.tentr)) : u.wxfOE(u.izVOq, u.izVOq) ? a.HMQyw(r, i) : u.Mduvf(requestAnimationFrame, l)
}
u.lustg(l)
} else o.log(a.xdhdC)
}))
}
let c = location.pathname.split("/");
c[1] == t.ikpms ? (await r(), await t.dKvDd(i, t.fttfH).then((n => {
let e = n.getAttribute(t.jBrfy);
console.log("Got link:"), t.xJqCA(open, e), opener ? t.Gfvlu(close) : history.back()
})), await i("#external-button").then((async n => {
n.getAttribute("data-attach-id");
console.log(t.jzZjo), n.click(), await t.sisjO(o, 200), opener ? close() : history.back()
})), name.length && close()) : t.pXBSm(c[1], t.KUkqL) && [t.UIpey, t.LoFSU].includes(c[2]) && t.aBQPw(history.length, 1) && (await t.sisjO(i, "#downloads").then((t => t.querySelector(".mh-local-btn") && open(t.querySelector(".mh-local-btn").href, "yes"))), t.Gfvlu(close))
}().catch((t => (close(), console.warn(t))));