diff --git a/get_latest.sh b/get_latest.sh index d8315c9..34fa292 100644 --- a/get_latest.sh +++ b/get_latest.sh @@ -1,6 +1,30 @@ #!/bin/bash +usage() { echo "Usage: $0 [-J ] [-L ]" 1>&2; } + +J=5 +L="2M" + +while getopts ":J:L:" o; do + case "${o}" in + J) + J=${OPTARG} + ;; + L) + L=${OPTARG} + ;; + h) + usage; exit 0 + ;; + *) + usage; exit 1 + ;; + esac +done +shift $((OPTIND-1)) + export base="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" cd $base + echo "Checking for program update..." server_version="$(curl https://arcsidian.com/xivv/version.json 2>/dev/null)" [ "$(cat version.json)" = "$server_version" ] && echo "Up to date: $server_version" || ( @@ -11,13 +35,17 @@ server_version="$(curl https://arcsidian.com/xivv/version.json 2>/dev/null)" tee version.json <<<"$server_version" echo "Updated to $server_version" ) 2>/dev/null + +# Cleaning and preparing directory rm $base/share $base/pfx/drive_c/Xiv_Voices/Data -f ln -s $base/pfx/drive_c/Xiv_Voices $base/share -mkdir -p Data tmp bak +mkdir -p Data tmp tmp/bak ln -s $base/Data $base/pfx/drive_c/Xiv_Voices/Data rm -f share/{nameless,npcData,voiceNames,ignored,data}.json + echo "Updating metadata..." wget -P share -c https://arcsidian.com/xivv/{nameless,npcData,voiceNames,ignored,data}.json 2>/dev/null + echo "Checking for updated voice lines..." pids="" while read url fn; do @@ -26,16 +54,17 @@ while read url fn; do ( key=$(<<<$url sed 's/.zip$//' | awk -F/ '{print $(NF-1) "/" $NF}') keysize=$(<<<$fn sed 's/.zip$//' | awk -F. '{print $NF}') - mv "share/Data/$key" "bak/${key//\//_}" 2>/dev/null - curl -o "tmp/$fn" "$url" 2>/dev/null && unzip -d share/Data -P "$keysize#Arc" "tmp/$fn" 2>&1 >/dev/null && rm "tmp/$fn" && echo " - Downloaded $fn" + mv "share/Data/$key" "tmp/bak/${key//\//_}" 2>/dev/null + curl --limit-rate $L -o "tmp/$fn" "$url" 2>/dev/null && unzip -d share/Data -P "$keysize#Arc" "tmp/$fn" 2>&1 >/dev/null && rm "tmp/$fn" && echo " - Downloaded $fn" ) & pids="$pids $!" - if [[ $(jobs -r -p | wc -l) -ge 5 ]]; then + if [[ $(jobs -r -p | wc -l) -ge $J ]]; then wait -n fi #done <<< $(echo "https://xivvoices.com/npcs/Alphinaud/Alphinauds_Voice.zip Alphinauds_Voice.1534982.zip") done <<< $(python3 get_latest_voices.py) + echo "Waiting for downloads to complete..." wait $pids -echo "Update complete" +echo "Update complete!"