Google 高级搜索助手

在谷歌搜索页面顶部添加一个高级搜索表单

  1. // ==UserScript==
  2. // @name Advanced Search Assistant for Google
  3. // @name:zh-CN Google 高级搜索助手
  4. // @description:zh-CN 在谷歌搜索页面顶部添加一个高级搜索表单
  5. // @name:ar Google مساعد البحث المتقدم
  6. // @description:ar أضف نموذج بحث متقدم إلى أعلى صفحة بحث Google الخاصة بك
  7. // @name:bg Google Помощник за разширено търсене
  8. // @description:bg Добавете формуляр за разширено търсене в горната част на вашата страница за търсене в Google
  9. // @name:cs Google Pokročilý asistent vyhledávání
  10. // @description:cs Přidejte formulář pro pokročilé vyhledávání do horní části stránky vyhledávání Google
  11. // @name:da Google Avanceret søgeassistent
  12. // @description:da Tilføj en avanceret søgeformular øverst på din Google-søgeside
  13. // @name:de Google Erweiterter Suchassistent
  14. // @description:de Fügen Sie oben auf Ihrer Google-Suchseite ein erweitertes Suchformular hinzu
  15. // @name:el Google Βοηθός σύνθετης αναζήτησης
  16. // @description:el Προσθέστε μια φόρμα σύνθετης αναζήτησης στην κορυφή της σελίδας αναζήτησης Google
  17. // @name:en Google Advanced search assistant
  18. // @description:en Add an advanced search form to the top of your Google search page
  19. // @name:eo Google Altnivela serĉa asistanto
  20. // @description:eo Aldonu altnivelan serĉformularon al la supro de via serĉpaĝo de Guglo
  21. // @name:es Google asistente de búsqueda avanzada
  22. // @description:es Agregue un formulario de búsqueda avanzada en la parte superior de su página de búsqueda de Google
  23. // @name:fi Google Tarkennettu hakuavustaja
  24. // @description:fi Lisää tarkennettu hakulomake Google-hakusivusi yläosaan
  25. // @name:fr Google Assistant de recherche avancée
  26. // @description:fr Ajoutez un formulaire de recherche avancée en haut de votre page de recherche Google
  27. // @name:he Google עוזר חיפוש מתקדם
  28. // @description:he הוסף טופס חיפוש מתקדם לראש דף החיפוש שלך בגוגל
  29. // @name:hr Google Pomoćnik za napredno pretraživanje
  30. // @description:hr Dodajte obrazac za napredno pretraživanje na vrh svoje stranice Google pretraživanja
  31. // @name:hu Google Speciális keresési asszisztens
  32. // @description:hu Adjon hozzá egy speciális keresési űrlapot a Google keresési oldalának tetejére
  33. // @name:id Google Asisten pencarian lanjutan
  34. // @description:id Tambahkan formulir pencarian lanjutan ke bagian atas halaman pencarian Google Anda
  35. // @name:it Google Assistente di ricerca avanzata
  36. // @description:it Aggiungi un modulo di ricerca avanzata nella parte superiore della pagina di ricerca di Google
  37. // @name:ja Google 高度な検索アシスタント
  38. // @description:ja Google 検索ページの上部に高度な検索フォームを追加します
  39. // @name:ka Google გაფართოებული საძიებო ასისტენტი
  40. // @description:ka დაამატეთ გაფართოებული საძიებო ფორმა თქვენი Google ძიების გვერდის ზედა ნაწილში
  41. // @name:ko Google 고급 검색 도우미
  42. // @description:ko Google 검색 페이지 상단에 고급 검색 양식을 추가하세요.
  43. // @name:nl Google Geavanceerde zoekassistent
  44. // @description:nl Voeg een geavanceerd zoekformulier toe bovenaan uw Google-zoekpagina
  45. // @name:nb Google Avansert søkeassistent
  46. // @description:nb Legg til et avansert søkeskjema øverst på Google-søkesiden din
  47. // @name:pl Google Zaawansowany asystent wyszukiwania
  48. // @description:pl Dodaj formularz wyszukiwania zaawansowanego na górze strony wyszukiwania Google
  49. // @name:pt-BR Google Assistente de pesquisa avançada
  50. // @description:pt-BR Adicione um formulário de pesquisa avançada ao topo da sua página de pesquisa do Google
  51. // @name:ro Google Asistent de căutare avansată
  52. // @description:ro Adăugați un formular de căutare avansată în partea de sus a paginii dvs. de căutare Google
  53. // @name:ru Google Расширенный помощник поиска
  54. // @description:ru Добавьте форму расширенного поиска в верхнюю часть страницы поиска Google.
  55. // @name:sk Google Pokročilý asistent vyhľadávania
  56. // @description:sk Pridajte formulár rozšíreného vyhľadávania do hornej časti stránky vyhľadávania Google
  57. // @name:sr Google Помоћник за напредну претрагу
  58. // @description:sr Додајте образац за напредну претрагу на врх ваше странице Гоогле претраге
  59. // @name:sv Google Avancerad sökassistent
  60. // @description:sv Lägg till ett avancerat sökformulär överst på din Google-söksida
  61. // @name:th Google ผู้ช่วยการค้นหาขั้นสูง
  62. // @description:th เพิ่มแบบฟอร์มการค้นหาขั้นสูงที่ด้านบนของหน้าการค้นหาของ Google
  63. // @name:tr Google Gelişmiş arama asistanı
  64. // @description:tr Google arama sayfanızın üst kısmına gelişmiş bir arama formu ekleyin
  65. // @name:ug Google ئىلغار ئىزدەش ياردەمچىسى
  66. // @description:ug Google ئىزدەش بېتىڭىزنىڭ ئۈستىگە ئىلغار ئىزدەش جەدۋىلىنى قوشۇڭ
  67. // @name:uk Google Розширений пошуковий помічник
  68. // @description:uk Додайте форму розширеного пошуку у верхній частині сторінки пошуку Google
  69. // @name:vi Google Trợ lý tìm kiếm nâng cao
  70. // @description:vi Thêm biểu mẫu tìm kiếm nâng cao vào đầu trang tìm kiếm Google của bạn
  71. // @name:zh-TW Google 高級搜尋助手
  72. // @description:zh-TW 在谷歌搜尋頁面頂部新增一個高級搜尋表單
  73. // @name:zh-HK Google 高級搜尋助手
  74. // @description:zh-HK 在谷歌搜尋頁面頂部新增一個高級搜尋表單
  75. // @name:fr-CA Google Assistant de recherche avancée
  76. // @description:fr-CA Ajoutez un formulaire de recherche avancée en haut de votre page de recherche Google
  77. // @namespace https://github.com/ChinaGodMan/UserScripts
  78. // @version 0.1.9.45
  79. // @description Add an advanced search form to the top of the page
  80. // @author shiquda &人民的勤务员 <china.qinwuyuan@gmail.com>
  81. // @match *://www.google.com/search*
  82. // @include *://*google*/search*
  83. // @grant GM_addStyle
  84. // @grant GM_setValue
  85. // @grant GM_getValue
  86. // @license MIT
  87. // @icon data:image/png;base64,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
  88. // @iconbak https://github.com/ChinaGodMan/UserScripts/raw/main/docs/icon/Scripts%20Icons/Google-advance-search.png
  89. // @supportURL https://github.com/ChinaGodMan/UserScripts/issues
  90. // @homepageURL https://github.com/ChinaGodMan/UserScripts
  91. // ==/UserScript==
  92.  
  93. (function () {
  94. 'use strict'
  95. let isMobile = false
  96. if (
  97. navigator.userAgent.match(/Android/i) ||
  98. navigator.userAgent.match(/webOS/i) ||
  99. navigator.userAgent.match(/iPhone/i) ||
  100. navigator.userAgent.match(/iPad/i) ||
  101. navigator.userAgent.match(/iPod/i) ||
  102. navigator.userAgent.match(/BlackBerry/i) ||
  103. navigator.userAgent.match(/Windows Phone/i)
  104. ) {
  105. // On mobile device
  106. isMobile = true
  107. }
  108.  
  109. let isDarkMode = false
  110.  
  111. try {
  112. if (
  113. window.matchMedia &&
  114. window.matchMedia('(prefers-color-scheme: dark)').matches
  115. ) {
  116. // Dark mode is enabled
  117. isDarkMode = true
  118. console.log('Dark mode is enabled.')
  119. }
  120. } catch (error) {
  121. console.log('Failed to determine the color mode.', error)
  122. }
  123.  
  124. const userLanguage = '' // You can set your language config here manually. 'zh-CN' & 'en' are supported now.
  125.  
  126. const supportedLanguages = ['zh-CN', 'en']
  127.  
  128. const translation = {
  129. as_q: {
  130. 'zh-CN': '搜索字词:',
  131. en: 'Search word:'
  132. },
  133. as_epq: {
  134. 'zh-CN': '与以下字词完全匹配:',
  135. en: 'Match the following words exactly:'
  136. },
  137. as_oq: {
  138. 'zh-CN': '包含以下任意字词:',
  139. en: 'Contains any of the following words:'
  140. },
  141. as_eq: {
  142. 'zh-CN': '排除以下字词:',
  143. en: 'Exclude the following words:'
  144. },
  145. as_nlo: {
  146. 'zh-CN': '包含的数字范围:从',
  147. en: 'Number range: from'
  148. },
  149. as_nhi: {
  150. 'zh-CN': '到:',
  151. en: 'to:'
  152. },
  153. lr: {
  154. 'zh-CN': '语言:',
  155. en: 'Language:'
  156. },
  157. cr: {
  158. 'zh-CN': '地区:',
  159. en: 'Region:'
  160. },
  161. as_qdr: {
  162. 'zh-CN': '最后更新时间:',
  163. en: 'Last update time:'
  164. },
  165. as_sitesearch: {
  166. 'zh-CN': '网站或域名:',
  167. en: 'Website or domain:'
  168. },
  169. as_occt: {
  170. 'zh-CN': '字词出现位置:',
  171. en: 'Word position:'
  172. },
  173. as_filetype: {
  174. 'zh-CN': '文件类型:',
  175. en: 'File type:'
  176. },
  177. tbs: {
  178. 'zh-CN': '使用权限:',
  179. en: 'Usage rights:'
  180. },
  181. advancedSearch: {
  182. 'zh-CN': '高级搜索',
  183. en: 'Advanced Search'
  184. },
  185. search: {
  186. 'zh-CN': '搜索',
  187. en: 'Search'
  188. },
  189. clear: {
  190. 'zh-CN': '清空',
  191. en: 'Clear'
  192. },
  193. as_qdr_select: {
  194. '': {
  195. 'zh-CN': '请选择',
  196. en: 'Please select'
  197. },
  198. d: {
  199. 'zh-CN': '一天内',
  200. en: 'Past 24 hours'
  201. },
  202. w: {
  203. 'zh-CN': '一周内',
  204. en: 'Past week'
  205. },
  206. m: {
  207. 'zh-CN': '一月内',
  208. en: 'Past month'
  209. },
  210. y: {
  211. 'zh-CN': '一年内',
  212. en: 'Past year'
  213. }
  214. },
  215. as_occt_select: {
  216. '': {
  217. 'zh-CN': '请选择',
  218. en: 'Please select'
  219. },
  220. title: {
  221. 'zh-CN': '网页标题中',
  222. en: 'In the title of the web page'
  223. },
  224. body: {
  225. 'zh-CN': '网页正文中',
  226. en: 'In the body of the web page'
  227. },
  228. url: {
  229. 'zh-CN': '网页网址中',
  230. en: 'In the URL of the web page'
  231. },
  232. links: {
  233. 'zh-CN': '指向网页的链接中',
  234. en: 'In the links to the web page'
  235. }
  236. }
  237. }
  238. const style = `
  239. #advancedSearchToggleButton {
  240. margin-right: 10px;
  241. border: none;
  242. border-radius: 5px;
  243. background-color: #007bff;
  244. color: #fff;
  245. font-size: 14px;
  246. font-weight: bold;
  247. margin: 10px;
  248. }
  249.  
  250.  
  251. #advancedSearchFormContainer {
  252. position: fixed;
  253. ${isMobile ? 'top: 150px;' : 'top: 130px;'}
  254. ${isMobile ? 'left: 15px;' : 'left: 30px;'}
  255. display: none;
  256. padding: 10px;
  257. border: 1px solid #ccc;
  258. border-radius: 5px;
  259. font-size: 14px;
  260. font-weight: bold;
  261. ${isDarkMode
  262. ? 'background-color: rgba(0, 0, 0, 1);'
  263. : 'background-color: rgba(255, 255, 255, 1);'
  264. }
  265. ${isMobile ? 'column-count: 2;' : ''} /* 在移动设备上分为两列 */
  266. z-index: 1000; // Make sure the button is on top of the search bar
  267. }
  268.  
  269.  
  270. #advancedSearchFormContainer label {
  271. display: block;
  272. margin-top: 5px;
  273. }
  274.  
  275.  
  276. #advancedSearchFormContainer input[type="text"] {
  277. margin-top: 5px;
  278. padding: 5px;
  279. border: 1px solid #ccc;
  280. border-radius: 5px;
  281. }
  282.  
  283. #advancedSearchFormContainer select {
  284. margin-top: 5px;
  285. padding: 5px;
  286. border-radius: 5px;
  287. }
  288.  
  289. #advancedSearchFormContainer button {
  290. border: none;
  291. border-radius: 5px;
  292. background-color: #007bff;
  293. color: #fff;
  294. font-size: 14px;
  295. font-weight: bold;
  296. margin: 20px;
  297. }
  298. `
  299. GM_addStyle(style)
  300.  
  301. let language = 'en'
  302. if (userLanguage.length > 0) { // userLanguage is set manually
  303. if (supportedLanguages.includes(userLanguage)) {
  304. language = userLanguage
  305. } else {
  306. console.log(`Unsupported language: ${userLanguage}`)
  307. }
  308. } else {
  309. // Check if any of the user's preferred languages are supported
  310. language =
  311. navigator.languages
  312. .map((lang) => lang.split('-')[0]) // Consider only the language part, not the region
  313. .map((lang) => supportedLanguages.find((supportedLang) => supportedLang.split('-')[0] === lang)) // Match with the supported languages
  314. .filter(Boolean) // Remove undefined values
  315. .shift() // Take the first matched language
  316. || 'en' // Default to 'en' if no match found
  317. console.log(`Here is the language: ${language}`)
  318. }
  319.  
  320. // Create user interface
  321. const toggleButton = document.createElement('button')
  322. toggleButton.className = 'nfSF8e'
  323. toggleButton.textContent = translation['advancedSearch'][language]
  324. toggleButton.id = 'advancedSearchToggleButton'
  325. if (isMobile) {
  326. document.querySelector('.Fh5muf').appendChild(toggleButton)
  327. } else {
  328. document.querySelector('.logo').appendChild(toggleButton)
  329. const searchContainer = document.querySelector('.RNNXgb')
  330. searchContainer.appendChild(toggleButton)
  331. }
  332.  
  333.  
  334.  
  335. // Add minimal style for positioning
  336. toggleButton.style.marginTop = '5px' // Add some space above the button
  337. toggleButton.style.marginLeft = '5px' // Add some space to the left of the button
  338. // Add any additional styles to match the search bar's height or other styling
  339.  
  340. const formContainer = document.createElement('div')
  341. formContainer.id = 'advancedSearchFormContainer'
  342. document.body.appendChild(formContainer)
  343.  
  344. //
  345. const form = document.createElement('form')
  346. formContainer.appendChild(form)
  347.  
  348. const params = {
  349. as_q: translation['as_q'][language],
  350. as_epq: translation['as_epq'][language],
  351. as_oq: translation['as_oq'][language],
  352. as_eq: translation['as_eq'][language],
  353. as_nlo: translation['as_nlo'][language],
  354. as_nhi: translation['as_nhi'][language],
  355. // 'lr': translation['lr'][language],
  356. // 'cr': translation['cr'][language],
  357. as_qdr: {
  358. name: translation['as_qdr'][language],
  359. options: {
  360. '': translation['as_qdr_select'][''][language],
  361. d: translation['as_qdr_select']['d'][language],
  362. w: translation['as_qdr_select']['w'][language],
  363. m: translation['as_qdr_select']['m'][language],
  364. y: translation['as_qdr_select']['y'][language]
  365. }
  366. },
  367. as_sitesearch: translation['as_sitesearch'][language],
  368. as_occt: {
  369. name: translation['as_occt'][language],
  370. options: {
  371. '': translation['as_occt_select'][''][language],
  372. title: translation['as_occt_select']['title'][language],
  373. body: translation['as_occt_select']['body'][language],
  374. url: translation['as_occt_select']['url'][language],
  375. links: translation['as_occt_select']['links'][language]
  376. }
  377. },
  378. as_filetype: translation['as_filetype'][language]
  379. // 'tbs': translation['tbs'][language],
  380. }
  381.  
  382. for (const param in params) {
  383. if (typeof params[param] === 'object') {
  384. const label = document.createElement('label')
  385. label.textContent = params[param].name
  386. const select = document.createElement('select')
  387. select.name = param
  388.  
  389. Object.keys(params[param]['options']).forEach((option) => {
  390. const optionElement = document.createElement('option')
  391. optionElement.value = option
  392. optionElement.textContent = params[param]['options'][option]
  393. select.appendChild(optionElement)
  394. })
  395.  
  396. form.appendChild(label)
  397. form.appendChild(select)
  398. form.appendChild(document.createElement('br'))
  399. continue
  400. }
  401. const label = document.createElement('label')
  402. label.textContent = params[param]
  403. const input = document.createElement('input')
  404. input.name = param
  405. input.type = 'text'
  406. form.appendChild(label)
  407. form.appendChild(input)
  408. form.appendChild(document.createElement('br'))
  409. }
  410.  
  411. const searchButton = document.createElement('button')
  412. searchButton.textContent = translation['search'][language]
  413. form.appendChild(searchButton)
  414.  
  415. // Add a clear button to reset the form
  416. const clearButton = document.createElement('button')
  417. clearButton.textContent = translation['clear'][language]
  418. clearButton.addEventListener('click', function (event) {
  419. event.preventDefault()
  420. form.reset()
  421. })
  422. form.appendChild(clearButton)
  423.  
  424. // Load saved data and fill the form when opening a new page
  425. window.addEventListener('load', function () {
  426. for (const param in params) {
  427. const savedValue = GM_getValue(param)
  428. if (savedValue) {
  429. form[param].value = savedValue
  430. }
  431. }
  432. })
  433.  
  434. // Save form data to Greasemonkey storage
  435. form.addEventListener('input', function () {
  436. for (const param in params) {
  437. GM_setValue(param, form[param].value)
  438. }
  439. })
  440.  
  441. // Toggle the form display
  442. toggleButton.addEventListener('click', function (event) {
  443. event.preventDefault()
  444. let status = formContainer.style.display
  445. status = status === 'none' || status === '' ? 'block' : 'none'
  446. formContainer.style.display = status
  447. })
  448.  
  449. // Submit the form
  450. form.addEventListener('submit', function (event) {
  451. event.preventDefault()
  452. const searchParams = new URLSearchParams()
  453. for (const param in params) {
  454. const value = form[param].value
  455. if (value) {
  456. searchParams.set(param, value)
  457. }
  458. }
  459. const searchUrl =
  460. 'https://www.google.com/search?' + searchParams.toString()
  461. window.location.href = searchUrl
  462. })
  463. })()

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址