CivitAI without BS

Scrape the BS out of civitai

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         CivitAI without BS
// @namespace    aolko
// @version      0.3
// @description  Scrape the BS out of civitai
// @author       aolko
// @license      MIT
// @match        https://*civitai.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=civitai.com
// @grant        GM_addStyle
// @require      https://code.jquery.com/jquery-3.7.1.min.js
// ==/UserScript==

/*globals $*/
/*globals jQuery*/

var civit__options = {
    "cleanSocials": true,
    "cleanGreedySections": true,
};

(function($) {
  $.fn.observeChanges = function(callback) {
    const observer = new MutationObserver((mutationsList, observer) => {
      mutationsList.forEach((mutation) => {
        if (mutation.type === 'childList') {
          callback.call(this);
        }
      });
    });

    return this.each(function() {
      observer.observe(this, { childList: true, subtree: true });
    });
  };
})(jQuery);

(function($) {
  $.fn.exists = function(threshold, callback) {
    if (typeof threshold === 'function') {
      callback = threshold;
      threshold = 0;
    }

    const options = {
      threshold: threshold
    };

    const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          const $element = $(entry.target);
          callback.call($element);
          $element.data('exists', true);
          observer.unobserve(entry.target);
        }
      });
    }, options);

    return this.each(function() {
      const $this = $(this);
      if (!$this.data('exists')) {
        observer.observe(this);
      }
    });
  };
})(jQuery);

var civit__header = `#root > .mantine-Header-root > .mantine-Grid-root`;
var civit__body = `#root > div:nth-child(2) main`;
var civit__footer = `#root .mantine-Footer-root > .mantine-Group-root`;


function civit__cleanHeader(){
    var header = civit__header;
    if(civit__options.cleanGreedySections){
        $(`${header} > .mantine-Grid-col:nth-child(1) a.mantine-UnstyledButton-root.mantine-Button-root[href^="/pricing"]`).remove();
        $(`${header} > .mantine-Grid-col:nth-child(3) .mantine-Group-root:nth-child(2) button:nth-child(1)`).attr("disabled",true);
        $(`${header} > .mantine-Grid-col:nth-child(3) .mantine-UnstyledButton-root > div > .mantine-Text-root`).remove();
    }
    //$(`${header} > .mantine-Grid-col:nth-child(4) :nth-child(4)`).remove();
    $(`${header} > .mantine-Grid-col:nth-child(3) .mantine-Indicator-root:nth-child(6)`).remove();
    $(`${header}`).observeChanges(function() {
        $(this).find(`.mantine-Grid-col:nth-child(3) .mantine-Menu-dropdown`).exists(0, function() {
            $(this).find(`[data-menu-dropdown="true"] > .mantine-Menu-item:contains("Generate images"),
            [data-menu-dropdown="true"] > .mantine-Menu-item:contains("Train a model"),
            [data-menu-dropdown="true"] > .mantine-Menu-item:contains("Create a bounty")`).remove();
        });
    });
}

function civit__cleanNav(){
    var body = civit__body;
    $(`${body} .mantine-Tabs-root:nth-child(1) > .mantine-Tabs-tabsList > a[href^="/bounties"]`).remove();
}

function civit__cleanAds(){
    var body = civit__body;
    $(`${body} > div > div.mantine-Stack-root > div.mantine-Paper-root`).remove();
    $(`${body} > div > div:nth-child(3) > div:nth-child(1) > div`).remove();
    $(body).observeChanges(function() {
      $(this).find(`div > div:nth-child(3) > div > div`).exists(0.1, function() {
          $(this).not(`:last-child`).css({"display": "none"});
      });
    });
    $(`body`).observeChanges(function() {
      $(this).find(`div.mantine-Stack-root > div > div > div.mantine-Paper-root`).exists(0,function(){
        $(this).remove();
      })
      $(this).find(`div > [dir="ltr"] .mantine-14i2dh4`).exists(0, function() {
        $(this).remove();
      });
    });
}

function civit__cleanFooter(){
    var footer = civit__footer;
    $(`${footer} > div:nth-child(2) > a[href^='/content/careers'],
    ${footer} > div:nth-child(2) > a[href^='/advertise-with-us'],
    ${footer} > div:nth-child(2) > a[href^='/wiki'],
    ${footer} > div:nth-child(2) > a[href^='/discord'],
    ${footer} > div:nth-child(2) > a[href^='/twitter'],
    ${footer} > div:nth-child(2) > a[href^='/instagram'],
    ${footer} > div:nth-child(2) > a[href^='/youtube'],
    ${footer} > div:nth-child(2) > a[href^='/tiktok'],
    ${footer} > div:nth-child(2) > a[href^='/reddit'],
    ${footer} > div:nth-child(2) > a[href^='/github'],
    ${footer} > div:nth-child(2) > a[href^='/twitch']
    `).remove();
    $(`${footer} > :last-child`).remove();
}

/*(function() {
    'use strict';

})();*/
$(function() {
    civit__cleanHeader();
    civit__cleanNav();
    civit__cleanAds();
    civit__cleanFooter();
});