Ti trovi qui : Howto » Il nostro pc è su twitter!!!
Il nostro pc è su twitter!!!
Negli ultimi tempi mi sono avvicinato al mondo python, vuoi per i vari commenti entusiastici dei vari blogger che seguo, vuoi perché cercavo un linguaggio di programmazione di facile e immediato utilizzo e che sia radicato nel mondo GNU/Linux.
Nel frattempo, prendendo spunto da un post letto sul blog di eldino sull’uso creativo di twitter, ho iniziato ad elaborare un progetto: permettere al nostro pc di poter `twitterare`, cioè di poter pubblicare un messaggio nella propria timeline [la lista dei messaggi pubblicati nel tempo] del proprio account twitter, che avesse la parvenza di un file di log. [il mio pc già twittera, potete seguire la sua timeline, qui]. Dico parvenza perché bisogna considerare due fattori, il primo dettato dal limite dei 140 caratteri pubblicabili su twitter e il secondo dovuto dall’esigenza di avere una timeline che sia comprensibile a tutti [non tutti possono capire un file di log].
Bene. Ora non resta che mostrarvi lo script in python e la relativa spiegazione [cercherò di essere il più esauriente possibile per farmi comprendere dalla maggior parte dei miei 5 lettori
].
Il programma invia alla timeline del nostro account un messaggio contenente la percentuale libera della nostra ram, la temperatura dei processori e l’uptime, cioè da quanto tempo il nostro pc è accesso. [un possibile e probabile aggiornamento futuro riguarderà l'invio di un messaggio all' accensione e allo spegnimento del pc].
Kwnologed di baseInnanzitutto c’è da premettere che il linguaggio python usa l’identazione del codice per delimitare i blocchi del programma al posto delle più comuni parentesi graffe o delle parole chiave.
Inoltre il programma che ho scritto fa uso di diverse librerie, quasi tutte già presenti tranne la libreria specifica per comunicare con twitter [e che cazz..
].
Questa mancanza può essere bypassata usando Twyt, che fornisce un’interfaccia con le API di Twitter a cui è possibile accedere tramite funzioni e classi con le quali possiamo inviare messaggi al nostro account Twitter e manipolare le informazioni che ci vengono restituite.
Quindi scarichiamo il file compresso da questa pagina, nel momento in cui scrivo siamo alla versione 0.8, e installiamolo eseguendo queste brevi comandi:
Ora abbiamo `tutti i ferri` per il nostro programma [o script che fa più smanettone
].
Il programma python che viene creato per svolgere il lavoro descritto sopra, in questo post si chiamerà gionnivaio.py e risiederà nella nostra cartella home. Prima cosa importiamo le librerie necessarie import string, os, urllib2 from twyt import twitter La libreria string serve per manipolare le stringhe, la libreria os serve per eseguire comandi di sistema [in base all’OS in cui ci troviamo, naturalmente in questo howTo è un O.S. Linux based], la libreria urllib2 per usare una varietà di protocolli di rete relativi agli url, ad esempio per aprirli, infine la libreria twitter dal `package` twit descritto nel Kwnologed di base.
Quindi vengono create delle funzioni [sì, lo so, è vecchia programmazione ma che ci volete fare sono un nostalgico
] :
Prima di postare il `listato` programma, c’è da fare un’ultima considerazione. Il programma invia il messaggio ogni volta che viene lanciato, quindi per far sì che la timeline del nostro pc venga aggiornato periodicamente, dovrà esser chiamato con cron [un servizio per gli O.S. Unix-like che permette l'esecuzione dei comandi a una data e/o ora specificata ].
Aggiornare ogni ora la timeline con il nostro programma tramite crontabSeguendo un post precedente che ho precedentemente pubblicato, scheduliamo il nostro script per fare in modo che venga eseguito ogni ora. Quindi creiamo il file gionnivaio.txt che contiene la riga:
00 * * * * python $HOME/gionnivaio.pye aggiungiamolo alla lista dei lavori schedulati con il comando:
crontab gionnivaio.txtIn questo modo il nostro pc invierà ogni ora un messaggio, creato dal programma gionnivaio.py, alla sua timeline di twitter.
Listato del programma #! /usr/bin/env python # -*- coding: UTF-8 -*- import string, os, urllib2 from twyt import twitter def uptime(): # il file uptime contiene da quanto secondi è in esecuzione il nostro sistema fileUptime="/proc/uptime" # con try cerco di aprire il file dichiarato a fileUptime # e di copiare il suo contenuto nella variabile contenuto try: f = open (fileUptime) contenuto = f.read().split() f.close() except: return "Non mi è stato possibile aprire il file "+fileUptime # Con queste trasformazioni formattiamo il tempo di uptime secondi_uptime = float(contenuto[0]) MINUTI = 60 ORE = 60*MINUTI GIORNO = 24*ORE giorni = int(secondi_uptime/GIORNO) ore = int((secondi_uptime%GIORNO)/ORE ) minuti = int((secondi_uptime%ORE)/MINUTI) # Formatto la stringa che restituisce l'uptime string = "" if giorni> 0: string += str(giorni) + (giorni == 1 and "d" or "dd" ) + " " if len(string)> 0 or ore> 0: string += str(ore) + (ore == 1 and "h" or "hh" ) + " " if len(string)> 0 or minuti> 0: string += str(minuti) + (minuti == 1 and "m" or "mm" ) return string; def perc_RAM(): # il file meminfo contiene informazioni sulla ram fileMeminfo="/proc/meminfo" try: f = open (fileMeminfo) contenuto = f.read().split() f.close() except: return "Non mi è stato possibile aprire il file "+fileMeminfo # prelevo le informazioni che servono # Memoria Totale memTotal=int(contenuto[1]) # Memoria libera memFree=int(contenuto[4]) # Swap totale swapTotal=int(contenuto[34]) # Swap libera swapFree=int(contenuto[37]) # mi calcolo la percentuale di ram libera freeRam=memFree+swapFree totalRam=memTotal+swapTotal perc=(freeRam*100)/totalRam return 100-perc def temperatureProcio(): # il file contiene informazioni sulla temperatura del primo processore fileTemperatureProcio="/proc/acpi/thermal_zone/TZ00/temperature" try: f = open (fileTemperatureProcio) contenuto = f.read().split() f.close() except: return "Non mi è stato possibile aprire il file "+fileTemperatureProcio return contenuto[1]+"°"+contenuto[2] def inviaMsgTwitter(msg): # Nome utente usr="**********" # Password utente pws="**********" # Provo a connettermi a twitter try: # Instanzio un oggetto Twitter twi = twitter.Twitter() # Setto lo username e la password di questo oggetto, per connettersi a twitter twi.set_auth(usr, pws) # con twi.status_update(msg), invio il messaggio return_val = twi.status_update(msg) print "Messaggio inviato correttamente" except twitter.TwitterException: print "C'è stato un errore nell'invio del messaggio" def definisciMsg(): # nella variabile un metterò il risultato del classico comando di shell uname un = os.uname() max_lenght = 140 # Bisogna fare attenzione a non superare il limite di 140 caratteri nel messaggio # inizializzo la variabile msg con il testo base msg="Ho un O.S. "+un[0]+"-"+un[4]+", kernel ver. "+un[2] # l'array messaggi contiene le varie parti che costruiranno il messaggio messaggi = ["; Sono accesso da "+uptime(),"; Ram in uso:"+str(perc_RAM())+"%","; Temp Procio:"+temperatureProcio()] # per ogni parte del messaggio che aggiungo devo prima controllare che non si superi il limite dei max_lenght for messaggio in messaggi: m=msg+messaggio if(len(m)>max_lenght): break msg=m return msg def connesso(): # Controllo che il sito, twitter.com, sia raggiungibile try: filehandle = urllib2.urlopen(sito) return True except urllib2.URLError: return False # True Programmhttp://andrewprice.me.uk/projects/twyt/ : Home page progetto Twyt
http://twitter.com/gionnivaio : la time line del mio portatile
http://docs.python.it/html/lib/contents.html : la libreria di riferimento di Python dal sito python.it
domenica, luglio 6 2008
Taggato come HowTo, Linux, Python, Twitter, my ideas
Scritto da D@nSelm
La Classifica di Linux Feed
- 1) chimerarevo.com
- 2) hackgeek.it
- 3) arresojas.it
- 4) tuxmind.org
- 5) linux.billera.eu
- 6) linuxedintorni.org
- 7) moosesoom.blogspot.com
- 8) picchiopc.blogspot.com
- 9) logubuntu.it
- 10) mypaglia.altervista.org
















