"Search with Reddit" on Google

Adds a button to search Reddit posts with Google (inspired from Mario Ortiz)

目前为 2024-09-11 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name "Search with Reddit" on Google
  3. // @version 1.0
  4. // @description Adds a button to search Reddit posts with Google (inspired from Mario Ortiz)
  5. // @author Mael Primet
  6. // @include http*://www.google.*/search*
  7. // @include http*://google.*/search*
  8. // @icon https://www.google.com/images/branding/googleg/1x/googleg_standard_color_128dp.png
  9. // @license MIT
  10. // @run-at document-end
  11. // @namespace https://greasyfork.org/users/1366101
  12. // ==/UserScript==
  13.  
  14. const queryRegex = /q=[^&]+/g;
  15. const siteRegex = /\+site(?:%3A|\:).+\.[^&+]+/g;
  16. const redditUrl = '+site%3Areddit.com';
  17. let redditIcon = '<svg foscusable="false" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><g style="fill:white"><path d="M0 7.59c.1-.26.15-.54.28-.77.57-1 1.83-1.29 2.79-.67.09.06.15.06.24 0A8.94 8.94 0 017.5 5c.1 0 .15-.04.19-.14l1.17-3.32.05-.15 1.23.3c.56.12 1.12.25 1.68.4.1.02.15 0 .2-.09a1.66 1.66 0 013.06 1.02c-.06.8-.72 1.46-1.5 1.52-.85.06-1.6-.47-1.77-1.28-.04-.17-.1-.23-.27-.27L9.54 2.5l-.88 2.48c.37.05.72.08 1.07.14 1.05.17 2.04.5 2.96 1.04.09.05.14.05.23 0a1.99 1.99 0 012.34 3.2c-.04.04-.08.11-.08.17a3.67 3.67 0 01-.9 2.73 6.36 6.36 0 01-2.9 1.92c-2.47.86-4.93.8-7.35-.22a5.89 5.89 0 01-2.48-1.9A3.56 3.56 0 01.8 9.5c0-.04 0-.1-.03-.11a2.1 2.1 0 01-.76-1.32v-.01-.47zm7.72 6.22c1.5 0 2.67-.21 3.73-.66a5.2 5.2 0 002.15-1.54c.83-1.06.85-2.3.06-3.38-.4-.56-.93-.97-1.52-1.3a8.15 8.15 0 00-3.44-.97 9.04 9.04 0 00-4.17.63c-.83.35-1.58.82-2.15 1.54a2.66 2.66 0 00-.08 3.38c.41.57.95.99 1.55 1.32 1.29.7 2.68.97 3.87.98zm5.7-11.63a.7.7 0 00-.7.7c0 .39.32.7.7.71a.7.7 0 00.72-.72.7.7 0 00-.72-.7zm1.44 6.2a1 1 0 00-.05-1.22c-.29-.34-.79-.48-1.14-.3.49.43.9.92 1.19 1.53zM1.12 8.38c.3-.6.7-1.09 1.19-1.52-.35-.16-.81-.03-1.1.29-.3.33-.34.83-.09 1.23z"/><path d="M7.98 13.1a4.77 4.77 0 01-1.99-.45 3.58 3.58 0 01-.65-.45c-.24-.2-.24-.5-.04-.7.19-.2.47-.19.7.01.33.3.73.44 1.16.52.76.14 1.52.11 2.24-.17.24-.1.45-.24.66-.38.22-.16.5-.16.68.03.18.2.17.5-.04.68-.43.39-.95.62-1.5.73-.4.08-.81.12-1.22.18zM11.67 9.04a1.3 1.3 0 01-2.6 0 1.3 1.3 0 012.6 0zM4.46 9.04c0-.73.6-1.3 1.32-1.3a1.3 1.3 0 11-1.32 1.3z"/></g></svg>';
  18.  
  19. if (typeof trustedTypes !== 'undefined') {
  20. const policy = trustedTypes.createPolicy('html', { createHTML: input => input });
  21. redditIcon = policy.createHTML(redditIcon);
  22. }
  23.  
  24. (function () {
  25. // Creating the 'Search on Reddit' button
  26. const div = document.createElement('div');
  27. div.style.cssText = "display:flex;flex-direction:column;align-items:center;"
  28. const link = document.createElement('a');
  29. link.className = 'reddit-search-btn';
  30. const span = document.createElement('span');
  31.  
  32. // Set up the SVG icon
  33. span.style.cssText = 'height:16px;width:16px;margin-right:8px;display:inline-block;';
  34. span.innerHTML = redditIcon;
  35.  
  36. // Add the icon and the text to the link
  37. div.appendChild(link);
  38. link.appendChild(span);
  39. link.appendChild(document.createTextNode('Search on Reddit'));
  40. link.href = window.location.href.replace(queryRegex, (match) => {
  41. return match.search(siteRegex) >= 0 ? match.replace(siteRegex, redditUrl) : match + redditUrl;
  42. });
  43.  
  44. // Insert the button after the .logo element
  45. const insertEl = document.querySelector('.main');
  46. insertEl.parentNode.insertBefore(div, insertEl);
  47.  
  48. // Add external CSS styling via <style> element
  49. const style = document.createElement('style');
  50. style.innerHTML = `
  51. a.reddit-search-btn {
  52. margin: 0 auto;
  53. background-color: #FF5700;
  54. border-radius: 8px;
  55. padding: 10px 20px;
  56. color: white;
  57. text-decoration: none;
  58. font-family: sans-serif;
  59. font-size: 14px;
  60. font-weight: bold;
  61. cursor: pointer;
  62. margin: 10px 0;
  63. box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  64. }
  65.  
  66. a.reddit-search-btn:hover {
  67. background-color: #FF7F50;
  68. text-decoration: underline;
  69. }
  70. `;
  71. document.head.appendChild(style);
  72. })();