Skip to content

Instantly share code, notes, and snippets.

@yatt
Last active April 12, 2020 06:36
Show Gist options
  • Save yatt/9894e2513327849162f2cc31aa2df787 to your computer and use it in GitHub Desktop.
Save yatt/9894e2513327849162f2cc31aa2df787 to your computer and use it in GitHub Desktop.
twitter webからトレンド欄,おすすめユーザー,その他のツイートを削除する(tampermonkey script, 2020/04/12時点)
// ==UserScript==
// @name twitter webからトレンド欄を削除する
// @namespace none
// @version 0.1
// @description twitter webからトレンド欄を削除する
// @author You
// @match https://twitter.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function is_sonota(elem) {
return elem.localName == "div"
&& elem.getAttribute("class") == "css-1dbjc4n r-my5ep6 r-qklmqi r-1adg3ll";
}
// 最初に取得される分を削除
function wipe_tosho(elem) {
console.log("wipe tosho");
var lst = elem.querySelectorAll('div:not([class])');
//console.log(lst);
var enable_wipeout = false;
for (var i = 0; i < lst.length; i++) {
console.log(lst[i]);
var text = lst[i].innerText;
if (text === "その他のツイート") {
enable_wipeout = true;
}
if (enable_wipeout) {
lst[i].remove();
}
}
}
// 追加で取得される分を削除
function wipe(elem) {
/*
console.log(elem);
console.dir(elem);
*/
if (elem.localName == "div") {
/*
console.log(elem);
console.dir(elem);
*/
if (elem.firstChild != null) {
var cd = elem.firstChild;
if (is_sonota(cd)) {
/*
console.log("remove!");
console.log(elem);
*/
elem.remove();
}
}
}
}
//監視オプションの作成
const options = {
// 対象ノードの子ノード(テキストノードも含む)に対する追加・削除を監視する場合はtrue。
childList: true,
// 対象ノードの子孫ノードまで監視する場合はtrue。
subtree: true,
};
// 監視ターゲットの取得
const body = document.getElementsByTagName('body')[0];
// オブザーバーの作成
// サイドバーが追加されるまではbodyを監視
const observerBody = new MutationObserver(records => {
records.forEach(record => {
var lst = record.addedNodes;
for (var i = 0; i < lst.length; i++) {
//console.log(lst[i]);
// トレンド欄を消す
var trend = lst[i].querySelector('div[aria-label="タイムライン: トレンド"]');
if (trend != null) {
console.log("トレンド欄とおぼしき要素");
console.log(trend);
trend.setAttribute('style', 'display:none');
}
// "その他のツイート" (当初分)を消す
if (lst[i].localName == "section") {
wipe_tosho(lst[i]);
}
// "その他のツイート" (追加分)を消す
wipe(lst[i]);
}
});
});
//監視の開始
observerBody.observe(body, options);
// おすすめユーザー欄を消す
var css = 'aside[aria-label="おすすめユーザー"] { display: none; }';
var head = document.head || document.getElementsByTagName('head')[0];
var style = document.createElement('style');
head.appendChild(style);
style.textContent = 'aside[aria-label="おすすめユーザー"] { display: none; }'
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment