diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2022-02-20 22:51:36 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-20 22:51:36 +0100 | 
| commit | 537d3f4aa56618e080e8cce344fe5459b6d7299f (patch) | |
| tree | 2da111e95473bea10f5a1ff74b3b30830a5fa682 /contrib | |
| parent | 01aec7e9770d99565c06f673268ba587007c2b1f (diff) | |
| parent | 0f7101ecd676d84050800fe6720e87ae40dd9577 (diff) | |
Merge pull request #55 from thisjade/master
contrib: add Polybar status module
Diffstat (limited to 'contrib')
| -rw-r--r-- | contrib/polybar.sh | 201 | 
1 files changed, 201 insertions, 0 deletions
| diff --git a/contrib/polybar.sh b/contrib/polybar.sh new file mode 100644 index 0000000..df2a523 --- /dev/null +++ b/contrib/polybar.sh @@ -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 | 
