spaghetti-open-data / twitAntonio

TweetYourMep fork for the Italian 2013 Elections
http://www.twitantonio.it
GNU Affero General Public License v3.0
16 stars 10 forks source link

Twitter streaming API - Harvest tweets #twitantonio #13

Closed paolomainardi closed 11 years ago

paolomainardi commented 11 years ago

Ora che abbiamo l'autenticazione #10 potremmo già iniziare a sviluppare uno "scraper" (non è il termine adatto) che usando le Streaming API di Twitter, rimanga in ascolto e popoli un database con tutti i tweet con la keyword #twitantonio, chiaramente avremmo come risultato tutto l'oggetto, dunque anche gli ID di chi ha Twittato, quindi la possibilità poi di fare match con i nostri utenti.

Deve essere un APP separata dal resto, io direi di rimanere sempre su nodejs + mongodb.

Si potrebbe usare questo: https://github.com/AvianFlu/ntwitter

paolomainardi commented 11 years ago

Qui c'è bisogno di volontari, intanto vi inizio a taggare :) @seralf @dottorblaster

dottorblaster commented 11 years ago

Questo mi interessa molto, posso anche iniziare a smanettare :)

lucacorsato commented 11 years ago

ricordo che avevamo impostato

teniamoli fissi soprattutto il secondo che è breve!

inizio a sparare!

nelsonmau commented 11 years ago

Su #twpol13 ne discutiamo dopo direi a me non piace, metterei quello ufficiale elettorale... Il giorno 23/gen/2013 12:20, "luca corsato" notifications@github.com ha scritto:

ricordo che avevamo impostato

  • twitantonio per promuovere il sistema

  • twpol13 per le elezioni

teniamoli fissi soprattutto il secondo che è breve!

inizio a sparare!

— Reply to this email directly or view it on GitHubhttps://github.com/spaghetti-open-data/twitAntonio/issues/13#issuecomment-12591367.

paolomainardi commented 11 years ago

Grande @dottorblaster! [qui-la-mia-foto-da-deploy] Intanto partiamo da qui: https://dev.twitter.com/docs/streaming-apis Inizio a leggermi anche io la doc e cerco di capire quale potrebbe essere un architettura veloce da realizzare e da integrare nella nostra app.

paolomainardi commented 11 years ago

Esempio: http://blog.semmy.me/post/17390049513/streaming-twitter-with-ntwitter-and-node-js

dottorblaster commented 11 years ago

Grandissimo ;)

dottorblaster commented 11 years ago

Ho cominciato a implementare una bozza di harvest secondo l'esempio: https://github.com/spaghetti-open-data/twitAntonio/commit/58d2d0c693b4357c953f63602014421d19ef376e

Per poter andare avanti e paciugare un po' mi servono le credenziali, me le mandate in mail?

paolomainardi commented 11 years ago

Alessio puoi creare una tua app di test su dev.twitter.com Usiamo tutte chiavi di test fino a quando non siamo pronti, meglio evitare di usare quelle che poi portiamo in prod.

dottorblaster commented 11 years ago

Eseguo!

dottorblaster commented 11 years ago

Scusate il flood, mi segno qua l'anatomia dell'object che viene ritornato in ntwitter: https://gist.github.com/4629037

paolomainardi commented 11 years ago

@dottorblaster puoi fare harvesting in questa fase di hashtag che già esistono, cosi non creiamo rumore sul nostro hashtag, tipo #love #hate #quellochetepare :)

Alla brutta direi che possiamo salvare l'intero oggetto su MongoDB, facciamo però attenzione che ognuno di questi oggetti pesa 2K.

dottorblaster commented 11 years ago

@paolomainardi sto giusto smanettando un po'. È facile crearsi un oggetto intermedio quindi non vedo veramente la necessità di salvare tutto l'oggetto (che, se mi consentite, è grosso un fottìo).

Che campi vogliamo tenere? Ci si mette poco a "scraparli".

nelsonmau commented 11 years ago

Prova anche #sod13

@dottorblaster https://github.com/dottorblaster puoi fare harvesting in questa fase di hashtag che già esistono, cosi non creiamo rumore sul nostro hashtag, tipo #love #hate #quellochetepare :)

Alla brutta direi che possiamo salvare l'intero oggetto su MongoDB, facciamo però attenzione che ognuno di questi oggetti pesa 2K.

— Reply to this email directly or view it on GitHubhttps://github.com/spaghetti-open-data/twitAntonio/issues/13#issuecomment-12678571.

paolomainardi commented 11 years ago

Allora direi, cosi ad occhio:

created_at: 'Thu Jan 24 22:46:05 +0000 2013',
  id: 294576834937499650,
  id_str: '294576834937499649',
  text: '#twitantonio test',
  truncated: false,
  in_reply_to_status_id: null,
  in_reply_to_status_id_str: null,
  in_reply_to_user_id: null,
  in_reply_to_user_id_str: null,
  in_reply_to_screen_name: null,
  user: 
   { id: 14686567,
     id_str: '14686567',
     name: 'Alessio Biancalana'  
  }

Dovrebbero bastare, credo.

dottorblaster commented 11 years ago

@nelsonmau no, non recupera i tweet passati ma monitora solo quelli correnti nello stream, quindi nisba per #sod13 (sennò potevamo recuperare i tweet lol)

paolomainardi commented 11 years ago

@dottorblaster uhmmm allora questo può essere un problema, nel senso, se l'app che fa monitoring va giù, come li facciamo poi a recuperare ?

paolomainardi commented 11 years ago

Bisognerebe allora usare la Search API: https://github.com/AvianFlu/ntwitter#search-api

paolomainardi commented 11 years ago

Qui della doc: http://www.catonmat.net/blog/nodejs-modules-ntwitter/ Twitter: https://dev.twitter.com/docs/using-search

dottorblaster commented 11 years ago

Annoto qui anche che per modificare i parametri della search API in ntwitter dobbiamo fare in questo modo

t.search('#sod13', {'since_id':'294378605000159200'}, function(err, data) {
  console.dir(data);
});
dottorblaster commented 11 years ago

Appunto anche che possiamo modificare il numero della pagina da querare.

t.search('#sod13', {'page':'22'}, function(err, data) {
  console.dir(data);
});

A questo punto basta scrivere un ciclo for fatto bene e ci siamo.

dottorblaster commented 11 years ago

@paolomainardi ho iniziato a definire qua → https://github.com/spaghetti-open-data/twitAntonio/commit/dce9655882f1db2343a1207b1552f5340acecf83 un abbozzo di struttura dati per i contenuti risultanti dell'harvesting dentro Mongo.

Se abbiamo altre info nei tweet che ci conviene tenere, mettiamo tutto a verbale così mentre implemento non mi scordo nulla.

paolomainardi commented 11 years ago

Intanto, che che tutti quelli che ho scritto qui siano fondamentali: https://github.com/spaghetti-open-data/twitAntonio/issues/13#issuecomment-12678765

nelsonmau commented 11 years ago

I Geodati si possono avere?

paolomainardi commented 11 years ago

@nelsonmau si, @dottorblaster allora aggiungiamo anche quei campi.

dottorblaster commented 11 years ago

Perfetto, lo metto in todo.

paolomainardi commented 11 years ago

@dottorblaster se hai bisogno di una mano oggi sono disponibile, fammi sapere :)