diff options
-rw-r--r-- | randopitons.7.gz | bin | 466 -> 800 bytes | |||
-rw-r--r-- | randopitons.sh | 117 |
2 files changed, 71 insertions, 46 deletions
diff --git a/randopitons.7.gz b/randopitons.7.gz Binary files differindex 7b6feff..c585aeb 100644 --- a/randopitons.7.gz +++ b/randopitons.7.gz diff --git a/randopitons.sh b/randopitons.sh index 3cba118..2863c9b 100644 --- a/randopitons.sh +++ b/randopitons.sh @@ -1,42 +1,72 @@ #!/usr/bin/env bash -# Bash3 Boilerplate. Copyright (c) 2014, kvz.io #set -o errexit #set -o pipefail #set -o nounset #set -o xtrace +BOLD='\033[01m' +UNDL='\033[04m' +GREEN='\033[32m' +RED='\033[31m' +STYLE_END='\033[0m' # Set magic variables for current file & dir -__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -__file="${__dir}/$(basename "${BASH_SOURCE[0]}")" -__base="$(basename ${__file} .sh)" -__root="$(cd "$(dirname "${__dir}")" && pwd)" # <-- change this as it depends on your app -REGIONS=$(cat ${__dir}/regions.txt) -REGIONFILE="${__dir}/regions.txt" +DATADIR="$HOME/.local/share/randopitons" +COOKIES_FILE="$DATADIR/cookies.txt" +REGIONFILE="$DATADIR/regions.txt" +S256_REGIONFILE="20eb46831f436bb467b850835c7efde1d51742434fcea9addf4754b9545aae47" +MATCHEDFILE="$(mktemp)" MAPTYPE="gpx" RDPUSER= RDPUSERPASS= LOGINOK= + #Filechecks -printf "Cirque de Cilaos\nCirque de Mafate\nCirque de Salazie\nEst\nNord\nOuest\nSud\nVolcan\nAilleurs\nAll" > $REGIONFILE +mkdir -p $DATADIR +if [ ! -w $REGIONFILE ]; then + printf "\nRegenerating $REGIONFILE...\n" + printf "Cirque de Cilaos\nCirque de Mafate\nCirque de Salazie\nEst\nNord\nOuest\nSud\nVolcan\nAilleurs\nAll" > $REGIONFILE +fi + +if [ "$S256_REGIONFILE" != "$(sha256sum $REGIONFILE | cut -d' ' -f1)" ]; then + printf "\n$REGIONFILE sha256sum not matching, regenerating...\n" + printf "Cirque de Cilaos\nCirque de Mafate\nCirque de Salazie\nEst\nNord\nOuest\nSud\nVolcan\nAilleurs\nAll" > $REGIONFILE +fi #https://stackoverflow.com/questions/4813092/how-to-read-entire-line-from-bash #so we don't use a while loop IFS=$'\n' -_download() +_check_connectivity() { + ping -c 1 -q -W 3 example.com > /dev/null 2>&1 || (printf "No internet connectivity. Check your network settings and status.\n" && return 1) +} +_download() +{ + _check_connectivity || exit 1 while read linefromfile; do - mkdir -p ${__dir}/randopfiles/"${linefromfile}" - cd ${__dir}/randopfiles/"${linefromfile}" + if [ ! -s $COOKIES_FILE ]; then + printf "\nCookie file not detected. Re-login using the -u switch to regenerate it.\n" + exit 1 + fi + + DOWNLOAD_DIR=${__dir}/randopfiles/"${linefromfile}"/${MAPTYPE} + printf "Trace files for the ${WEBREGION} with extension '${MAPTYPE}' will be downloaded to ${BOLD}$DOWNLOAD_DIR${STYLE_END}" + + mkdir -p $DOWNLOAD_DIR + cd $DOWNLOAD_DIR WEBREGION=$(echo ${linefromfile} | sed 's/ de /\-/g' | tr '[:upper:]' '[:lower:]') - FILENBRS=$(wget -qO- https://randopitons.re/randonnees/region/${WEBREGION} | grep "<tr rid" | cut -d \" -f2) - for nbr in $FILENBRS; do - wget -w 3 --content-disposition --load-cookies ${__dir}/cookiejar.txt "https://randopitons.re/randonnee/${nbr}/trace/${MAPTYPE}" + printf "\nExtracting URL to download geo files from...\n" + TRACES=$(curl --silent https://randopitons.re/randonnees/region/${WEBREGION} | grep "<tr rid" | cut -d \" -f2) || (printf "Failed extraction. Aborting.\n" && exit 1) + + for trace in $TRACES; do + sleep 3 + wget --quiet --no-config --content-disposition --load-cookies $COOKIES_FILE "https://randopitons.re/randonnee/${trace}/trace/${MAPTYPE}" && printf "Succesfully download trace ${trace}\n" || (printf "Failed downloading trace ${trace} ...\n") done - cd .. + + cd ${__dir} done <$1 } @@ -49,7 +79,10 @@ _help() _credentials() { - + while [ -z $RDPUSER ]; do + printf "No username detected on -u switch. Enter it: " + read -r RDPUSER + done printf "\nYour username is $RDPUSER. (You can press CTRL+C to cancel the script if this info is incorrect)." printf "\nPassword (for randopitons.re): " read -s RDPUSERPASS @@ -57,7 +90,8 @@ _credentials() _logincheck() { - LOGINTEST=$(wget -qO- --save-cookies ${__dir}/cookiejar.txt --keep-session-cookies --post-data="mail=${RDPUSER}&password=${RDPUSERPASS}" --delete-after https://randopitons.re/connexion | grep "L'adresse mail ou le mot de passe ne correspondent pas.") + _check_connectivity || exit 1 + LOGINTEST=$(wget --no-config -qO- --save-cookies $COOKIES_FILE --keep-session-cookies --post-data="mail=${RDPUSER}&password=${RDPUSERPASS}" --delete-after https://randopitons.re/connexion | grep "L'adresse mail ou le mot de passe ne correspondent pas.") if [ -z "$LOGINTEST" ];then echo "Login is successful." LOGINOK=true @@ -65,16 +99,12 @@ _logincheck() else echo "Login is not successful." LOGINOK=false - rm ${__dir}/cookiejar.txt + rm $COOKIES_FILE exit fi } -if [ "$1" = "" ];then - _help -fi - while [ "$1" != "" ]; do case $1 in @@ -90,56 +120,51 @@ while [ "$1" != "" ]; do MAPTYPE="$1" while [ $MAPTYPE != "gpx" -a $MAPTYPE != "trk" -a $MAPTYPE != "kml" ] do - printf "\nMaptype supplied is not correct" + printf "\nThe supplied map extension is not correct" printf "Which map filetype you want to set : gpx(default),trk or kml ?" read -N 3 MAPTYPE done - printf "\nThe $MAPTYPE maptype is a valid choice !" + printf "\nThe $MAPTYPE map extension has been selected !\n" ;; -lr | --list-regions) - printf "Here's a list:\n" - cat $REGIONFILE + printf "\n%s\n" "$(cat $REGIONFILE)" ;; -lm | --list-maptypes) - printf "These are the valid maptypes:\ngpx\nkml\ntrk" + printf "These are the valid maptypes:\ngpx\nkml\ntrk\n" ;; -r | --region ) shift - MATCHEDFILE="${__dir}/matched.txt" - grep -iE "$1" $REGIONFILE > $MATCHEDFILE + - if [ -s $MATCHEDFILE ];then - echo "Nothing matched or you entered an empty value." - _help + if ! grep -iE "$1" $REGIONFILE > $MATCHEDFILE; then + printf "No region matched or you entered an empty value.\n" + exit 1 fi - - printf "Your region choice was '$1'\nMatches are:\n" - cat $MATCHEDFILE - _download $MATCHEDFILE + + printf "Argument '$1' matched. Proceeding with download...\n" + if [ "$1" != 'All' ]; then + _download $MATCHEDFILE + else + _download $REGIONFILE + fi ;; -a | --all ) printf "\nThis will download all the hitchiking routes from all regions.\nIf no extension is specified (with -mp or --maptype), it will - default to gpx.\nPausing for 5 seconds before downloading..." - sleep 5 + default to gpx." _download $REGIONFILE ;; - -em | --elevator-music ) - echo "Initiating elevator music" - mpv --no-audio --really-quiet https://www.youtube.com/watch?v=KfNXGY9O5VY || printf "\nmpv is not installed." - ;; - -h | --help ) _help ;; - - * ) - _help + * ) + _help + ;; esac shift done |