Connectant el blog amb Twitter
Escrit per Aaloy a 30 de December , 2009 a les 5:06 p.m.
Feia estona que volia connectar el blog amb Twitter, de manera que cada vegada que escrigui un post s'envii directament a Twitter sense tenir que fer-ho jo. No és gran cosa, però és la vagueria informàtica: si es pot automatitzar perquè fer-ho a mà? :)
De llibreries de connexió cap a Twitter des de Python n'hi ha un bon grapat, la majoria el que fan és crear un envolcall a l'API de Twitter per tal que sigui més manejable des de Python i evitar repeticions de codi.
La llibreria que jo he fet servir s'anomena twython i té el mèrit de ser la primera que he provat. Potser n'hi ha de millors o més completes, però pel que he de fer ja basta.
El que vull doncs és que cada vegada que escrigui un nou post, s'envii un nou Twitt. Per fer-ho hi havia dues opcions clares: sobrescriure el mètode save del model o bé utilitzar senyals.
He triat fer-ho amb senyals ja que m'estim més no fer massa complexe el mètode save, i a més la senyal post_save ja ens informa de si s'ha gravat un registre nou o un registre antic. El codi de fet és tan senzill com això:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # Signals def twitt_post(sender, **kwargs): is_new = kwargs.get('created') if settings.SEND_TWITT_ON_POST and is_new: instance = kwargs.get('instance') import twython try: twitter = twython.core.setup(username = settings.TWITTER_USER, password = settings.TWITTER_PASSWORD) twitter.updateStatus(_(u"Nou post al Blog de Trespams: %s %s") % (instance.headline, instance.get_absolute_url(), ) ) except AuthError, e: logging.error("Error in twitter account") logging.error(e.message) except Exception, e: loggin.error('Error in twitter post %s' % e.message) # Connect the signal with the callback post_save.connect(twitt_post, sender=Entry) |
twitt_post és el callback és a dir, la funció que es cridarà quan es gestioni la senyal, com a arguments passa la classe, la instància i si el registre es nou o no.
Obtenim primer si el post es nou o no, no vull empipar a la gent cada vegada que faci una correcció ortogràfica o tipogràfica, així que sols enviaré els twitts quan el post sigui nou. També he fet que sols s'envii si la variable de configuració SEND_TWITT_ON_POST així ho diu.
Després ja és cosa de utilitzar la llibreria (login i enviar, així de fàcil) i capturar les possibles excepcions.
Finalment el que feim és connectar l'event amb el model i la funció callback.
Si tot va bé aquest post ja s'hauria d'enviar automàticament.
Enllaços citats
Traducciones/Translations by apertium
0 comentaris, 0 trackbacks (URL) , Tags: Python Django
