Auto-Espande Google Search Tools

Mostra il menu Strumenti di ricerca nei risultati di ricerca di Google

当前为 2024-03-30 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Auto-Espande Google Search Tools
  3. // @description Mostra il menu Strumenti di ricerca nei risultati di ricerca di Google
  4. // @namespace https://greasyfork.org/users/237458
  5. // @author figuccio
  6. // @version 22.4
  7. // @match https://*.google.com/*
  8. // @match https://*.google.it/*
  9. // @match https://*.google.fr/*
  10. // @match https://*.google.es/*
  11. // @match https://*.google.de/*
  12. // @exclude https://translate.google.it/?hl=it
  13. // @exclude https://drive.google.com/*
  14. // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
  15. // @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=19641
  16. // @grant GM_addStyle
  17. // @grant GM_setValue
  18. // @grant GM_getValue
  19. // @run-at document-start
  20. // @icon https://www.google.com/favicon.ico
  21. // @noframes
  22. // @license MIT
  23. // @grant GM_registerMenuCommand
  24. // @require http://code.jquery.com/jquery-latest.js
  25. // @require https://code.jquery.com/ui/1.12.1/jquery-ui.js
  26. // ==/UserScript==
  27. (function() {
  28. 'use strict';
  29. var $ = window.jQuery;
  30. miglioralo();
  31. function miglioralo() {
  32. if (document.readyState !== 'loading') {
  33. consent();
  34. } else {
  35. document.addEventListener('DOMContentLoaded', consent);
  36. }
  37. }
  38.  
  39. function consent() {
  40. var consentButton = document.querySelector('#introAgreeButton');
  41.  
  42. if (!consentButton) {
  43. consentButton = document.querySelector('div.jw8mI button#zV9nZe.tHlp8d, div.VDity button#L2AGLb.tHlp8d, div.GzLjMd button#L2AGLb.tHlp8d, form[action="https://consent.google.com/s"] button');
  44. }
  45.  
  46. if (!consentButton) {
  47. let otherButtons = document.querySelectorAll('div.lssxud button.nCP5yc:not(:disabled)');
  48. if (otherButtons.length > 1) {
  49. consentButton = otherButtons[1];
  50. }
  51. }
  52.  
  53. if (consentButton) {
  54. consentButton.click();
  55. }
  56. }
  57.  
  58. /////////////////////////////////////
  59. window.addEventListener("load",function(){
  60. disableSafesearch();
  61. addClockFieldset();
  62. makeClockDraggable();
  63. });
  64. // Aggiungi un fieldset per l'orologio
  65. function addClockFieldset() {
  66. var fieldset = document.createElement('fieldset');
  67. fieldset.setAttribute('id', 'clockFieldset');
  68. fieldset.style.position = 'fixed'; // Usa 'fixed' invece di 'absolute'
  69. fieldset.style.top = '5px'; // Posizione iniziale
  70. fieldset.style.left = '850px'; // Posizione iniziale
  71. fieldset.style.zIndex = '99999'; // Imposta un indice z elevato per assicurarti che sia sopra agli altri elementi
  72. fieldset.style.background = '#3b3b3b';
  73. fieldset.style.color = 'lime';
  74. fieldset.style.padding = '';//10px risultava un po grande
  75. fieldset.style.border = '2px solid red';
  76. fieldset.style.borderRadius = '5px';
  77. fieldset.style.width='390px';
  78. fieldset.style.display='flex';
  79.  
  80. var button = document.createElement('button');
  81. button.textContent = 'Ricarica';
  82. button.id = 'ricarica';
  83. button.style.color = 'lime'; // Colore rosso per il testo del pulsante
  84. button.style.backgroundColor = '#3b3b3b'; // Background lime per il pulsante
  85. button.style.cursor='pointer';
  86. button.title='Ricarica';
  87. button.style.border = '1px solid yellow';
  88. button.style.borderRadius = '5px';
  89. button.style.marginLeft = '9px';// Aggiungere il margine sinistro per distanziarlo
  90. button.style.padding='4px';//padding sul pulsante ricarica
  91.  
  92. //Aggiunto un div vuoto per lo spazio tra lorologio e il menu
  93. fieldset.innerHTML = '<legend style="text-align:center;">Data-Time </legend><div id="clock"></div><div style="width:10px;"></div>'; // Aggiunto un div vuoto per lo spazio
  94.  
  95. ///////////////////////////
  96. var selectMenu = document.createElement('select');
  97. selectMenu.innerHTML ='<option value="#">Scegli ...</option>'+
  98. '<option style="background-color:Green" title="Vai su facebook" value="https://www.facebook.com/">Facebook</option>' +
  99. '<option style="background-color:Brown" title="Vai su youtube" value="https://www.youtube.com/">Youtube</option>' +
  100. '<option style="background-color:Red" title="Vedi altri script" value="https://greasyfork.org/it/users/237458-figuccio">Autore</option>';
  101.  
  102. selectMenu.addEventListener('change', function() {
  103. var selectedOption = this.options[this.selectedIndex];
  104. //location.href = selectedOption.value;//apre nella stessa scheda
  105. window.open(selectedOption.value, '_blank');//apre in una nuova scheda
  106. });
  107.  
  108. fieldset.appendChild(selectMenu);
  109. // Aggiungi questo codice dopo la creazione del menu select
  110. selectMenu.style.background = '#3b3b3b';
  111. selectMenu.style.color = 'lime';
  112. selectMenu.style.border = '1px solid yellow';
  113. selectMenu.style.borderRadius = '5px';
  114. selectMenu.style.cursor = 'pointer';
  115. selectMenu.title = "Menù";//titolo sul menu di scelta
  116.  
  117. fieldset.appendChild(button);
  118.  
  119. // Aggiungi l'evento click per ricaricare la pagina
  120. button.addEventListener('click', function() {
  121. location.reload(true);
  122. });
  123. //////////////////// x
  124. // Aggiungi il testo per chiudere l'orologio
  125. var closeClock = document.createElement('span');
  126. closeClock.id = 'closeClock';
  127. closeClock.title = 'Chiudi';
  128. closeClock.style.cursor = 'pointer';
  129. closeClock.style.color = 'lime';
  130. closeClock.style.background = 'chocolate';
  131. closeClock.style.border = '1px solid yellow';
  132. closeClock.style.borderRadius = '4px';
  133. closeClock.style.padding = '3px 6px';
  134. closeClock.style.marginLeft = '9px';// Aggiungere il margine sinistro per distanziarlo
  135. closeClock.textContent = 'x';
  136.  
  137. closeClock.addEventListener('click', function() {
  138. fieldset.style.visibility = 'hidden';
  139. });
  140.  
  141. fieldset.appendChild(closeClock);
  142. //////////////////////
  143. document.body.appendChild(fieldset);
  144. updateClock();
  145. setInterval(updateClock, 70); // Aggiorna l'orologio ogni 100 millisecondi
  146. /////////////////
  147. // Gestore di eventi per nascondere l'elemento quando l'icona viene cliccata
  148. document.getElementById('closeClock').addEventListener('click', function() {
  149. fieldset.style.visibility = 'hidden';//funziona impedisce che il menu cambi la posizione se mostrato nascosto
  150. });
  151. }
  152.  
  153. //////////////////////////
  154. // Aggiorna l'orologio
  155. function updateClock() {
  156. var d = new Date();
  157. var tem = d.toLocaleTimeString();
  158. var mm = d.getMilliseconds();//millisecondi settembre 2023
  159. ////////////////short long
  160. var date = new Date().toLocaleString('it', {'weekday': 'short', 'month': '2-digit', 'day': '2-digit','year':'numeric'});
  161. document.getElementById('clock').innerHTML =date +" "+ tem +":"+ mm;
  162. //////////////////////////
  163. // Aggiunta del bordo e del bordo arrotondato
  164. var clockElement = document.getElementById('clock');
  165. clockElement.style.border = '1px solid yellow';
  166. clockElement.style.borderRadius = '7px';
  167. clockElement.style.color = '';
  168. clockElement.style.cursor = 'pointer';
  169. clockElement.title = "Data-Ora";
  170. clockElement.style.padding='4px';//varia il padding delorologio e del menu scegli
  171. /////////////////////
  172. }
  173.  
  174. // Rendi il fieldset dragabile
  175. function makeClockDraggable() {
  176. $('#clockFieldset').draggable({
  177. containment: 'window',
  178. stop: function(event, ui) {
  179. var position = ui.position;
  180. GM_setValue('clockPosition', JSON.stringify(position)); // Salva la posizione
  181. }
  182. });
  183.  
  184. // Ripristina la posizione memorizzata
  185. var storedPosition = GM_getValue('clockPosition');
  186. if (storedPosition) {
  187. var position = JSON.parse(storedPosition);
  188. $('#clockFieldset').css({ top: position.top + 'px', left: position.left + 'px' });
  189. }
  190. }
  191.  
  192. //disable safesearch
  193. function disableSafesearch() {
  194. var safeui = document.querySelector("a[aria-label][href*='setprefs?sig']");
  195. if(safeui != null){
  196. if(safeui.href.match(/safeui=off$/) == null){
  197. window.location = safeui.href.replace(/safeui=(on|images)$/,"safeui=off");
  198. console.log("Google disable safesearch: done!");
  199. } else {
  200. console.log("Google disable safesearch: nothing to do!");
  201. }
  202. } else {
  203. safeui = document.querySelector("a[href*='setprefs?sig'][href$='safeui=off']");
  204. if(safeui != null) {
  205. window.location = safeui.href;
  206. console.log("Google disable safesearch: done!");
  207. } else {
  208. if(document.querySelector("a[href*='setprefs?sig'][href$='safeui=on']") != null){
  209. console.log("Google disable safesearch: nothing to do!");
  210. } else {
  211. console.log("Google disable safesearch: failed!");
  212. }
  213. }
  214. }
  215. }
  216. })();
  217. /////////////////////////////////////////////////////////////////////////
  218. //popup accedi a google (invasivo)settembre 2023
  219. GM_addStyle(".nD2EKb{display:none!important;}");
  220. //Filtro alcuni risultati potrebbero essere espliciti click automatico su ignora
  221. setTimeout(function(){document.querySelector("#appbar > div.zNFAfd > div > div.zRHtD > div.O6QT3d > div > div").click();},1000);//8marzo 2023
  222. // Show the Search Tools menu
  223. GM_addStyle("#hdtbMenus{display:block !important;position:absolute !important;top:8px !important;right:500px!important;}");//giugno 2023 riposizionato
  224. GM_addStyle("#result-stats{display:none!important;}");/* Circa 261.000.000 risultati (0,61 secondi) nascosto */
  225.  
  226. //pulsante Strumenti di ricerca rosso
  227. GM_addStyle("#hdtb-tls {color:red!important;background:green!important;border-radius:12px;border:2px solid red!important}");
  228. GM_addStyle("#hdtb-tls:hover{color:gold!important;}");
  229. //pulsante tutti i filtri
  230. GM_addStyle(".fKmH1e {color:red!important;background:green!important;border-radius:12px;border:2px solid red!important;height:36px;}");//pulsante tutti i filtri
  231. GM_addStyle(".fKmH1e:hover{color:gold!important;}");
  232. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  233. //safesearch
  234. GM_addStyle(".F75bid {color:red!important;}");//link
  235. GM_addStyle(".F75bid:hover {color:gold!important;}");//al passaggio mouse
  236. GM_addStyle(".fFI3rb {background:green!important;border-radius:10px;border:2px solid red!important;}");//background
  237. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  238. GM_addStyle('.IUOThf{background-color:#303134!important;width:723px;border-radius:12px;border:2px solid red!important}');
  239. //colore link immag notiz libri mappe
  240. GM_addStyle('.GKS7s .FMKtTb, .GKS7s .RWhoyd.mol54e{color:red!important;}');
  241. //al passaggio mouse link
  242. GM_addStyle('.GKS7s :hover {color:green!important;}');
  243. GM_addStyle('.GKS7s{background:gold!important;border:2px solid blue!important;}');
  244. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  245. //colori testo strumenti colore verde Search Tools (qualsiasi paese-lingua -data-tutti i risultati)
  246. GM_addStyle('.hdtb-mn-hd {color:green!important;background:gold!important;border-radius:9px;border:2px solid blue!important}');
  247. //link espansione strumenti colore verde che diventa rosso al passaggio mouse
  248. GM_addStyle('.hdtb-mn-hd:hover {color:red!important}');
  249. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  250. //topbar espansioni strumenti colorata Search Tools
  251. GM_addStyle('.WE0UJf {background:#303134!important;width:700px;border-radius:12px;border:1px solid red!important}');//ok
  252. //pulsante tutti
  253. GM_addStyle('#hdtb-msb .hdtb-mitem.hdtb-msel{color:red!important;background:orange!important;border-radius:8px;border:2px solid green!important;padding:4px 4px;border-bottom:6px solid blue!important}');
  254. //triangolini rossi
  255. GM_addStyle('.gTl8xb {border-color:red transparent!important}');
  256. //menu colorato
  257. GM_addStyle('.cF4V5c {color:lime!important;background:red !important;}');
  258. GM_addStyle('.cF4V5c {border:2px solid blue!important}');//bordo blu
  259.  
  260. //no publicita correlate
  261. GM_addStyle('#rcnt .col:nth-of-type(3) {display:none !important;}');
  262.  
  263. //le persone anno chiesto anche
  264. GM_addStyle('.OJXvsb.Wnoohf.cUnQKe.kp-blk {display:none !important;}');
  265.  
  266. //Promemoria sulla privacy di Google
  267. GM_addStyle('#cnsh,#cnso,#cnsi{display:none!important}');
  268. //////////////////////////////////////////////////aggiunto youtube
  269. process();
  270. new MutationObserver(process).observe(document.body || document.documentElement, { childList: true, subtree: true });
  271.  
  272. function process(mutations) {
  273. let q,
  274. queryElement = document.querySelector('input[name="q"]');// selector for the Google search input textbox
  275.  
  276. if (queryElement?.value) q = encodeURIComponent(queryElement.value);
  277. else if (q = location.href.match(/^.+?(?:[#/&?](?:q|query))=(.+?)(?:|&.+|\|.+)$/)) q = q[1];
  278.  
  279. let link = document.querySelector(`a[href*='tbm=vid']`);
  280.  
  281. if (q && link?.href) {
  282. link.href = 'https://www.youtube.com/results?search_query=' + q;
  283. link.textContent = 'YouTube';
  284. /////////////////////
  285. link.style.backgroundColor = 'yellow';
  286. link.style.color = 'red';
  287. link.style.borderRadius = '12px';
  288. link.style.border = '2px solid blue';
  289. link.style.padding = '9px';
  290. // Aggiungi l'effetto al passaggio del mouse
  291. link.addEventListener('mouseover', function () {
  292. this.style.color = 'green';
  293. });
  294. // Reimposta il colore quando il mouse se ne va
  295. link.addEventListener('mouseout', function () {
  296. this.style.color = 'red';
  297. });
  298.  
  299. ////////////////////
  300. console.log('create', link.textContent);
  301. }
  302. }
  303. ///ricerche correlate
  304. GM_addStyle('#brs {display:none !important;}');
  305. GM_addStyle('.commercial-unit-desktop-top {display:none !important;}');
  306.  
  307. ////////////////////////////////
  308. //di nuovo publicita e correlati a destra
  309. GM_addStyle('#rhs {display:none!important;}');
  310. GM_addStyle('.YTDezd {display:none!important;}');
  311. /////////////////////////////////////////////////
  312. (function() {
  313. 'use strict';
  314. if (GM_getValue('Open in new window?') === undefined)
  315. { //Avvia la condizione if
  316.  
  317. GM_setValue('Open in new window?', 1); //Imposta lo script per aprire i siti Web in una nuova scheda 1 apre 0 no
  318. } //Termina la condizione if
  319.  
  320. if (location.pathname === '/search' && location.href.match('&newwindow=' + GM_getValue('Open in new window?')) === null) //If the current search doesn't have the user choices applied
  321. { //Avvia la condizione if
  322. location.href = location.href += '&newwindow=' + GM_getValue('Open in new window?'); //Reindirizza per aggiungere le scelte dell'utente
  323. } //Termina la condizione if
  324. ////////////////////////
  325. //mostra/nascondi box
  326. function provag() {
  327. var box = document.getElementById('clockFieldset');
  328. box.style.visibility = (box.style.visibility !== 'hidden') ? 'hidden' : 'visible';
  329. }
  330. GM_registerMenuCommand("nascondi/mostra time", provag);
  331.  
  332. })();
  333.