Xfce Forum

Sub domains
 

You are not logged in.

#1 2026-03-17 18:46:01

jakfish
Member
Registered: 2019-12-23
Posts: 73
LinuxChrome 146.0

ToZ's Weather Script--Change from Celsius to Fahrenheit? >SOLVED<

Been using this great script for years, but it's suddenly moved from Fahrenheit to Celsius.  I can't find the handle to jiggle back to Fahrenheit. Any advice?

#!/bin/bash

wxcache=${HOME}/tmp/wxdata-cached

SITE="Silver Spring"
LATITUDE="39.085100"
LONGITUDE="-77.059000"

CLICK_COMMAND="xfce4-terminal -H --geometry=126x41 -T "Weather" -x curl -s wttr.in/$LATITUDE,$LONGITUDE"

function toDate
{
    HOUR=$(echo $1 | awk -F':' '{print $1}')
    MINUTE=$(echo $1 | awk -F':' '{print $2}')
    
    case $HOUR in
        "00") HOUR="12" AMPM="am" ;;
        "01") HOUR="1"  AMPM="am" ;;
        "02") HOUR="2"  AMPM="am" ;;
        "03") HOUR="3"  AMPM="am" ;;
        "04") HOUR="4"  AMPM="am" ;;
        "05") HOUR="5"  AMPM="am" ;;
        "06") HOUR="6"  AMPM="am" ;;
        "07") HOUR="7"  AMPM="am" ;;
        "08") HOUR="8"  AMPM="am" ;;
        "09") HOUR="9"  AMPM="am" ;;
        "10") HOUR="10" AMPM="am" ;;
        "11") HOUR="11" AMPM="am" ;;
        "12") HOUR="12" AMPM="am" ;;
        "13") HOUR="1"  AMPM="pm" ;;
        "14") HOUR="2"  AMPM="pm" ;;
        "15") HOUR="3"  AMPM="pm" ;;
        "16") HOUR="4"  AMPM="pm" ;;
        "17") HOUR="5"  AMPM="pm" ;;
        "18") HOUR="6"  AMPM="pm" ;;
        "19") HOUR="7"  AMPM="pm" ;;
        "20") HOUR="8"  AMPM="pm" ;;
        "21") HOUR="9"  AMPM="pm" ;;
        "22") HOUR="10" AMPM="pm" ;;
        "23") HOUR="11" AMPM="pm" ;;
    esac
    
    echo "$HOUR:$MINUTE $AMPM"
}

OUT=$(curl ${wxcache} -s wttr.in/$LATITUDE,$LONGITUDE?format="%c\n%h\n%t\n%f\n%w\n%l\n%m\n%M\n%p\n%P\n%D\n%S\n%z\n%s\n%d\n%C\n")

WEATHERICON=$(echo $OUT | awk '{print $1}')
HUMIDITY=$(echo $OUT | awk '{print $2}')
TEMPERATURE=$(echo $OUT | awk '{print $3}' | sed -e 's/+//g' | sed -e 's/^-0/0/g' )
FEELSLIKE=$(echo $OUT | awk '{print $4}' | sed -e 's/+//g' | sed -e 's/^-0/0/g' )
WIND=$(echo $OUT | awk '{print $5}')
LOCATION=$(echo $OUT | awk '{print $6}')
MOONPHASE=$(echo $OUT | awk '{print $7}')
MOONDAY=$(echo $OUT | awk '{print $8}')
PRECIPITATION=$(echo $OUT | awk '{print $9}')
PRESSURE=$(echo $OUT | awk '{print $10}')
DAWN=$(toDate "$(echo $OUT | awk '{print $11}')")
SUNRISE=$(toDate "$(echo $OUT | awk '{print $12}')")
ZENITH=$(toDate "$(echo $OUT | awk '{print $13}')")
SUNSET=$(toDate "$(echo $OUT | awk '{print $14}')")
DUSK=$(toDate "$(echo $OUT | awk '{print $15}')")
WEATHERCONDITION=$(echo $OUT | awk '{print $16" "$17" "$18}')

if [ "$1" == "debug" ]; then
    echo "OUT=$OUT"
    echo "WEATHERICON=$WEATHERICON"
    echo "HUMIDITY=$HUMIDITY"
    echo "TEMPERATURE=$TEMPERATURE"
    echo "FEELSLIKE=$FEELSLIKE"
    echo "WIND=$WIND"
    echo "LOCATION=$LOCATION"
    echo "MOONPHASE=$MOONPHASE"
    echo "MOONDAY=$MOONDAY"
    echo "PRECIPITATION=$PRECIPITATION"
    echo "PRESSURE=$PRESSURE"
    echo "DAWN=$DAWN"
    echo "SUNRISE=$SUNRISE"
    echo "ZENITH=$ZENITH"
    echo "SUNSET=$SUNSET"
    echo "DUSK=$DUSK"
    echo "WEATHERCONDITION=$WEATHERCONDITION"
fi

#do the genmon
echo -e "<txt><span size='x-large'>$WEATHERICON</span><span rise='5000'> $TEMPERATURE</span></txt>"
echo -e "<txtclick>$CLICK_COMMAND</txtclick>"
echo -e "<tool><span font_desc='Bold 16'>$WEATHERICON</span>  <b><big>$SITE</big></b>
$TEMPERATURE <small>and</small> $WEATHERCONDITION
<small>
Feels like:\t$FEELSLIKE
Humidity:\t$HUMIDITY
Wind:\t\t$WIND
Precipitation:\t$PRECIPITATION
Pressure:\t$PRESSURE

Rise/Set:\t$SUNRISE / $SUNSET

Moon:\t\t$MOONPHASE
</small>
<span size='x-small'>$(date)</span></tool>"

exit 0

Last edited by jakfish (2026-03-18 14:37:41)

Offline

#2 2026-03-17 21:54:07

ToZ
Administrator
From: Canada
Registered: 2011-06-02
Posts: 12,506
LinuxFirefox 148.0

Re: ToZ's Weather Script--Change from Celsius to Fahrenheit? >SOLVED<

Are you using a VPN that places you outside the US? It uses geo-location to determine whether to use F or C.

Try add a "&?u" to the end of curl command to force imperial:

OUT=$(curl ${wxcache} -s wttr.in/$LATITUDE,$LONGITUDE?format="%c\n%h\n%t\n%f\n%w\n%l\n%m\n%M\n%p\n%P\n%D\n%S\n%z\n%s\n%d\n%C\n&?u")

You might also want to change the CLICK_COMMAND to match:

CLICK_COMMAND="xfce4-terminal -H --geometry=126x41 -T "Weather" -x curl -s wttr.in/$LATITUDE,$LONGITUDE&?u"

Mark solved threads as [SOLVED] to make it easier for others to find solutions.
--- How To Ask For Help | FAQ | Developer Wiki  |  Community | Contribute ---

Offline

#3 2026-03-18 14:37:18

jakfish
Member
Registered: 2019-12-23
Posts: 73
Windows 10Chrome 146.0

Re: ToZ's Weather Script--Change from Celsius to Fahrenheit? >SOLVED<

OUT=$(curl ${wxcache} -s wttr.in/$LATITUDE,$LONGITUDE?format="%c\n%h\n%t\n%f\n%w\n%l\n%m\n%M\n%p\n%P\n%D\n%S\n%z\n%s\n%d\n%C\n&?u")

That change was all I needed, back to Fahrenheit 451! And no, I'm not using a VPN and I didn't play with the script until just now (perhaps a change in wttr.in itself, as they were down a couple of weeks ago).

Glad it happened, though, as I had always wondered how to set up a Fahrenheit output.

Many thanks, ToZ, and I'm marking the thread as solved.

Last edited by jakfish (2026-03-18 14:38:48)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 7 queries executed - Memory usage: 535.04 KiB (Peak: 536.94 KiB) ]