ohmyzsh/plugins/web-search/web-search.plugin.zsh
Tom Cammann ad72b56906 Fix websearch plugin
Make yahoo search use the correct url. Quieten output from browser
unless there is an error.
2014-09-29 23:56:54 +01:00

64 lines
1.5 KiB
Bash

# web_search from terminal
function web_search() {
# get the open command
local open_cmd
if [[ "$OSTYPE" = darwin* ]]; then
open_cmd='open'
else
open_cmd='xdg-open'
fi
# check whether the search engine is supported
if [[ ! $1 =~ '(google|bing|yahoo|duckduckgo)' ]];
then
echo "Search engine $1 not supported."
return 1
fi
local url="${WEB_SEARCH_PROTOCOL:-https}://www.$1.${WEB_SEARCH_TLD:-com}"
# no keyword provided, simply open the search engine homepage
if [[ $# -le 1 ]]; then
$open_cmd "$url"
return
fi
#
# slightly different search syntax for duckduckgo and yahoo
if [[ $1 == 'duckduckgo' ]]; then
url="${url}/?q="
elif [[ $1 == 'yahoo' ]]; then
url="${WEB_SEARCH_PROTOCOL:-https}://search.$1.com/search?p="
else
url="${url}/search?q="
fi
shift # shift out $1
while [[ $# -gt 0 ]]; do
url="${url}$1+"
shift
done
url="${url%?}" # remove the last '+'
local error_file="$(mktemp -t websearchXXXX)"
$open_cmd "$url" 2> ${error_file}
echo $url
local exit_code=$?
if [[ ${exit_code} != 0 ]]; then
cat $error_file 2>&1
fi
return ${exit_code}
}
alias bing='web_search bing'
alias google='web_search google'
alias yahoo='web_search yahoo'
alias ddg='web_search duckduckgo'
#add your own !bang searches here
alias wiki='web_search duckduckgo \!w'
alias news='web_search duckduckgo \!n'
alias youtube='web_search duckduckgo \!yt'
alias map='web_search duckduckgo \!m'
alias image='web_search duckduckgo \!i'
alias ducky='web_search duckduckgo \!'