diff --git a/bin/cheat b/bin/cheat new file mode 100755 index 00000000..38cb8a25 --- /dev/null +++ b/bin/cheat @@ -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 diff --git a/bin/movies b/bin/movies new file mode 100755 index 00000000..a7e57940 --- /dev/null +++ b/bin/movies @@ -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 diff --git a/bin/qrcode b/bin/qrcode index 48061ded..73330d07 100755 --- a/bin/qrcode +++ b/bin/qrcode @@ -1,2 +1,2 @@ #!/usr/bin/bash -echo "$1" | curl -F-=\<- qrenco.de +echo "$@" | curl -F-=\<- qrenco.de