Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Cendas 28 Prosince 2011, 09:44:23

Název: Script pro conky [vyřešeno]
Přispěvatel: Cendas 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
Název: Re:Script pro conky
Přispěvatel: Cendas 28 Prosince 2011, 10:03:51
Tak už jsem asi našel kde je chyba.  :)
Název: Re:Script pro conky
Přispěvatel: Cendas 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?
Název: Re:Script pro conky
Přispěvatel: ETNyx 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,.....
Název: Re:Script pro conky
Přispěvatel: Cendas 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.
Název: Re:Script pro conky
Přispěvatel: ETNyx 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
Název: Re:Script pro conky
Přispěvatel: Cendas 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]
Název: Re:Script pro conky
Přispěvatel: ETNyx 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,...)
Název: Re:Script pro conky
Přispěvatel: Cendas 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)
Název: Re:Script pro conky
Přispěvatel: ETNyx 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í,...
Název: Re:Script pro conky
Přispěvatel: Cendas 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>
Název: Re:Script pro conky
Přispěvatel: Cendas 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
Název: Re:Script pro conky
Přispěvatel: Cendas 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ý.
Název: Re:Script pro conky
Přispěvatel: pacholik 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
Název: Re:Script pro conky
Přispěvatel: Cendas 01 Ledna 2012, 13:21:55
Dík to jsem chtěl, jsem se splet  :D