Advertisement
emerginginstance

Untitled

Nov 29th, 2022
766
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.06 KB | None | 0 0
  1. // ==UserScript==
  2. // @name         ^__^
  3. // @include      https://*.facebook.*
  4. // @icon         https://www.google.com/s2/favicons?domain=facebook.com
  5. // @icon64URL    https://www.google.com/s2/favicons?domain=facebook.com
  6. // @run-at       document-idle
  7. // ==/UserScript==
  8.  
  9. (() => {
  10.  
  11.     let elementRouting = {}
  12.     const REMOVE_SUGGESTION = true
  13.     const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
  14.  
  15.     function getFeed() {
  16.         if(!elementRouting?.feed) elementRouting.feed = findFeed()
  17.         return elementRouting.feed
  18.     }
  19.  
  20.     function findFeed() {
  21.         let divs = document.querySelectorAll('div')
  22.         for(const div of divs)
  23.             if(Object.values(div)?.[1]?.children?.props?.id === 'feed')
  24.                 return div
  25.         return elementRouting?.feed
  26.     }
  27.  
  28.     setInterval(()=> elementRouting.feed = findFeed(), 5000) //relocate new feed source occasionally
  29.  
  30.     function feedletsFilter(element) {
  31.         let isFeed = Object.values(element)?.[1]?.children?.props?.variables?.feedLocation !== undefined
  32.         return isFeed
  33.     }
  34.  
  35.     function getFeedItems() {
  36.         let feedRoot = getFeed()
  37.         let feedItems = Array.from(feedRoot.querySelectorAll('div')).filter(feedletsFilter)
  38.         return feedItems
  39.     }
  40.  
  41.     function isAdvert(element) {
  42.         let props = Object.values(element)?.[1]?.children?.props
  43.         try {
  44.             let feedID = atob(props.story.id)
  45.             if(feedID.length > 700) return true
  46.         } catch { return false }
  47.         return false
  48.     }
  49.  
  50.     function removeFromPage(element) {
  51.         element.parentNode.removeChild(element)
  52.     }
  53.  
  54.     function removeStuff() {
  55.         let feedItems = getFeedItems()
  56.  
  57.         for(const advert of feedItems.filter(isAdvert))
  58.            removeFromPage(advert)
  59.  
  60.         if(REMOVE_SUGGESTION)
  61.             for(const feedItem of feedItems)
  62.                 if(feedItem.innerHTML.includes(">Suggested for you</span>")) removeFromPage(feedItem)
  63.     }
  64.  
  65.     async function advertKillingLoop() {
  66.         while(true) {
  67.             try {
  68.                 removeStuff()
  69.             } catch {}
  70.             await sleep(250)
  71.         }
  72.     }
  73.  
  74.     window.addEventListener('load', advertKillingLoop)
  75.  
  76. })()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement