1
1
// @name caiconcac
// @version 0.9.2
// @description Download Sketchfab models
// @author hoosnick
// @include /^https?://(www\.)?sketchfab\.com/.*
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip-utils/0.0.2/jszip-
utils.min.js
// @require
https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/1.3.8/FileSaver.js
// @run-at document-start
// @grant unsafeWindow
// @grant GM_download
// @namespace https://greasyfork.org/users/1213259
// @downloadURL https://update.greasyfork.org/scripts/479293/Sketchfab%20Model
%20Downloader.user.js
// @updateURL https://update.greasyfork.org/scripts/479293/Sketchfab%20Model
%20Downloader.meta.js
// ==/UserScript==
var addbtnfunc;
(function () {
'use strict';
var window = unsafeWindow;
console.log("[UserScript] init", window);
window.allmodel = [];
var saveimagecache2 = {};
var objects = {};
saveimagecache2[url] = mdl;
}
}
addbtnfunc = function () {
var p = document.evaluate("//div[@class='titlebar']", document, null, 9,
null).singleNodeValue;
if (p && !button_dw) {
console.log("[UserScript] add btn download");
var btn = document.createElement("a");
btn.setAttribute("class", "control");
btn.innerHTML = "<pre style='color: red; background-color: #e74c3c;
border: none; color: white; padding: 10px 20px; text-align: center; text-
decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor:
pointer; border-radius: 8px;'>DOWNLOAD</pre>";
btn.addEventListener("click", dodownload, false);
p.appendChild(btn);
button_dw = true;
} else {
console.log("[UserScript] try add btn later");
setTimeout(addbtnfunc, 3000);
}
}
window.allmodel.forEach(function (obj) {
var mdl = {
name: "model_" + idx,
obj: parseobj(obj)
}
console.log(mdl);
dosavefile(mdl);
idx++;
})
PackAll();
}
var vn = obj.normal.length != 0;
var vt = obj.uv.length != 0;
str += '\n';
imagemodel.attributes.images.forEach(function (img) {
var alpha_is_check = alpha == "A" ? img.options.format == alpha :
true;
var d = img.width;
while (d % 2 == 0) {
d = d / 2;
}
if (!saveimagecache2[url_image]) {
console.log(e);
save_image_to_list(url_image, filename_image);
} else {
console.log(e);
}
return obr;
}
return e;
}
if (!saveimagecache2[url]) {
return;
} else {
console.log("saved texture:" + url);
}
// copy the copy of the top half row to the bottom half
data.set(temp, bottomOffset);
}
var re = /(?:\.([^.]+))?$/;
var ext = re.exec(saveimagecache2[url].name)[1];
var name = saveimagecache2[url].name + ".png";
})();
(() => {
"use strict";
const Event = class {
constructor(script, target) {
this.script = script;
this.target = target;
this._cancel = false;
this._replace = null;
this._stop = false;
}
preventDefault() {
this._cancel = true;
}
stopPropagation() {
this._stop = true;
}
replacePayload(payload) {
this._replace = payload;
}
};
if (e._cancel) {
script.textContent = "";
script.remove();
} else if (typeof e._replace === "string") {
script.textContent = e._replace;
}
};
const observer = new MutationObserver((mutations) => {
for (const m of mutations) {
for (const n of m.addedNodes) {
dispatch(n, m.target);
}
}
});
observer.observe(document, {
childList: true,
subtree: true,
});
})();
(() => {
"use strict";
links_as_arr.forEach(function (srimgc) {
if (srimgc instanceof HTMLScriptElement) {
if (srimgc.src.indexOf("web/dist/") >= 0 ||
srimgc.src.indexOf("standaloneViewer") >= 0) {
e.preventDefault();
e.stopPropagation();
if (ret) {
var index = ret.index + ret[0].length;
var head = jstext.slice(0, index);
var tail = jstext.slice(index);
jstext = head + ",i" + tail;
ret = func_renderInto2.exec(jstext);
if (ret) {
var index = ret.index + ret[0].length;
var head = jstext.slice(0, index);
var tail = jstext.slice(index);
if (!func_renderInto1.exec(jstext))
console.log("[UserScript] But patch_0 failed " +
srimgc.src);
}
ret = fund_drawArrays.exec(jstext);
if (ret) {
var index = ret.index + ret[0].length;
var head = jstext.slice(0, index);
var tail = jstext.slice(index);
ret = func_getResourceImage.exec(jstext);
if (ret) {
var index = ret.index + ret[0].length;
var head = jstext.slice(0, index);
var tail = jstext.slice(index);
ret = func_drawGeometry.exec(jstext);
if (ret) {
var index1 = ret.index + ret[1].length;
var head1 = jstext.slice(0, index1);
var tail1 = jstext.slice(index1);
jstext = head1 + ";window.attachbody(t);" + tail1;
setTimeout(addbtnfunc, 3000);
}
document.getElementsByTagName('head')[0].appendChild(obj);
}
}
});
};
})();