UFFICIALE Le foto del vostro desktop - OS alternativi

Pubblicità
@rebellion - Sarebbe questa la pagina sorgente (impostata con previsioni di 5 giorni)? https://it.notizie.yahoo.com/meteo/italia/bologna/bologna-711080
Ne ho presa una a caso perché se non vedo fatico, al limite linkami una pagina sorgente. :P

Bye^^
questa la riga di weather.xml in .cache, come vedi ho trovato il modo di estrarre l'api di yahoo weather anche se in inglese con le unità non in metrico, ma questo è un altro problema..
Codice:
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="1" yahoo:created="2016-08-26T14:37:41Z" yahoo:lang="en-US"><results><channel><yweather:units xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" distance="mi" pressure="in" speed="mph" temperature="F"/><title>Yahoo! Weather - Leghorn, TC, IT</title><link>http://us.rd.yahoo.com/dailynews/rss/weather/Country__Country/*https://weather.yahoo.com/country/state/city-717348/</link><description>Yahoo! Weather for Leghorn, TC, IT</description><language>en-us</language><lastBuildDate>Fri, 26 Aug 2016 04:37 PM CEST</lastBuildDate><ttl>60</ttl><yweather:location xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" city="Leghorn" country="Italy" region=" TC"/><yweather:wind xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" chill="82" direction="305" speed="7"/><yweather:atmosphere xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" humidity="67" pressure="1012.0" rising="0" visibility="16.1"/><yweather:astronomy xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" sunrise="6:37 am" sunset="8:2 pm"/><image><title>Yahoo! Weather</title><width>142</width><height>18</height><link>http://weather.yahoo.com</link><url>http://l.yimg.com/a/i/brand/purplelogo//uh/us/news-wea.gif</url></image><item><title>Conditions for Leghorn, TC, IT at 04:00 PM CEST</title><geo:lat xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">43.551201</geo:lat><geo:long xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">10.3224</geo:long><link>http://us.rd.yahoo.com/dailynews/rss/weather/Country__Country/*https://weather.yahoo.com/country/state/city-717348/</link><pubDate>Fri, 26 Aug 2016 04:00 PM CEST</pubDate><yweather:condition xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="32" date="Fri, 26 Aug 2016 04:00 PM CEST" temp="82" text="Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="32" date="26 Aug 2016" day="Fri" high="83" low="72" text="Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="32" date="27 Aug 2016" day="Sat" high="86" low="74" text="Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="32" date="28 Aug 2016" day="Sun" high="83" low="69" text="Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="34" date="29 Aug 2016" day="Mon" high="81" low="69" text="Mostly Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="30" date="30 Aug 2016" day="Tue" high="81" low="67" text="Partly Cloudy"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="4" date="31 Aug 2016" day="Wed" high="82" low="70" text="Thunderstorms"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="32" date="01 Sep 2016" day="Thu" high="81" low="67" text="Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="34" date="02 Sep 2016" day="Fri" high="81" low="67" text="Mostly Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="34" date="03 Sep 2016" day="Sat" high="81" low="67" text="Mostly Sunny"/><yweather:forecast xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" code="30" date="04 Sep 2016" day="Sun" high="80" low="67" text="Partly Cloudy"/><description>&lt;![CDATA[&lt;img src="http://l.yimg.com/a/i/us/we/52/32.gif"/&gt;
come puoi notare il risultato del grep che ho postato precedentemente cattura tutti i testi dopo
Codice:
text="
, ma ce ne sono svariati nella riga, a me serve il primo. meglio se lo potessi anche manipolare in modo da trasformarlo in gradi celsius.

ps in verità potrei ignorare yahoo-weather e prendermi i dati di accuweather ma mi piace risolvere il problema!:utonto: eppoi è una questione di orgoglio, yahoo mi cambia le api e io risolvo il problema..
 
Comprato per sfizio. me lo godo altro mesetto + 0 - poi me lo vendo per rifarmi mini-itx linux only. Con 500 eurini del mini mi esce bella macchinetta.
Oggi comprato un 2 in1 Mediacom WinPad U11. Un gioiellino per quel che costa, ma non ci va ubuntu. Già messo in vendita :asd:
Anche qui, mi rifaccio un classico 13.3 | core i3 | 8 gb RAM | SSD per godermi elementary OS.

Incredibile, ma per quel che ci faccio con il pc, lavoro troppo meglio con linux.
La trasparenza assoluta del sistema ha i suoi bei vantaggi.
Continuo a sognare su linux una totale coerenza delle GUI in generale e un server grafico fluidissimo e snello come la concorrenza.
OSX per la GUI e win 10 per X. e poi, chi si lamenta più; virtualbox gira molto meglio su linux che su OSX, se proprio serve anche win.
Eh..dovrebbe migliorare anche la qualità dei driver. La prima cosa che ho notato sul portatile quando sono ritornato su Windows, dopo mesi di Gnu/Linux, é stata un'autonomia nettamente migliore(forse su Windows ha di default attive opzioni per il risparmio energetico(?)).
 
@rebellion
Per cominciare puoi filtrare così:
Codice:
 grep "yweather:condition" ~/.cache/weather.xml | grep -o "text="[^"]*"" | sed -e "s/text=//g;s/"//g" | sed -n 1p
/* Cancella text= e le " */
sed -e "s/text=//g;s/"//g"

/* Pubblica la prima trovata */
sed -n 1p

Personalmente ti consiglio di usare ~/.cache/weather.xml come sorgente e di indirizzare con > e >> file (a seconda dei casi), le info che van a fornire la weather. Cioè tenere le due cose separate.
Quindi puoi fare una cosa del tipo:
Codice:
grep "yweather:condition" ~/.cache/weather.xml | grep -o "text="[^"]*"" | sed -e "s/text=//g;s/"//g" | sed -n 1p > weather-conf
Se nel file c'è già scritto qualcosa, lo accodi con >>. Nella config della conkyrc richiami solo la riga interessata usando:
Codice:
{execpi tempo-in-sec-per-aggiornamento sed -n 'Np' nome/del/file}
es.
{execpi 300 sed -n '1p' $HOME/.conky/Meteo/dati_meteo}

Comunque si può far meglio, per esempio ''egrep'' o ''grep -e'' lavora con le espressioni regolari, anche se difficilotte possono offrire un codice più snello.

Bye^^
 
@rebellion
Non ho ben chiaro il sorgente quale sia, ma nella stringa ci sono un paio di link e mi chiedevo se invece di usare:
Codice:
 http://us.rd.yahoo.com/dailynews/rss/weather/Country__Country/*https://weather.yahoo.com/country/state/city-<codice>/
si potesse usare quello con info ITA:
Codice:
http://us.rd.yahoo.com/dailynews/rss/weather/Country__Country/*https://it.notizie.yahoo.com/meteo/italia/<regione-minuscolo>/<città-minuscolo>-<codice>

# es.

http://us.rd.yahoo.com/dailynews/rss/weather/Country__Country/*https://it.notizie.yahoo.com/meteo/italia/veneto/padova-719751
Un' altra cosa non ho capito, il sorgente è solo la riga che hai postato sopra? Se così fosse, potresti risparmiare un ''grep''.
Per la conversione si dovrà usare un' utility perché bash non sa gestire le virgole mobili con let o expr, quindi se non l' hai installata... Nel repo Extra troverai l' utility BC (An arbitrary precision calculator language) utile al caso. La formula di conversione è *C = (*F - 32) / 1.8, quindi se in Fahrenheit abbiamo un valore di 80 si farà (80 - 32) /1.8 = 26.66 Celsius. Un esempio da terminale potrebbe essere:
Codice:
/* variabile =`comando °F - 32` | sostituzione di comando ; idem a seguire */

celsraw=`echo 80 - 32 | bc` ; echo $celsraw / 1.8 | bc

# oppure

echo $(expr 80 - 32) / 1.8 | bc
oppure con 2 decimali
Codice:
/*scale ( expression ) The value of the scale function is the number of digits after the decimal point in the  expression. */

celsraw=`echo 80 - 32 | bc` ; echo "scale=2; $celsraw / 1.8" | bc

# oppure

echo "scale=2;$(expr 80 - 32) / 1.8" | bc
Volendo si può usare anche let o expr, ma in questo caso dovrai aumentare i valori iniziali * 10 per poter usare 18 anziché 1.8 e niente decimali nel risultato.
Vedi cosa riesci a cavarne.

Bye^^
 
Ultima modifica:
@rebellion
Non ho ben chiaro il sorgente quale sia
Codice:
https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%3D717348]
e non ho la possibilità di avere il corrispondente in italiano.
ho tradotto pure la condizione attuale Schermata del 2016-08-27 16-25-26.webpcreando un .txt con tutte e 43 le descrizioni di ogni icona del tempo e richiamando quella attuale con
Codice:
sed -n "Xp" ~/foo.txt
dove X è il grep che mi restituisce il numero della icona in foto.
mi manca soltanto di convertire in celsius e la direzione del vento; in BC posso mettere al posto di un valore una variabile tipo
Codice:
$(grep eccetera)
?
 
@rebellion
Certo che puoi inserire una variabile, purché sia dichiarata o assegnata e non dimentichiamo che il valore di una variabile può anche essere un comando oppure il risultato di un comando. Nei miei esempi sopra già è proposta:
Codice:
celsraw=`echo 80 - 32 | bc` ; echo "scale=2; $celsraw / 1.8" | bc
- Dichiaro la variabile celsraw
celsraw=`echo 80 - 32 | bc`

- Oppure posso sostituire il valore della stessa:
celsraw=`echo 80 - 32 | bc` ; celsraw=`echo "$celsraw / 1.8" | bc` ; echo $celsraw

- Oppure posso usare un risultato di un processo precedente:
echo "scale=2;$(expr `sed -n "Xp" ~/foo.txt` - 32) / 1.8" | bc

- Tutto questo può essere il valore di una variabile:
V_Cels=$(echo "scale=2;$(expr `sed -n "Xp" ~/foo.txt` - 32) / 1.8" | bc)

E tutto questo glielo puoi far fare direttamente alla conky in fase di lettura della configrc. :P

Bye^^
 
@rebellion
Certo che puoi inserire una variabile, purché sia dichiarata o assegnata e non dimentichiamo che il valore di una variabile può anche essere un comando oppure il risultato di un comando. Nei miei esempi sopra già è proposta:
Codice:
celsraw=`echo 80 - 32 | bc` ; echo "scale=2; $celsraw / 1.8" | bc
- Dichiaro la variabile celsraw
celsraw=`echo 80 - 32 | bc`

- Oppure posso sostituire il valore della stessa:
celsraw=`echo 80 - 32 | bc` ; celsraw=`echo "$celsraw / 1.8" | bc` ; echo $celsraw

- Oppure posso usare un risultato di un processo precedente:
echo "scale=2;$(expr `sed -n "Xp" ~/foo.txt` - 32) / 1.8" | bc

- Tutto questo può essere il valore di una variabile:
V_Cels=$(echo "scale=2;$(expr `sed -n "Xp" ~/foo.txt` - 32) / 1.8" | bc)

E tutto questo glielo puoi far fare direttamente alla conky in fase di lettura della configrc. :P

Bye^^
ok, sbagliavo a far fare tutte e due le operazioni in un unico comando invece di fare prima la sottrazione eppoi la divisione.
vediamo, appena ho il portatile proverei ad aggiungere questa linea al .conkyrc:
Codice:
celsraw=`echo (grep "yweather:condition" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*") - 32 | bc` ; celsraw=`echo "$celsraw / 1.8" | bc` ; echo $celsraw
 
@rebellion
Infatti prima lo volevo chiedere di come hai istruito la conky-wether. Personalmente tengo gran parte dei costrutti bash separati in uno script, lasciando alla conky il minimo. Vero è che conky permette molto, ma è altrettanto vero che separando le varie, posso gestirle in maniera autonoma.
Per esempio lo script e conky vengono aggiornati in tempi differenti, certo nulla vieta di impostare nella conky timer diversi, basta usare execpi.
Mentre conky si arrangia di suo, per lo script uso systemd.timer (visto che siam su Arch, cron non avrebbe senso :P), facendo così trovo che conky sia più libera e fluida. C'è da dire che i comandi ''extra-conky'' avviati con exec o execpi, sono processi a sè stanti. Poi trovo che uno script bash sia di più facile lettura e mi basta aprire un terminale (anche off-line) per il debug.

Bye^^
 
@« MoMy » questo il comando:
Codice:
${execi 300 echo `echo $(grep "yweather:condition" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*") - 32 | bc` > ~/.conky-weather/temp.txt ; echo `echo "scale=0;$(sed -n "1p" ~/.conky-weather/temp.txt) / 1.8" | bc`}°
:vv:che mi ha permesso la conversione in celsius..Schermata del 2016-08-27 21-35-15.webpadesso dovrei fare la conversione di tutti gli altri farhenheit..:retard: eppoi ho la direzione del vento in gradi quindi farò uno script con if-case per restituire una stringa (es. 90°--> E, 180° --> S).

Edit: dov'è l'errore in questo costrutto?
Codice:
if grep "yweather:units" ~/.cache/weather.xml | grep -o "direction=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" > "158" || grep "yweather:units" ~/.cache/weather.xml | grep -o "direction=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" < "202" ; then echo "SUD" > wind5.txt
fi

Edit: ora funziona con questa sintassi:
Codice:
#!/bin/bash

wind=$(grep "yweather:units" ~/.cache/weather.xml | grep -o "direction=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*")


if (( $wind > 248 && $wind < 292 )) ; then
 echo "OVEST" > wind.txt
fi


if (( $wind > 68 && $wind < 112 )) ; then
 echo "EST" > wind.txt
fi


if (( $wind > -1 && $wind < 22 )) ; then
 echo "NORD" > wind.txt
fi


if (( $wind > 338 && $wind < 361 )) ; then
 echo "NORD" > wind.txt
fi


if (( $wind > 158 && $wind < 202 )) ; then
 echo "SUD" > wind.txt
fi
Schermata del 2016-08-28 22-28-44.webp
 
Ultima modifica:
Personalmente preferisco ''case'' a if-elif-else per cose tipo, non perché scrivi meno.

Codice:
wind=$(grep "yweather:units" ~/.cache/weather.xml | grep -o "direction="[^"]*"" | grep -o ""[^"]*"" | grep -o "[^"]*")

case 1 in
         $(($Wind <= 22)))
         echo Nord - Tramontana > wind.txt
         ;;
         $(($Wind <= 67)))
         echo Nord-Est - Grecale > wind.txt
         ;;
         $(($Wind <= 112)))
         echo Est - Levante > wind.txt
         ;;
         $(($Wind <= 157)))
         echo Sud-Est - Scirocco > wind.txt
         ;;
         $(($Wind <= 202)))
         echo Sud - Ostro > wind.txt
         ;;
         $(($Wind <= 247)))
         echo Sud-Ovest - Libeccio > wind.txt
         ;;
         $(($Wind <= 292)))
         echo Ovest - Ponente > wind.txt
         ;;
         $(($Wind <= 357)))
         echo Nord Ovest - Maestrale > wind.txt
         ;;
         * )
         echo Nord - Tramontana > wind.txt
         ;;
esac
Ho indicato anche i 20 (:asd:) e diviso la rosa in 16 creando un range di 44°, escludendo nord nord-est, est nord-est etc. In parole povere, 23° sarebbe nord nord-est, 356° sarebbe nord nord-ovest, ma omettendoli diventano nord (cioè un valore compreso tra 357-360° e 0-22° è nord). Questo perché mi sembra di aver notato che il sito dia i nord-est, sud-est etc.

Bye^^
 
Ultima modifica:
Personalmente preferisco ''case'' a if-elif-else per cose tipo, non perché scrivi meno.
si anche a me piace più il 'case' ma per un motivo più emozionale: mi sembra più elegante!:lol:
però non ne conoscevo l'esatta sintassi quindi mi è venuto così:
Codice:
#!/bin/bash

wind=$(grep "yweather:units" ~/.cache/weather.xml | grep -o "direction=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*")


if (( $wind > 261 && $wind < 281 )) ; then
 echo "OVEST" > wind.txt
fi


if (( $wind > 280 && $wind < 350 )) ; then
 echo "NORD-OVEST" > wind.txt
fi


if (( $wind > 79 && $wind < 111 )) ; then
 echo "EST" > wind.txt
fi


if (( $wind > 10 && $wind < 80 )) ; then
 echo "SUD-EST" > wind.txt
fi


if (( $wind > -1 && $wind < 11 )) ; then
 echo "NORD" > wind.txt
fi


if (( $wind > 349 && $wind < 361 )) ; then
 echo "NORD" > wind.txt
fi


if (( $wind > 169 && $wind < 191 )) ; then
 echo "SUD" > wind.txt
fi


if (( $wind > 190 && $wind < 260 )) ; then
 echo "SUD-OVEST" > wind.txt
fi
i nomi dei 20 non li metto, ho piede marino e li conosco alla perfezione..:sisi:

dimmi, perchè questo:
Codice:
${execi 300 echo `echo $(grep "yweather:forecast" ~/.cache/weather.xml | grep -o "low=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==1') - 32 | bc` > ~/.conky-weather/temp1.txt ; echo `echo "scale=0;$(sed -n "1p" ~/.conky-weather/temp1.txt) / 1.8" | bc`}°${alignr 10}/${execi 300 echo `echo $(grep "yweather:forecast" ~/.cache/weather.xml | grep -o "high=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*" | awk 'NR==1') - 32 | bc` > ~/.conky-weather/temp2.txt ; echo `echo "scale=0;$(sed -n "1p" ~/.conky-weather/temp2.txt) / 1.8" | bc`}°${color3}${font Droid Sans :size=12}
mi da 2 errori eof non aspettato nel token accento forte `? e sì che questo
Codice:
${execi 300 echo `echo $(grep "yweather:condition" ~/.cache/weather.xml | grep -o "temp=\"[^\"]*\"" | grep -o "\"[^\"]*\"" | grep -o "[^\"]*") - 32 | bc` > ~/.conky-weather/temp.txt ; echo `echo "scale=0;$(sed -n "1p" ~/.conky-weather/temp.txt) / 1.8" | bc`}°
funziona perfettamente.:grat:
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top