А откуда берёте данные? Weather.com давненько обрезал эту возможность. А теперь так и вообще зайти не позволяет:sinclaus: У меня погоду показывает conky, без проблем
This content is no longer available in your area
А откуда берёте данные? Weather.com давненько обрезал эту возможность. А теперь так и вообще зайти не позволяет:sinclaus: У меня погоду показывает conky, без проблем
This content is no longer available in your area
И логично было бы. Поскольку это не совсем о возможностях обустройства именно в KDE. И средствами KDE. Conky универсальный инструмент для DE и отдельная большая тема.konstantinovms: По поводу погоды в коньках можно было бы вообще отдельную тему создать.
accuweather работает. Скриптом видаkonstantinovms: А откуда берёте данные? Weather.com давненько обрезал эту возможность
# !/usr/bin/bash
METRIC=1 #Should be 0 or 1; 0 for F, 1 for C
if [ -z $1 ]; then
echo "USAGE: weather.sh <locationcode>"
exit 0;
fi
wget -q http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}\&locCode\=$1 -O - | awk \
'/Currently:/ {CurWeather=$0}
/[0-9] Forecast<\/title>/ {nr=NR+3}
NR==nr {postIndx[++x]=$0}
# x>2 {exit}
END{
split(CurWeather,tmp,"Currently: ")
split(tmp[2],tmp1,"C<")
split(tmp1[1],tmp2,": ")
CurWeather=sprintf("%s°C %s",tmp2[2],tmp2[1])
sub(":",",",CurWeather)
for(x in postIndx){
split(postIndx[x],tmp,";|&")
split(tmp[1],tmp,">")
split(tmp[2],statement," C ") # substitute C for F if metric differs
split(tmp[2],temp)
forecast[++y]=sprintf("%d..%d°C %-15s",temp[5],temp[2],statement[3])
}
printf("Сейчас: %s\nСегодня: %s\nЗавтра: %s\n",CurWeather,forecast[1],forecast[2])
WEATHER
${voffset -20}
${hr}
${voffset -10}${execi 1800 ~/bin/weather1.sh "ASI|RU|RS043|BARNAUL" > ~/tmp/liveweather.tmp}
${offset 20}${execi 60 cat /home/eugene/tmp/liveweather.tmp | grep Сейчас:}
${offset 20}${execi 60 cat /home/eugene/tmp/liveweather.tmp | grep Сегодня:}
${offset 20}${execi 60 cat /home/eugene/tmp/liveweather.tmp | grep Завтра:}
$ cat liveweather.tmp
Сейчас: 18°C Intermittent Clouds
Сегодня: 7..21°C Partly sunny, nice and warm
Завтра: 11..19°C Partly sunny and pleasant
Давайте попросим модераторов перенести три последних сообщения, включая (особенно!) сообщение eugenez в отдельную тему с (примерным) названием "Погода в Conky". Некогда эта тема была очень популярна, и терять её не хотелось бы.vall:
И логично было бы. Поскольку это не совсем о возможностях обустройства именно в KDE. И средствами KDE. Conky универсальный инструмент для DE и отдельная большая тема.
Большое спасибо! Очень полезная информация!
${execi 7200 curl -s \
'https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=69.016856&lon=33.115506&altitude=96' |
grep -Pom1 '("air_temperature":)\K[-0-9]*' | head -1 } °C
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE
${offset 20}${execi 60 curl https://wttr.in/Barnaul\?format\=2}
#!/usr/bin/bash
# Font used: RobotoMono Nerd Font
# 02.10.2022
# Найдите свой город на http://www.accuweather.com и замените URL-адрес в следующем скрипте URL-адресом вашего города.
write_panel()
{
if ! [ -d ~/.tmp/ ]; then
mkdir ~/.tmp
fi
# динамика температуры (стрелка)
file="/tmp/thist"
if [ -f "$file" ]; then
# текущая температура будет в последней строке
curtemp="$(tail -n1 $file)"
shist="$(cat $file | head -n5 | awk '{s += $1} END {print s}')"
dintemp=$(bc <<< "scale=2; $shist / 5")
if (( $(echo "$curtemp > $dintemp" | bc -l) ))
then
artemp=""
elif (( $(echo "$dintemp > $curtemp" | bc -l) ))
then
artemp=""
else
artemp=""
fi
else
artemp=""
fi
# ↑↓ ꜛꜜ
# температура
WTEMP="$(grep ° ~/.config/.curweath-web | cut -d ':' -f 15 | sed 's/"//g' | sed 's/,realFeel//g')"
# погода
WCONDI="$(grep -A1 'div class="phrase"' ~/.config/.curweath-web | head -1 | sed 's/^[[:space:]]*//g' | cut -c 21- | rev | cut -c 7- | rev)"
echo $WCONDI >> ~/.tmp/wcondi # для сбора на случай появления новых значений
#cat ~/.tmp/wcondi | sort -u
# направление ветра и скорость ветра м/с
numwing="$(echo "$(grep -n '<div>Wind</div>' ~/.config/.curweath-web | gawk '{print $1}' FS=":") + 1" | bc)"
WSP="$(head -n $numwing ~/.config/.curweath-web | tail -n 1 | grep -E -o "[0-9].*$" | cut -d ' ' -f 1)"
if grep -q Calmly ~/.config/.curweath-web
then
WSPEED=""
WWINGH="С"
elif [ "$WSP" == "0" ]
then
WSPEED=""
WWINGH="С"
else
wsms=$(bc <<< "scale=1; $WSP * 1000 / 3600")
fswsms="$(echo "$wsms" | cut -c 1)"
# выводить ноль, т.е. 0.5 m/s, а не .5 m/s
if [ "$fswsms" == "." ]
then
WSPEED="$(echo " 0$wsms м/с")"
# WSPEED="$(echo " 0$wsms")"
else
# не выводить десятые доли, если есть целое число
wpwsms="$(echo $wsms | cut -d '.' -f 1)"
WSPEED="$(echo " $wpwsms м/с")"
# WSPEED="$(echo " $wpwsms")"
fi
WWINGH="$(head -n $numwing ~/.config/.curweath-web | tail -n 1 | cut -c 11- | cut -d ' ' -f 1)"
fi
# давление мм/рт.ст
numpress="$(echo "$(grep -n '<div>Pressure</div>' ~/.config/.curweath-web | gawk '{print $1}' FS=":") + 1" | bc)"
WPRESS="$(echo "$(head -n $numpress ~/.config/.curweath-web | tail -n 1 | cut -c 20- | rev | cut -c 9- | rev) * 750064 / 1000000" | bc)"
# давление растет/парадает
simbarrow="$(head -n $numpress ~/.config/.curweath-web | tail -n 1 | cut -c 14- | cut -c 1-4)"
if [[ "$simbarrow" == "2191" ]]
then
WPREST=""
elif [[ "$simbarrow" == "2193" ]]
then
WPREST=""
else
WPREST=""
fi
#влажность %
numwetnes="$(echo "$(grep -n '<div>Humidity</div>' ~/.config/.curweath-web | gawk '{print $1}' FS=":") + 1" | bc)"
WETNES="$(head -n $numwetnes ~/.config/.curweath-web | tail -n 1 | cut -c 11- | rev | cut -c 8- | rev)"
# N — обозначает северный 煮, Е — восточный, S — южный, W — западный, С — затишье (нет ветра).
# NE — северо-восток, SE — юго-восток, SW — юго-запад, NW — северо-запад.
# NNE — обозначает северо-северо-восток, ENE — востоко-северо-восток, ESE — востоко-юго-восток и т. д.
WI=("N" "E" "S" "W" "С" "NE" "SE" "SW" "NW" "NNE" "ENE" "ESE" "SSE" "SSW" "WSW" "WNW" "NNW" "*")
WR=("С" "В" "Ю" "З" "С" "СВ" "ЮВ" "ЮЗ" "СЗ" "ССВ" "ВСВ" "ВЮВ" "ЮЮВ" "ЮЮЗ" "ЗЮЗ" "ЗСЗ" "ССЗ" "*")
WO=("煮 " "煮 " "煮 " "煮 " "" "煮 " "煮 " "煮 " "煮 " "煮 " "煮 " "煮 " "煮 " "煮 " "煮 " "煮 " "煮 " "↔")
#
for i in $(seq 0 ${#WI[@]}); do
if [[ "$WWINGH" == "${WI[$i]}" ]]; then
WINGICON="${WO[$i]}"
fi
done
TIMESDAY="ITSNIGHT"
HOUR=$(date +"%-H")
MONTH=$(date +"%-m")
# определение времени суток для отрисовки значков
# время актуально для 61 параллели, для других мест необходимо установить
# подходящее время восхода и захода солнца для каждой пары месяцев в году
if [[ 6 = "$MONTH" || 7 = "$MONTH" ]]; then
if (( $HOUR >= 3 && $HOUR <= 22 )); then
TIMESDAY="ITSDAY"
fi
elif [[ 5 = "$MONTH" || 8 = "$MONTH" ]]; then
if (( $HOUR >= 4 && $HOUR <= 20 )); then
TIMESDAY="ITSDAY"
fi
elif [[ 4 = "$MONTH" || 9 = "$MONTH" ]]; then
if (( $HOUR >= 5 && $HOUR <= 18 )); then
TIMESDAY="ITSDAY"
fi
elif [[ 3 = "$MONTH" || 10 = "$MONTH" ]]; then
if (( $HOUR >= 6 && $HOUR <= 17 )); then
TIMESDAY="ITSDAY"
fi
elif [[ 2 = "$MONTH" || 11 = "$MONTH" ]]; then
if (( $HOUR >= 7 && $HOUR <= 16 )); then
TIMESDAY="ITSDAY"
fi
else [[ 1 = "$MONTH" || 12 = "$MONTH" ]]
if (( $HOUR >= 8 && $HOUR <= 15 )); then
TIMESDAY="ITSDAY"
fi
fi
II=("Mostly clear" "Mainly clear" "Clear" "Sunny" "Light fog" "Foggy" "Dense fog" "Ground fog" "Light snow and fog" "Light snow shower" "Light snow" "Heavy snow" "Snow shower" "Heavy snow shower" "Flurries" "Snow and rain" "Rain and snow" "Snow/rain" "Snow" "Cloudy" "Partly cloudy" "Clouds and sun" "Mostly cloudy" "Partly sunny" "Blowing snow" "Rain" "Thundershower" "Rain shower" "Light rain shower" "Light rain" "Thunderstorm" "Mist" "Some clouds" "*")
# for tooltip
IR=("Преимущественно ясно" "В основном ясно" "Ясно" "Солнечно" "Слабый туман" "Туман" "Плотный туман" "Низовой туман" "Слабый снег и туман" "Слабый снегопад" "Слабый снег" "Сильный снегопад" "Сильный снег" "Сильный и плотный снег" "Шквал" "Снег и дождь" "Дождь со снегом" "Снег с дождём" "Снег" "Облачно" "Переменная облачность" "Облачно с просветами" "Преимущественно облачно" "Переменная облачность" "Метель" "Дождь" "Ливень с грозой" "Мелкий дождь" "Моросящий дождь" "Слабый дождь" "Гроза" "Туман" "Немного облачно" "*")
S2="ITSDAY"
if [ $TIMESDAY = $S2 ]; then
IO=("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "ﰕ" "" "" "ﭼ" "" "" "ﭼ" "" "" "")
else
IO=("" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "ﰕ" "" "" "ﭼ" "" "" "ﭼ" "" "" "")
fi
for i in $(seq 0 ${#II[@]}); do
if [[ "$WCONDI" == "${II[$i]}" ]]; then
WICON="${IO[$i]}"
fi
done
for i in $(seq 0 ${#II[@]}); do
if [[ "$WCONDI" == "${II[$i]}" ]]; then
WICONR="${IR[$i]}"
fi
done
echo " $WICON $WTEMP$artemp" > /tmp/.weather
echo "$WICONR $WETNES $WINGICON $WSPEED $WPRESS$WPREST" >> /tmp/.weather
}
if [[ "$1" == "upgrade" ]]; then
write_panel
# Search for your city at http://www.accuweather.com and replace the URL in the following script with the URL for your city
if ping -c 1 -w 5 8.8.8.8 &> /dev/null; then
wget -q -U Mozilla -O ~/.config/.curweath-tmp "https://www.accuweather.com/en/ru/surgut/288459/current-weather/288459" && cp ~/.config/.curweath-tmp ~/.config/.curweath-web
else
echo "Network unavailable..."
echo "n/a" > /tmp/.weather
echo "network unavailable... check internet connection" >> /tmp/.weather
exit 0
fi
# динамика температуры
# история последних 5 температур + строка с текущей
curtemp="$(grep ° ~/.config/.curweath-web | cut -d ':' -f 15 | sed 's/"//g' | sed 's/,realFeel//g' | rev | cut -c 3- | rev)"
file="/tmp/thist"
touch $file
lines=$(wc -l < $file)
# в файле должно быть 6 строк, если их меньше или файл пустой
# определим сколько строк нужно добавить
numadd=$( expr 6 - $lines )
# если их не хватает, добавим до 6 текущей температурой
if [ "$numadd" -gt "0" ]
then
for ((i=1; i <= "$numadd"; i++))
do
echo "$curtemp" >> $file
done
fi
# независимо от предыдущего результата запишем последней строкой текущую температуру
echo $curtemp >> $file
# обрежем верхние старые строки, чтобы всего было 6
echo "$(tail -n6 $file)" > $file
write_panel
else
write_panel
fi
exit 0
"custom/weather": {
"format": "{}",
"return-type": "json",
"interval": 5,
"exec": "~/.bin/weather.sh",
"on-click": "xdg-open https://www.accuweather.com/en/ru/surgut/288459/current-weather/288459"
},
#!/bin/sh
if [ ! -f "/tmp/.weather" ]; then
count="err"
tooltip="module error, file ~/.bin/wb-weather running?"
else
count=$(head -1 /tmp/.weather | tail -n 1)
tooltip=$(tail -n +2 /tmp/.weather)
fi
echo {\"text\":\"$count\"\,\"tooltip\":\"$tooltip\"\,\"class\":\"$count\"\,\"alt\":\"$count\"}
А как её вывести в самый низ коньков?sinclaus: Погоду беру как уже говорил с wttr, в начале отображаемой части скрипта conky две строки:
${image ~/nsk.png -p -1,890}
${execi 600 curl wttr.in/Novosibirsk_0tq_M.png --output ~/.conky/nsk.png}
${image ~/.conky/nsk.png -p 2,890 -f 600}
${execi 600 curl wttr.in/Novosibirsk_0tq_M_lang=ru.png --output ~/.conky/nsk2.png}
${image ~/.conky/nsk2.png -p 2,890 -f 600}