特定のハッシュタグを含むツイートを非表示にする
ツイッターはタイムラインの中に縦にツイートを並べるのが基本構造の様です。 ツイートは、ブログで言うと記事に相当し、ブログと違うのは、ユーザーがスクロールをすると次々と過去のツイートに遡って、ツイートが追加されて行きます。 つまりブログのページャーで、昔の記事に遡るのが、スクロールで行われる様なものです。
またブログは特定ユーザーの記事に固定されていますが、ツイッターはハッシュタグで時系列に纏められた掲示板(タイムライン)の形でツイートが並びます。 また、ハッシュタグを軸にしたデザインは柔軟で、扱い方によっては固定ユーザーのブログの様な表示にも出来る様です。
余り私はツイッター(今はXですか)に詳しくないのですが、特定のハッシュタグを含むツイートを、タイムラインから非表示にするツール「TwAvoid」を作りました。 この様なツールは、拡張機能などを検索すると沢山ありそうですが、出所が判らないツールは怖いので、学習がてら自分で作ったものです。
非常にシンプルなツールで、現在の所はハッシュタグのURLを自分でコードに書き込んで使うという、試作ツールです。 私の場合はコードを公開しているので、どこかにデータを送信する様な怪しいコードは無い事が確認できます。(そんな事をすると、主要なコードより、そちらの方が長いコードになりますが)
フィルターの指定書式
「TwAvoid」は、2種類の方法でブロックツイートの対象を指定します。 どちらかでもヒットすると、そのツイートは非表示になります。
コードの12行目あたりに、ブロックコードの記入箇所があります。
❶「ハッシュタグ」「ユーザ-リンク」等の「a要素」のURLを指定する。
▪この指定方法の場合は、リンクの記述が完全に一致している必要があります。
「'/RakutenJP'」はOKですが、「'/Rakuten'」ではフィルター動作をしません。
▪[]の中(配列)に、カンマ「,」で区切って、ブロック対象を複数追加できます。
❷ ツイート枠内の本文に含まれる文字列を指定する。
▪この指定方法は、指定した文字列がツイート上の文字列に一致すればフィルターが働くので「楽天」の指定で「楽天カード」「楽天トラベル」もブロックされます。
▪// に挟まれた間に文字列を指定します。 縦棒「|」で区切ることで、複数の文字列を指定できます。
▪「半角空白」や「句読点」などの文字を指定すると、殆どのツイートが非表示になるので、注意してください。
実行例
下は、「func ojisan」のツイッターです。
最近のツイートで、以下のツイートをブロックしてみます。
赤枠の部分はいかにもテキストリンクの様に見えますが、実際は文字だけで、リンクが設定されていません。
このユーザーのツイートをブロックしたいとすると、前項の ❶の方法は、この部分では出来ません。 しかし、❷ の「文字列」の指定を使ったフィルターは可能です。(❶の方法が使えるとより良いと思いますが、出来ない場合は ❷を使います)
がフィルター指定の書式例です。
下の左側はブロック指定前で、右側はブロック指定後です。
一方、実際のテキストリンク部分では、リンクを取得してフィルターを作れます。
ここでリンクを取得すると「/funk_ojisan」というユーザーリンクが得られました。 これは ❶ の方法が使えます。(実際は funk_ojisan をブロックしませんが例です)
ブロック指定は 重複して機能します
前項の ❶ ❷ のブロック指定は、同時に機能します。 そのどれかのブロック指定がヒットしたツイートが非表示になります。
注意が必要なのは、❶ ❷ で何もブロックを指定しない場合は、何か適当な「ヒットしそうにない」文字列を記入しておく必要があります。 下手に「//」等とすると、スクリプトエラーが出て、ページの表示動作を遅くしたりします。
もし、完全を求めたいなら、以下の部分で不要な検索操作の ❶ または ❷ のどちらかのコードを削除してください。 🟦⬜の下方数行のブロックを削除します。
TwAvoid ver. 0.1 47行以降~
「TwAvoid」を利用するには
このツールは Chrome / Edge / Firefox版の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
〔 TwAvoid 〕 ver. 0.1
// ==UserScript== // @name TwAvoid // @namespace http://tampermonkey.net/ // @version 0.1 // @description Twitter Filter // @author Everyone // @match https://twitter.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=twitter.com // @grant none // ==/UserScript== // 🔴 特定のURLのハッシュタグ・ユーザーリンクを含むツイートを非表示 let avoid=['/RakutenJP', '/digimartnet']; // 🔴 特定の文字列を含むツイートを非表示 複数は縦棒で分割 let avoid_regexp=/@RakutenJP|楽天カード/; let target=document.querySelector('head'); let monitor=new MutationObserver(page_ck); monitor.observe(target, { childList: true }); function page_ck(){ let retry=0; let interval=setInterval(wait_target, 100); function wait_target(){ retry++; if(retry>50){ // リトライ制限 5secまで clearInterval(interval); } let time_line=get_line(); // 監視 target if(time_line){ clearInterval(interval); let monitor=new MutationObserver(main); monitor.observe(time_line, { childList: true }); }} function get_line(){ let cell=document.querySelector('[data-testid="cellInnerDiv"]'); if(cell){ let container=cell.parentNode; return container; }} } // page_ck() function main(){ let cell=document.querySelectorAll('[data-testid="cellInnerDiv"]'); for(let k=0; k<cell.length; k++){ // ❶ の検索処理 🟦⬜ let all_link=cell[k].querySelectorAll('a'); let url=[]; for(let i=0; i<all_link.length; i++){ url.push(all_link[i].getAttribute('href')) } let result=url.filter(data=>avoid.includes(data)); if(result.length>0){ cell[k].style.display='none'; } // ❷ の検索処理 🟦⬜ let tweet_text=cell[k].textContent; if(avoid_regexp.test(tweet_text)){ cell[k].style.display='none'; } } } // main()
「TwAvoid」最新版について
旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。
● 最新バージョンへのリンクは、以下のページのリンクリストから探せます。