javascript:/* v1.2.0 */(()=>{const t=(t,e)=>{const n=document.getElementById(t);if(!n)throw new Error("予期されないs_idです。",t);n.innerText=e},e=t=>{const e=document.getElementById(t);if(!e)throw new Error("予期されないs_idです。",t);e.style.color="red",e.style.fontWeight="bold"},n=t=>{const e=document.getElementById("qag_buttons");if(!e)return void alert(t);const n=document.getElementById("ok_button"),o=document.getElementById("cancel_button");e.insertAdjacentHTML("beforebegin",`
${t}
`),n.disabled=!1,o.disabled=!0,n.focus()},o=(e,n=!1,o=!1)=>{if(void 0===e)return;const{headers:a}=e,r=Number(a.get("rate-remaining")),i=a.get("rate-limit");n||console.log("rate:",r,"/",i),o||(t("qag_rate_remaining",r),t("qag_rate_limit",i));const s=new Date(1e3*Number(e.headers.get("rate-reset"))).toLocaleString().replace(/:\d+$/u,"");return n||console.log("rate-reset:",s),o||t("qag_reset",s),[r,s]},a=(e,n,o)=>{console.log(`fetch ${e} page = ${n}${o?` / ${o}`:""}`),t("qag_current_page",n)},r=(t,e,n=0)=>(a("user",e,n),fetch(`https://qiita.com/api/v2/users/${t}/items?page=${e}&per_page=100`)),i=(t,e,n=0)=>(a("user stocked",e,n),fetch(`https://qiita.com/api/v2/users/${t}/stocks?page=${e}&per_page=100`)),s=(t,e,n=0)=>(a("tag",e,n),fetch(`https://qiita.com/api/v2/tags/${t}/items?page=${e}&per_page=100`)),c=(t,e,n=0)=>(a("search",e,n),fetch(`https://qiita.com/api/v2/items?page=${e}&per_page=100&query=${t}`)),l=t=>new Date(t).toLocaleString(),d=async(n,a)=>{let r,i,s,c,l;try{s=await a(n,1),[c,l]=o(s),i=await s.json(),r=i;const d=(e=>{const n=e.headers.get("link").match(/(?<=\bpage=)(\d+)/gu),o=Number(n.at(-1));return console.log("n_last_page = ",o),t("qag_last_page",o),o})(s);((t,n)=>{if(t>n+1){const o=`***WARNING*** last_page(${t}) > rate_remaining(${n}) + 1`;console.log(`%c${o}`,"color:hotpink;"),e("qag_rate_remaining")}})(d,c);for(let t=2;t<=d;t++)s=await a(n,t,d),o(s,!0),i=await s.json(),r.push(...i);return console.log("fetch完了"),o(s),[r,l,s]}catch(t){return console.log("例外が発生しました。",t),console.log("json=",i),console.log("response=",s),o(s,!1,!0),[r,l,s]}};const g=async(t,o,a)=>{const[g,u,p]=await((t,e,n)=>{switch(t){case"tag":return console.log(`タグ:「${decodeURIComponent(e)}」でfetch開始します。`),d(e,s);case"search":case"organization":return console.log(`検索語:「${decodeURIComponent(e)}」でfetch開始します。`),d(e,c);case"user":if(console.log(`ユーザーID:「${e}」(${n})でfetch開始します。`),"投稿"===n)return d(e,r);if("ストック"===n)return d(e,i);throw new Error("予期されないs_arg2です。",n);default:throw new Error("予期されないswitchです。")}})(t,o,a);((t,o,a)=>{if(!a){const t="ネットワークが未接続のようです。";return console.error(t),void n(t)}if(!t){if(!a.ok){const t=`サーバーの調子が悪いようです。HTTPステータスコード: ${a.status}`;return console.error(t),void n(t)}const t="jsonを取得できませんでした。「"+(o?`${o.toLocaleString()}」まで待ってください。`:"");return console.error(t),void n(t)}if(!a.ok&&"not_found"===t.type){const t="見つかりませんでした。";return console.error(t),void n(t)}if(console.log(t),window.json=t,"rate_limit_exceeded"===t.type){const t="回数制限を超えました。「"+(o?`${o.toLocaleString()}」まで待ってください。`:"");return console.error(t),void n(t)}0===t.length&&(console.log("%c取得した記事数が0件です。","color:hotpink;"),e("qag_last_page"));const r=(t=>`${["title","url","tags","created","updated","comments","likes","stocks","id"].join("\t")}\n${t.map((t=>{return[(e=t.title,e.replaceAll(/\t/gu," ")),t.url,`,${t.tags.map((t=>t.name)).join(",")},`,l(t.created_at),l(t.updated_at),t.comments_count,t.likes_count,t.stocks_count,t.id].join("\t");var e})).join("\n")}`)(t);window.r=r,navigator.clipboard.writeText(r).then((()=>{const t="クリップボードにコピー完了しました。";console.log(t),n(t)}),(()=>{const t=new Blob([r],{type:"text/plain"}),e=document.createElement("a"),o=new Date;e.download=`Qiita記事一覧 ${o.getFullYear()}-${o.getMonth()+1}-${o.getDate()}_${o.getHours()}-${o.getMinutes()}-${o.getSeconds()}.txt`,e.href=URL.createObjectURL(t),e.click(),URL.revokeObjectURL(e.href);const a="クリップボードにコピーできなかったのでダウンロードしました。";console.log(a),n(a)}))})(g,u,p)};(()=>{if("qiita.com"!==location.host){const t="https://qiita.com/のトップページ以外を開いてください。";throw alert(t),new Error(t)}let[t,e]=(()=>{const t=(()=>{const t=location.href.match(/^https:\/\/qiita\.com\/tags\/([^?#/]+)/u);return t?t[1]:null})();if(t)return["tag",t];const e=(()=>{const t=location.href.match(/^https:\/\/qiita\.com\/search\?.*?q=([^?#&/]+)/u);return t?t[1]:null})();if(e)return["search",e];const n=(()=>{const t=location.href.match(/^https:\/\/qiita\.com\/organizations\/([^/]+$)/u);return t?t[1]:null})();if(n)return["organization",`org:${n}`];const o=(()=>{const t=location.href.match(/^https:\/\/qiita\.com\/([^?#/]+)/u);if(!t)return null;const e=t[1];return["api","search","official-columns","official-events","question-feed","release-notes","advent-calendar","qiita-award","privacy","terms","about","official-campaigns","stock","drafts","badges","patches","settings","trend","timeline","opportunities"].includes(e)?null:e})();return o?["user",o]:[null,null]})();if(!t){const t=`未対応のURL「${location.href}」です。タグも検索語もユーザーIDも組織IDも見つかりませんでした。`;throw alert(t),new Error(t)}((t,e,n)=>{let o=document.getElementById("qag_dialog");o&&o.remove(),document.body.insertAdjacentHTML("beforeend",''),o=document.getElementById("qag_dialog");const a=document.getElementById("ok_button"),r=document.getElementById("qag_form"),i=document.getElementById("qag_target"),s=document.getElementById("qag_buttons");switch(t){case"tag":i.innerHTML=`\n\t\t\t\t\tタグ: ${decodeURIComponent(e)}\n\t\t\t\t
`;break;case"search":case"organization":i.innerHTML=`\n\t\t\t\t\t検索語: ${decodeURIComponent(e)}\n\t\t\t\t
`;break;case"user":i.innerHTML=`\n\t\t\t\t\tユーザー: @${e}\n\t\t\t\t
\n\t\t\t\t`;break;default:throw new Error("予期されないswitchです。")}a.addEventListener("click",(i=>{i.preventDefault(),a.addEventListener("click",(t=>{t.preventDefault(),o.close("completed")}),{once:!0}),a.disabled=1;const c=[...o.querySelectorAll("input")];for(let t=0;t\n\t\t\tページ: 1 / ?\n\t\t\n\t\t\n\t\t\t残レート: ? / ?\n\t\t
\n\t\t\n\t\t\tリセット日時: ?\n\t\t
'),n(t,e,"user"===t?r.elements.target.value:"")}),{once:!0}),o.addEventListener("close",(()=>{console.log("qag_dialog.returnValue =",o.returnValue),o.remove()})),o.showModal(),a.focus()})(t,e,g)})()})();