• [gelöscht]

shibumi schriebErstmal ein Lob an alle die conkyrc UND screenshots posten! Danke.
Dem schliesse ich mich an. Insbesondere Dein Screenshot hat mich bass erstaunt. 😛
6 Tage später
  • [gelöscht]

Dirk schrieb Wetterscript
Habe das Wetterscript mal ausprobiert,
allerdings wird bei mir lediglich der Zustand, aber nicht die Temperatur ausgegeben.
Das sieht dann so aus:
leicht bewölktkeine Verbundung
Woran kann das liegen? Ich habe das script zum Testen 1:1 übernommen.
Anna-Lena schrieb
Dirk schrieb Wetterscript
Habe das Wetterscript mal ausprobiert,
allerdings wird bei mir lediglich der Zustand, aber nicht die Temperatur ausgegeben.
Das sieht dann so aus:
leicht bewölktkeine Verbundung
Woran kann das liegen? Ich habe das script zum Testen 1:1 übernommen.

Versuch sonst mal das wetterscript was ich nutze:
#!/bin/sh
#AccuWeather (r) RSS weather tool for conky
#
#USAGE: weather.sh <locationcode>
#
#(c) Michael Seiler 2007

METRIC=1 #Should be 0 or 1; 0 for F, 1 for C

if [ -z $1 ]; then
    echo
    echo "USAGE: weather.sh <locationcode>"
    echo
    exit 0;
fi

curl -s http://rss.accuweather.com/rss/liveweather_rss.asp\?metric\=${METRIC}\&locCode\=$1 | perl -ne 'if (/Currently/) {chomp;/\<title\>Currently: (.*)?\<\/title\>/; print "$1"; }' 
Aufruf in der conkyrc sieht dann zb so aus:
${execi 300 /usr/bin/weather "EUR|DE|GMXX6207|Clausthal"}
Deinen Locationcode kriegst du hier -> http://edg3.co.uk/snippets/weather-location-codes/
  • [gelöscht]

shibumi schrieb Versuch sonst mal das wetterscript was ich nutze:
Danke. Das Schöne an Dirks Script, bzW. wetter.com ist, das man relativ fein granuliert das Wetter abfragen kann, also stadtteilspezifisch.
Ich habe mir jetzt erstmal mit einer kleinen Änderung geholfen indem ich nach degree-in greppe und tempround entfernt habe.
…
temp=$(grep -A1 "class=\"degree-in\"" "${T}" | tail -n1 | awk '{print $1}')
# tempround=$(printf %.0f ${temp} | sed s/"-0"/"0"/g)
…
res=$(echo "${cond}, ${temp} °C" | sed s/", 0°C"/"keine Verbindung"/g)
Jetzt gibt er die Temperatur zwar genauer als man's wissen muß aus, aber immerhin sehe ich was.
Anna-Lena schriebJetzt gibt er die Temperatur zwar genauer als man's wissen muß aus, aber immerhin sehe ich was.
Darum habe ich es gerundet. Ganz ehrlich, den unterschied zwischen 10,7 Grad und 11 Grad kann ich nicht ausmachen, mir reicht nur ’ne grobe Richtung. Was mir übrigens vor einiger Zeit aufgefallen ist, das mit dem „keine Verbindung“ muss angepasst werden: … sed s/"$, 0°C^"/"keine Verbindung"/g …, sonst wird das zum Beispiel „wolkigkeine Verbindung“, weil das sed nicht von Anfang an prüft, sondern auch mitten im String.
  • [gelöscht]

Dirk schriebdas mit dem „keine Verbindung“ muss angepasst werden: … sed s/"$, 0°C^"/"keine Verbindung"/g …,
Hm, jetzt sind's immer 0°C
7 Tage später
  • [gelöscht]

Anna-Lena schrieb
Dirk schriebdas mit dem „keine Verbindung“ muss angepasst werden: … sed s/"$, 0°C^"/"keine Verbindung"/g …,
Hm, jetzt sind's immer 0°C
Ich würde ja behaupten, dass das an der fehlerhaften
tempround=$(printf %.0f ${temp} | sed s/"-0"/"0"/g)
Zeile liegt.
Vielleicht ist Dirk ja so nett und zeigt nochmal sein Script, so wie es bei ihm funktioniert?
Gruß H.
was spricht gegen awk?
wget -q "http://www.wetter.com/wetter_aktuell/aktuelles_wetter/deutschland/hamburg/bramfeld/DE0004130064.html" -O - \
| awk '/degree-in/{getline;printf("%d %s\n",$1 + 0.5,$2)}'
Ok da hat es keine Fehlerbehandlung, was spricht gegen ping?
ping -c1 www.wettsdfr.com >/dev/null 2>&1 || exit 1
Bei uns regnet es sowieso immer, darum habe ich auch kein Conky :p <- das heisst ich habe keine Ahnung wovon ich spreche und die Reihenfolge ist auch verkehrt.
Hier nochmal in komplett 🙂
#!/bin/bash

T=$(mktemp)

wget -q "http://www.wetter.com/wetter_aktuell/aktuelles_wetter/deutschland/hamburg/bramfeld/DE0004130064.html" -O ${T}

temp=$(grep -A1 "class=\"degree-in\"" "${T}" | tail -n1 | awk '{print $1}')
tempround=$(printf %.0f ${temp} | sed s/"-0"/"0"/g)

cond=$(grep -A1 "class=\"status\"" "${T}" \
	| tail -n1 \
	| sed 's/^ *//g' \
	| sed 's/,/\n${alignr}/g' \
	| sed 's/leichter Regen-schauer/leichte Regenschauer/g')

if [ "$(date +%H)" -ge 21  ]; then
	cond=$(echo $cond | sed s/"sonnig"/"klar"/g)
fi

res=$(echo "${cond}, ${tempround}°C" | sed s/"$, 0°C^"/"keine Verbindung"/g)

echo -ne "${res}"

rm ${T}
… nur eben hässlich, null fehlertolerant, und eigentlich nur ’ne Notlösung 🙂
  • [gelöscht]

Hi Dirk,
danke für das Script!
Leider wirft er bei mir nun diesen Fehler:
[anna@teachme ~] sh .scripts/wetter   
.scripts/wetter: line 8: printf: 6,5: invalid number
klar 0°C%
Ich bin ratlos, zumal es bei Dir ja funktioniert.
  • [gelöscht]

Dirk schriebbash, nicht sh.
Danke, leider köappt's trotzdem nicht.
[anna@teachme ~] bash .scripts/wetter   
.scripts/wetter: line 8: printf: 6,5: invalid number
klar 0°C%
Ich benutze als shell zsh, aber auch wenn ich in bash wechsle und dort das Script ausführe (wie oben) erscheint die selbe Fehlermeldung.
Könnte etwas an meinem System falsch konfiguriert sein?
@Anna-Lena

Das Script von Dirk funktioniert hier fehlerfrei.
Hast du auch das Script in UTF-8 abgespeichert und die Bash steht ebenfalls bei Default character encoding auf UTF-8.
  • [gelöscht]

Henrikx schrieb@Anna-Lena
Hast du auch das Script in UTF-8 abgespeichert und die Bash steht ebenfalls bei Default character encoding auf UTF-8.
Hm. Gute Frage, Ich habe es kopiert, in vim eingefügt und abgespeichert. Wie ermittle ich denn das Default character encoding?
$ locale -a
C
POSIX
de_DE.utf8
en_DK.utf8
en_US.utf8
Für vim , glaube ich, (Ich habe vim nicht installiert) lautet der Befehl : vim "+set encoding=utf-8"
(dann solltest du das Script aber noch mal neu von hier rein kopieren)

Sonst wüsste ich auch keine Fehlerquelle außer einem Formatierungs-- bzw. Zeichensatzfehler.
Gibt es überhaupt auf einem „normalen“ System etwas anderes als UTF-8? Immerhin haben wir 2014 🙂
Müsste eigentlich so sein.
Die einzig optionale Komponente in deinem Script ist wget.
Also was kann der Fehler sein bei Anna-Lena?
Mir fällt da außer Zeichensatz-Konvertierungs-Fehler nichts ein..nach meiner Meinung hier irgendwo.....

temp=$(grep -A1 "class=\"degree-in\"" "${T}" | tail -n1 | awk '{print $1}')
(printf %.0f ${temp} | sed s/"-0"/"0"/g).
Kann es daran liegen, dass bei der Gradzahl die Nachkommastellen mit einem Komma getrennt werden, printf aber einen Punkt erwartet (bzw. andersrum)?
$ bash -c 'printf %.0f 6,5'
6
$ bash -c 'printf %.0f 6.5'
bash: Zeile 0: printf: 6.5: Ungültige Zahl.
0
  • [gelöscht]

feuri schriebKann es daran liegen, dass bei der Gradzahl die Nachkommastellen mit einem Komma getrennt werden, printf aber einen Punkt erwartet (bzw. andersrum)?
Jawoll- daran lag's!
Wenn ich die Zeile ändere in:
temp=$(grep -A1 "class=\"degree-in\"" "${T}" | tail -n1 | awk '{print $1}' | sed s/,/./g)
dann ist alles gut. Danke! Bleibt natürlich noch zu klären, warum's bei mir ohne diese Änderung nicht läuft, bei den anderen aber ja.