SporzaNoSoccer

Remove football (soccer for Americans) from Sporza.be and Deredactie.be

// ==UserScript==
// @name         SporzaNoSoccer
// @namespace    http://wimgodden.be/
// @version      2.0.1
// @description  Remove football (soccer for Americans) from Sporza.be and Deredactie.be
// @author       Wim Godden <[email protected]>
// @match        https://sporza.be/*
// @match        disabledhttps://www.vrt.be/vrtnws/nl/*
// @grant        none
// @license      MIT
// ==/UserScript==


add_jQuery (removeSoccer, "1.7.2");

function add_jQuery (callbackFn, jqVersion) {
    jqVersion = jqVersion || "1.7.2";
    var D = document;
    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    var scriptNode = D.createElement ('script');
    scriptNode.src = 'https://ajax.googleapis.com/ajax/libs/jquery/'
                    + jqVersion
                    + '/jquery.min.js'
                    ;
    scriptNode.addEventListener ("load", function () {
        var scriptNode = D.createElement ("script");
        scriptNode.textContent =
            'var gm_jQuery  = jQuery.noConflict (true);\n'
            + '(' + callbackFn.toString () + ')(gm_jQuery);'
        ;
        targ.appendChild (scriptNode);
    }, false);
    targ.appendChild (scriptNode);

    setTimeout(function() {
        removeSoccer(gm_jQuery);
    }, 2000); // A second will elapse and Code will execute.
}

function removeSoccer($) {
    'use strict';

    function searchTheDivs(searchString, element) {
        // Select all div elements containing 'bla'
        let divsWithElement = Array.from(document.querySelectorAll(searchString)).filter(div => div.textContent.includes(element));

        // Filter those divs to find ones that meet the class criteria
        let filteredDivs = divsWithElement.filter(div => {
            let hasCategoryClass = Array.from(div.classList).some(className => className.includes('category'));
            let currentElement = div.parentElement; // Starting point to look for 'storyCardContent'
            let hasStoryCardContentClass = false;
            while (currentElement !== null && typeof currentElement.tagName != "undefined" && currentElement.tagName != null && currentElement.tagName !== "section") { // Assumes SECTION is the stopping point
                if (Array.from(currentElement.classList).some(className => className.includes('storyCardContent'))) {
                    hasStoryCardContentClass = true;
                    break;
                }
                currentElement = currentElement.parentElement;
            }
            return hasCategoryClass && hasStoryCardContentClass;
        });
        return filteredDivs;
    }

    function searchAndRemove(element) {
        $("." + element).hide();
        $(".vrt-title--section:contains('" + element + "')").parent().parent().hide();
        //$("h2:contains('" + element + "')").parent().parent().hide();
        $("div .teaser div div a article div div h2:contains('" + element + "')").parent().parent().parent().parent().parent().parent().parent().hide();
        $("section div h2:contains('" + element + "')").parent().parent().hide();
        $(".article-teaser div div div:contains('" + element + "')").parent().parent().parent().remove();
        $("section div span:contains('" + element + "')").parent().parent().hide();
//        $("article div span:contains('" + element + "')").parent().parent().parent().parent().parent().hide();
//        $(".article-teaser div div p:contains('" + element + "')").parent().parent().parent().remove();
        $("div .vrt-banner__title:contains('" + element + "')").parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().parent().remove();
        $(".sw-articles-module-articles .sw-card-module-card .sw-story-card-module-storyCardContent .sw-category-module-category:contains('" + element + "')").parent().parent().parent().remove();
        $(".sw-card-module-card .sw-story-card-module-storyCardContent .sw-category-module-category:contains('" + element + "')").parent().parent().remove();
        $(".FGSPK:contains('" + element + "')").parent().parent().parent().hide();
        //$("section div a div div:contains('" + element + "')").parent().parent().parent().hide();
        $('div[class^="_storyCardContent"] div[class^="_category"]:contains("' + element + '")').parent().parent().remove();

        let filteredDivs = searchTheDivs("section div a div div", element);
        console.log(filteredDivs);
        let filteredDivs2 = searchTheDivs("section div div a div div", element);
        console.log(filteredDivs2);

        filteredDivs.forEach(div => {
            console.log(div);
            div.parentElement.parentElement.style.display = 'none';
        });

        var links = document.evaluate('//a[contains(@href, "' + element + '")]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
        for (var j = 0; j < links.snapshotLength; j++) {
            var link = links.snapshotItem(j);
            link.parentNode.removeChild(link);
        }
    }


    var sporzaOnlyElements = [
        'Buitenland',
        'Anderlecht',
        'Club Brugge',
        'Antwerp',
        'Turkije',
        'Engeland',
        'Nederland',
        'Frankrijk',
        'Antwerp',
        'Union',
        'voetbal'
    ];
    var soccerElements = [
        'Proximus League',
        'EK-voorronde',
        'alle-doelpunten',
        'football',
        'fifa-wk-voetbal-2018',
        'champioensleaguetheme',
        'ek-2016',
        'euro-2016',
        'ek-france-theme',
        'rodedijvelstheme',
        'jupiler-pro-league',
        'voetbal',
        'rode duivels',
        'Rode Duivels',
        'Voetbal',
        'Europa League',
        'Messi',
        'Meunier',
        'Witsel',
        'Coucke',
        'Champions League',
        'Jupiler Pro League',
        'red flames',
        'Red Flames',
        'Duivelsgekte',
        'wereldkampioenen',
        'Villa Sporza',
        'de kijkersvraag voor een rode duivel',
        'jupiler pro league',
        'Extra Time',
        'Real Madrid',
        'Liverpool',
        'Silva',
        'De Bruyne',
        'Juventus',
        'Ronaldo',
        'AC Milan',
        'Atletico',
        'Real Madrid',
        'Barça',
        'Ajax',
        'jplacties',
        'KV Mechelen',
        'Mourinho',
        'Beker van België',
        'Abdelhak',
        'KV Oostende',
        'KV Mechelen',
        'Kompany',
        'KV Kortrijk',
        'Standard',
        'Neymar',
        'tackle',
        'JPL',
        'jpl goals',
        'Pereira',
        'Balotelli',
        'Casteels',
        'Franse ploeg',
        'Alderweireld',
        'Courtois',
        'Lagere klassen',
        'Eerste Klasse b',
        'Les Bleus',
        'Nations League',
        'Beker van belgie',
        'Beckham',
        'Bundesliga',
        'Pochettino',
        'Premier League',
        'Ligue 1',
        'Eerste Klasse B',
        'Serie A',
        'Primera Division',
        'de Duivels',
        'de Rode Duivels',
        'Fraudedossier',
        'fraudedossier',
        'Copa America',
        'De Tribune',
        'Primera División',
        'Eredivisie',
        'Diego Maradona overleden',
        'WK-voorronde',
        'MLS',
        'Coppa Italia',
        'super league',
        'EK voetbal',
        'Copa América',
        '1B Pro League',
        'Conference League',
        'Women Super League',
        'Afrika Cup',
        'Ibrahimovic',
        'Gouden Schoen',
        'WK voor clubs',
        '90 minutes',
        'FA Cup',
        'Croky Cup',
        'Union',
        'Antwerp',
        'voetbal',
        'Challenger Pro League',
        'The Championship',
        'Champions League',
        'Manchester United',
        'lukaku',
        'DFB Pokal',
        'KAA Gent',
        "Women's Nations League",
        'Erik ten Hag',
        'Palmeiras',
        'Futsal',
        'Süper Lig',
        'Euro 2024',
        'Coupe de France',
        'Copa del Rey',
        'supercup',
        'KNVB-beker',
        'Youri Tielemans',
        'Primeira Liga'
    ];

    $(".matchdays").hide();

    soccerElements.forEach(function(element) {
        searchAndRemove(element);
    });

    if (window.location.hostname != 'www.vrt.be') {
        sporzaOnlyElements.forEach(function(element) {
            searchAndRemove(element);
        });
    }

    $("img[src*='soccer/championsleague/logo-highlighted.png']").parent().parent().parent().parent().hide();
    $("img[src*='soccer/default/icon-highlighted.png']").parent().parent().parent().parent().hide();
    $("img[src*='soccer/jupilerproleague/logo-highlighted.png']").parent().parent().parent().parent().hide();
    $("img[src*='soccer/championsleague/logo-dimmed.png']").parent().parent().parent().parent().hide();
    $("img[src*='soccer/default/icon-dimmed.png']").parent().parent().parent().parent().hide();
    $("img[src*='soccer/championsleague/background-highlighted-left-temp.png']").parent().parent().parent().parent().parent().hide();
    $("img[src*='soccer/jupilerproleague/icon-highlighted.png']").parent().parent().parent().parent().parent().hide();
    $("img[src*='soccer/jupilerproleague/logo-dimmed.png']").parent().parent().parent().parent().parent().hide();
    $("img[src*='soccer/default/icon-highlighted.png']").parent().parent().parent().parent().parent().hide();
    $("img[src*='soccer/euro2024/icon-highlighted.png']").parent().parent().parent().parent().parent().parent().hide();

    $("img:contains('polopoly_fs/1.2672806!image/1568165166.jpg')").hide();

    var snapEKImages = document.evaluate("//img[contains(@src,'1568165166')]",
		document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i = snapEKImages.snapshotLength - 1; i >= 0; i--) {
		var elm = snapEKImages.snapshotItem(i);
        elm.parentNode.parentNode.parentNode.parentNode.style.display='none';
	}
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址