implement basic caching
This commit is contained in:
parent
fa0465eb51
commit
6a06b1c143
36
departure.sh
36
departure.sh
|
@ -148,6 +148,7 @@ get_cvag_station_name()
|
|||
local -n _STATION_ID=$2
|
||||
|
||||
COMPLETE_STATION_LIST="$(curl --connect-timeout 5 -s "http://www.cvag.de/eza/mis/stations?minLat=0&maxLat=100&minLon=0&maxLon=100")"
|
||||
[ -z "$(echo $COMPLETE_STATION_LIST | grep -oe "^{.*}$")" ] && return 1
|
||||
for ((i=0; i<${#_STATION_ID[*]}; i++)); do
|
||||
case ${_STATION_ID[$i]} in
|
||||
""|*[!0-9]*)
|
||||
|
@ -161,6 +162,7 @@ get_cvag_station_name()
|
|||
done
|
||||
}
|
||||
|
||||
STATION_SCHEDULE=()
|
||||
get_cvag_station_info()
|
||||
{
|
||||
local -n _STATION_STOPS=$2
|
||||
|
@ -170,11 +172,14 @@ get_cvag_station_info()
|
|||
local -n _STATION_ACTUAL_DEPARTURE=$6
|
||||
local -n _REALSTATION_NOW=$7
|
||||
local -n _THISDATE=$8
|
||||
_ERROR=0
|
||||
|
||||
STATION_SCHEDULE="$(curl --connect-timeout 5 -s "http://www.cvag.de/eza/mis/stops/station/CAG-${STATION_ID[$1]}")"
|
||||
THIS_STATION_SCHEDULE="$(curl --connect-timeout 5 -s "http://www.cvag.de/eza/mis/stops/station/CAG-${STATION_ID[$1]}")"
|
||||
[ ! -z "$(echo "$THIS_STATION_SCHEDULE" | grep -oe "^{.*}$")" ] && STATION_SCHEDULE[$1]=$THIS_STATION_SCHEDULE || _ERROR=1 # return data from cache
|
||||
[ -z "$STATION_SCHEDULE[$1]" ] && _ERROR=2 # no data cached yet
|
||||
|
||||
_STATION_STOPS=$(echo "$STATION_SCHEDULE" | jq -r ".stops | .[]")
|
||||
_STATION_NOW=$(echo "$STATION_SCHEDULE" | jq -r ".now")
|
||||
_STATION_STOPS=$(echo "${STATION_SCHEDULE[$1]}" | jq -r ".stops | .[]")
|
||||
_STATION_NOW=$(echo "${STATION_SCHEDULE[$1]}" | jq -r ".now")
|
||||
_STATION_DESTINATIONS=($(echo -n "$_STATION_STOPS" | jq -r ".destination"))
|
||||
_STATION_LINES=($(echo -n "$_STATION_STOPS" | jq -r ".line"))
|
||||
_STATION_ACTUAL_DEPARTURE=($(echo -n "$_STATION_STOPS" | jq -r ".actualDeparture"))
|
||||
|
@ -183,6 +188,8 @@ get_cvag_station_info()
|
|||
[ ${#REALSTATION_NOWMS} -lt 3 ] && REALSTATION_NOWMS="0$REALSTATION_NOWMS"
|
||||
_REALSTATION_NOW=$(( "$_STATION_NOW" / 1000))
|
||||
_THISDATE=$(date --date="@$_REALSTATION_NOW" +"%d.%m.%Y %T")",$REALSTATION_NOWMS"
|
||||
|
||||
return $_ERROR
|
||||
}
|
||||
|
||||
draw_logo_time()
|
||||
|
@ -200,8 +207,8 @@ draw_logo_time()
|
|||
LOGO_LINES_POSITION=0
|
||||
STATION_NAME=()
|
||||
while true; do
|
||||
[ ${#STATION_NAME[@]} -eq 0 ] && get_cvag_station_name STATION_NAME STATION_ID
|
||||
if [ ${#STATION_NAME[@]} -eq 0 -o -z "$(curl --connect-timeout 5 -s "http://www.cvag.de/eza/mis/stops/station/CAG-0" | grep -oe "^{.*}$")" ]; then
|
||||
[ ${#STATION_NAME[*]} -eq 0 ] && get_cvag_station_name STATION_NAME STATION_ID
|
||||
if [ ${#STATION_NAME[*]} -eq 0 ]; then
|
||||
clear
|
||||
echo -e "\\n\\n\\n\\tService unavailable!"
|
||||
sleep 10
|
||||
|
@ -212,20 +219,23 @@ while true; do
|
|||
for ((j=0; j<="${#STATION_ID[*]}"; j++)); do
|
||||
if [ ! "$j" -eq "$LOGO_LINES_POSITION" ]; then
|
||||
[ "$j" -gt "$LOGO_LINES_POSITION" ] && THIS_STATION_ID=$(($j-1)) || THIS_STATION_ID=$j
|
||||
get_cvag_station_info $THIS_STATION_ID STATION_STOPS STATION_NOW STATION_DESTINATIONS STATION_LINES STATION_ACTUAL_DEPARTURE REALSTATION_NOW THISDATE
|
||||
|
||||
MYOUTPUT[$j]="${MYOUTPUT[$j]}\n\n\
|
||||
get_cvag_station_info $THIS_STATION_ID STATION_STOPS STATION_NOW STATION_DESTINATIONS STATION_LINES STATION_ACTUAL_DEPARTURE REALSTATION_NOW THISDATE
|
||||
STATION_INFO_ERR=$?
|
||||
if [ ! $STATION_INFO_ERR -eq 2 ]; then # FIXME: add warning, when STATION_INFO_ERR == 1
|
||||
MYOUTPUT[$j]="${MYOUTPUT[$j]}\n\n\
|
||||
\t\t┌────────────────────────────────┬─────────────────────────┐ \n\
|
||||
\t\t│ ${STATION_NAME[$THIS_STATION_ID]}$(printf "%-$((31-${#STATION_NAME[$THIS_STATION_ID]}))s" "")│ $THISDATE │\n\
|
||||
\t\t├────────────────────┬─────┬─────┴─────────────────────────┤\n"
|
||||
for ((i=0; i<"${#STATION_LINES[*]}"; i++)); do
|
||||
MILLIS=$((${STATION_ACTUAL_DEPARTURE[$i]} - STATION_NOW)); [ "$MILLIS" -lt 0 ] && MILLIS=0
|
||||
SEKS=$((MILLIS / 1000)); MILLIS=$((MILLIS % 1000)); MINS=$((SEKS / 60)); SEKS=$((SEKS % 60))
|
||||
MYOUTPUT[$j]="${MYOUTPUT[$j]}\
|
||||
for ((i=0; i<"${#STATION_LINES[*]}"; i++)); do
|
||||
MILLIS=$((${STATION_ACTUAL_DEPARTURE[$i]} - STATION_NOW)); [ "$MILLIS" -lt 0 ] && MILLIS=0
|
||||
SEKS=$((MILLIS / 1000)); MILLIS=$((MILLIS % 1000)); MINS=$((SEKS / 60)); SEKS=$((SEKS % 60))
|
||||
MYOUTPUT[$j]="${MYOUTPUT[$j]}\
|
||||
\t\t│$(printf "%-$((3-${#MINS}))s" "")$MINS min $(printf "%-$((2-${#SEKS}))s" "")$SEKS,$(printf "%03d" $MILLIS) s │ $(printf "%-$((3-${#STATION_LINES[$i]}))s" "")${STATION_LINES[$i]} │ ${STATION_DESTINATIONS[$i]}$(printf "%-$((29-${#STATION_DESTINATIONS[$i]}))s" "") │\\n"
|
||||
done
|
||||
MYOUTPUT[$j]="${MYOUTPUT[$j]}\
|
||||
done
|
||||
MYOUTPUT[$j]="${MYOUTPUT[$j]}\
|
||||
\t\t└────────────────────┴─────┴───────────────────────────────┘"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
draw_logo_time LOGO_AND_TIME $REALSTATION_NOW
|
||||
|
|
Loading…
Reference in New Issue