kakeruの画像をexportするscript
Kakeruのアカウントに紐付けられた全ての画像データをsvg形式でexportするscript 使い方
2. たくさん描いている人は、ページ最下部のmoreを押しまくって全ての画像を表示する
3. 以下のscriptを開発コンソールに貼り付けて実行する
code:js
await (async () => {
if (!document.getElementById("userscript-jszip")) {
await useJSZip();
}
const zip = new JSZip();
const imageIds = Array.from(
).map((img) => new URL(img.parentElement.href).pathname.slice(1));
const chunk = 5;
const maxNum = Math.floor(imageIds.length / chunk) + 1;
for (let i = 0; i < maxNum; i++) {
const ids = imageIds.slice(i * chunk, (i + 1) * chunk);
await Promise.all(ids.map(async (id) => {
const res = await fetch(https://i.kakeru.app/${id}.svg);
const blob = await res.blob();
zip.file(${id}.svg, blob);
}));
}
console.log("Compressing images...please wait.");
const file = await zip.generateAsync({
type: "blob",
compression: "DEFLATE",
compressionOptions: { level: 9 },
});
console.log("Compressed.");
const url = URL.createObjectURL(file);
open(url);
async function useJSZip() {
const id = "userscript-jszip";
return new Promise((resolve, reject) => {
const oldScript = document.getElementById(id);
oldScript?.parentNode.removeChild(oldScript);
const script = document.createElement("script");
script.addEventListener("load", () => {
resolve();
});
script.addEventListener("error", (e) => {
reject(e);
});
script.src = "//cdnjs.cloudflare.com/ajax/libs/jszip/3.5.0/jszip.min.js";
script.id = id;
document.head.append(script);
});
}
})();