mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-29 22:42:59 +00:00 
			
		
		
		
	Add script to download latest Galileo almanac from EUSPA website
This commit is contained in:
		
							
								
								
									
										126
									
								
								src/utils/scripts/download-galileo-almanac.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										126
									
								
								src/utils/scripts/download-galileo-almanac.sh
									
									
									
									
									
										Executable 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 | ||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez