mirror of
https://github.com/derf/travelynx
synced 2024-12-02 17:29:11 +00:00
Merge pull request #55 from thisjade/master
contrib: add Polybar status module
This commit is contained in:
commit
537d3f4aa5
1 changed files with 201 additions and 0 deletions
201
contrib/polybar.sh
Normal file
201
contrib/polybar.sh
Normal file
|
@ -0,0 +1,201 @@
|
|||
#!/bin/bash
|
||||
|
||||
# See <https://github.com/thisjade/TravelynxPolybar/blob/main/README.md>
|
||||
# for configuration details
|
||||
|
||||
# Interval for refreshing Data and giving it to Polybar
|
||||
INTERVAL=1
|
||||
|
||||
# Delay Notification Variables
|
||||
notificationDelaySent="false"
|
||||
notificationLastDelay=0
|
||||
notificationNextStopSent="true"
|
||||
notificationNextStopTime=""
|
||||
|
||||
# Place your API Key here
|
||||
API_KEY=
|
||||
NOTIFICATIONS_NEXT_STOP="true"
|
||||
NOTIFICATIONS_DELAY="true"
|
||||
LANGUAGE="DE"
|
||||
SYMBOL=""
|
||||
|
||||
|
||||
while true; do
|
||||
# curl'ing of all needed Data from https://travelynx.de
|
||||
isCheckedIn=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .checkedIn | sed 's/"//' | sed 's/"//')
|
||||
echo "$isCheckedIn" > /dev/null;
|
||||
trainType=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .train.type | sed 's/"//' | sed 's/"//')
|
||||
echo "$trainType" > /dev/null;
|
||||
trainNo=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .train.no | sed 's/"//' | sed 's/"//')
|
||||
echo "$trainNo" > /dev/null;
|
||||
trainLine=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .train.line | sed 's/"//' | sed 's/"//')
|
||||
echo "$trainLine" > /dev/null;
|
||||
toStation=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .toStation.name | sed 's/"//' | sed 's/"//')
|
||||
echo "$toStation" > /dev/null;
|
||||
arrivalTime=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .toStation.scheduledTime)
|
||||
echo "$arrivalTime" > /dev/null;
|
||||
actualArrivalTime=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .toStation.realTime)
|
||||
echo "$actualArrivalTime" > /dev/null;
|
||||
arrivalTimeDate=$(date +%H:%M -d @$arrivalTime)
|
||||
actualArrivalTimeDate=$(date +%H:%M -d @$actualArrivalTime)
|
||||
|
||||
nextStationTime=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .intermediateStops[].realArrival)
|
||||
nextStationName=$(curl -s https://travelynx.de/api/v1/status/$API_KEY | jq .intermediateStops[].name | sed 's/"//' | sed 's/"//')
|
||||
|
||||
|
||||
SAVEIFS=$IFS
|
||||
IFS=$'\n'
|
||||
nextStationTime=($nextStationTime)
|
||||
nextStationName=($nextStationName)
|
||||
IFS=$SAVEIFS
|
||||
|
||||
if [ "$(date +%H:%M)" != "$notificationNextStopTime" ]
|
||||
then
|
||||
for (( i=0; i<${#nextStationTime[@]}; i++ ))
|
||||
do
|
||||
|
||||
if [ "$(date +%H:%M)" == "$(date +%H:%M -d @${nextStationTime[$i]})" ] && [ "$NOTIFICATIONS_NEXT_STOP" == "true" ] && [ "$LANGUAGE" == "DE" ]
|
||||
then
|
||||
notify-send "Nächster Halt:" "${nextStationName[$i]} um $(date +%H:%M -d @${nextStationTime[$i]})"
|
||||
notificationNextStopTime=$(date +%H:%M -d @${nextStationTime[$i]})
|
||||
fi
|
||||
|
||||
if [ "$(date +%H:%M)" == "$(date +%H:%M -d @${nextStationTime[$i]})" ] && [ "$NOTIFICATIONS_NEXT_STOP" == "true" ] && [ "$LANGUAGE" == "EN" ]
|
||||
then
|
||||
notify-send "Next Stop:" "${nextStationName[$i]} at $(date +%H:%M -d @${nextStationTime[$i]})"
|
||||
notificationNextStopTime=$(date +%H:%M -d @${nextStationTime[$i]})
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
# Checking if Arrival Time changed to send a new Notification
|
||||
if [ "$actualArrivalTime" -gt "$notificationLastDelay" ]
|
||||
then
|
||||
notificationDelaySent="false"
|
||||
fi
|
||||
|
||||
# Checking if Arrival Time changed to send a new Notification
|
||||
if [ "$actualArrivalTime" != "$notificationLastDelay" ] && [ "$actualArrivalTime" != "$arrivalTime" ]
|
||||
then
|
||||
notificationDelaySent="false"
|
||||
fi
|
||||
|
||||
|
||||
# Sending a Notification if an ICE Train is delayed
|
||||
if [ $isCheckedIn = "true" ] && [ "$actualArrivalTime" -gt "$arrivalTime" ] && [ $notificationDelaySent == "false" ] && [ $trainType == "ICE" ] && [ $NOTIFICATIONS_DELAY == "true" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
notificationDelaySent="true"
|
||||
notify-send "Zugverspätung:" "Information zu $trainType $trainNo nach $toStation Ankuft heute $actualArrivalTimeDate anstatt $arrivalTimeDate"
|
||||
fi
|
||||
|
||||
# Sending a Notification if an ICE Train is delayed
|
||||
if [ $isCheckedIn = "true" ] && [ "$actualArrivalTime" -gt "$arrivalTime" ] && [ $notificationDelaySent == "false" ] && [ $trainType == "ICE" ] && [ $NOTIFICATIONS_DELAY == "true" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
notificationDelaySent="true"
|
||||
notify-send "Delay:" "Information on $trainType $trainNo to $toStation arrival today $actualArrivalTimeDate instead of $arrivalTimeDate"
|
||||
fi
|
||||
|
||||
# Sending a Notification if an IC Train is delayed
|
||||
if [ $isCheckedIn = "true" ] && [ "$actualArrivalTime" -gt "$arrivalTime" ] && [ $notificationDelaySent == "false" ] && [ $trainType == "IC" ] && [ $NOTIFICATIONS_DELAY == "true" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
notificationDelaySent="true"
|
||||
notify-send "Zugverspätung:" "Information zu $trainType $trainNo nach $toStation Ankuft heute $actualArrivalTimeDate anstatt $arrivalTimeDate"
|
||||
fi
|
||||
|
||||
# Sending a Notification if an IC Train is delayed
|
||||
if [ $isCheckedIn = "true" ] && [ "$actualArrivalTime" -gt "$arrivalTime" ] && [ $notificationDelaySent == "false" ] && [ $trainType == "IC" ] && [ $NOTIFICATIONS_DELAY == "true" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
notificationDelaySent="true"
|
||||
notify-send "Delay:" "Information on $trainType $trainNo to $toStation arrival today $actualArrivalTimeDate instead of $arrivalTimeDate"
|
||||
fi
|
||||
|
||||
# Sending a Notification if other (not ICE/IC) Train is delayed
|
||||
if [ $isCheckedIn = "true" ] && [ "$actualArrivalTime" -gt "$arrivalTime" ] && [ $notificationDelaySent == "false" ] && [ $trainType != "ICE" ] && [ $trainType != "IC" ] && [ $NOTIFICATIONS_DELAY == "true" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
notificationDelaySent="true"
|
||||
notify-send "Zugverspätung:" "Information zu $trainType $trainLine nach $toStation Ankuft heute $actualArrivalTimeDate anstatt $arrivalTimeDate"
|
||||
fi
|
||||
|
||||
|
||||
# Sending a Notification if other (not ICE/IC) Train is delayed
|
||||
if [ $isCheckedIn = "true" ] && [ "$actualArrivalTime" -gt "$arrivalTime" ] && [ $notificationDelaySent == "false" ] && [ $trainType != "ICE" ] && [ $trainType != "IC" ] && [ $NOTIFICATIONS_DELAY == "true" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
notificationDelaySent="true"
|
||||
notify-send "Delay:" "Information on $trainType $trainLine to $toStation arrival today $actualArrivalTimeDate instead of $arrivalTimeDate"
|
||||
fi
|
||||
|
||||
# Sending a Notification if the ICE Train is on time again
|
||||
if [ "$actualArrivalTime" -eq "$arrivalTime" ] && [ $notificationDelaySent == "true" ] && [ $isCheckedIn == "true" ] && [ $trainType == "ICE" ] && [ $NOTIFICATION_DELAY == "true" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
notify-send "Information:" "Information zu $trainType $trainNo nach $toStation ist wieder pünktlich"
|
||||
fi
|
||||
|
||||
# Sending a Notification if the ICE Train is on time again
|
||||
if [ "$actualArrivalTime" -eq "$arrivalTime" ] && [ $notificationDelaySent == "true" ] && [ $isCheckedIn == "true" ] && [ $trainType == "ICE" ] && [ $NOTIFICATION_DELAY == "true" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
notify-send "Information:" "Information on $trainType $trainNo to $toStation is on time again"
|
||||
fi
|
||||
|
||||
# Sending a Notification if the IC Train is on time again
|
||||
if [ "$actualArrivalTime" -eq "$arrivalTime" ] && [ $notificationDelaySent == "true" ] && [ $isCheckedIn == "true" ] && [ $trainType == "IC" ] && [ $NOTIFICATION_DELAY == "true" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
notify-send "Information:" "Information zu $trainType $trainNo nach $toStation ist wieder pünktlich"
|
||||
fi
|
||||
|
||||
# Sending a Notification if the IC Train is on time again
|
||||
if [ "$actualArrivalTime" -eq "$arrivalTime" ] && [ $notificationDelaySent == "true" ] && [ $isCheckedIn == "true" ] && [ $trainType == "IC" ] && [ $NOTIFICATION_DELAY == "true" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
notify-send "Information:" "Information on $trainType $trainNo to $toStation is on time again"
|
||||
fi
|
||||
|
||||
# Sending a Notification if a other (not ICE/IC) Train is on time again
|
||||
if [ "$actualArrivalTime" -eq "$arrivalTime" ] && [ $notificationDelaySent == "true" ] && [ $isCheckedIn == "true" ] && [ $trainType != "ICE" ] && [ $trainType != "IC" ] && [ $NOTIFICATION_DELAY = "true" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
notify-send "Information:" "Information zu $trainType $trainLine nach $toStation ist wieder pünktlich"
|
||||
fi
|
||||
|
||||
# Sending a Notification if a other (not ICE/IC) Train is on time again
|
||||
if [ "$actualArrivalTime" -eq "$arrivalTime" ] && [ $notificationDelaySent == "true" ] && [ $isCheckedIn == "true" ] && [ $trainType != "ICE" ] && [ $trainType != "IC" ] && [ $NOTIFICATION_DELAY = "true" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
notify-send "Information:" "Information on $trainType $trainLine ti $toStation is on time again"
|
||||
fi
|
||||
|
||||
# Saving the Delay from the latest Notification
|
||||
notificationLastDelay=$actualArrivalTime
|
||||
|
||||
# Showing the Label for Polybar
|
||||
if [ $isCheckedIn == "true" ] && [ $trainType != "ICE" ] && [ $trainType != "IC" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
echo "$SYMBOL" $trainType $trainLine "nach" $toStation
|
||||
elif [ $isCheckedIn == "true" ] && [ $trainType != "ICE" ] && [ $trainType != "IC" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
echo "$SYMBOL" $trainType $trainLine "to" $toStation
|
||||
elif [ $isCheckedIn == "true" ] && [ $trainType == "IC" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
echo "$SYMBOL" $trainType $trainNo "nach" $toStation
|
||||
elif [ $isCheckedIn == "true" ] && [ $trainType == "IC" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
echo "$SYMBOL" $trainType $trainNo "to" $toStation
|
||||
elif [ $isCheckedIn == "true" ] && [ $trainType == "ICE" ] && [ $LANGUAGE == "DE" ]
|
||||
then
|
||||
echo "$SYMBOL" $trainType $trainNo "nach" $toStation
|
||||
elif [ $isCheckedIn == "true" ] && [ $trainType == "ICE" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
echo "$SYMBOL" $trainType $trainNo "to" $toStation
|
||||
elif [ $isCheckedIn == "false" ] && [ $LANGUAGE == "EN" ]
|
||||
then
|
||||
echo "$SYMBOL"" not checked in"
|
||||
notificationDelaySent="false"
|
||||
notificationLastDelay=0
|
||||
notificationNextStopSent="true"
|
||||
else
|
||||
echo "$SYMBOL"" nicht eingecheckt"
|
||||
notificationDelaySent="false"
|
||||
notificationLastDelay=0
|
||||
notificationNextStopSent="true"
|
||||
notificationNextStopTime=""
|
||||
fi
|
||||
sleep $INTERVAL
|
||||
|
||||
done
|
Loading…
Reference in a new issue