Comment créer un bot Twitter sur le Coronavirus?

20 mars 2016 (il y a 8 ans)

background image

Suite à la propagation du Coronavirus (COVID-19) qui touche toute la planète, je me suis amusé à bidouiller avec une API pour suivre quotidiennement l'évolution du virus en Chine à l'aide d'un Bot Twitter.

Si cela vous intéresse de suivre l'évolution quotidienne du COVID-19 et de découvrir comment créer un bot Twitter qui partage automatiquement le nombres de cas suspects, de personnes malades et décédés alors l'article est fait pour vous!

👨‍💻 Pour télécharger l'article complet en format pdf, cliquez ici!

Table des matières

  1. Présentation du bot Twitter
  2. Mais, au fait, comment ça fonctionne?
  3. Et après?

Présentation du bot Twitter

Capture d'image du robot Twitter @covid19daily

Voici le profil Twitter que j'ai crée @coviddaily. Ce dernier compte, au moment où j'écris l'article, 11 Tweets et partage quatre informations quotidiennes différentes:

  • Nombre de cas contaminés.

  • Nombre de cas suspects.

  • Nombre de personnes décédés (avec %).

  • Nombre de personnes guéries (avec %).

Exemple de tweet envoyé par @covid19daily

Mais, au fait, comment ça fonctionne?

Explication point par point, pour comprendre comment un bot Twitter qui partage quotidiennement les informations à propos du Coronavirus.

Identification des informations depuis une API.

Une API est une interface de programmation qui permet de communiquer de la donnée d'une application à une autre. Je me suis donc mis à fouiller sur le net pour trouver une API fiable, qui recoupe plusieurs sources de données gouvernementales... histoire de ne pas partager des fausses informations. Je suis tombé sur celle-ci, proposé par John Coene et qui permet d'obtenir quotidiennement les données sur l'évolution du Coronavirus en Chine.

Recueille des informations de l'API dans un spreadsheet.

Une fois l'API et les informations identifiées, on va chercher à collecter et structurer la donnée dans un Google Sheets. Pour cela, on exécute un script .js sur Google Scripts (option > éditeur de scripts) pour "appeler" les données de l'API et les répertorier dans un onglet, comme ici.

Capture d'image du Google Sheets avec les données du Coronavirus répertoriées

Explication de mon script ci-dessous ↓↓

  • Appeler l'API et faire référence à l'onglet dans lequel on souhaite recevoir les informations.
function callNumbers() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Covid-19");
var response = UrlFetchApp.fetch("http://shiny.john-coene.com:8080/weixin");
  • Organiser les informations telles que l'on souhaite les recevoir dans notre spreadsheet.
var data = response.getContentText(){
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Covid-19");
var response = UrlFetchApp.fetch("http://shiny.john-coene.com:8080/weixin");
var data = response.getContentText() ;
var jsn = JSON.parse(data) ;
var f = new Array();
var fnl = new Array();
Logger.log(jsn.data[0])
 
 
for (var i in jsn.data){
f =[]; f.push(jsn.data[i].date);
f.push(jsn.data[i].confirm);
f.push(jsn.data[i].suspect);
f.push(jsn.data[i].dead);
f.push(jsn.data[i].heal);
f.push(jsn.data[i].nowConfirm);
f.push(jsn.data[i].nowSevere);
f.push(jsn.data[i].deadRate);
f.push(jsn.data[i].healRate);
fnl.push(f) }
  • Envoyer les informations de l'API dans notre spreadsheet.

Logger.log(fnl[fnl.length-1]);
sh.getRange(r,1,1,fnl[fnl.length-1].length).setValues([fnl[fnl.length-1]]);

On indique ici que l'on souhaite récupérer uniquement la dernière ligne d'information. C'est ultra important pour la suite...

  • Last but not least... Automatiser la requête API quotidiennement

L'API que j'utilise pour récolter les informations sur le Coronavirus (COVID-19) se met à jour tous les jours à 9:00. Pour qu'une nouvelle ligne soit créée, chaque jour à 9:00, dans mon spreadsheet - onglet "COVID-19", j'ai enrichie mon script avec cette fonction. ↓↓

var r = sh.getLastRow() + 1;
Logger.log(fnl[fnl.length - 1]);
sh.getRange(r, 1, 1, fnl[fnl.length - 1].length).setValues([
  fnl[fnl.length - 1],
]);

Ce script complet permet de faire une requête API, de collecter & trier les informations, de les afficher sur un Google Sheets et de la faire vivre automatiquement sans la moindre action humaine!

Envoie des informations de Google Sheet vers Twitter avec Zapier.

Avec la création du script automatisée, plus dure est passé. On cherche dorénavant à automatiser l'envoie d'informations de Google Sheets vers Twitter.

Rien de très compliqué avec Zapier, outil qui permet d'automatiser et de faire un transfert d'informations entre différentes plateformes. On va donc créer un "Zap", comme expliqué dans mon article à ce sujet, qui relie Sheets et Twitter et qui se déclenche dès qu'une nouvelle ligne sur Sheets est créée.

Automation Zapier entre Google Sheets et Twitter

Pour reproduire ce Zap, je vous invite à cliquer ici.

C'est fini! On obtient donc un bot Twitter qui publie automatiquement, à 9:00, les nouvelles informations envoyées du spreadsheet depuis l'API de John Coene.

Et après?

Créer ce bot Twitter @covidaily était pour moi l'occasion de découvrir comment manipuler une API depuis Google Scripts et partir de ce cas concret pour bidouiller dessus. Je ne vois aucune suite à ce projet même si je reste persuadé qu'il pourrait être amélioré. Voici quelques pistes d'amélioration qui semblent intéressantes d'explorer:

  • Intégrer des informations sur l'évolution de la maladie de jour X à Y.

  • Relayer l'évolution des cas contaminés dans le monde, pas seulement en Chine.

  • Enrichir les informations transmises par le bot en intégrant des articles de presse trouvé depuis une autre API.

Si vous trouvez intéressant d'échanger sur l'évolution du projet et / ou que vous aimeriez avoir accès au projet, n'hésitez pas à m'envoyer un e-mail.

Mots de fin

Cette article à pour vocation d'expliquer simplement comment faire une requête API depuis Google Sheets pour ensuite l'envoyer sur Twitter mais vous pouvez faire de nombreuses actions automatisées.

Je me suis notamment amusé à faire des requêtes sur l'API de Unsplash pour partager une photo par jour de la Thaïlande sur ce compte Twitter. Le bot partage les photos avec +60 likes et ne sélectionne que les publications en rapport direct avec la Thaïlande. Dans un exercice plus "business", on peut faire appel à l'API de Clearbit qui permet d'enrichir des bases de données à partir d'un simple mail ou mot clé. On peut notamment récupérer le logo, nom, prénom, le nom de domaine, etc.

Cette article et le bot Twitter n'aurait pas pu voir le jour sans l'inspiration donné par @Micodeet l'aide de Raphaël Hor (Hetic - P2021).