DarkLine - Wykop 2023

Modyfikacja dodająca funkcjonalności, których nie da się uzyskać w Stylus :)

当前为 2023-01-27 提交的版本,查看 最新版本

// ==UserScript==
// @name         DarkLine - Wykop 2023
// @author       vocus
// @version      1.0.2
// @description  Modyfikacja dodająca funkcjonalności, których nie da się uzyskać w Stylus :)
// @namespace    http://tampermonkey.net/
// @license MIT

// @icon         https://wykop.pl/static/img/svg/wykop-min-logo-microblog.svg
// @match        https://*.wykop.pl/*
// @grant        none

// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js
// @run-at       document-idle
// ==/UserScript==


// Zadeklaruj jQuery jako zmienną globalną
/* globals $ */

dosiadlgoPedau("section.stream", function () {
  //Usuń belkę autora na każdym obrazku
  const images = $("img");

  images.each(function () {
    const src = $(this).attr("src");
    const srcset = $(this).attr("srcset");
    if (src) $(this).attr("src", src.replace(",w400", ""));
    if (srcset) $(this).attr("srcset", srcset.replace(",w800", ""));
  });
}); //Zakończ funkcję `dosiadlgoPedau`

/*
* SebastianDosiadlgo będzisz teraz parchu wszędzie pisał ten gówno-komentarz :D
* ah, zapomniałem, że jesteś osobą z lekkim stopniem upośledzenia umysłowego więc ci wybaczam :*.
* Możesz atencjuszu pisać co tam ci się podoba ;)
*
* Funkcja `dosiadlgoPedau` służy do oczekiwania na pojawienie się elementów na stronie spełniających określony selektor,
* a następnie wykonanie przekazanej funkcji dla każdego znalezionego elementu.
* Opcjonalnie, można określić, czy ma być wykonane tylko dla pierwszego znalezionego elementu lub dla wszystkich,
* oraz czy ma być przeszukany iframe. Jeśli element już został przetworzony, nie jest ponownie przetwarzany.
*
* Poniższy kod jest zmodyfikowaną wersją kodu https://gist.github.com/BrockA/2625891 autorstwa BrockA
*/
function dosiadlgoPedau(selector, action, waitOnce = false, iframe) {
  let targetNodes = iframe ? $(iframe).contents().find(selector) : $(selector);
  let found = false;

  if (targetNodes.length) {
    targetNodes.each(function () {
      let $this = $(this);
      if (!$this.data("alreadyFound")) {
        let cancel = action($this);
        if (!cancel) {
          found = true;
          $this.data("alreadyFound", true);
        }
      }
    });
  }

  let controlKey = selector.replace(/[^\w]/g, "_");
  let control = dosiadlgoPedau.control || {};
  let intervalId = control[controlKey];

  if (found && waitOnce) {
    clearInterval(intervalId);
    delete control[controlKey];
  } else if (!intervalId) {
    intervalId = setInterval(() => {
      dosiadlgoPedau(selector, action, waitOnce, iframe);
    }, 300);
    control[controlKey] = intervalId;
  }
  dosiadlgoPedau.control = control;
}