──────────────────────── コピペレス検出結果反映&del操作同期用 tegaki_save併用ブックマークレット20251226 ──────────────────────── ※このツールは掲示板公式機能ではない非公式ユーザーツールです ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ このツールは見た目だけでは安全かどうか分かりません 使う前に中身をChatGPTなどに見せて 勝手に何かを送信したり悪さをする内容が含まれていないか 自分で確認してから使用してくださいね ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ ──────────────────────── 概要 ──────────────────────── ・このブックマークレットは  コピペレス検出ブックマークレットと  tegaki_save を併用するための補助ツールです ・元スレッド側で検出された  完全一致および部分一致の判定結果を  tegaki_save 側のレス表示に反映します ・tegaki_save が先にレスを取得した場合や  後から追加で読み込まれたレスにも自動で対応します ──────────────────────── 使い方 ──────────────────────── ・このツールは単体では意味を持ちません  必ず以下の順番で使用してください ・1 コピペレス検出用ブックマークレットを実行 ・2 tegaki_save を起動してレスを表示 ・3 本ブックマークレットを実行 ・実行後は  tegaki_save 側に表示されているレスが  元スレッドと同じ色で強調表示されます ・ページ遷移や再読み込みを行った場合は  再度ブックマークレットを実行してください ──────────────────────── 強調表示について ──────────────────────── ・完全一致したレス  赤色で強調表示されます ・部分一致したレス  オレンジ色で強調表示されます ・判定結果は  元スレッド側の検出結果に基づきます ・tegaki_save 側では  新規判定処理は行いません ──────────────────────── del機能の同期について ──────────────────────── ・tegaki_save 側の各レスに  delボタンが追加表示されます ・この del ボタンは  元スレッド側の del 操作を代理実行します ・以下の挙動は  元スレッド側と完全に同期します ・delの順番待ち処理 ・短時間連続操作時のキュー処理 ・削除成功時の無効化 ・同じIPアドレスでdel済みの場合の無効化 ・tegaki_save 側で del を押した場合でも  実際の通信は元スレッド側と同じ仕組みで行われます ──────────────────────── 動作環境 ──────────────────────── ・tegaki_save が動作するブラウザのみ ──────────────────────── 重要な注意と免責 ──────────────────────── ──────────────────────── 重要な注意と免責 ──────────────────────── ・このブックマークレットは掲示板の表示内容を解析し  レス本文を強調表示するユーザー補助ツールです ・本ツールの使用はすべて自己責任です  使用によって発生した不利益やトラブル  アクセス制限や削除依頼に関する問題  利用規約違反などについて配布者は一切の責任を負いません ・本ツールには削除依頼を送信する機能が含まれています  delボタンを押すと実際に掲示板へ削除依頼の通信が行われます ・削除依頼は実行者の環境に基づいて送信されます  誤操作や連続使用によって警告や制限を受ける可能性があります ・ツールの判定結果は管理人や運営の判断を代行するものではありません ・内容が理解できない場合や動作が不安に感じられる場合は使用しないでください ──────────────────────── 補足 ──────────────────────── ・このツールは  荒らしかどうかを判断するものではありません ・文字列が一致しているかどうかのみを  視覚的に分かりやすくする補助ツールです ・内容が理解できない場合や  挙動が不安に感じられる場合は  使用しないでください ──────────────────────── 再配布と改変について ──────────────────────── ・再配布や改変は自己責任で行ってください ・内容が変更されている可能性がある場合は  利用者に分かるようにしてください ・安全性を断言する表現は避けてください ──────────────────────── 最後に ──────────────────────── ・便利な機能を持つツールですが  扱いを誤るとトラブルにつながります ・内容と注意点を理解した上で  節度を持って使用してくださいね ──────────────────────── ブックマークレットのコード tegaki_save同期用 ──────────────────────── ↓↓↓↓↓↓↓↓↓↓ここから↓↓↓↓↓↓↓↓↓↓ javascript:(()=>{if(window.__cpStable)return;window.__cpStable=1;const K="cpDetectedMap";const load=()=>JSON.parse(localStorage.getItem(K)||"{}");const save=m=>localStorage.setItem(K,JSON.stringify(m));const collect=()=>{const M=load();let u=0;document.querySelectorAll(".rtd").forEach(r=>{const b=r.style.border||"";let t=null;if(b.includes("red"))t="full";else if(b.includes("orange"))t="part";if(!t)return;const m=r.textContent.match(/No\.(\d+)/);if(m&&M[m[1]]!==t){M[m[1]]=t;u=1;}});if(u)save(M);};const apply=()=>{const M=load();document.querySelectorAll("#tegakiThread td.tertd").forEach(td=>{const s=[...td.querySelectorAll("span.tersc")].find(x=>/^No\.\d+$/.test(x.textContent));if(!s)return;const no=s.textContent.slice(3);const t=M[no];if(t&&td.dataset.cp!==t){td.dataset.cp=t;td.style.background=t==="full"?"rgba(255,0,0,0.15)":"rgba(255,165,0,0.18)";td.style.border=t==="full"?"2px solid red":"2px solid orange";}if(td.querySelector(".tegaki-del-btn"))return;const delTxt=[...td.querySelectorAll("a,span")].find(x=>x.textContent==="削除");if(!delTxt)return;const btn=document.createElement("button");btn.textContent="del";btn.className="tegaki-del-btn";btn.style.marginLeft="6px";btn.onclick=e=>{e.stopPropagation();const r=[...document.querySelectorAll(".rtd")].find(x=>x.textContent.includes("No."+no));if(!r)return;const src=r.querySelector("input[type=button],button");if(src&&!src.disabled)src.click();btn.disabled=true;};delTxt.after(btn);});};const obs=new MutationObserver(()=>{collect();apply();});obs.observe(document.body,{subtree:true,attributes:true,attributeFilter:["style","class"]});obs.observe(document.getElementById("tegakiThread"),{childList:true,subtree:true});collect();apply();})(); ↑↑↑↑↑↑↑↑↑↑ここまで↑↑↑↑↑↑↑↑↑↑