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

Script di importazione informazioni extra da twitter per ogni candidato #69

Closed marcopagliarulo closed 11 years ago

marcopagliarulo commented 11 years ago

partendo dalla base dello script di import degli avatar ho realizzato questo script che recupera alcune informazioni extra dagli account twitter:

numero di follower numero di tweet data ultimo tweet ultimo tweet

ho apportato la modifica allo schema mep nei file di configurazione.

a seguito dell'importazione sarà possibile ordinare l'elenco dei candidati in base a questi parametri dal mainController.js semplicemente variando il filtro

lucacorsato commented 11 years ago

ma sei una potenza!

non appesantisce la visualizzazione?

Il giorno 31/gen/2013, alle ore 16:26, Marco Pagliarulo notifications@github.com ha scritto:

partendo dalla base dello script di import degli avatar ho realizzato questo script che recupera alcune informazioni extra dagli account twitter:

numero di follower numero di tweet data ultimo tweet ultimo tweet

ho apportato la modifica allo schema mep nei file di configurazione.

a seguito dell'importazione sarà possibile ordinare l'elenco dei candidati in base a questi parametri dal mainController.js semplicemente variando il filtro

You can merge this Pull Request by running

git pull https://github.com/Morpheus80ta/twitAntonio master Or view, comment on, or merge it at:

https://github.com/spaghetti-open-data/twitAntonio/pull/69

Commit Summary

aggiunta script di recupero delle informazioni extra dall\'account twitter dei candidati e aggiunta dei relativi campi allo schema mep File Changes

M config.js.development (6) M config.js.production (6) A import/import-extra-info.js (179) Patch Links:

https://github.com/spaghetti-open-data/twitAntonio/pull/69.patch https://github.com/spaghetti-open-data/twitAntonio/pull/69.diff

marcopagliarulo commented 11 years ago

Non crrea problemi nel rendering, in quanto a livello di rendering non cambia niente ( a meno che non si vogliano esporre queste informazioni aggiuntive), la variazione è a livello di estrazione e viene semplicemente sostituito l'attuale ordinamento. Il problema della velocità di rendering è dato più dal numero dei candidati che dalle informazioni che contiene ogni box

paolomainardi commented 11 years ago

@Morpheus80ta Ciao Marco, dunque l'idea di questo script è lanciarlo al cron oppure una volta ad ogni import ?

paolomainardi commented 11 years ago

Marco, lanciando lo script ho questo output:

opening connection with twitAntonio@localhost
group: 99
remains: 704
group: 99
remains: 605
group: 99
remains: 506
group: 99
remains: 407
group: 99
remains: 308
group: 99
remains: 209
group: 99
remains: 110
group: 99
remains: 11
group: 11
remains: 0
{ [Error: HTTP Error 400: Bad Request]
  statusCode: 400,
  data: '{"errors":[{"message":"Bad Authentication data","code":215}]}' }
{ [Error: HTTP Error 400: Bad Request]

Il file che uso per la conf di Twitter è "config_twitter.js.example -> config_twitter.js" con i dati di una mia app di dev locale.

Sto sbagliando qualcosa ?

gaspa commented 11 years ago

@paolomainardi , uhm, farlo ad ogni import mi sembra pochino, rischia che il numero reale cambi di molto. no?

paolomainardi commented 11 years ago

@gaspa Sono d'accordo, andrebbe fatto al Cron, a questo punto però sarebbe bello avere uno script unico (sul modello dell'harvest) che si tiri giù queste info, più quelle dei tweet già nel nostro DB, evitiamo adi avere N script da lanciare ogni volta.

marcopagliarulo commented 11 years ago

Ciao Paolo, scusa ma oggi ho avuto un rilascio in produzione appena concluso e sono stato molto incasinato. La coppia di messaggi group: 99 remains: 704 sono di controllo sulla creazione dei gruppi, viene fatta una chiamata a gruppi di cento account (0-99) quindi li usavo per controllare di non perdere nessun utente.

Per quanto riguarda la configurazione twitter ho dimenticato io di dettagliare, scusate. Ho notato un disallineamento tra i valori settati nel file config_twitter.js.example e quelli utilizzati nell'harvest, per non creare problemi con eventuali altre modifiche in corso.

Il file config_twitter.js.example contiene

// twitter secret configuration var twitter_conf = { // twitter conf twit_consumer_key: 'YOUR_CONSUMER_KEY', twit_consumer_secret: 'YOUR_CONSUMER_SECRET', twit_access_token: '', twit_token_secret: '' } module.exports = twitter_conf;

mentre il file harvest a cui mi sono allineato per la parte di autenticazione su twitter utilizza:

var t = new twitter({ consumer_key: credentials.consumer_key, consumer_secret: credentials.consumer_secret, access_token_key: credentials.access_token_key, access_token_secret: credentials.access_token_secret });

puoi notare che le chiavi dell'oggetto credential sull'harvest e le chiavi dell'oggetto conf sulla configurazione sono differenti, basta allinearle e dovrebbe funzionare. Non le ho modificate in quanto non sapevo quale fosse quella corretta delle due.

paolomainardi commented 11 years ago

@Morpheus80ta Lo script non termina mai a quanto pare, un importazione fatta adesso sul server di produzione rimane hanged qui:

group: 99 remains: 899 group: 99 remains: 800 group: 99 remains: 701 group: 99 remains: 602 group: 99 remains: 503 group: 99 remains: 404 group: 99 remains: 305 group: 99 remains: 206 group: 99 remains: 107 group: 99 remains: 8 group: 8 remains: 0

paolomainardi commented 11 years ago

Anche se sembra avere importato tutto, probabilmente qualche sync da sistemare.

paolomainardi commented 11 years ago

@Morpheus80ta pare che alcuni candidati (Silvio) siano a 0: http://www.twitantonio.it/?mep_name=Silvio+Berlusconi&mep_country=&mep_localParty=&faction=cd&parlamento=&sorting=tweets

Secondo te come mai ?

paolomainardi commented 11 years ago

http://www.twitantonio.it/?mep_name=Lucia+Sileo&mep_country=&mep_localParty=&faction=&parlamento=&sorting=

marcopagliarulo commented 11 years ago

Ipotizzo: raggruppo i candidati a gruppi di 100 perchè è il massimo di account su cui si possono richiedere info in una sola chiamata, quindi vengono fatte diverse chiamate a gruppi di 100, potrebbe esserci qualche errore nei contatori per cui alcuni account potrebbero essere rimasti fuori, probabilmente se quelli a zero sono l'un percento del totale è probabile sia così. Faccio qualche test in locale.

marcopagliarulo commented 11 years ago

OK identificato il problema, twitter purtroppo quando richiedo i dati di 100 utenti non sempre mi risponde con tutti i 100 richiesti, a volte la risposta è di 87, 95, ecc. Mi sembra assurdo ma purtroppo se twitter mi risponde con un set di dati limitati il più che posso fare è loggare quelli per cui non ha dato risposta o far partire chiamate aggiuntive per recuperare anche quelli. Facendo delle nuove richieste mi restituisce i risultati, mistero!

nelsonmau commented 11 years ago

Questo però è molto interessante perché una volta acquisiti i dati, possiamo renderli fruibili tramite API. In pratica li prendiamo, li ordiniamo e li diamo a chi li vuole usare. Diventiamo produttori di dati. La cosa è potenzialmente molto interessante.

OK identificato il problema, twitter purtroppo quando richiedo i dati di 100 utenti non sempre mi risponde con tutti i 100 richiesti, a volte la risposta è di 87, 95, ecc. Mi sembra assurdo ma purtroppo se twitter mi risponde con un set di dati limitati il più che posso fare è loggare quelli per cui non ha dato risposta o far partire chiamate aggiuntive per recuperare anche quelli. Facendo delle nuove richieste mi restituisce i risultati, mistero!

— Reply to this email directly or view it on GitHubhttps://github.com/spaghetti-open-data/twitAntonio/pull/69#issuecomment-13039486.

nelsonmau commented 11 years ago

@paolomainardi visto che @Morpheus80ta tira giù anche l'ultimo tweet, possiamo utilizzarlo. E' possibile stamparlo nel box candidato? quindi per ogni candidato si vedrebbe anche l'ultimo tweet.

questa cosa aumenta la possibilità di engagemente dell'utente che può essere stimolato a twittare perché legge l'ultimo tweet del candidato.

@Morpheus80ta potremmo tirare giù altri dati? quali? c'è un elenco?

twinbit commented 11 years ago

Si possiamo stamparlo, domani vedo di buttarlo i box dei candidati, il problema è che senza il pager sta diventando davvero troppo pesante la HP.

L'altro discorso dell'harvesting dei contenuti è interessantissimo, non vedo l'ora di avere il codice di @Morpheus80ta :)

Paolo Mainardi CTO Twinbit http://www.paolomainardi.com {mobile email}

On 03/feb/2013, at 03:53, nelsonmau notifications@github.com wrote:

@paolomainardi visto che @Morpheus80ta tira giù anche l'ultimo tweet, possiamo utilizzarlo. E' possibile stamparlo nel box candidato? quindi per ogni candidato si vedrebbe anche l'ultimo tweet.

questa cosa aumenta la possibilità di engagemente dell'utente che può essere stimolato a twittare perché legge l'ultimo tweet del candidato.

@Morpheus80ta potremmo tirare giù altri dati? quali? c'è un elenco?

— Reply to this email directly or view it on GitHub.