您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
I dont care.
// ==UserScript== // @name hide douban feeds // @namespace http://houkanshan.github.io/ // @version 0.6.0 // @description I dont care. // @match http*://www.douban.com/* // @require http://libs.baidu.com/underscore/1.3.3/underscore-min.js // @require http://libs.baidu.com/jquery/2.0.3/jquery.min.js // @copyright 2014+, Houkanshan // ==/UserScript== // // GistID: 3a48bf702e115e1ae966 var blockedCSS = (function () {/* .blocked-feed .mod { height: 54px; overflow: hidden; opacity: 0.2; margin-bottom: 14px; } .blocked-feed .action-block:before { content: '+'; } .action-block:before { content: '×'; float: right; color: #ebebeb; margin-top: -16px; height: 12px; width: 12px; line-height: 12px; vertical-align: middle; display: block; cursor: pointer; } .status-wrapper .others { bottom: auto!important; position: static!important; width: 100%; } .status-wrapper .actions { display: block!important; position: static!important; } .status-real-wrapper .actions { padding-bottom: 0; } */}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1]; insertCSS(blockedCSS) var softBlockWords = ['李易峰', '股市', '套牢', '大盘', '调整', '跌停', '大跌', '跳水', '跌', '抄底', '做空', '月饼', '发工资', '某荚', '贵荚', '豌豆荚', '宋冬野', '烂体验体验站'] var hardBlockWords = ['要参加线上活动', '八卦来了'] var blockIdKey = 'blocked_feed_ids' var blockIds = localStorage[blockIdKey] ? JSON.parse(localStorage[blockIdKey]) : [] var whiteWords = [] var listSel = '.stream-items' var feedSel = '[data-sid]' var idBlockedSel = '[data-sid="' + blockIds.join('"], [data-sid="') + '"]' var list = $(listSel) var feeds = list.find(feedSel) var blockedFeeds = list.find(idBlockedSel) //$('.status-wrapper').find('.actions').attr('style', 'position:static!important;display:block!important').end() $('.status-real-wrapper').off('click').css('margin-top', 0) blockedFeeds = blockedFeeds.add(feeds.filter(function(i, el) { var text = el.textContent var hardRemove = _.some(hardBlockWords, function(word) { return text.match(word) }) if (hardRemove) { el.remove() return false } return _.some(softBlockWords, function(word) { return text.match(word) }) && !_.some(whiteWords, function(word) { return text.match(word) }) })) blockedFeeds.addClass('blocked-feed') feeds.prepend('<span class="action-block">') list.on('click', '.action-block', function(e){ var el = $(e.currentTarget) var feed = el.closest(feedSel) var sid = feed.data('sid') var hasBlocked = feed.is('.blocked-feed') if (hasBlocked) { blockIds = _.without(blockIds, sid) localStorage[blockIdKey] = JSON.stringify(blockIds) feed.removeClass('blocked-feed') } else { blockIds.push(sid) localStorage[blockIdKey] = JSON.stringify(blockIds) feed.addClass('blocked-feed') } }) list.on('click', '.blocked-feed', function(e) { var el = $(e.currentTarget) el.removeClass('blocked-feed') }) function insertCSS(css, options) { var elem = document.createElement('style'); elem.setAttribute('type', 'text/css'); if ('textContent' in elem) { elem.textContent = css; } else { elem.styleSheet.cssText = css; } var head = document.getElementsByTagName('head')[0]; if (options && options.prepend) { head.insertBefore(elem, head.childNodes[0]); } else { head.appendChild(elem); } };