Last active
January 9, 2018 13:24
-
-
Save alpsayin/abf3d1d77dfbfe8d840dc778257e0e7a to your computer and use it in GitHub Desktop.
Hide/remove facebook suggested sponsored posts that appear in your feed by searching for non-timestamped posts
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
// -*- Mode: Javascript; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 2 -*- | |
/******************************************************************************* | |
(C)2017+ Alp Sayin | |
Authors: Alp Sayin <https://www.facebook.com/My-Dummy-Page-for-Development-1417283351852520/> | |
This work is licensed under a Creative Commons License ! | |
See: http://creativecommons.org/licenses/by-nc-nd/4.0/ | |
*******************************************************************************/ | |
// ==UserScript== | |
// @name FB-Remove Sponsored Posts | |
// @namespace https://www.facebook.com/My-Dummy-Page-for-Development-1417283351852520/ | |
// @downloadURL https://gist.githubusercontent.com/alpsayin/abf3d1d77dfbfe8d840dc778257e0e7a/raw/FB-RemoveSponsored.user.js | |
// @updateURL https://gist.githubusercontent.com/alpsayin/abf3d1d77dfbfe8d840dc778257e0e7a/raw/FB-RemoveSponsored.user.js | |
// @version 2018.01.05.1823.beta | |
// @description Remove the fucking sponsored posts by looking for non-timestamped posts in feed. | |
// @match *://*.facebook.com/* | |
// @icon | |
// @author ©alpsayin™ | |
// @grant none | |
// @run-at document-start | |
// @copyright (C)2017+ alpsayin <https://www.facebook.com/My-Dummy-Page-for-Development-1417283351852520/> | |
// @license CC BY-NC-ND 4.0; http://creativecommons.org/licenses/by-nc-nd/4.0/ | |
// ==/UserScript== | |
"use strict"; | |
( | |
function (scope){ | |
var timer; | |
var oldNumRemoved = 0, newNumRemoved = 0; | |
function isElementInViewport (el) { | |
var rect = el.getBoundingClientRect(); | |
return ( | |
rect.top >= 0 && | |
rect.left >= 0 && | |
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ | |
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */ | |
); | |
} | |
function findAncestor (el, cls) { | |
while ((el = el.parentElement) && !el.classList.contains(cls)); | |
return el; | |
} | |
function clickMoreStories() { | |
var morestories; | |
morestories = document.getElementsByClassName("fsxl fcg"); | |
if(morestories[0].innerText == "More Stories") { | |
if(isElementInViewport(morestories[0])) { | |
morestories[0].click(); | |
console.log("Clicked on more stories button") | |
} | |
} // */ | |
} | |
function recursiveTimedRemover(){ | |
console.log("Activating recursive remover: "+oldNumRemoved) | |
newNumRemoved = removeSponsored(); | |
if (newNumRemoved > oldNumRemoved || true) { | |
setTimeout(function () { | |
oldNumRemoved = newNumRemoved; | |
recursiveTimedRemover(); | |
} , 2000 ); | |
} | |
else { | |
oldNumRemoved = 0; | |
} | |
} | |
function removeSponsored (){ | |
var allstories, storybox, numRemoved; | |
numRemoved = 0; | |
allstories = document.getElementsByClassName("_5pcp _5lel _232_"); | |
for (var i = 0; i < allstories.length; i++) { | |
if( allstories[i].getElementsByClassName("timestampContent").length === 0 ) { | |
storybox = allstories[i].closest("._5jmm"); | |
console.log("Removed " + storybox.id + " post"); | |
storybox.style = "opacity: 0.5;"; | |
storybox.style = "display: none;"; | |
// storybox.outerHTML = "<div></div>" | |
numRemoved++; | |
} | |
} | |
//if (numRemoved) { | |
console.log("Removed "+numRemoved+" sponsored posts"); | |
// clickMoreStories(); | |
//} | |
return numRemoved; | |
} | |
function domLoaded() { | |
var homeButton; | |
console.log("dom loaded"); | |
oldNumRemoved = 0; | |
window.addEventListener("scroll", removeSponsored, false); | |
window.requestIdleCallback(function () { | |
console.log("home click timeout"); | |
oldNumRemoved = 0; | |
recursiveTimedRemover(); | |
} ) | |
homeButton = document.getElementsByClassName("_2md"); | |
homeButton = homeButton[0]; | |
homeButton.addEventListener("click", homeClicked, false); | |
} | |
function homeClicked() { | |
var homeButton; | |
console.log("home click START"); | |
window.requestIdleCallback(function () { | |
console.log("home click timeout"); | |
oldNumRemoved = 0; | |
recursiveTimedRemover(); | |
} ) | |
console.log("home click END"); | |
} | |
if( scope.addEventListener ) { | |
console.log("FB-Remove Sponsored Posts"); | |
scope.addEventListener("DOMContentLoaded", domLoaded); | |
} | |
} | |
)( document ); | |
// test change to see if updates propagate |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment