- // ==UserScript==
- // @name Remove livejournal-promo
- // @name:ru Удаление промо-блоков livejournal
- // @version 3.2020.4.11
- // @description Remove livejournal's promo blocks, promo-posts, hide spam-authors by list in localStorage, fix CSS.
- // @description:ru Remove livejournal's promo. Удаляет промо-блоки, промо-посты из френд-ленты, скрывает спам-авторов по списку, подправляет CSS (шрифт без засечек, размеры аватаров, общий светлый фон) на некоторые группы стилей.
- // @namespace https://github.com/spmbt/
- // @include http://livejournal.com/
- // @include http://*.livejournal.com/
- // @include http://*.livejournal.com/*
- // @include https://livejournal.com/
- // @include https://*.livejournal.com/
- // @include https://*.livejournal.com/*
- // ==/UserScript==
-
- (function(css){
-
- var spamSList = [
- 'fred2265','tonyhofstra','zaven926','eduard_456' //insert your own list of spammers
- ]
- ,wrapperS = ['.appwidget.appwidget-homepage-selfpromo'
- ,'.appwidget.appwidget-homepage-commpromo'
- ,'.appwidget.appwidget-journalpromo'
- ,'iframe[data-link*="youtube.com/watch?v=cFvuGr0Voic"]'
- ,{q:'b-item-type-ad.i-friendsfeed-ad-close', parent: 4}
- ,{q:'a >img[src*="star-colored150.png"], a >img[src*="178679_1000.jpg"]', parent: 2} //some images
- ,{q:'.comment-wrap .comment-head-in >p .i-ljuser >.i-ljuser-username'
- +',.comments-body .comment-meta .i-ljuser >.i-ljuser-username b'
- +',.b-tree .b-leaf-inner .i-ljuser >.i-ljuser-username'
- ,spamS: spamSList //block spam by authors of comment
- ,parent: 5}
- ,{q:'.comment-wrap.partial >.i-ljuser >.i-ljuser-username'
- +',.comments-body .collapsed-comment .i-ljuser >.i-ljuser-username'
- ,spamS: spamSList //block spam by authors of wrapped comment
- ,parent: 2}
- ]
- ,win = typeof unsafeWindow !='undefined'? unsafeWindow : window
- ,$q = function(q, f){return (f||document).querySelector(q)}
- ,setLocStor = function(name, hh){
- if(!localStorage) return;
- localStorage['removeLj_'+ name] = JSON.stringify({h: hh});
- },
- getLocStor = function(name){
- return (JSON.parse(localStorage && localStorage['removeLj_'+ name] ||'{}')).h;
- }
- ,removeLocStor = function(name){localStorage.removeItem('removeLj_'+ name);}
- ,cleaning = function(){
- for(var i in wrapperS){
- var wI = wrapperS[i]
- ,wObj = typeof wI !='string'
- ,wQA = [].slice.call(document.querySelectorAll(wObj ? wI.q : wI) );
- for(var j =0; j < wQA.length; j++){
- var wJ = wQA[j];
- if(wObj && wI.spamS){ //block spam
- var isSpam =0;
- for(var k =0; k < wI.spamS.length; k++){
- if(wJ.innerHTML.replace(/<.*?>/g,'') == wI.spamS[k]){
- isSpam =1;
- break;}}
- }
- if(wObj && wI.parent){ //block upper
- for(var k =0; k < wI.parent; k++)
- wJ = wJ.parentNode;
- }
- if(!wObj || wObj && !wI.spamS || wObj && wI.spamS && isSpam)
- wJ.style.display ='none';
- //TODO add grey blocks
- }
- //TODO add supress by click
- }};
- cleaning();
- spamSList = getLocStor('spamList') || spamSList;
- //TODO button to add to spamList
- var Tout = function(h){
- var th = this;
- (function(){
- if((h.dat = h.check(h.t) )) //wait of positive result, then occcurense
- h.occur();
- else if(h.i-- >0) //next slower step
- th.ww = window.setTimeout(arguments.callee, (h.t *= h.m) );
- })();
- };
-
- new Tout({t:320, i:6, m: 1.6 //нижний баннер
- ,check: function(t){
- return document && $q('.b-discoverytimes-wrapper');
- }
- ,occur: function(){
- var underBanner = this.dat;
- underBanner &&(underBanner.style.display = 'none');
- }
- });
- new Tout({t:370, i:6, m: 1.6
- ,check: function(t){
- return document && $q('.s-body #comments .b-tree-root .b-leaf');
- }
- ,occur: cleaning
- });
-
- (function(css){ //addRules
- console.log('22221', typeof GM_addStyle, typeof addStyle);
- if(typeof GM_addStyle !='undefined') GM_addStyle(css); //Fx,Chr
- else if(typeof addStyle !='undefined') addStyle(css);
- else{ //Op12
- var heads = document.getElementsByTagName('head');
- if(heads.length){
- var node = document.createElement('style');
- node.type ='text/css';
- node.appendChild(document.createTextNode(css));
- heads[0].appendChild(node);
- }}
- })(css);
-
- })('body{background: transparent!important} html, body, .comment-wrap partial, .comment-wrap, .comment-text{font-family: sans-serif!important}' //common BGs
- +'#page{background: none!important}'
- +'#page{background-color: #f6f6f8!important}'
- +'.header a:link, .header a:visited, .sidebar a:link, .sidebar a:visited{color: #bbc!important}'
- +'.lj-like, iframe[id], .pagewide-wrapper, div[id^="super_footer"]{display: none!important}' //likes under article
- //ava sizes
- +'.comment-head .comment-upic img, .comment-inner .user-icon img,.b-leaf .b-leaf-userpic-inner img, .b-leaf-userpic,'
- +'.comment-text .comment-meta{width: auto!important; max-height: 45px!important; margin: 0 3px 0!important; padding: 3px 3px!important}'
- +'.comment-head .comment-upic{width: auto!important; height: auto!important}.comment-text .comment-meta{min-height: 46px!important}'
- +'.b-leaf-userpic-inner{width: auto!important; height: 49px!important}'
- +'.b-leaf-userpic{margin-left:10px!important}'
- +'.b-leaf.b-leaf-collapsed .b-leaf-shorttime{margin-left:6px!important}'
- +'.comment-body{margin-left: 3px!important}'
- +'.b-leaf.b-leaf-poster, .b-leaf-username{margin: 0!important}'
- +'.b-leaf{margin: 8px 0 4px!important}'
- +'.b-singlepost-wrapper, .b-tree-twig,.content .entry-wrap,.comment-wrap{max-width: 800px}'
- );