Google Search - Time selections and EU popup

Add extra time ranges to Google Search (from 6 hours to 8 years), and as an aside, always show tools and remove any search result redirects (Search engine only) if nothing else has removed them.

  1. // ==UserScript==
  2. // @name Google Search - Time selections and EU popup
  3. // @namespace thing123
  4. // @include *://*.google.*/*
  5. // @exclude *://mail.*
  6. // @require http://code.jquery.com/jquery-latest.min.js
  7. // @grant none
  8. // @run-at document-start
  9. // @description Add extra time ranges to Google Search (from 6 hours to 8 years), and as an aside, always show tools and remove any search result redirects (Search engine only) if nothing else has removed them.
  10. // @version 2
  11. // ==/UserScript==
  12.  
  13. // handle loading state when it happens
  14. if (document.readyState == "loading") {
  15. is_loading();
  16. }
  17. //and trap future states...
  18. document.onreadystatechange=function(){
  19. if (document.readyState == "interactive") {
  20. is_interactive(); // interactive
  21. }
  22. if (document.readyState == "complete") {
  23. is_complete(); // complete
  24. }
  25. }
  26. document.addEventListener ("DOMContentLoaded", is_complete);
  27. window.addEventListener ("load", is_complete);
  28.  
  29.  
  30.  
  31. function is_loading() {
  32. // alert("loading...");
  33. //jQuery('head').html(do_HTML_regex_edits(jQuery('head').html()));
  34. //alert(s);
  35. // alert (document.documentElement.outerHTML);
  36. }
  37.  
  38. function is_interactive() {
  39. // interactive
  40. //alert("interactive...");
  41. // alert (document.documentElement.outerHTML);
  42.  
  43. do_jQuery_edits();
  44. //jQuery('head').html(do_HTML_regex_edits(jQuery('head').html()));
  45. //jQuery('body').html(do_HTML_regex_edits(jQuery('body').html()));
  46.  
  47. // alert("After interactive:\n" + jQuery('head').html());
  48. }
  49.  
  50. function is_complete() {
  51. // complete
  52. // alert("complete...");
  53. // alert (document.documentElement.outerHTML);
  54.  
  55. do_jQuery_edits();
  56. //jQuery('head').html(do_HTML_regex_edits(jQuery('head').html()));
  57. //jQuery('body').html(do_HTML_regex_edits(jQuery('body').html()));
  58.  
  59. // alert("After complete:\n" + jQuery('head').html());
  60. }
  61.  
  62.  
  63. function do_jQuery_edits() {
  64. // jQuery('#search *').removeAttr('onmouseover');
  65. // jQuery('#search *').removeAttr('onmouseout');
  66. // jQuery('#search *').removeAttr('onclick');
  67. // jQuery('#search *').off('click');
  68. // jQuery('#search div').bind('amodaldestroy', function(e){
  69. // e.stopPropagation();
  70. // });
  71.  
  72. jQuery('#search a').removeAttr('onmousedown').removeAttr('onmouseover').removeAttr('onmouseout').removeAttr('onclick');
  73. jQuery('#taw').remove();
  74. jQuery('#cnsi').remove();
  75. jQuery('#cnso').remove();
  76. jQuery('#hdtbMenus').attr('aria-expanded', 'true').attr('class', 'hdtb-td-o');
  77. if (jQuery('#qdr_h').html() !== undefined) {
  78. var list = new Array;
  79. list[0] = ['h','Past hour'];
  80. list[1] = ['h6','Past 6 hours'];
  81. list[2] = ['h26','Past 24 hours (same time yesterday)'];
  82. list[3] = ['d','Past day'];
  83. list[4] = ['SEP'];
  84. list[5] = ['w','Past week'];
  85. list[6] = ['m','Past month'];
  86. list[7] = ['m3','Past 3 months'];
  87. list[8] = ['m6','Past 6 months'];
  88. list[9] = ['m9','Past 9 months'];
  89. list[10] = ['SEP'];
  90. list[11] = ['y','Past year'];
  91. list[12] = ['m18','Past 18 months'];
  92. list[13] = ['y2','Past 2 years'];
  93. list[14] = ['y3','Past 3 years'];
  94. list[15] = ['y5','Past 5 years'];
  95. list[16] = ['y8','Past 8 years'];
  96. var line_tplt = jQuery('#qdr_h').prop('outerHTML');
  97. var to_add = '';
  98. for (var ii=0; ii < list.length; ii++) {
  99. if (list[ii][0] == 'SEP') {
  100. to_add += '<div class="cdr_sep"></div>';
  101. } else {
  102. to_add += line_tplt.replace('qdr_h', 'qdr_' + list[ii][0]).replace('qdr:h', 'qdr:' + list[ii][0]).replace('>Past hour</a>', '>' + list[ii][1] + '</a>');
  103. }
  104. }
  105. var to_rmv = ['h','d','w','m','y'];
  106. for (var ii=0; ii < to_rmv.length; ii++) {
  107. jQuery('#qdr_' + to_rmv[ii]).remove();
  108. }
  109. jQuery('.modded').remove();
  110. jQuery('#qdr_').after('<span class="modded">' + to_add + '</span>');
  111. $.removeCookie('CONSENT', { path: '/' });
  112. }
  113. }
  114.  
  115. function do_HTML_regex_edits(s) {
  116. // alert(s);
  117. // s = s.replace(/(on)?(mousedown|mouseover|mouseout|click|keydown|keyup|keypress)\s*=\s*['"][^'"]+['"]/g, '');
  118. // s = s.replace(/(\.hdtb-td-h\s*\{[^}]*)display\s*:\s*none([^}]*\})/g, '$1 display:block $2');
  119. // console.log(s);
  120. // s = s.replace(/hdtb-td-h/g, 'hdtb-td-hx');
  121. alert("ping!");
  122. return s;
  123. }
  124.