parent
c5d4174e66
commit
f0959d0c11
3 changed files with 329 additions and 1 deletions
@ -0,0 +1,178 @@ |
||||
#!/bin/bash |
||||
# Original Author: Alexander Epstein https://github.com/alexanderepstein |
||||
|
||||
currentVersion="1.10.0" |
||||
configuredClient="" |
||||
search="0" |
||||
insensitive="" |
||||
recursive="" |
||||
boundry="" |
||||
|
||||
## This function determines which http get tool the system has installed and returns an error if there isnt one |
||||
getConfiguredClient() |
||||
{ |
||||
if command -v curl &>/dev/null ; then |
||||
configuredClient="curl" |
||||
elif command -v wget &>/dev/null ; then |
||||
configuredClient="wget" |
||||
elif command -v fetch &>/dev/null ; then |
||||
configuredClient="fetch" |
||||
else |
||||
echo "Error: This tool reqires either curl, wget, or fetch to be installed." |
||||
return 1 |
||||
fi |
||||
|
||||
} |
||||
|
||||
## Allows to call the users configured client without if statements everywhere |
||||
httpGet() |
||||
{ |
||||
case "$configuredClient" in |
||||
curl) curl -A curl -s "$@";; |
||||
wget) wget -qO- "$@";; |
||||
fetch) fetch -o "...";; |
||||
esac |
||||
} |
||||
|
||||
|
||||
checkInternet() |
||||
{ |
||||
echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1 # query google with a get request |
||||
if [ $? -eq 0 ]; then #check if the output is 0, if so no errors have occured and we have connected to google successfully |
||||
return 0 |
||||
else |
||||
echo "Error: no active internet connection" >&2 #sent to stderr |
||||
return 1 |
||||
fi |
||||
} |
||||
|
||||
|
||||
usage() |
||||
{ |
||||
echo "Cheat tool" |
||||
echo "Usage: cheat [flags] [command] or cheat [flags] [programming language] [subject]" |
||||
echo " -s Does a search for last argument rather than looking for exact match" |
||||
echo " -i Case insensitive search" |
||||
echo " -b Word boundaries in search" |
||||
echo " -r Recursive search" |
||||
echo " -h Show the help" |
||||
echo " -v Get the tool version" |
||||
echo "Special Pages:" |
||||
echo " hello Describes building the hello world program written in the language" |
||||
echo " list This lists all cheatsheets related to previous arg if none it lists all cheatsheets" |
||||
echo " learn Shows a learn-x-in-minutes language cheat sheet perfect for getting started with the language" |
||||
echo " 1line A collection of one-liners in this language" |
||||
echo " weirdness A collection of examples of weird things in this language" |
||||
} |
||||
|
||||
getCheatSheet() |
||||
{ |
||||
if [[ $# == 1 ]]; then |
||||
if [[ $search == "1" ]];then |
||||
link=cheat.sh/~$1 |
||||
else |
||||
link=cheat.sh/$1 |
||||
fi |
||||
else |
||||
link=cheat.sh/$1 |
||||
fi |
||||
|
||||
if [[ $# == 2 ]];then |
||||
if [[ $search == "1" ]];then |
||||
link+=/~$2 |
||||
else |
||||
link+=/$2 |
||||
fi |
||||
fi |
||||
|
||||
if [[ $insensitive != "" || $recursive != "" || $boundry != "" ]];then link+=/$boundry$insensitive$recursive; fi |
||||
|
||||
httpGet $link |
||||
} |
||||
|
||||
checkSpecialPage() |
||||
{ |
||||
temp=$1 |
||||
if [[ $1 == "list" ]];then |
||||
temp=":list" |
||||
elif [[ $1 == "learn" ]];then |
||||
temp=":list" |
||||
elif [[ $1 == "styles" ]];then |
||||
temp=":styles" |
||||
fi |
||||
if [[ $2 == "1" ]];then |
||||
arg1=$temp |
||||
else |
||||
arg2=$temp |
||||
fi |
||||
} |
||||
|
||||
getConfiguredClient || exit 1 |
||||
#checkInternet || exit 1 |
||||
|
||||
while getopts "ribuvhis" opt; do |
||||
case $opt in |
||||
\?) |
||||
echo "Invalid option: -$OPTARG" >&2 |
||||
exit 1 |
||||
;; |
||||
h) |
||||
usage |
||||
exit 0 |
||||
;; |
||||
v) |
||||
echo "Version $currentVersion" |
||||
exit 0 |
||||
;; |
||||
i) |
||||
insensitive="i" |
||||
search="1" |
||||
;; |
||||
b) |
||||
boundry="b" |
||||
search="1" |
||||
;; |
||||
r) |
||||
recursive="r" |
||||
search="1" |
||||
;; |
||||
s) |
||||
search="1" |
||||
;; |
||||
:) |
||||
echo "Option -$OPTARG requires an argument." >&2 |
||||
exit 1 |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
for arg |
||||
do |
||||
if [[ $arg != "-r" && $arg != "-s" && $arg != "-b" && $arg != "-i" ]];then |
||||
if [ -z ${arg1+x} ];then |
||||
arg1=$arg |
||||
fi |
||||
if [ ! -z ${arg1+x} ];then |
||||
arg2=$arg |
||||
fi |
||||
fi |
||||
done |
||||
|
||||
checkSpecialPage $arg1 1 |
||||
checkSpecialPage $arg2 2 |
||||
|
||||
if [[ $# == 0 ]]; then |
||||
usage |
||||
exit 0 |
||||
elif [[ $1 == "help" || $1 == ":help" ]];then |
||||
usage |
||||
exit 0 |
||||
else |
||||
if [[ $arg1 != $arg2 ]];then |
||||
getCheatSheet $arg1 $arg2 |
||||
else |
||||
getCheatSheet $arg1 |
||||
fi |
||||
exit 0 |
||||
|
||||
fi |
@ -0,0 +1,150 @@ |
||||
#!/bin/bash |
||||
# Original Author: Alexander Epstein https://github.com/alexanderepstein |
||||
|
||||
currentVersion="1.11.0" |
||||
configuredClient="" |
||||
configuredPython="" |
||||
|
||||
## This function determines which http get tool the system has installed and returns an error if there isnt one |
||||
getConfiguredClient() |
||||
{ |
||||
if command -v curl &>/dev/null ; then |
||||
configuredClient="curl" |
||||
elif command -v wget &>/dev/null ; then |
||||
configuredClient="wget" |
||||
elif command -v fetch &>/dev/null ; then |
||||
configuredClient="fetch" |
||||
else |
||||
echo "Error: This tool reqires either curl, wget, or fetch to be installed." |
||||
return 1 |
||||
fi |
||||
|
||||
} |
||||
|
||||
getConfiguredPython() |
||||
{ |
||||
if command -v python2 &>/dev/null ; then |
||||
configuredPython="python2" |
||||
elif command -v python &>/dev/null ; then |
||||
configuredPython="python" |
||||
else |
||||
echo "Error: This tool requires python 2 to be installed." |
||||
return 1 |
||||
fi |
||||
} |
||||
|
||||
|
||||
python() |
||||
{ |
||||
case "$configuredPython" in |
||||
python2) python2 "$@";; |
||||
python) python "$@";; |
||||
esac |
||||
} |
||||
|
||||
## Allows to call the users configured client without if statements everywhere |
||||
httpGet() |
||||
{ |
||||
case "$configuredClient" in |
||||
curl) curl -A curl -s "$@";; |
||||
wget) wget -qO- "$@";; |
||||
fetch) fetch -o "...";; |
||||
esac |
||||
} |
||||
|
||||
|
||||
checkInternet() |
||||
{ |
||||
echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1 # query google with a get request |
||||
if [ $? -eq 0 ]; then #check if the output is 0, if so no errors have occured and we have connected to google successfully |
||||
return 0 |
||||
else |
||||
echo "Error: no active internet connection" >&2 #sent to stderr |
||||
return 1 |
||||
fi |
||||
} |
||||
|
||||
## This function grabs information about a movie and using python parses the |
||||
## JSON response to extrapolate the information for storage |
||||
getMovieInfo() |
||||
{ |
||||
apiKey=946f500a # try not to abuse this it is a key that came from the ruby-scripts repo I link to. |
||||
movie=$(echo "$@" | tr " " + ) ## format the inputs to use for the api |
||||
export PYTHONIOENCODING=utf8 #necessary for python in some cases |
||||
movieInfo=$(httpGet "http://www.omdbapi.com/?t=$movie&apikey=$apiKey") > /dev/null # query the server and get the JSON response |
||||
checkResponse=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Response']" 2> /dev/null) |
||||
if [[ $checkResponse == "False" ]];then { echo "No movie found" ; return 1 ;} fi ## check to see if the movie was found |
||||
# The rest of the code is just extrapolating the data with python from the JSON response |
||||
title=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Title']" 2> /dev/null) |
||||
year=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Year']" 2> /dev/null) |
||||
score=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Ratings'][1]['Value']" 2> /dev/null) |
||||
rated=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Rated']" 2> /dev/null) |
||||
genre=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Genre']" 2> /dev/null) |
||||
director=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Director']" 2> /dev/null) |
||||
actors=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Actors']" 2> /dev/null) |
||||
plot=$(echo $movieInfo | python -c "import sys, json; print json.load(sys.stdin)['Plot']" 2> /dev/null) |
||||
unset movieInfo # don't need this anymore |
||||
unset checkResponse # don't need this anymore |
||||
} |
||||
|
||||
# Prints the movie information out in a human readable format |
||||
printMovieInfo() |
||||
{ |
||||
echo |
||||
echo '==================================================' |
||||
echo "| Title: $title" |
||||
echo "| Year: $year" |
||||
if [[ $score != "" ]];then echo "| Tomato: $score";fi |
||||
if [[ $rated != "N/A" && $rated != "" ]];then echo "| Rated: $rated";fi |
||||
echo "| Genre: $genre" |
||||
echo "| Director: $director" |
||||
echo "| Actors: $actors" |
||||
if [[ $plot != "N/A" && $plot != "" ]];then echo "| Plot: $plot"; fi |
||||
echo '==================================================' |
||||
echo |
||||
} |
||||
|
||||
|
||||
usage() |
||||
{ |
||||
echo "Movies tool" |
||||
echo "Usage: movies [flag] or movies [movieToSearch]" |
||||
echo " -h Show the help" |
||||
echo " -v Get the tool version" |
||||
} |
||||
|
||||
getConfiguredPython || exit 1 |
||||
getConfiguredClient || exit 1 |
||||
#checkInternet || exit 1 # check if we have a valid internet connection if this isnt true the rest of the script will not work so stop here |
||||
|
||||
while getopts "uvh" opt; do |
||||
case $opt in |
||||
\?) |
||||
echo "Invalid option: -$OPTARG" >&2 |
||||
exit 1 |
||||
;; |
||||
h) |
||||
usage |
||||
exit 0 |
||||
;; |
||||
v) |
||||
echo "Version $currentVersion" |
||||
exit 0 |
||||
;; |
||||
:) |
||||
echo "Option -$OPTARG requires an argument." >&2 |
||||
exit 1 |
||||
;; |
||||
esac |
||||
done |
||||
|
||||
if [[ $# == 0 ]]; then |
||||
usage |
||||
elif [[ $1 == "update" ]];then |
||||
update |
||||
elif [[ $1 == "help" ]];then |
||||
usage |
||||
else |
||||
getMovieInfo "$@" || exit 1 ## exit if we return 1 (chances are movie was not found) |
||||
printMovieInfo ## print out the data |
||||
fi |
@ -1,2 +1,2 @@ |
||||
#!/usr/bin/bash |
||||
echo "$1" | curl -F-=\<- qrenco.de |
||||
echo "$@" | curl -F-=\<- qrenco.de |
||||
|
Loading…
Reference in new issue