summaryrefslogtreecommitdiff
path: root/flightquery.sh
diff options
context:
space:
mode:
Diffstat (limited to 'flightquery.sh')
-rwxr-xr-xflightquery.sh94
1 files changed, 33 insertions, 61 deletions
diff --git a/flightquery.sh b/flightquery.sh
index 6a84d54..7bf67f2 100755
--- a/flightquery.sh
+++ b/flightquery.sh
@@ -35,99 +35,72 @@ _getdata() {
_airport() {
_getdata
currentTime=$(date --iso-8601=seconds)
- # Get arrivals before current time and sort (we reverse so that they're in order of most recent to least recent)
- flightsBefore=$(echo $result | jq --arg currentTime "$currentTime" '.data | map(select(.arrival.scheduled < $currentTime)) | sort_by(.arrival.scheduled) | reverse')
- # Get arrivals after current time and sort
+ # Get arrivals before current time and sort (we reverse so that they're in order of most recent to least recent) and extract only the latest two flights
+ flightsBefore=$(echo $result | jq --arg currentTime "$currentTime" '.data | map(select(.arrival.scheduled < $currentTime)) | sort_by(.arrival.scheduled)')
+ flightsBefore=$(echo $flightsBefore | jq '.[-2:]')
+ # Get arrivals after current time and sort and extract only the following three flights
flightsAfter=$(echo $result | jq --arg currentTime "$currentTime" '.data | map(select(.arrival.scheduled > $currentTime)) | sort_by(.arrival.scheduled)')
+ flightsAfter=$(echo $flightsAfter | jq '.[:3]')
+ # Now merge the two objects
+ flights=$(echo $flightsBefore; echo $flightsAfter | jq -s add)
+ #flights=$(jq -s . "$flightsBefore" "$flightsAfter")
+ echo $flights | jq .
+ exit
- # Build output string of the two arrivals preceeding the current time
- for i in {0..1}
- do
- # Get origin/destination, airline and IATA flight number
- if [[ $direction == "Origin" ]]
- then
- airport=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].departure.iata')
- else
- airport=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].arrival.iata')
- fi
- airline=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].airline.name')
- flightIATA=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].flight.iata')
- # Get departure and takeoff times using actual or estimated times where available or falling back to scheduled if not.
- if [[ $(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].departure.actual') != "null" ]]
- then
- takeoff=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].departure.actual')
- deptTimeType="ATD"
- elif [[ $(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].departure.estimated') != "null" ]]
- then
- takeoff=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].departure.estimated')
- deptTimeType="ETD"
- else
- takeoff=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].departure.scheduled')
- deptTimeType="STD"
- fi
- if [[ $(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].arrival.actual') != "null" ]]
- then
- landing=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].arrival.actual')
- arrTimeType="ATA"
- elif [[ $(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].arrival.estimated') != "null" ]]
+ for i in {0..4}
+ do
+ # Swap between flightsBefore and flightsAfter
+ if [[ $i > 1 ]] && [[ $swapped != "True" ]]
then
- landing=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].arrival.estimated')
- arrTimeType="ETA"
+ flights=$flightsAfte
+ swapped="True"
+ count=0
else
- landing=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].arrival.scheduled')
- arrTimeType="STA"
+ flights=$flightsBefore
fi
- # Append to $output
- output="$output $airline, $flightIATA, $direction: $airport, $deptTimeType: $(date -d $takeoff +"%d/%m/%Y %H:%M"), $arrTimeType: $(date -d $landing +"%d/%m/%Y %H:%M") |"
- done
-
- # Build output string of the three arrivals immediately after the current time
- for i in {0..2}
- do
# Get origin/destination, airline and IATA flight number
if [[ $direction == "Origin" ]]
then
- airport=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].departure.iata')
+ airport=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].departure.iata')
else
- airport=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].arrival.iata')
+ airport=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].arrival.iata')
fi
- airline=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].airline.name')
- flightIATA=$(echo $flightsBefore | jq -r --arg i $i '.[$i | tonumber].flight.iata')
- airline=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].airline.name')
- flightIATA=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].flight.iata')
+ airline=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].airline.name')
+ flightIATA=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].flight.iata')
# Get departure and takeoff times using actual or estimated times where available or falling back to scheduled if not.
- if [[ $(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].departure.actual') != "null" ]]
+ if [[ $(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].departure.actual') != "null" ]]
then
- takeoff=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].departure.actual')
+ takeoff=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].departure.actual')
deptTimeType="ATD"
- elif [[ $(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].departure.estimated') != "null" ]]
+ elif [[ $(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].departure.estimated') != "null" ]]
then
- takeoff=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].departure.estimated')
+ takeoff=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].departure.estimated')
deptTimeType="ETD"
else
- takeoff=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].departure.scheduled')
+ takeoff=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].departure.scheduled')
deptTimeType="STD"
fi
- if [[ $(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].arrival.actual') != "null" ]]
+ if [[ $(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].arrival.actual') != "null" ]]
then
- landing=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].arrival.actual')
+ landing=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].arrival.actual')
arrTimeType="ATA"
- elif [[ $(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].arrival.estimated') != "null" ]]
+ elif [[ $(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].arrival.estimated') != "null" ]]
then
- landing=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].arrival.estimated')
+ landing=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].arrival.estimated')
arrTimeType="ETA"
else
- landing=$(echo $flightsAfter | jq -r --arg i $i '.[$i | tonumber].arrival.scheduled')
+ landing=$(echo $flightsBefore | jq -r --arg count $count '.[$count | tonumber].arrival.scheduled')
arrTimeType="STA"
fi
# Append to $output
output="$output $airline, $flightIATA, $direction: $airport, $deptTimeType: $(date -d $takeoff +"%d/%m/%Y %H:%M"), $arrTimeType: $(date -d $landing +"%d/%m/%Y %H:%M") |"
+ ((count=count+1))
done
# remove trailing pipe
@@ -195,7 +168,6 @@ then
_help
elif [[ ${input} == "--source" ]] || [[ ${input} == "-s" ]]
then
- # TODO add real source
echo "https://www.blatech.co.uk/ars/flight-query"
exit 0
elif [[ ${input} =~ "-a" ]] || [[ ${input} =~ "--arrivals" ]]