Facebook Unsponsored

A supplement for an adblocker

Stan na 05-12-2020. Zobacz najnowsza wersja.

// ==UserScript==
// @name         Facebook Unsponsored
// @version      2.2
// @namespace    AAAAAAAA.com
// @description  A supplement for an adblocker
// @author       ducktrshessami
// @match        *://www.facebook.com/*
// @run-at       document-end
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js
// ==/UserScript==

(function() {
    var language = document.documentElement.lang; // Borrowing some stuff from solskido's Facebook unsponsored
    var sponsorText = {
        'af':      ['Geborg'],
        'am':      ['የተከፈለበት ማስታወቂያ'],
        'ar':      ['إعلان مُموَّل'],
        'as':      ['পৃষ্ঠপোষকতা কৰা'],
        'ay':      ['Yatiyanaka'],
        'az':      ['Sponsor dəstəkli'],
        'be':      ['Рэклама'],
        'bg':      ['Спонсорирано'],
        'br':      ['Paeroniet'],
        'bs':      ['Sponzorirano'],
        'bn':      ['সৌজন্যে'],
        'ca':      ['Patrocinat'],
        'cb':      ['پاڵپشتیکراو'],
        'co':      ['Spunsurizatu'],
        'cs':      ['Sponzorováno'],
        'cx':      ['Giisponsoran'],
        'cy':      ['Noddwyd'],
        'da':      ['Sponsoreret'],
        'de':      ['Gesponsert'],
        'el':      ['Χορηγούμενη'],
        'en':      ['Sponsored', 'Chartered'],
        'eo':      ['Reklamo'],
        'es':      ['Publicidad', 'Patrocinado'],
        'et':      ['Sponsitud'],
        'eu':      ['Babestua'],
        'fa':      ['دارای پشتیبانی مالی'],
        'fi':      ['Sponsoroitu'],
        'fo':      ['Stuðlað'],
        'fr':      ['Commandité', 'Sponsorisé'],
        'fy':      ['Sponsore'],
        'ga':      ['Urraithe'],
        'gl':      ['Patrocinado'],
        'gn':      ['Oñepatrosinapyre'],
        'gx':      ['Χορηγούμενον'],
        'hi':      ['प्रायोजित'],
        'hu':      ['Hirdetés'],
        'id':      ['Bersponsor'],
        'it':      ['Sponsorizzata'],
        'ja':      ['広告'],
        'jv':      ['Disponsori'],
        'kk':      ['Демеушілік көрсеткен'],
        'km':      ['បានឧបត្ថម្ភ'],
        'lo':      ['ໄດ້ຮັບການສະໜັບສະໜູນ'],
        'mk':      ['Спонзорирано'],
        'ml':      ['സ്പോൺസർ ചെയ്തത്'],
        'mn':      ['Ивээн тэтгэсэн'],
        'mr':      ['प्रायोजित'],
        'ms':      ['Ditaja'],
        'ne':      ['प्रायोजित'],
        'nl':      ['Gesponsord'],
        'or':      ['ପ୍ରଯୋଜିତ'],
        'pa':      ['ਸਰਪ੍ਰਸਤੀ ਪ੍ਰਾਪਤ'],
        'pl':      ['Sponsorowane'],
        'ps':      ['تمويل شوي'],
        'pt':      ['Patrocinado'],
        'ru':      ['Реклама'],
        'sa':      ['प्रायोजितः |'],
        'si':      ['අනුග්‍රහය දක්වන ලද'],
        'so':      ['La maalgeliyey'],
        'sv':      ['Sponsrad'],
        'te':      ['స్పాన్సర్ చేసినవి'],
        'th':      ['ได้รับการสนับสนุน'],
        'tl':      ['May Sponsor'],
        'tr':      ['Sponsorlu'],
        'tz':      ['ⵉⴷⵍ'],
        'uk':      ['Реклама'],
        'ur':      ['تعاون کردہ'],
        'vi':      ['Được tài trợ'],
        'zh-Hans': ['赞助内容'],
        'zh-Hant': ['贊助']
    };
    var headerText = [ // Sorry this doesn't have localization. Feel free to edit this array as you see fit.
        "Suggested for You",
        "Similar to Posts You've Interacted With",
        "Happening Now",
        "Coronavirus (COVID-19) Information",
        "Paid for by",
        "Suggested Live"
    ];

    function doonce() { // Things to hide once at the start
        if (!single) {
            let foo = $(single_selector); // Sidebar ads
            if (foo.length) {
                foo.hide();
                single = true;
            }
        }
    }

    function helpthething() { // Help filter posts
        let subtitle, header;
        subtitle = Boolean($(label_selector, this).length);
        header = Boolean($(header_selector, this).length);
        return subtitle || header;
    }

    function dothething() { // Get and hide posts
        let targets = $("[role='feed'] > div[data-pagelet]:visible").filter(helpthething);
        doonce();
        if (targets.length) {
            targets.hide();
            console.log("Target(s) destroyed");
        }
    }

    var observer = new MutationObserver(dothething), single = false;
    var single_selector = sponsorText[language].map(text => "[data-pagelet='RightRail'] > div:contains(" + text + "):visible").join(", ");
    var label_selector = sponsorText[language].map(text => "a[aria-label='" + text + "']:visible").join(", "); // Store parsed selectors for continuous use
    var header_selector = headerText.map(text => "div:first-child:not(:only-child):contains('" + text + "'):visible").join(", ");

    observer.observe(document.body, { // Wait for page change
        childList: true,
        subtree: true
    });
})();