Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Script pro conky [vyřešeno]  (Přečteno 2366 krát)

Cendas

Script pro conky [vyřešeno]
« kdy: 28 Prosince 2011, 09:44:23 »
Ahoj v tom scriptu pro conky mi nefungují ty proměnný.
V terminálu mi je to vypíše ale v conky ne.
Kód: [Vybrat]
#!/bin/bash

STATE_CITY=Czech_Republic/Liberec/Frýdlant~3076124

wget -O forecast.xml http://www.yr.no/place/$STATE_CITY/forecast.xml
wget -O hour.xml http://www.yr.no/place/$STATE_CITY/forecast_hour_by_hour.xml

FORECAST_FILE=forecast.xml
HOUR_FILE=hour.xml

CITY=`sed -n 's/ *<name>\(.*\)<.*>/\1/'p $HOUR_FILE`
COUNTRY=`sed -n 's/ *<country>\(.*\)<.*>/\1/'p $HOUR_FILE`
eval `sed -n 's/ *<location *\(.*"\) *\/>/\1/'p $HOUR_FILE`
LOCATION_LATITUDE=`printf "%.2f\n", $latitude`
LOCATION_LONGITUDE=`printf "%.2f\n", $longitude`
eval `sed -n 's/ *<sun.*T\(.*\) .*T\(.*\) * \/>/SUN_RISE="\1 SUN_SET="\2/'p $HOUR_FILE`
eval `sed -n 's/ *<time from=.*T\(.*\) .*T\(.*\) *>/VALID_FROM="\1 VALID_TO="\2/;41p' $HOUR_FILE`
eval `sed -n 's/<symbol *\(.*"\) *\/>/\1/;43p' $HOUR_FILE`
  SIMBOL_NUMBER=$number
  SIMBOL_NAME=$name
  SIMBOL_VAR=$var
eval `sed -n 's/<precipitation *\(.*"\) *\/>/\1/;44p' $HOUR_FILE`
  PRECIPITATION_VALUE=$value
  PRECIPITATION_MINVALUE=$minvalue
  PRECIPITATION_MAXVALUE=$maxvalue
eval `sed -n 's/<windDirection *\(.*"\) *\/>/\1/;46p' $HOUR_FILE`
  WIND_DIRECT_DEG=$deg
  WIND_DIRECT_CODE=$code
  WIND_DIRECT_NAME=$name
eval `sed -n 's/<windSpeed *\(.*"\) *\/>/\1/;47p' $HOUR_FILE`
  WIND_SPEED_MPS=$mps
  WIND_SPEED_NAME=$name
eval `sed -n 's/<temperature *\(.*"\) *\/>/\1/;48p' $HOUR_FILE`
  TEMPERATURE_UNIT=$unit
  TEMPERATURE_VALUE=$value
eval `sed -n 's/<pressure *\(.*"\) *\/>/\1/;49p' $HOUR_FILE`
  PRESSURE_UNIT=$unit
  PRESSURE_VALUE=$value
  ICON=`echo http://symbol.yr.no/grafikk/sym/b48/$SIMBOL_VAR.png`
wget -O icon.png $ICON

echo '${color 21EAE3}'"Předpověď od: "$VALID_FROM" - do: "$VALID_TO" "$COUNTRY
echo $CITY"("$LOCATION_LATITUDE" s.š., "$LOCATION_LONGITUDE" v.d.)"
echo "  "$SIMBOL_NAME
echo "                                  Východ: "$SUN_RISE
echo "                                  Západ: "$SUN_SET
echo "                                  Tlak: "$PRESSURE_VALUE" "$PRESSURE_UNIT
echo "                                  Srážky: "$PRECIPITATION_VALUE" Max.: "$PRECIPITATION_MAXVALUE" Min.: "$PRECIPITATION_MINVALUE
echo "                                  Vítr: "$WIND_DIRECT_CODE" "$WIND_SPEED_NAME" "$WIND_SPEED_MPS
echo "  "$TEMPERATURE_VALUE" "$TEMPERATURE_UNIT


exit
« Poslední změna: 01 Ledna 2012, 14:10:23 od Cendas »

Cendas

Re:Script pro conky
« Odpověď #1 kdy: 28 Prosince 2011, 10:03:51 »
Tak už jsem asi našel kde je chyba.  :)

Cendas

Re:Script pro conky
« Odpověď #2 kdy: 28 Prosince 2011, 11:02:52 »
Ještě jeden dotaz šlo by nějak ze skriptu poslat na tuhle stránku:
http://translate.google.cz/#auto|cs|precipitation
slovo a zase načíst to přeložené do češtiny?

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re:Script pro conky
« Odpověď #3 kdy: 28 Prosince 2011, 12:52:30 »
A není to trošku zbytečný posílat neustále dotazy na cizí server? Vytvořte si ve skriptu malé pole s překladem na které můžete odkazovat

area["precipitation"]="srazky"
..... a další

$WEATHER_COND = precipitation;
echo area[$WEATHER_COND]

treba,.....
jabber: etnyx@jabbim.cz

Cendas

Re:Script pro conky
« Odpověď #4 kdy: 28 Prosince 2011, 13:12:17 »
Mě jde hlavně o překládání proměnných.
Třeba aby mě to přeložilo stav větru z Moderate breeze na Mírný vítr.

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re:Script pro conky
« Odpověď #5 kdy: 28 Prosince 2011, 14:28:48 »
Ano to pole by mělo držet veškeré překlady eng -> cz, takže nebudeš muset každých 10 min posílat nějaký dotaz na GT
jabber: etnyx@jabbim.cz

Cendas

Re:Script pro conky
« Odpověď #6 kdy: 29 Prosince 2011, 10:39:30 »
Zkusil jsem vytvořit to pole ale nefunguje to.
Kód: [Vybrat]
pole["Partly cloudy"]="Polojasno"

$SIMBOL_NAME = Partly cloudy;
echo pole[$SIMBOL_NAME]


pocasi.sh: 42: pole[Partly cloudy]=Polojasno: not found
pocasi.sh: 44: Partly: not found
pole[Partly cloudy]

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re:Script pro conky
« Odpověď #7 kdy: 29 Prosince 2011, 12:25:28 »
Kód: [Vybrat]
#!/bin/bash

declare -A POLE
POLE["Partly cloudy"]="Částečně zataženo"
POLE[Sunny]="Slunečno"
POLE["Heavy rain"]="Husté pršení"
POLE[Clear]="Jastno"

AA="Heavy rain"

echo ${POLE[$AA]}

takhle by to mělo být ok (podmínkou je mít bash verze 4, myslím,...)
jabber: etnyx@jabbim.cz

Cendas

Re:Script pro conky
« Odpověď #8 kdy: 29 Prosince 2011, 12:54:42 »
Taky nefunguje:
pokus.sh: 3: declare: not found
pokus.sh: 4: POLE[Partly cloudy]=Částečně zataženo: not found
pokus.sh: 5: POLE[Sunny]=Slunečno: not found
pokus.sh: 6: POLE[Heavy rain]=Husté pršení: not found
pokus.sh: 7: POLE[Clear]=Jastno: not found
pokus.sh: 11: Bad substitution

Verzi mám: GNU bash, verze 4.2.10(1)-release (x86_64-pc-linux-gnu)

ETNyx

  • Aktivní člen
  • *
  • Příspěvků: 425
Re:Script pro conky
« Odpověď #9 kdy: 29 Prosince 2011, 13:35:07 »
Tak to asi bude chtit někoho zkusenejsiho s tímhle už neporadím

btw mě to jede:
Kód: [Vybrat]
etnyx@debian:~$ nano test2.sh
etnyx@debian:~$ chmod +x test2.sh
etnyx@debian:~$ cat test2.sh
#!/bin/bash

declare -A POLE
POLE["Partly cloudy"]="Částečně zataženo"
POLE[Sunny]="Slunečno"
POLE["Heavy rain"]="Husté pršení"
POLE[Clear]="Jastno"

AA="Heavy rain"

echo ${POLE[$AA]}
etnyx@debian:~$ ./test2.sh
Husté pršení
etnyx@debian:~$ bash --version
GNU bash, verze 4.1.5(1)-release (i486-pc-linux-gnu)
Copyright © 2009 Free Software Foundation, Inc.
Licence GPLv3+: GNU GPL verze 3 nebo novější <http://gnu.org/licenses/gpl.html>

Toto je svobodné programové vybavení: máte právo jej měnit a šířit.
VEŠKERÉ ZÁRUKY chybí, jak jen zákon dovoluje.

EDIT: ještě jsem to zkusil na jiným systému (GNU bash, verze 4.2.20(2)-release (x86_64-unknown-linux-gnu)) a taky ok, btw mas tam opravdu bash?? třeba v sh declare není,...
« Poslední změna: 29 Prosince 2011, 14:38:09 od ETNyx »
jabber: etnyx@jabbim.cz

Cendas

Re:Script pro conky
« Odpověď #10 kdy: 31 Prosince 2011, 11:20:17 »
Ahoj Tak ten překlad jsem vyřešil použítím sedu. :)
Ještě bych potřeboval upravit tenhle xml soubor
http://www.yr.no/place/Czech_Republic/Liberec/Fr%C3%BDdlant~3076124/forecast.xml
 aby mě tam zůstali data vždy jen označené jako period="2"
Výsledek by měl vypadat takhle:
Kód: [Vybrat]
      <time from="2011-12-31T12:00:00" to="2011-12-31T18:00:00" period="2">
        <!-- Valid from 2011-12-31T12:00:00 to 2011-12-31T18:00:00 -->
        <symbol number="3" name="Partly cloudy" var="03d" />
        <precipitation value="0.0" />
        <!-- Valid at 2011-12-31T12:00:00 -->
        <windDirection deg="239.8" code="WSW" name="West-southwest" />
        <windSpeed mps="3.6" name="Gentle breeze" />
        <temperature unit="celsius" value="2" />
        <pressure unit="hPa" value="1014.6" />
      </time>
      <time from="2012-01-01T12:00:00" to="2012-01-01T18:00:00" period="2">
        <!-- Valid from 2012-01-01T12:00:00 to 2012-01-01T18:00:00 -->
        <symbol number="4" name="Cloudy" var="04" />
        <precipitation value="0.3" minvalue="0,2" maxvalue="0,5" />
        <!-- Valid at 2012-01-01T12:00:00 -->
        <windDirection deg="193.2" code="SSW" name="South-southwest" />
        <windSpeed mps="5.3" name="Gentle breeze" />
        <temperature unit="celsius" value="3" />
        <pressure unit="hPa" value="1013.4" />
      </time>
      <time from="2012-01-02T12:00:00" to="2012-01-02T18:00:00" period="2">
        <!-- Valid from 2012-01-02T12:00:00 to 2012-01-02T18:00:00 -->
        <symbol number="9" name="Rain" var="09" />
        <precipitation value="1.8" minvalue="1,4" maxvalue="2,3" />
        <!-- Valid at 2012-01-02T12:00:00 -->
        <windDirection deg="195.7" code="SSW" name="South-southwest" />
        <windSpeed mps="7.5" name="Moderate breeze" />
        <temperature unit="celsius" value="8" />
        <pressure unit="hPa" value="1005.8" />
      </time>
      <time from="2012-01-03T13:00:00" to="2012-01-03T19:00:00" period="2">
        <!-- Valid from 2012-01-03T13:00:00 to 2012-01-03T19:00:00 -->
        <symbol number="4" name="Cloudy" var="04" />
        <precipitation value="0.0" />
        <!-- Valid at 2012-01-03T13:00:00 -->
        <windDirection deg="220.5" code="SW" name="Southwest" />
        <windSpeed mps="6.6" name="Moderate breeze" />
        <temperature unit="celsius" value="4" />
        <pressure unit="hPa" value="1016.7" />
      </time>
      <time from="2012-01-04T13:00:00" to="2012-01-04T19:00:00" period="2">
        <!-- Valid from 2012-01-04T13:00:00 to 2012-01-04T19:00:00 -->
        <symbol number="4" name="Cloudy" var="04" />
        <precipitation value="0.0" />
        <!-- Valid at 2012-01-04T13:00:00 -->
        <windDirection deg="257.3" code="WSW" name="West-southwest" />
        <windSpeed mps="9.7" name="Fresh breeze" />
        <temperature unit="celsius" value="5" />
        <pressure unit="hPa" value="1005.9" />
      </time>
      <time from="2012-01-05T13:00:00" to="2012-01-05T19:00:00" period="2">
        <!-- Valid from 2012-01-05T13:00:00 to 2012-01-05T19:00:00 -->
        <symbol number="12" name="Sleet" var="12" />
        <precipitation value="2.8" />
        <!-- Valid at 2012-01-05T13:00:00 -->
        <windDirection deg="215.3" code="SW" name="Southwest" />
        <windSpeed mps="4.8" name="Gentle breeze" />
        <temperature unit="celsius" value="1" />
        <pressure unit="hPa" value="997.4" />
      </time>
« Poslední změna: 31 Prosince 2011, 11:24:55 od Cendas »

Cendas

Re:Script pro conky
« Odpověď #11 kdy: 01 Ledna 2012, 07:35:29 »
Jde použít sed aby neupravoval jen řádek ale celí soubor?
Když to mám takhle tak mě to bere jen jeden řádek.
Kód: [Vybrat]
sed 's/.*\(period="2".*\)<\/time>.*/\1/' $FORECAST_FILE

Cendas

Re:Script pro conky
« Odpověď #12 kdy: 01 Ledna 2012, 11:11:56 »
Tak už jsem si s tím poradil.  :)
Ještě bych potřeboval jestli je nějaký příkaz, když zadám datum tak aby mi napsal co je to za den.
například když zadám 2.1.2012 tak aby to napsalo úterý.

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:Script pro conky
« Odpověď #13 kdy: 01 Ledna 2012, 12:53:15 »
Kód: [Vybrat]
date -d"2012-1-2" +%Aakorát zejtra je pondělí, jestli tam chceš úterý tak si to budeš muset upravit :P

Cendas

Re:Script pro conky
« Odpověď #14 kdy: 01 Ledna 2012, 13:21:55 »
Dík to jsem chtěl, jsem se splet  :D

 

Provoz zaštiťuje spolek OpenAlt.