scrapbox-url-customizer
2023/11/16
いい加減ツイートの画像をなんとかしたいので使う
エラーが出るが多分tokenのやつだろう
token付けた
code:js
let e=await o(https://cdn.syndication.twimg.com/tweet-result?id=${t}&token=x)
それでもうまくいかないな
9月くらいに/takker/takker.iconがbundleしてくれたやつを使おう
関係なかった
関係なかった(あるけど)
いらないらしい
動いた!
返信ツイートを取得すると返信元のツイートを取得してしまう
連ツイを転記する際に不便かも
ChatGPTに教えてもらって消した
引用も消すの忘れてた
HTMLエンティティがデコードされてないので処理を追加した
code:js
function decodeHtmlEntities(encodedString) {
var textArea = document.createElement('textarea');
textArea.innerHTML = encodedString;
return textArea.textContent;
}
code:js
return[...D(n).map(s=>> ${decodeHtmlEntities(s)}),]
v0.2.3で対応されているらしいのでそっちをバンドルした
結局v0.2.4にしたはず(うろ覚え)
code:script.js
var Oe=t=>typeof t=="object"&&t!==null,De=t=>Oe(t)?(t.name===void 0||typeof t.name=="string")&&typeof t.message=="string":!1,Y=t=>{try{let n=typeof t=="string"?JSON.parse(t):t;return De(n)?n:!1}catch(n){if(n instanceof SyntaxError)return!1;throw n}};var Q=!1;scrapbox.addListener("lines:changed",()=>Q=!1);scrapbox.addListener("layout:changed",()=>Q=!1);var J=(t,n)=>{if(!(t instanceof HTMLDivElement))throw new TypeError("${n}" must be HTMLDivElememt but actual is "${t}")};var Z=(t,n)=>{if(!(t instanceof HTMLTextAreaElement))throw new TypeError("${n}" must be HTMLTextAreaElement but actual is "${t}")};var L=()=>{let t=document.getElementById("text-input");if(!!t)return Z(t,"textarea#text-input"),t};var ee=()=>Fe(document.getElementsByClassName("status-bar")?.0,"div.status-bar"),Fe=(t,n)=>{if(!!t)return J(t,n),t};var F=t=>new Promise(n=>setTimeout(()=>n(),t));var re=async t=>{let n=L();if(!n)throw Error("#text-input is not ditected.");n.focus(),n.value=t;let e=new InputEvent("input",{bubbles:!0});n.dispatchEvent(e),await F(1)};var oe=()=>{let t=ee();if(!t)throw new Error("div.status-bar can't be found");let n=document.createElement("div");return t.append(n),{render:(...e)=>{n.textContent="";let r=ne(...e);r&&n.append(r)},dispose:()=>n.remove()}},ne=(...t)=>{let n=t.flatMap(r=>{switch(r.type){case"spinner":returnze();case"check-circle":returnWe();case"exclamation-triangle":returnVe();case"text":returnB(r.text);case"group":{let o=ne(...r.items);return o?o:[]}}});if(n.length===0)return;if(n.length===1)return n0;let e=document.createElement("span");return e.classList.add("item-group"),e.append(...n),e},B=t=>{let n=document.createElement("span");return n.classList.add("item"),n.append(t),n},ze=()=>{let t=document.createElement("i");return t.classList.add("fa","fa-spinner"),B(t)},We=()=>{let t=document.createElement("i");return t.classList.add("kamon","kamon-check-circle"),B(t)},Ve=()=>{let t=document.createElement("i");return t.classList.add("fas","fa-exclamation-triangle"),B(t)};var x=t=>...t.map((n,e)=>n===" "?"_":!Xe.includes(n)||e===t.length-1&&Ye.includes(n)?encodeURIComponent(n):n).join(""),Xe='@$&+=:;",',Ye=':;",';var g=t=>typeof t=="string";var H=(t,...n)=>{let e=t;for(let r of n){let o=e instanceof Promise?e.then(s=>g(s)?s:r(s)):r(e);if(g(o))return o;e=o instanceof URL?new URL(o):o.then(s=>g(s)?s:new URL(s))}return e instanceof Promise?e.then(r=>${r}):${t}};var b=t=>t.ok?void 0:{name:"HTTPError",message:${t.status} ${t.statusText},response:t};var se=t=>{if(!window.GM_fetch)return;let n=window.GM_fetch;return(async()=>{let e=await n(https://cdn.syndication.twimg.com/tweet-result?id=${t}&token=x),r=b(e);if(r)return{ok:!1,value:r};let o=await e.json();return{ok:!0,value:o}})()};var c=t=>{let{fetch:n=globalThis.fetch,hostName:e="scrapbox.io",...r}=t;return{fetch:n,hostName:e,...r}};var w=class extends Error{constructor(n){super(${n.status} ${n.statusText} when fetching ${n.url});this.response=n;this.name="UnexpectedResponseError";Error.captureStackTrace&&Error.captureStackTrace(this,w)}},l=async t=>{let n=t.clone(),e=await n.text(),r=Y(e);if(!r)throw new w(n);return{ok:!1,value:r}};var q=async t=>{let{sid:n,hostName:e,fetch:r}=c(t??{}),o=new Request(https://${e}/api/users/me,n?{headers:{Cookie:d(n)}}:void 0),s=await r(o);if(!s.ok)throw new w(s);return await s.json()};var d=t=>connect.sid=${t},y=async t=>window._csrf?window._csrf:(await q(t)).csrfToken;var ie=(t,n,e)=>{let{sid:r,hostName:o,followRename:s,projects:a}=c(e??{}),i=new URLSearchParams;i.append("followRename",${s??!0});for(let u of a??[])i.append("projects",u);let p=https://${o}/api/pages/${t}/${x(n)}?${i.toString()};return new Request(p,r?{headers:{Cookie:d(r)}}:void 0)},ae=async t=>{if(!t.ok)return t.status===414?{ok:!1,value:{name:"TooLongURIError",message:"project ids may be too much."}}:l(t);let n=await t.json();return{ok:!0,value:n}},A=async(t,n,e)=>{let{fetch:r}=c(e??{}),o=ie(t,n,e),s=await r(o);return await ae(s)};A.toRequest=ie;A.fromResponse=ae;var ce=(t,n)=>{let{sid:e,hostName:r,sort:o,limit:s,skip:a}=c(n??{}),i=new URLSearchParams;o!==void 0&&i.append("sort",o),s!==void 0&&i.append("limit",${s}),a!==void 0&&i.append("skip",${a});let p=https://${r}/api/pages/${t}?${i.toString()};return new Request(p,e?{headers:{Cookie:d(e)}}:void 0)},pe=async t=>{if(!t.ok)return l(t);let n=await t.json();return{ok:!0,value:n}},de=async(t,n)=>{let{fetch:e}=c(n??{}),r=await e(ce(t,n));return await pe(r)};de.toRequest=ce;de.fromResponse=pe;var me=(t,n,e,r)=>{let{sid:o,hostName:s}=c(r??{}),a=https://${s}/api/table/${t}/${x(n)}/${encodeURIComponent(e)}.csv;return new Request(a,o?{headers:{Cookie:d(o)}}:void 0)},le=async t=>t.ok?{ok:!0,value:await t.text()}:t.status===404?{ok:!1,value:{name:"NotFoundError",message:"Table not found."}}:l(t),ue=async(t,n,e,r)=>{let{fetch:o}=c(r??{}),s=me(t,n,e,r),a=await o(s);return await le(a)};ue.toRequest=me;ue.fromResponse=le;var fe=(t,n)=>{let{sid:e,hostName:r}=c(n??{});return new Request(https://${r}/api/projects/${t},e?{headers:{Cookie:d(e)}}:void 0)},ge=async t=>{if(!t.ok)return l(t);let n=await t.json();return{ok:!0,value:n}},G=async(t,n)=>{let{fetch:e}=c(n??{}),r=fe(t,n),o=await e(r);return ge(o)};G.toRequest=fe;G.fromResponse=ge;var xe=(t,n)=>{let{sid:e,hostName:r}=c(n??{}),o=new URLSearchParams;for(let s of t)o.append("ids",s);return new Request(https://${r}/api/projects?${o.toString()},e?{headers:{Cookie:d(e)}}:void 0)},he=async t=>{if(!t.ok)return l(t);let n=await t.json();return{ok:!0,value:n}},we=async(t,n)=>{let{fetch:e}=c(n??{}),r=await e(xe(t,n));return he(r)};we.toRequest=xe;we.fromResponse=he;var ye=async(t,n)=>{let{sid:e,hostName:r,fetch:o,csrf:s}=c(n??{}),a=new Request(https://${r}/api/embed-text/url?url=${encodeURIComponent(t.toString())},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":s??await y(n),...e?{Cookie:d(e)}:{}},body:JSON.stringify({timeout:3e3})}),i=await o(a);if(!i.ok)return i.status===422?{ok:!1,value:{name:"InvalidURLError",message:(await i.json()).message}}:l(i);let{title:p}=await i.json();return{ok:!0,value:p}};var Ee=async(t,n)=>{let{sid:e,hostName:r,fetch:o,csrf:s}=c(n??{}),a=new Request(https://${r}/api/embed-text/twitter?url=${encodeURIComponent(t.toString())},{method:"POST",headers:{"Content-Type":"application/json;charset=utf-8","X-CSRF-TOKEN":s??await y(n),...e?{Cookie:d(e)}:{}},body:JSON.stringify({timeout:3e3})}),i=await o(a);if(!i.ok)return i.status===422?{ok:!1,value:{name:"InvalidURLError",message:(await i.json()).message}}:l(i);let p=await i.json();return{ok:!0,value:p}};var ns=new Map;var be=(t,n,e,r)=>{let{sid:o,hostName:s}=c(r??{}),a=https://${s}/api/code/${t}/${x(n)}/${x(e)};return new Request(a,o?{headers:{Cookie:d(o)}}:void 0)},Le=async t=>t.ok?{ok:!0,value:await t.text()}:t.status===404&&t.headers.get("Content-Type")?.includes?.("text/plain")?{ok:!1,value:{name:"NotFoundError",message:"Code block is not found"}}:l(t),ke=async(t,n,e,r)=>{let{fetch:o}=c(r??{}),s=be(t,n,e,r),a=await o(s);return await Le(a)};ke.toRequest=be;ke.fromResponse=Le;var Te=new TextEncoder().encode("0123456789abcdef");function Re(t){let n=new Uint8Array(t.length*2);for(let e=0;e<n.length;e++){let r=te;ne*2=Ter>>4,ne*2+1=Ter&15}return n}var Pe="md5: data is invalid type",E=64,K=class{#e;#t;#r;#o;#n;#i;#s;#a;constructor(){this.#e=1732584193,this.#t=4023233417,this.#r=2562383102,this.#o=271733878,this.#n=new Uint8Array(E),this.#i=0,this.#s=0,this.#a=0}#p(n){let e=this.#s;e+=n,e>4294967295&&(this.#a+=1),this.#s=e>>>0}#c(n){let e=this.#e,r=this.#t,o=this.#r,s=this.#o,a=h=>nh|nh+1<<8|nh+2<<16|nh+3<<24,i=(h,X)=>h<<X|h>>>32-X,p=a(0),u=a(4),m=a(8),f=a(12),T=a(16),R=a(20),P=a(24),v=a(28),I=a(32),C=a(36),N=a(40),M=a(44),S=a(48),U=a(52),_=a(56),j=a(60);e=r+i(((o^s)&r^s)+e+p+3614090360,7),s=e+i(((r^o)&e^o)+s+u+3905402710,12),o=s+i(((e^r)&s^r)+o+m+606105819,17),r=o+i(((s^e)&o^e)+r+f+3250441966,22),e=r+i(((o^s)&r^s)+e+T+4118548399,7),s=e+i(((r^o)&e^o)+s+R+1200080426,12),o=s+i(((e^r)&s^r)+o+P+2821735955,17),r=o+i(((s^e)&o^e)+r+v+4249261313,22),e=r+i(((o^s)&r^s)+e+I+1770035416,7),s=e+i(((r^o)&e^o)+s+C+2336552879,12),o=s+i(((e^r)&s^r)+o+N+4294925233,17),r=o+i(((s^e)&o^e)+r+M+2304563134,22),e=r+i(((o^s)&r^s)+e+S+1804603682,7),s=e+i(((r^o)&e^o)+s+U+4254626195,12),o=s+i(((e^r)&s^r)+o+_+2792965006,17),r=o+i(((s^e)&o^e)+r+j+1236535329,22),e=r+i(((r^o)&s^o)+e+u+4129170786,5),s=e+i(((e^r)&o^r)+s+P+3225465664,9),o=s+i(((s^e)&r^e)+o+M+643717713,14),r=o+i(((o^s)&e^s)+r+p+3921069994,20),e=r+i(((r^o)&s^o)+e+R+3593408605,5),s=e+i(((e^r)&o^r)+s+N+38016083,9),o=s+i(((s^e)&r^e)+o+j+3634488961,14),r=o+i(((o^s)&e^s)+r+T+3889429448,20),e=r+i(((r^o)&s^o)+e+C+568446438,5),s=e+i(((e^r)&o^r)+s+_+3275163606,9),o=s+i(((s^e)&r^e)+o+f+4107603335,14),r=o+i(((o^s)&e^s)+r+I+1163531501,20),e=r+i(((r^o)&s^o)+e+U+2850285829,5),s=e+i(((e^r)&o^r)+s+m+4243563512,9),o=s+i(((s^e)&r^e)+o+v+1735328473,14),r=o+i(((o^s)&e^s)+r+S+2368359562,20),e=r+i((r^o^s)+e+R+4294588738,4),s=e+i((e^r^o)+s+I+2272392833,11),o=s+i((s^e^r)+o+M+1839030562,16),r=o+i((o^s^e)+r+_+4259657740,23),e=r+i((r^o^s)+e+u+2763975236,4),s=e+i((e^r^o)+s+T+1272893353,11),o=s+i((s^e^r)+o+v+4139469664,16),r=o+i((o^s^e)+r+N+3200236656,23),e=r+i((r^o^s)+e+U+681279174,4),s=e+i((e^r^o)+s+p+3936430074,11),o=s+i((s^e^r)+o+f+3572445317,16),r=o+i((o^s^e)+r+P+76029189,23),e=r+i((r^o^s)+e+C+3654602809,4),s=e+i((e^r^o)+s+S+3873151461,11),o=s+i((s^e^r)+o+j+530742520,16),r=o+i((o^s^e)+r+m+3299628645,23),e=r+i((o^(r|~s))+e+p+4096336452,6),s=e+i((r^(e|~o))+s+v+1126891415,10),o=s+i((e^(s|~r))+o+_+2878612391,15),r=o+i((s^(o|~e))+r+R+4237533241,21),e=r+i((o^(r|~s))+e+S+1700485571,6),s=e+i((r^(e|~o))+s+f+2399980690,10),o=s+i((e^(s|~r))+o+N+4293915773,15),r=o+i((s^(o|~e))+r+u+2240044497,21),e=r+i((o^(r|~s))+e+I+1873313359,6),s=e+i((r^(e|~o))+s+j+4264355552,10),o=s+i((e^(s|~r))+o+P+2734768916,15),r=o+i((s^(o|~e))+r+U+1309151649,21),e=r+i((o^(r|~s))+e+T+4149444226,6),s=e+i((r^(e|~o))+s+M+3174756917,10),o=s+i((e^(s|~r))+o+m+718787259,15),r=o+i((s^(o|~e))+r+C+3951481745,21),this.#e=this.#e+e>>>0,this.#t=this.#t+r>>>0,this.#r=this.#r+o>>>0,this.#o=this.#o+s>>>0}update(n){let e;if(typeof n=="string")e=new TextEncoder().encode(n);else if(typeof n=="object")if(n instanceof ArrayBuffer||ArrayBuffer.isView(n))e=new Uint8Array(n);else throw new TypeError(Pe);else throw new TypeError(Pe);let r=this.#i,o=E-r;if(e.length<o)this.#n.set(e,r),r+=e.length;else{this.#n.set(e.slice(0,o),r),this.#c(this.#n);let s=o;for(;s+E<=e.length;)this.#c(e.slice(s,s+E)),s+=E;this.#n.fill(0).set(e.slice(s),0),r=e.length-s}return this.#i=r,this.#p(e.length),this}digest(){let n=E-this.#i;n<9&&(n+=E);let e=new Uint8Array(n);e0=128;let r=this.#s<<3,o=this.#a<<3|this.#s>>>29;ee.length-8=r&255,ee.length-7=r>>>8&255,ee.length-6=r>>>16&255,ee.length-5=r>>>24&255,ee.length-4=o&255,ee.length-3=o>>>8&255,ee.length-2=o>>>16&255,ee.length-1=o>>>24&255,this.update(e.buffer);let s=new ArrayBuffer(16),a=new DataView(s);return a.setUint32(0,this.#e,!0),a.setUint32(4,this.#t,!0),a.setUint32(8,this.#r,!0),a.setUint32(12,this.#o,!0),s}toString(n="hex"){let e=this.digest();switch(n){case"hex":return new TextDecoder().decode(Re(new Uint8Array(e)));case"base64":{let r=new Uint8Array(e),o="";for(let s=0;s<r.length;++s)o+=String.fromCharCode(rs);return btoa(o)}default:throw new Error("md5: invalid format")}}};var et={"<":"<",">":">","&":"&",""":'"',"'":"'","`":""},z=t=>t.replace(/&(lt|gt|amp|quot|#x27|#x60);/g,n=>et[n]);var $=t=>{let n={name:t.user.name,screenName:t.user.screen_name},e=new Date(t.created_at),r=[...t.entities.hashtags.map(a=>({type:"hashtag",...a})),...t.entities.symbols.map(a=>({type:"symbol",...a})),...t.entities.user_mentions.map(a=>({type:"mention",name:a.name,screenName:a.screen_name,indices:a.indices})),...t.entities.urls.map(a=>{let i={type:"url",indices:a.indices,url:new URL(a.expanded_url)};if(t.card&&t.card?.url===a.url){let{description:p,title:u}=t.card.binding_values,m="STRING";p?.type===m&&(i.description=p.string_value),u?.type===m&&(i.title=u.string_value)}return i}),...t.entities.media?.map?.(a=>({type:"media",indices:a.indices,media:t.mediaDetails?.flatMap?.(i=>i.url===a.url?[{type:i.type,url:new URL(i.video_info?.variants?.sort?.((p,u)=>(u.bitrate??0)-(p.bitrate??0))?.[0].url??i.media_url_https)}]:[])??[]}))??[]].sort((a,i)=>a.indices[0]-i.indices[0]),o=[];{let a=0,i=t.text;for(let{indices:p,...u}of r){let m=[...i].slice(0,p[0]-a).join("");o.push({type:"plain",text:z(m)}),o.push(u),i=[...i].slice(p[1]-a).join(""),a=p[1]}i&&o.push({type:"plain",text:z(i)})}let s={id:t.id_str,content:o,author:n,posted:e,replyCount:"reply_count"in t?t.reply_count:t.conversation_count};return t.self_thread&&(s.rootId=t.self_thread.id_str),t.in_reply_to_status_id_str&&(s.replyId=t.in_reply_to_status_id_str),t.parent&&(s.replyTo=$(t.parent)),t.quoted_tweet&&(s.quote=$(t.quoted_tweet)),s};var tt=["landing","product","enterprise","pricing","try-enterprise","contact","terms","privacy","jp-commercial-act","support","case","features","business","auth","login","logout","oauth2","_","api","app.html","assets","file","files","billing","billings","config","feed","index","io","new","opensearch","project","projects","search","setting","settings","setup-profile","slide","socket.io","stream","user","users"],O=(t=scrapbox.Project.name,n=location.host)=>e=>{if(e.host!==n)return e;let[,r,o]=e.pathname.match(/^\/([\w\d][\w\d-]{0,22}[\w\d])(?:\/?|\/(.+))$/)??[];return!r||tt.includes(r)?e:o?r===t?${decodeURIComponent(o)}:/${r}/${decodeURIComponent(o)}:/${r}};var ve=(t=rt)=>n=>{let[,e]=n.href.match(/^https:\/\/(?:(?:www\.|mobile\.|m\.)?twitter|x)\.com\/[\w\d_]+\/(?:status|statuses)\/(\d+)/)??[];return e?(async()=>{let r=await(se(e)??Ee(n.href));if(!r.ok)throw r.value;return t(r.value,n)})():n},rt=(t,n)=>{if("images"in t)return[${k(t.screenName)}(@${k(t.userName)}) ${n.origin}${n.pathname},...t.description.split( ).map(s=>> ${k(s)}),...t.images.length>0?[> ${t.images.map(s=>[${s}])}]:[]].join(
);let{quote:e,replyTo:r,...o}=$(t);return[...D(o).map(s=>> ${s}),].join(
${s.join(`
`)}
}case"url":return${O()(o.url)} }}).join("").split(
)]},W=t=>[${t.url}${t.type==="photo"?/\.(?:png|jpe?g|gif|svg)$/.test(${t.url})?"":"#.jpg":/\.(?:mp4|webm)$/.test(${t.url})?"":"#.mp4"}],k=t=>t.replace(/\b/gm,"").replace(/[\s\r\n\u2028\u2029]+/gm," ").replace(/\s*[[\]]\s*/g," ").trim();var Ie=t=>{if(!window.GM_fetch)return;let n=window.GM_fetch;return(async()=>{let e=await n(https://t.co/${t}),r=b(e);if(r)return{ok:!1,value:r};let o=new DOMParser().parseFromString(await e.text(),"text/html");return{ok:!0,value:o.title}})()};var Ce=t=>{if("bit.ly","amzn.to","amzn.asia","goo.gl","s.nikkei.com","apple.co","nico.ms","w.wiki".includes(t.hostname)&&window.GM_fetch)return window.GM_fetch(t).then(e=>e.ok?new URL(e.url):t);if(t.hostname!=="t.co")return t;let n=Ie(t.pathname.slice(1));return n?(async()=>{let e=await n;if(!e.ok)throw e.value;try{return new URL(e.value)}catch(r){if(r instanceof TypeError)return t;throw r}})():t};var Ne=t=>{if(!t.pathname.startsWith("/wiki/"))return t;if(!/^\w+\.wikipedia\.org$/.test(t.hostname)){let,o=t.hostname.match(/^(\w+)\.m\.wikipedia\.org$/)??[];if(!o)return t;t.hostname=${o}.wikipedia.org}let n=decodeURIComponent(t.pathname.slice(6)),e=t.hash?decodeURIComponent(t.hash.slice(1)):"",r=${t.origin}/wiki/${n};return e?[${e} | ${n} - Wikipedia ${r}#${e}]:[${n} - Wikipedia ${r}]};var Me=t=>{if(t.hostname!=="www.wikiwand.com")return t;let,n,e=t.pathname.match(/^\/(^\/+)\/(^\/+)/)??[];return!n||!e||(t.hostname=${n}.wikipedia.org,t.pathname=/wiki/${e},t.hash=t.hash.startsWith("#/")?#${t.hash.slice(2)}:t.hash),t};var V=t=>{if(!t.hostname.startsWith("www.google."))return t;let n=t.searchParams.get("url");return n?new URL(decodeURIComponent(n)):t};var Se=/charset=(^;+)/,Ue=t=>{if(!window.GM_fetch)return;let n=window.GM_fetch;return(async()=>{let e=await n(${t}),r=b(e);if(r)return{ok:!1,value:r};let o=e.headers.get("content-type")?.match?.(Se)?.1??await ot(e.clone()),s=new TextDecoder(o).decode(await e.arrayBuffer());return{ok:!0,value:s}})()},ot=async t=>{let n=new DOMParser().parseFromString(await t.text(),"text/html");return n.querySelector("metacharset")?.getAttribute?.("charset")??n.querySelector('metahttp-equiv="content-type"')?.getAttribute?.("content")?.match?.(Se)?.1??"utf-8"};var _e=(t=nt)=>async n=>t(await st(n),n),nt=(t,n)=>{let e=(g(t)?t:t.title).replace(/\s/g," ").replaceAll("","[").replaceAll("","]");return e?[${n.hash?${decodeURIComponent(n.hash.slice(1))} | :""}${e} ${n}]:${n}},st=async t=>{let n=Ue(t);if(!n){let r=await ye(t);if(!r.ok)throw r.value;return r.value}let e=await n;if(!e.ok)throw e.value;return new DOMParser().parseFromString(e.value,"text/html")};var je=t=>{if(!/^(?:www\.)?amazon(?:\.co|com)?\.(?:au|br|ca|fr|de|in|it|jp|mx|nl|sg|es|tr|ae|uk|cn)$/.test(t.hostname))return t;let,n=t.pathname.match(/\/dp\/(\w\d+)/)??t.pathname.match(/\/gp\/product\/(\w\d+)/)??t.pathname.match(/\/exec\/obidos\/asin\/(\w\d+)/)??t.pathname.match(/\/o\/ASIN\/(\w\d+)/)??[];return n&&(t.hash="",t.search="",t.pathname=/dp/${n}),t};var Be=t=>{if(!/(?:0-9a-z-\.)?gyazo\.com/.test(t.hostname))return t;let,n=t.pathname.match(/^\/(0-9a-f{32})(?:\/raw)?$/)??[];return n?[https://gyazo.com/${n}]:t};var $e=(t,...n)=>{if(t instanceof URL)return H(new URL(t),...n);let e=0,r=0,o=0,s=!1,a=t.split(/(https?:\/\/\S+)/g).map(m=>{if(!/^https?:\/\/\S+$/.test(m))return m;e++;try{let f=H(new URL(m),...n);return g(f)?(r++,f):(s=!0,f,m)}catch(f){return console.error(f),o++,m}});if(!s)return a.join("");let{render:i,dispose:p}=oe(),u=()=>i({type:"spinner"},{type:"text",text:URL: ${r}/${e} converted, ${o} failed});return u(),Promise.all(a.map(async m=>{if(g(m))return m;try{let f=await m0;return r++,f}catch(f){return console.error(f),o++,m1}finally{u()}})).then(m=>(i({type:"check-circle"},{type:"text",text:URL: ${r}/${e} converted, ${o} failed}),m.join(""))).finally(()=>{setTimeout(p,1e3)})};var it=V,Ce,V,Me,je,O(),Be,ve(),Ne,_e();scrapbox.PopupMenu.addButton({title:t=>/https?:\/\/\S+/.test(t)?"URL":"",onClick:t=>{let n=$e(t,...it);if(typeof n=="string")return t===n?void 0:n;n.then(e=>{if(t!==e)return re(e)})}});