Subito.it Tools

Rimuove i banner pubblicitari e i prodotti venduti dalla ricerca

  1. // ==UserScript==
  2. // @name Subito.it Tools
  3. // @namespace https://gist.github.com/nicola02nb
  4. // @version 0.11
  5. // @description Rimuove i banner pubblicitari e i prodotti venduti dalla ricerca
  6. // @author nicola02nb (https://gist.github.com/nicola02nb)
  7. // @match https://www.subito.it/annunci-*/vendita/*
  8. // @match https://www.subito.it/*/*.htm
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=subito.it
  10. // @grant none
  11. // @run-at document-start
  12. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js
  13. // ==/UserScript==
  14. var $ = window.jQuery;//Dipendenza
  15.  
  16. var btn;
  17. var btnAriaStatus=false;
  18. var hiddenList=new Array();
  19.  
  20. //Funzione che rimuove tutti i prodotti venduti
  21. function toggleHideSold(){
  22. var hide=btnAriaStatus;
  23. if(hide){
  24. var list=$(".item-sold-badge");
  25. hiddenList=new Array();
  26. list.each(function() {
  27. var item=$( this ).parents(".item-card");
  28. item.hide();
  29. hiddenList.push(item);
  30. });
  31. }
  32. else{
  33. hiddenList.forEach((item) => item.show());
  34. }
  35. }
  36.  
  37. //Funzione che elimina tutti i banner pubblicitari durante la ricerca
  38. function deleteAds(){
  39. document.querySelectorAll('div[id^="ad_wrapper_"], iframe[id^="google_ads_iframe_"], div[class^="AdsGAMP"], div[id="apn_skin_tag"], button[class^="banner-module_sticky-banner__"], div[id^="desktop-after-listing-lp-market"]').forEach(div => {
  40. div.remove();
  41. });
  42. }
  43.  
  44. //Funzione eliminare elementi dalla apgina
  45. function deleteStuff(){
  46. toggleHideSold();
  47. deleteAds();
  48. }
  49.  
  50. //Aggiorna lo stile del bottone per nascondere i prodotti venduti
  51. function updateButton(){
  52. if(btnAriaStatus){
  53. btn.attr("aria-checked","false");
  54. btn.attr("data-state","unchecked");
  55. btn.html('<span class="pointer-events-none absolute inset-none flex items-center transition-all duration-200 ease-in-out translate-x-none"><span data-state="unchecked" class="absolute left-none top-none flex items-center justify-center bg-surface rounded-full ring-0 transition-all duration-200 ease-in-out h-sz-24 w-sz-24 translate-x-none text-on-surface/dim-4"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" data-title="Close" fill="currentColor" stroke="none" class="transition-opacity duration-200 h-sz-12 w-sz-12"><path fill-rule="evenodd" d="m21.6,19.67l-7.68-7.68,7.57-7.59c.53-.53.53-1.4,0-1.93-.53-.53-1.4-.53-1.93,0l-7.57,7.58L4.33,2.4c-.53-.53-1.4-.53-1.93,0-.53.53-.53,1.4,0,1.93l7.66,7.66-7.66,7.65c-.53.53-.53,1.4,0,1.93.53.53,1.4.53,1.93,0l7.66-7.66,7.68,7.68c.53.53,1.4.53,1.93,0,.53-.53.53-1.4,0-1.93h0Z"></path></svg></span></span>');
  56. }
  57. else{
  58. btn.attr("aria-checked","true");
  59. btn.attr("data-state","checked");
  60. btn.html('<span class="pointer-events-none absolute inset-none flex items-center transition-all duration-200 ease-in-out translate-x-full"><span data-state="checked" class="absolute left-none top-none flex items-center justify-center bg-surface rounded-full ring-0 transition-all duration-200 ease-in-out h-sz-24 w-sz-24 -translate-x-full"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" data-title="Check" fill="currentColor" stroke="none" class="transition-opacity duration-200 h-sz-12 w-sz-12"><path d="m8.92,19.08c-.18,0-.36-.03-.53-.1s-.33-.17-.47-.31l-5.49-5.34c-.28-.28-.42-.61-.42-1s.14-.73.42-1c.28-.28.62-.41,1.02-.41s.74.14,1.05.41l4.43,4.3,10.62-10.29c.28-.28.62-.42,1.02-.43.39,0,.73.13,1.02.43.28.28.42.61.42,1s-.14.73-.42,1l-11.65,11.32c-.14.14-.3.24-.47.31-.17.07-.35.1-.53.1Z"></path></svg></span></span>');
  61. }
  62. btnAriaStatus=btn.attr("aria-checked")=="true";
  63. }
  64.  
  65. //Funzione che crea un interruttore per abilitare/disabilitare la visione di prodotti venduti
  66. function initializeButton(){
  67. var old_section=$("#filters-container:nth-child(1)");
  68.  
  69. var section=old_section.clone();
  70. section.find("h5").text("Plugin Filters");
  71. section.find("p").text("Custom Filters");
  72. section.find("label").text("Nascondi venduti").attr("id","radx-99").attr("for","/isSold");
  73.  
  74. btn=section.find("button");
  75. btn.attr("id","/isSold").attr("aria-labelledby","radx-99");
  76. btn.on("click",updateButton);
  77. updateButton();
  78.  
  79. var i=0;
  80. section.find(".index-module_container__JaNg0").each(function(){
  81. if(i>0)$( this ).remove();
  82. i+=1;
  83. });
  84. old_section.before(section);
  85. }
  86.  
  87. //Inizializzatione del bottone e Interval al termine del caricamento della pagina
  88. window.onload = () =>{
  89. initializeButton();
  90. setInterval(deleteStuff,1000);
  91. }