Programmazione.it v6.2
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Chat Forum
Novità tra le API di Google Buzz
Scritto da Cosmos Puglisi il 30-07-2010 ore 09:56
Intel Software
A meno di due mesi dal rilascio delle prime API per Google Buzz, John Panzer ha già annunciato l'introduzione di altre nuove feature. La più importante, nonché la più richiesta, è sicuramente firehose. Con questo strumento si vuole rendere disponibile in real time tutte le attività pubblicate e condivise grazie a pubsubhubbub.

Già parecchi partner come Collecta, OneRiot, Gnip e altri hanno aderito a questa novità. Un'applicazione, ispirata da Twisori, è già nata sfruttando questa nuova opportunità: buzz-mood. L'idea è quella di pescare tra gli aggiornamenti di Buzz, accomunarli secondo un piccolo insieme di topic o bucket (love, hate e altro) e presentarli a video in maniera random.

Il codice in Python, disponibile per chi vuole cimentarsi in questo strumento, è molto semplice. Ecco riportato come gestire gli update pubblicati (ma sono disponibili anche altre azioni) da pubsubhubbub, inclusa la classe (Mood) per lo storage locale dei dati.
  1. from google.appengine.ext import db
  2.  
  3. BUCKETS = [
  4.   'i love',
  5.   'i hate',
  6.   'i want',
  7.   'i think',
  8.   'i believe',
  9.   'i feel',
  10.   'i wish',
  11.   'i hope'
  12. ]
  13.  
  14. PATTERN = re.compile(r'b(%s)b' % '|'.join(BUCKETS), re.IGNORECASE)
  15.  
  16. class Mood(db.Model):
  17.   name = db.StringProperty(required=True)
  18.   last_summary = db.TextProperty(required=False)
  19.   last_content = db.TextProperty(required=False)
  20.   last_modified = db.DateTimeProperty(auto_now=True)
  21.   counter = db.IntegerProperty(default=0)
  22.  
  23. def assign(summary, content):
  24.  
  25. //altro codice
  1. FIREHOSE = "https://www.googleapis.com/buzz/v1/activities/@all/@public"
  2. HUB = "http://pubsubhubbub.appspot.com/"
  3. //altro codice
  4. class PubsubhubbubUpdatesHandler(webapp.RequestHandler):
  5.   def get(self):
  6.     import mood
  7.     moods = mood.Mood.all().fetch(len(mood.BUCKETS))
  8.     if moods:
  9.       lm = max([m.last_modified for m in moods])
  10.     else:
  11.       lm = datetime.datetime.now()
  12.     # Intentional loss of precision
  13.     lm = datetime.strptime(lm.strftime(DATE_FORMAT), DATE_FORMAT)
  14.     ims = None
  15.     if self.request.headers.get('If-Modified-Since'):
  16.       ims = datetime.strptime(
  17.         self.request.headers.get('If-Modified-Since'),
  18.         DATE_FORMAT
  19.       )
  20.     if not ims or (ims and lm > ims):
  21.       json = simplejson.dumps([{
  22.         "name": m.name,
  23.         "lastSummary": m.last_summary,
  24.         "lastContent": m.last_content,
  25.         "lastModified": m.last_modified.isoformat(),
  26.         "counter": m.counter
  27.       } for m in moods])
  28.       logging.info(json)
  29.       self.response.headers[ 'Content-Type' ] = 
  30.         'application/json; charset=utf-8'
  31.       # Locale-independent
  32.       self.response.headers[ 'Last-Modified' ] = lm.strftime(DATE_FORMAT)
  33.       self.response.out.write(json)
  34.     else:
  35.       self.response.set_status(304)
Tra le altre novità pubblicate troviamo anche i commenti degli utenti user, un feed che segnala i commenti fatti, i famosi Like, e un contatore di condivisione, il quale indica quante volte un elemento pubblico è stato condiviso da altri.
Precedente: Real time con GNU/Linux embedded
Successiva: Nuovi linguaggi di programmazione (2/2)
Copyright Programmazione.it™ 1999-2009. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.784 secondi. Sito ottimizzato per Mozilla Firefox. Powered by Kyron.