Add script to download latest Galileo almanac from EUSPA website

This commit is contained in:
Carles Fernandez 2022-03-21 08:55:57 +01:00
parent 9a91fb3192
commit bcd725e2b7
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
1 changed files with 126 additions and 0 deletions

View File

@ -0,0 +1,126 @@
#!/bin/sh
# GNSS-SDR shell script that tries to download the latest Galileo Almanac file
# published by the European GNSS Service Centre.
#
# Usage: ./download-galileo-almanac.sh
#
# SPDX-FileCopyrightText: 2022 Carles Fernandez-Prades <cfernandez(at)cttc.es>
# SPDX-License-Identifier: GPL-3.0-or-later
if ! [ -x "$(command -v wget)" ]; then
echo "Please install wget before using this script."
exit 1
fi
help()
{
echo "This script tries to download the most recent Galileo Almanac XML file"
echo "published by the European GNSS Service Centre."
echo "More info at https://www.gsc-europa.eu/product-almanacs"
echo "If today there is no published file, the script will look up to one week ago."
echo ""
echo "Usage:"
echo "./download-galileo-almanac.sh [OPTION]"
echo " Options:"
echo " -h, --help Prints this message"
echo " -r, --rename Gets latest Galileo Almanac XML file and saves it as gal_almanac.xml"
echo " -d, --date [date] Retrieves file for a specific date, with format YYYY-MM-DD"
echo " -rd [date] Retrieves file for a specific date, with format YYYY-MM-DD"
echo " and saves it as gal_almanac.xml"
echo ""
echo " Examples:"
echo " ./download-galileo-almanac.sh # Gets latest Galileo Almanac XML file"
echo " ./download-galileo-almanac.sh -r # Gets latest Galileo Almanac XML file, stores it as gal_almanac.xml"
echo " ./download-galileo-almanac.sh -d 2022-03-15 # Gets Galileo Almanac XML file for that day"
echo " ./download-galileo-almanac.sh -rd 2022-03-15 # Gets Galileo Almanac XML file for that day, stores it as gal_almanac.xml"
}
if (([ "$1" = "-h" ]) || ([ "$1" = "--help" ])) ; then
help
exit 0
fi
RENAME=""
if (([ "$1" = "-r" ]) || ([ "$1" = "--rename" ])) ; then
RENAME=" -O gal_almanac.xml "
fi
BASE_URL="https://www.gsc-europa.eu/sites/default/files/sites/all/files/"
YEAR=$(date '+%Y')
SPACING="-"
MONTH=$(date '+%m')
DAY=$(date '+%d')
TERMINATION1="_0.xml"
TERMINATION2=".xml"
COUNTER=1
MAX_COUNTER=7
if (([ "$1" = "-d" ]) || ([ "$1" = "--date" ])) ; then
if wget "$BASE_URL$2$TERMINATION2" >/dev/null 2>&1 ; then
echo "Downloaded latest Galileo almanac from $BASE_URL$2$TERMINATION2"
exit 0
else
echo "Couldn't find an XML file for that date."
exit 1
fi
elif [ "$1" = "-rd" ] ; then
if wget -O gal_almanac.xml "$BASE_URL$2$TERMINATION2" >/dev/null 2>&1 ; then
echo "Downloaded latest Galileo almanac from $BASE_URL$2$TERMINATION2"
exit 0
else
echo "Couldn't find an XML file for that date."
rm gal_almanac.xml
exit 1
fi
else
echo "According to system time, today is $(date '+%Y-%m-%d'). Searching for the latest Galileo almanac ..."
fi
lowercase()
{
echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
}
OS=`lowercase \`uname\``
date_before()
{
if [ "$OS" = "darwin" ]; then
YEAR=$(date -v -"$COUNTER"d '+%Y')
MONTH=$(date -v -"$COUNTER"d '+%m')
DAY=$(date -v -"$COUNTER"d '+%d')
else
YEAR=$(date -d "$COUNTER day ago" '+%Y')
MONTH=$(date -d "$COUNTER day ago" '+%m')
DAY=$(date -d "$COUNTER day ago" '+%d')
fi
COUNTER=$(($COUNTER+1))
}
try_download()
{
while [ $COUNTER -le $MAX_COUNTER ]
do
url="$BASE_URL$YEAR$SPACING$MONTH$SPACING$DAY$TERMINATION2"
if wget $RENAME $url >/dev/null 2>&1 ; then
echo "Downloaded latest Galileo almanac from $url"
exit 0
else
date_before
try_download
fi
done
}
url="$BASE_URL$YEAR$SPACING$MONTH$SPACING$DAY$TERMINATION1"
if wget $RENAME $url >/dev/null 2>&1 ; then
echo "Downloaded latest Galileo almanac from $url"
else
try_download
echo "Couldn't find a recent Galileo almanac."
exit 1
fi