特定のハッシュタグを含むツイートを非表示にする 

ツイッターはタイムラインの中に縦にツイートを並べるのが基本構造の様です。 ツイートは、ブログで言うと記事に相当し、ブログと違うのは、ユーザーがスクロールをすると次々と過去のツイートに遡って、ツイートが追加されて行きます。 つまりブログのページャーで、昔の記事に遡るのが、スクロールで行われる様なものです。

 

またブログは特定ユーザーの記事に固定されていますが、ツイッターはハッシュタグで時系列に纏められた掲示板(タイムライン)の形でツイートが並びます。 また、ハッシュタグを軸にしたデザインは柔軟で、扱い方によっては固定ユーザーのブログの様な表示にも出来る様です。

 

余り私はツイッター(今はXですか)に詳しくないのですが、特定のハッシュタグを含むツイートを、タイムラインから非表示にするツール「TwAvoid」を作りました。 この様なツールは、拡張機能などを検索すると沢山ありそうですが、出所が判らないツールは怖いので、学習がてら自分で作ったものです。

 

非常にシンプルなツールで、現在の所はハッシュタグのURLを自分でコードに書き込んで使うという、試作ツールです。 私の場合はコードを公開しているので、どこかにデータを送信する様な怪しいコードは無い事が確認できます。(そんな事をすると、主要なコードより、そちらの方が長いコードになりますが)

 

 

 

 フィルターの指定書式

「TwAvoid」は、2種類の方法でブロックツイートの対象を指定します。 どちらかでもヒットすると、そのツイートは非表示になります。

 

コードの12行目あたりに、ブロックコードの記入箇所があります。

 

❶「ハッシュタグ」「ユーザ-リンク」等の「a要素」のURLを指定する。

// 🔴 特定のURLのハッシュタグ・ユーザーリンクを含むツイートを非表示
let avoid=['/RakutenJP', '/digimartnet'];

 

▪この指定方法の場合は、リンクの記述が完全に一致している必要があります

「'/RakutenJP'」はOKですが、「'/Rakuten'」ではフィルター動作をしません。

 

▪[]の中(配列)に、カンマ「,」で区切って、ブロック対象を複数追加できます。

 

 

❷ ツイート枠内の本文に含まれる文字列を指定する。 

// 🔴 特定の文字列を含むツイートを非表示 複数は縦棒で分割
let avoid_regexp=/@RakutenJP|楽天カード/;

 

▪この指定方法は、指定した文字列がツイート上の文字列に一致すればフィルターが働くので「楽天」の指定で「楽天カード」「楽天トラベル」もブロックされます。

 

▪// に挟まれた間に文字列を指定します。 縦棒「|」で区切ることで、複数の文字列を指定できます。

 

▪「半角空白」や「句読点」などの文字を指定すると、殆どのツイートが非表示になるので、注意してください。

 

 

 

実行例 

下は、「func ojisan」のツイッターです。

 

 

最近のツイートで、以下のツイートをブロックしてみます。

 

 

 

赤枠の部分はいかにもテキストリンクの様に見えますが、実際は文字だけで、リンクが設定されていません。

 

 

 

このユーザーのツイートをブロックしたいとすると、前項の ❶の方法は、この部分では出来ません。 しかし、❷ の「文字列」の指定を使ったフィルターは可能です。(❶の方法が使えるとより良いと思いますが、出来ない場合は ❷を使います)

 

let avoid_regexp=/@kotaro_todoroki/;

 

がフィルター指定の書式例です。

 

下の左側はブロック指定前で、右側はブロック指定後です。

 

 

 

一方、実際のテキストリンク部分では、リンクを取得してフィルターを作れます。

 

 

 

ここでリンクを取得すると「/funk_ojisan」というユーザーリンクが得られました。 これは ❶ の方法が使えます。(実際は funk_ojisan をブロックしませんが例です)

 

let avoid=['/funk_ojisan'];

 

 

ブロック指定は 重複して機能します 

前項の ❶ ❷ のブロック指定は、同時に機能します。 そのどれかのブロック指定がヒットしたツイートが非表示になります。 

 

注意が必要なのは、❶ ❷ で何もブロックを指定しない場合は、何か適当な「ヒットしそうにない」文字列を記入しておく必要があります。 下手に「//」等とすると、スクリプトエラーが出て、ページの表示動作を遅くしたりします。

 

もし、完全を求めたいなら、以下の部分で不要な検索操作の ❶ または ❷ のどちらかのコードを削除してください。  🟦⬜の下方数行のブロックを削除します。

 

TwAvoid ver. 0.1  47行以降~

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」を利用するには

このツールは 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ツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。

 

● 最新バージョンへのリンクは、以下のページのリンクリストから探せます。