copyGyazoURL-script
/takker/Gyazoにuploadした画像URLをコピペするPage Menu@2.0.0
code:main.js
import { addGyazoMenu } from "../../yuyasurarin/copyGyazoURL-script/mod.js";
import { GYAZO_ACCESS_TOKEN } from "/api/code/wogikaze-study/copyGyazoURL-settings/auth.js";
addGyazoMenu({
maxCount: 10,
accessToken: GYAZO_ACCESS_TOKEN,
onClick: async (image, e) => {
try {
if (e.ctrlKey) {
await navigator.clipboard.writeText(image.permalink_url);
return;
}
const cursor = document.getElementById("text-input");
if (!cursor) {
throw Error("#text-input is not ditected.");
}
cursor.focus();
cursor.value = image.permalink_url;
const event = new InputEvent("input", { bubbles: true });
cursor.dispatchEvent(event);
await scrapbox.Page.waitForSave();
} catch(error) {
alert(${error});
console.error(error);
}
},
});
code:mod.js
var n=globalThis.scrapbox;var p=t=>{let{fetch:o=globalThis.fetch,...e}=t;return{fetch:o,...e}};var u=t=>{let{accessToken:o,fetch:e,page:r,per:a}=p(t??{}),d=https://api.gyazo.com/api/images?${new URLSearchParams({access_token:o,...a!==void 0?{per_page:${Math.max(1,Math.min(100,Math.round(a)))}}:{},...r!==void 0?{page:${r}}:{}})};return e(d)};var i="Gyazo Viewer",me=t=>{let o=Promise.resolve(),e=globalThis.GM_fetch;n.PageMenu.addMenu({title:e?i:"Open Gyazo",icon:"kamon kamon-gyazo",onClick:e?()=>{o=o.then(()=>c({per:t.maxCount??10,accessToken:t.accessToken,fetch:e,onClick:t.onClick}))}:()=>globalThis.open("https://gyazo.com/captures")})},c=async t=>{let o;try{let e=u({page:0,...t});o=setTimeout(()=>{n.PageMenu(i).addItem({title:"Loading...",icon:"fas fa-spinner",onClick:()=>{}})},100);let r=await e;if(!r.ok)throw new Error(${r.status} ${r.statusText});let a=await r.json();clearTimeout(o),n.PageMenu(i).removeAllItems();for(let s of a)s.image_id&&n.PageMenu(i).addItem({title:s.metadata?.title||"Untitled",image:s.url,onClick:d=>t.onClick?.(s,d)??navigator?.clipboard?.writeText?.(s.permalink_url)?.catch?.(m=>{alert(${m}),console.error(m)})})}catch(e){clearTimeout(o),n.PageMenu(i).removeAllItems(),n.PageMenu(i).addItem({title:"Failed to load the image list.",icon:"fas fa-exclamation-triangle",onClick:()=>{}}),console.error("Failed to load the image list",e)}};export{me as addGyazoMenu};