hoothin / SearchJumper

Yet another awesome browser extension for switching search engines, search everything (selection text / image / link / find in page) on any engine with a simple right click or a variety of menus and shortcuts. Build with React & Material-UI. (WIP).
https://hoothin.github.io/SearchJumper
GNU General Public License v3.0
809 stars 44 forks source link
add-on browser-extension chrome-extension context-search firefox-addon google-search highlight image-search material-ui open-source productivity reactjs reverse-image-search search-engine selection-search site-search userscript webextension websearch

🔎SearchJumper

i

💞Share your search engines 📖Guide

react-version materialUI-version license FontAwesome support

Just a personal work, maybe not suit you.

Install

Install via Chrome web store Install via Greasyfork Install via Firefox addons

Config page

🔗hoothin.github.io

🔗search.hoothin.com

You can also download the source code, double-click start.cmd to compile, then enter the config page through localhost:3000

亦可下載源碼到本地后雙擊 start.cmd ,透過 npm 編譯后訪問 localhost:3000 進入配置

Please help with localizing this extension[1][2] to the language you are familiar with!

Translation Contributors

Русский: RomanAleynikov

Features:

config findInPage etc

Search params

param details 詳述
%s search keyword 🗒️ 搜尋關鍵詞
%S cached search keyword 🗒️ 最近一次的搜尋關鍵詞
%sl search keyword with lower case letters 🗒️ 小寫字母搜尋詞
%su search keyword with upper case letters 🗒️ 大寫字母搜尋詞
%u current website url 🗒️ 當前網站 url
%h current website host 🗒️ 當前網站 host
%t target src 🗒️ 指向對象的 src
%i base64 of target image 🗒️ 指向圖片的 base64
%s.replace replace keywords with regexp, like %sr.replace(/[^\d]/g, "").replace(/(\d)/g, "$1 ") means replace raw keywords to numbers and then join all numbers with space, support %s %sl %sr %su %t %u 🗒️ 用正則替換搜尋關鍵詞,例如 %sr.replace(/[^\d]/g, "").replace(/(\d)/g, "$1 ") 代表提取原始關鍵詞中所有數字,並以空格分隔,支援 %s %sl %sr %su %t %u
%p{params} post body, like %p{x=1&y=%s} 🗒️ post 參數體,例如 %p{x=1&y=%s}
%P{params} post without navigation 🗒️ post 但不跳轉
%input{tips} input something, like %input{love who?,you} 🗒️ 輸入占位,例如%input{請輸入您的三圍,90 55 90}
#p{params} post in page, like #p{#input=%u&sleep(500)&click(.submit)}, means: input current url to "#input", then wait for 500ms, then click ".submit". use \& \= instead of & = in content 🗒️ 頁内 post,可在頁面之内使用【css選擇器】填寫參數提交查詢,適用於不開放GET/POST接口的網站,例如 #p{#input=%u&sleep(500)&click(.submit)}, 代表在"#input"内輸入指定url,然後等待500毫秒,最後點擊".submit"。可在内容中使用 \& \= 來 表示 & =
["siteName1","siteName2"] batch open by site name you've created 🗒️ 透過你已經創建的站點名批量打開,例如 ["雅虎搜尋","谷歌搜尋"]
%element{} query element for innerText from selector or xpath, like %element{.mainTitle} 🗒️ 透過 css 選擇器或 xpath 抓取元素並返回文字内容,例如 %element{.mainTitle}
%element{}.prop() return prop value for queried element, like %element{.mainTitle}.prop(href) %element{.mainTitle}.prop(innerHTML) 🗒️ 獲取抓取到元素的屬性值,例如 %element{.mainTitle}.prop(href) %element{.mainTitle}.prop(innerHTML)
%element{}.replace() replace, same as above, like %element{.mainTitle}.prop(href).replace(/https/i,"") 🗒️ 正則替換,例如 %element{.mainTitle}.prop(href).replace(/https/i,"")

PopClip extension for SearchJumper

#popclip extension for SearchJumper
name: SearchJumper
icon: search filled S
url: https://search.hoothin.com/all#***

Select the above text, PopClip will offer an "Install Extension" action. Click it.


Search engine examples 搜尋引擎規則範例


Add search engines quickly 快速添加搜尋引擎

+ Add with shortcut key on current page 透過快捷鍵快速在當前頁面添加 > Click search input box with `ctrl + shift` 按住 `ctrl + shift` 點擊當前頁面中的搜尋輸入框即可 + Search on mycroftproject.com and add 在 mycroftproject 上搜尋別人編輯好的站點並點擊導入 > Click the searchJumper face icon in sites list on mycroftproject 點擊 mycroftproject 上站點列表裏的搜尋醬圖標即可

Auto highlight rule examples 自動高亮詞規則範例

Highlight all text URL on any site 在任意網頁上高亮文字網址 ``` json { "*": { "words": [ "/(https?:\\/\\/|www\\.)[^\\s\"'\\\\{}\\(\\)\\[\\]#]+\\.[^\\s\"'\\\\{}\\(\\)\\[\\]#]+/i$s{unset;border-radius:unset;border-bottom-width:5px;border-bottom-style:dotted;border-bottom-color:red;}$t{@popup}" ] } } ``` Highlight all avID on t66y 在草榴上高亮番號 ``` json { "/^https://t66y\\.com/htm_data//i": { "sep": "#", "words": [ "/([a-z]\\w+\\-?|\\d{5,}\\-)\\d{2,}/i$s{unset;border-radius:unset;border-bottom:5px dotted red;}$t{@popup(💞 AV预览)}$in{.tpc_content}" ] } } ``` + Effect on the site matched RegExp `^https://t66y\\.com/htm_data/` with case ignore >匹配到草榴網址的正則 `^https://t66y\\.com/htm_data/` 后生效,不區分大小寫 + Split by "#" as there is space in the keyWords under >以#分隔,因爲下面的關鍵詞中有空格 + Search words according to the regular pattern at first, then add style "background:unset;border-bottom:5px dotted red;" to the highlighted words, finally add the feature of hovering the mouse to pop up the search box >首先根據正則 "[0-9a-zA-Z]+\\-\\d+" 查找番號,然後為高亮詞添加 style "background:unset;border-bottom:5px dotted red;",最後添加鼠標懸浮彈出搜索彈框的特性 Hide user by target id on xxxx.com 在某個網站上根據給定的用戶名或者用戶 ID 屏蔽元素 ``` json { "@someUserID": "/12345|54321/l", "@someUserName": "/jack|adam|rose/i", "/^https://xxxx\\.com/yyyy//i": { "sep": "|", "words": [ "@someUserID$p{0}", "@someUserName$p{0}" ] } } ``` + Effect on the site matched RegExp `^https://xxxx\\.com/yyyy/` with case ignore >網址匹配到正則 `^https://xxxx\\.com/yyyy/` 后生效,不區分大小寫 + Split by "|" >以|分隔 + Search links by @someUserID to hide (l after RegExp means link), and search words by @someUserName to hide. >查找設定在模板 @someUserID 中的用戶 ID (正則后的 l 代表篩選連結),然後隱藏連結中含有此 ID 的元素,同時查找設定在模板 @someUserName 中的用戶名並隱藏元素

Filter engines to search 篩選引擎並搜尋

+ Call by global shortcut key, Input keywords of site name to filter sites, support glob with "? \*" 透過全局快捷鍵喚出,輸入站點名稱的關鍵詞來篩選,支援 “? \*” 通配符 + Enter to lock filter and input words to search by click icon or another press of enter 回車鎖定篩選,輸入文字并且點擊站點圖標或者再次回車來進行搜尋 ![i](assets/filter.jpg)

Call SearchJumper by event 透過鼠標手勢調用搜尋醬

+ Search by site name 以站點名調用搜尋 ``` javascript // search by google const siteName = 'Google search'; const searchJumperEvent = new CustomEvent('searchJumper', { detail: { action: 'search', name: siteName } }); document.dispatchEvent(searchJumperEvent); ``` + Show search bar 顯示搜尋條 ``` javascript const searchJumperEvent = new CustomEvent('searchJumper', { detail: { action: 'show' } }); document.dispatchEvent(searchJumperEvent); ``` + Show All-mode 顯示所有模式 ``` javascript const searchJumperEvent = new CustomEvent('searchJumper', { detail: { action: 'showAll' } }); document.dispatchEvent(searchJumperEvent); ``` + Search by second site of current type and open in new window 使用當前分組的第二個站點搜尋並在小窗打開結果 ``` javascript const siteOrder = 2; let currentSite = document.querySelector(`.search-jumper-type:not(.search-jumper-hide)>a:nth-of-type(${siteOrder})`); if (currentSite) { const searchJumperEvent = new CustomEvent('searchJumper', { detail: { action: 'search', name: currentSite.dataset.name, key: {altKey:true} } }); document.dispatchEvent(searchJumperEvent); } ``` + Search by site of current type in background tab 使用當前分組的站點搜尋並在後臺標籤頁打開結果 ``` javascript const searchJumperEvent = new CustomEvent('searchJumper', { detail: { action: 'search', key: {ctrlKey:true} } }); document.dispatchEvent(searchJumperEvent); ``` + Search by second site of current type in incognito tab 使用當前分組的第二個站點搜尋並在隱身標籤頁打開結果 ``` javascript const siteOrder = 2; const searchJumperEvent = new CustomEvent('searchJumper', { detail: { action: 'search', index: siteOrder, key: {ctrlKey:true, altKey:true} } }); document.dispatchEvent(searchJumperEvent); ```

Download all video with lux 使用 LUX 下載全網視頻

![bilibili](https://s3.bmp.ovh/imgs/2022/09/25/543a696312baf85d.gif "B站VIDEO下載")
Step by step of One-click video download configuration + Download [Lux](https://github.com/iawia002/lux/releases) + Download [ffmpeg](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-essentials.7z) + Add site under group which "Effect on page" on your SearchJumper + Click "Call local application" under "Edit site" + Input command like `"D:\Program Files\lux\lux.exe" %u`, then submit. + Open and import the reg file. + Right click with ctrl key, click Lux.
一鍵視頻下載配置方法(B站為例) + 下載[BBDown](https://github.com/nilaoda/BBDown) + 下載[ffmpeg](https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-essentials.7z),解壓並且複制\bin\ffmpeg.exe + 將BBDown.exe 與 ffmpeg.exe 放置於同一文件夾,記錄該路徑,例如 `D:\Program Files\BBDown` + 在你的搜尋醬“當前網頁”分類新增站點 + 點擊“編輯站點”最下方的“添加自定義本地應用調用” + 調用命令處填入`"D:\Program Files\BBDown\BBDown.exe" %u -tv`,點擊生成註冊表補丁 + 此時會自動生成註冊表補丁,點擊導入,並且保存編輯站點 + 在 bilibili 視頻播放頁面按住 ctrl 點擊右鍵,點擊BBDown即可下載 + 其他視頻下載工具(例如lux、you-get、yt-dlp等)同理,可自行編輯。
Registry patch to call lux by SearchJumper 搜尋醬調用本地程式的注冊表補丁 ``` ini Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\lux] @="URL:lux Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\lux\DefaultIcon] @="cmd.exe,1" [HKEY_CLASSES_ROOT\lux\shell] [HKEY_CLASSES_ROOT\lux\shell\open] [HKEY_CLASSES_ROOT\lux\shell\open\command] @="cmd /c set m=%1 & call set m=%%m:lux://=%% & d: & cd \"D:\\Program Files\\lux\" & call lux.exe %%m%% & pause" ``` Modify path by yourself 自行修改補丁中的目錄,保存爲 lux.reg,雙擊導入注冊表。 Open the page of video and download with `lux://%u` 完畢之後即可新建站點使用 `lux://%u` 調用 lux 下載當前網頁視頻

Sync by webdav 透過 webdav 同步引擎配置與高亮規則

+ webdav 伺服器需要支援自設 cors + 也可以自己架設 webdav 伺服器,方法如下 - 下載 [webdav server](https://github.com/hacdias/webdav/releases) - 創建配置文件 `config.yml`,內容如下: ``` address: 伺服器地址 port: 伺服器端口 cors: enabled: true credentials: true allowed_headers: - '*' allowed_hosts: - https://hoothin.github.io allowed_methods: - '*' exposed_headers: - Content-Length - Content-Range users: - username: 用戶名 password: 密碼 scope: webdav 同步文件夾路徑 modify: true ```

Batch open modes 多種批量打開方式

+ **`shift`** + click category icon ![i](assets/batchOpen1.jpg) + **`alt + shift`** + click category icon ![i](assets/batchOpen2.jpg) + **`alt`** + click category icon ![i](assets/batchOpen3.jpg)

Star History

Star History Chart