Contalike
Su un noto social network esiste una pagina di una rivista chiamata Fumetti Disegnati Male. Su Fumetti Disegnati Male si fa molta ironia alla "corsa ai like" e quando si perde un like di solito ci sono scene strappalacrime o feroci e irripetibili insulti verso chi ha tolto il like. Visto però che la pagina è estremamente popolare, come fare a capire quando si perde un like prima che ne arrivi uno nuovo? Sì, c'è la pagina delle statistiche, ma non è che si può controllare ogni cinque minuti, ché poi il tasto F5 si cancella.
A questo proposito ci viene incontro il Contalike!
"The likes must flow"
Il funzionamento è molto semplice: un Raspberry Pi collegato a internet, una resistenza (consigliati 270Ω) collegata alla terra, e due LED (possibilmente uno verde e uno rosso). Gli anodi (+) dei LED vanno collegati a due uscite della GPIO del Rasbperry Pi, i catodi (-) vanno collegati alla resistenza.
Il codice
#!/usr/bin/env python import urllib from xml.dom import minidom import time import wiringpi import signal def uscitore(signal,frame): print "\nexiting..." exit() def blinkings(npin,nbl): while (nbl > 0): led.digitalWrite(npin,1) time.sleep(0.5) led.digitalWrite(npin,0) time.sleep(0.5) nbl -=1 signal.signal(signal.SIGINT, uscitore) fburl = "https://api.<NOME DEL SOCIAL NETWORK FAMOSO>.com/method/fql.query?query=select%20%20like_count%20from%20link_stat%20where%20url=%22https://www.<NOME DEL SOCIAL NETWORK FAMOSO>.com/fumettidisegnatimale%22" pause = 5 num_likes = 0 old_likes = 0 led = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_PINS) led.pinMode(10,led.OUTPUT) led.pinMode(11,led.OUTPUT) gpin = 10 rpin = 11 blinks = 0 while ( True ): try: dom = minidom.parse(urllib.urlopen(fburl)) num_likes = int(dom.getElementsByTagName('like_count')[0].childNodes[0].nodeValue) except (IOError),e: time.sleep(5) continue if old_likes != 0: if num_likes > old_likes: print "abbiamo guadagnato un like" blinks = num_likes - old_likes blinkings(gpin,blinks) elif old_likes > num_likes: print "abbiamo perso un like" blinks = old_likes - num_likes blinkings(rpin,blinks) old_likes = num_likes time.sleep(pause)
Questo famiger.. aheh.. famoso social network fornisce delle api per fare diverse cose. Una di queste è restituire un XML con il numero di likes di una pagina. L'indirizzo dove recuperare questa informazione è memorizzato nella variabile fburl. La variabile pause è l'intervallo in secondi che distanzia il controllo dei likes mentre gpin e rpin sono i pin del LED verde e del LED rosso.
Dopo aver fatto il parse dell'XML e recuperato il numero dei likes (se la connessione non va allora intercetta IOError e ricomincia) compara questo valore con il valore precedente. Se è calato allora abbiamo perso un like e fa lampeggiare il LED rosso, se è cresciuto allora evviva! Abbiamo guadagnato un like! E quindi lampeggia il LED verde. Più likes si sono guadagnati durante l'intervallo pause, più lampeggi produce. Suggerimenti per migliorare 'sta roba: al posto dei LED mettere qualsiasi cosa (proprio qualsiasi! tipo che vi fa partire la lavatrice!).
Il Contalikes è -tutto sommato- un'invenzione completamente inutile.
"I am the one who likes!"