Last active
June 20, 2020 13:05
-
-
Save libraplanet/8b8f693a497adffdeed9624a1ca05d6f to your computer and use it in GitHub Desktop.
!remove harmful content on youtube.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Youtubeにはブロック リストがないため、 | |
検索時などに有害なコンテンツが目に付き、 | |
精神衛生上、非常によろしくない。 | |
また、ブロック リスト機能が有料ででもなく。 | |
誤って有害コンテンツを表示しようものなら、 | |
愚投稿者の懐に貢献してしまったかと思うと、 | |
非常に死にたくなる。 | |
誤って有害コンテンツとのエンカウントを減らし、心の安寧を保つため、 | |
一覧などから特定のキーワードを持つコンテンツを非表示にする。 | |
また、1秒毎にポーリングを行い、定期的に削除を行う。 | |
追加キーワードは | |
blockKeywordList | |
に追加する。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name remove youtube blocks | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description try to take over the world! | |
// @author You | |
// @match http://youtube.com/* | |
// @match http://*.youtube.com/* | |
// @match https://youtube.com/* | |
// @match https://*.youtube.com/* | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
'use strict'; | |
// Your code here... | |
let blockKeywordList = [ | |
//遠藤チャンネル | |
'遠藤チャンネル', | |
'/channel/UCqzseIu9HwM1xW13uwexPfw', | |
'遠藤チャンネル サブ', | |
'/channel/UCaqVao36pGmxXUF26B8KgIg', | |
'遠藤ちゃんねる', | |
//ちゃんねるゴッホ | |
'ちゃんねるゴッホ', | |
'/channel/UCc5gHNgTXP4jN9z0jMk3dEw', | |
//かみなりおやじ | |
'/channel/UCxvpLlNz1k9O11UJsNoZUQA', | |
//ボビーオロゴン偽親戚系 | |
'DQN NETWORK NORAINU', | |
'/channel/UCS6yh5rGM4LhSQ2ZnQcM35w', | |
//(遠藤チャンネル二番煎じ) | |
'ナイス達也チャンネル', | |
'/channel/UCyBgQRh5ppnA9F202hFsOBA', | |
//(遠藤チャンネル二番煎じ) | |
'勇者ナリボン', | |
'/channel/UCwgX--wz3wBEmLFcfWV7fRg', | |
//ボビーオロゴン偽親戚系 | |
'真実の館', | |
'/channel/UCQ4N7j6WrDbJUjSwEzkFueg', | |
//ボビーオロゴン偽親戚系 | |
'寺田メンバー', | |
'/channel/UCDJ1DGfp-ZoA_XDWg4KuOsA', | |
//ボビーオロゴン偽親戚系 | |
'アキックスTV', | |
'/channel/UCDW9sZlOybFMYWkQn48R0Ow', | |
//ボビーオロゴン偽親戚系 | |
'TOMOKIN - エンタメ大学', | |
'/channel/UCoKiJNjQZfpvKsDR_j4N5pA', | |
//ボビーオロゴン偽親戚系 | |
'PROWRESTLING SHIBATAR ZZ', | |
'/user/PROWRESTLINGSHIBATAR', | |
//ボビーオロゴン偽親戚系 | |
'キラー仮面', | |
'/channel/UC3lvC1XmjZ8CgiCNsVC4xFg', | |
//ボビーオロゴン偽親戚系 | |
'だっすー', | |
'/channel/UCZXkxDM-ReQGTtDKRc6XWJw', | |
//ボビーオロゴン偽親戚系 | |
'ルクセンブルク', | |
'/channel/UCmZdLg7SAh04ZFbp-6Kw3Dw', | |
//ボビーオロゴン偽親戚系 | |
'焦がし卵', | |
'/channel/UCKuCAdGC7AQcTnaIslAp42w', | |
//ボビーオロゴン偽親戚系(+) | |
'タカユキtwistclubチャンネル', | |
'/channel/UCh0_JLH2w-0hbxaXeoYcqeA', | |
//ボビーオロゴン偽親戚系(+) | |
'田中チャンネル', | |
'/user/artimport123', | |
//ボビーオロゴン偽親戚系 | |
'ただの無職TV', | |
'/channel/UCgASWjicogZE7KJydqY1E6A', | |
//ボビーオロゴン偽親戚系 | |
'ヤマタノワロシュ', | |
'/channel/UCcwOHjrjY0-8_B95Hp37BGw', | |
//ボビーオロゴン偽親戚系 | |
'Vの星チャンネル', | |
'/channel/UCKOh1dtkHWCv7Y_cPOYf5Xw', | |
//ボビーオロゴン偽親戚系 | |
'S級バックラー黒澤', | |
'/channel/UC9xkFx7qVnh7Bh6kXN4ZgoQ', | |
//ボビーオロゴン偽親戚系 | |
'江藤チャンネル', | |
'/channel/UCDPkj0lT5KKFuQq-RnXWQFQ', | |
//ボビーオロゴン(+) | |
'Tomoreともーれ', | |
'/channel/UC1p5XrLO2s65fwL57iG4mYA', | |
//ボビーオロゴン(+) | |
'つぷ太郎', | |
'/channel/UC6oW3iIxN97P4pD9kVRmYDw', | |
//ボビーオロゴン(+) | |
'藤チャンネル', | |
'/channel/UCUf-c6cdY1MRzHb6Cqi3lzg', | |
//ボビーオロゴン偽親戚系 | |
'オーバーヘッドキック ユダ', | |
'/channel/UC1B6_3SxN_rjh_WXJb2ubXw', | |
//ザコえもんハリウッド | |
'ザコえもんハリウッド', | |
'/channel/UCqkdRf41sC4hKToy20kSPAw', | |
//ボビーオロゴン偽親戚系 | |
'YKアドバイザー', | |
'/user/ukiyologist', | |
//偽親戚系 | |
'坂口章チャンネル', | |
'/channel/UCSjupEbctuhbu3vdpl7NZxA', | |
]; | |
let baseMediaSelectorList = [ | |
'ytd-video-renderer' , | |
'ytd-channel-renderer' , | |
'ytd-playlist-renderer' , | |
'ytd-shelf-renderer', | |
'ytd-rich-item-renderer', | |
'ytd-grid-video-renderer', | |
'ytd-grid-channel-renderer' , | |
'ytd-grid-playlist-renderer' , | |
]; | |
let baseAdSelectorList = [ | |
'ytd-search-pyv-renderer', | |
'ytd-promoted-video-renderer', | |
]; | |
let checkedAttribute = 'data-checked-status'; | |
let getUncheckedNodeListFromSelectorList = function(srcBaseSelectorList) { | |
var retList = []; | |
Array.prototype.forEach.call(srcBaseSelectorList, function(baseSelector){ | |
document.querySelectorAll(baseSelector + ':not([' + checkedAttribute + '])').forEach(function(elm) { | |
retList.push(elm); | |
}); | |
}); | |
return retList; | |
} | |
let eachBlock = function(srcElmList, isBlockCalllback) { | |
Array.prototype.forEach.call(srcElmList, function(elm) { | |
var b; | |
if(isBlockCalllback) { | |
b = isBlockCalllback(elm); | |
} else { | |
b = true; | |
} | |
if(b) { | |
elm.style.display = 'none'; | |
elm.style.backgroundColor = '#FF0000' | |
elm.setAttribute(checkedAttribute, 'block'); | |
} else { | |
elm.setAttribute(checkedAttribute, 'allow'); | |
} | |
}); | |
} | |
let f = function() { | |
let elmMediaList = getUncheckedNodeListFromSelectorList(baseMediaSelectorList); | |
let elmAdList = getUncheckedNodeListFromSelectorList(baseAdSelectorList); | |
//block media | |
eachBlock(elmMediaList, function(elm) { | |
let str = elm.outerHTML; | |
let ret = false; | |
blockKeywordList.forEach(function(key){ | |
let isStr = (str.indexOf(key) >= 0); | |
ret |= isStr; | |
}); | |
return ret; | |
}); | |
//block ad | |
eachBlock(elmAdList); | |
console.log('elmMediaList=[' + elmMediaList.length + ']'); | |
console.log('elmAdList=[' + elmAdList.length + ']'); | |
}; | |
document.debugYoutubeBlock = f; | |
setInterval(f, 1000); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment