// ==UserScript== // @name Drudge Link Enhancements // @namespace drudgereport.com // @description Enhances links on Drudge Report and neuters links to fake-news sites // // @include http://*.drudgereport.com/* // @include http://drudgereport.com/* // @version 0.2.2 // @grant GM_addStyle // @run-at document-end // @license MIT License // @require https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js // @downloadURL none // ==/UserScript== $("document").ready(function () { GM_addStyle('.fake-news-prefix { font-size: 0.8em; display: inline; }'); GM_addStyle('.fake-news { font-size: 0.8em; }'); GM_addStyle('.fake-news-icon { display: inline; }'); var fakeNewsDomains = [ 'abcnews.com', 'bloomberg.com', 'buzzfeed.com', 'cbslocal.com', 'chicagotribune.com', 'cnbc.com', 'cnn.com', 'mediaite.com', 'motherjones.com', 'nytimes.com', 'politico.com', 'rollingstone.com', 'salon.com', 'seattletimes.com', ]; var icon = ""; var title = "Fake news sites, like this one, have been tagged"; var linkStats = {}; function extractDomain(url) { var domain; if (url.indexOf("://") > -1) { domain = url.split('/')[2]; } else { domain = url.split('/')[0]; } domain = domain.split(':')[0]; return domain; } function appendLinkStats(stats) { var tuples = []; var statsHtml = '

Link Stats

'; for (var key in stats) { tuples.push([key, stats[key]]); } // Reverse sort tuples.sort(function(a, b) { a = a[1]; b = b[1]; return a < b ? 1 : (a > b ? -1 : 0); }); for (var i=0; i" } $('body').append(statsHtml); } function isFakeNewsLink(domain) { for (var i = 0; i < fakeNewsDomains.length; i++) { if (domain.indexOf(fakeNewsDomains[i]) >= 0) { return true; } } return false; } function tagFakeNewsLink(link, domain) { var originalUrl = null; if (isFakeNewsLink(domain)) { // console.log("replacing fake news: " + domain); originalUrl = link.attr("href"); // console.log("original link: " + originalUrl); link.replaceWith( ''+icon+'' + "
"+domain+" Fake-News link removed
" + link.text() + "
" ); } else { // Add a popup with the link's domain name link.attr("title", domain); } } $("a").each(function() { var link = $(this); var href = link.attr("href"); var domain = extractDomain(href); // console.log(domain); tagFakeNewsLink(link, domain); // if (linkStats[domain] == null) { // linkStats[domain] = 1; // } else { // linkStats[domain] += 1; // } }); // appendLinkStats(linkStats); });