Corona et CLI

Mis a jours le 27 Mar 2020 à 12:22 · 377 mots · Lecture en 2 minutes corona shell script

Comment utiliser des outils “modernes” pour avoir des informations utiles sur l’état actuel des choses

On a des sites qui offrent les données liées au virus accessible grâce à cURL:

Récupérer les informations

$ curl https://corona-stats.online/fr
╔══════╤═════════════╤══════════════╤═════════════╤══════════════╤══════════════╤═══════════╤═════════╤══════════╤════════════════╗
║ Rank │ Country     │ Total Cases  │ New Cases ▲ │ Total Deaths │ New Deaths ▲ │ Recovered │ Active  │ Critical │ Cases / 1M pop ║
╟──────┼─────────────┼──────────────┼─────────────┼──────────────┼──────────────┼───────────┼─────────┼──────────┼────────────────╢
║ 1    │ France (FR) │       29,155 │             │        1,696 │              │     4,948 │  22,511 │    3,375 │            447 ║
╟──────┼─────────────┼──────────────┼─────────────┼──────────────┼──────────────┼───────────┼─────────┼──────────┼────────────────╢
║      │ World       │      548,806 │    16,996 ▲ │       24,862 │        794 ▲ │   128,599 │ 395,345 │   20,968 │          70.41 ║
╚══════╧═════════════╧══════════════╧═════════════╧══════════════╧══════════════╧═══════════╧═════════╧══════════╧════════════════╝

Stay safe. Stay inside.
Code: https://github.com/sagarkarira/coronavirus-tracker-cli
Twitter: https://twitter.com/ekrysis

Last Updated on: 27-Mar-2020 11:03 UTC

UPDATE: Source 2 is now default source
JHU Source 1 table: https://corona-stats.online?source=1
HELP: https://corona-stats.online/help

Extraire les informations

Extraire des données de ce curl est donc faisable:

$ curl https://corona-stats.online/fr | grep an
║ Rank │ Country     │ Total Cases  │ New Cases ▲ │ Total Deaths │ New Deaths ▲ │ Recovered │ Active  │ Critical │ Cases / 1M pop ║
║ 1    │ France (FR) │       29,155 │             │        1,696 │              │     4,948 │  22,511 │    3,375 │            447

Nettoyer les informations

Il suffit ensuite de nettoyer avec un coup de sed

$ curl https://corona-stats.online/fr |\
    grep an |\
    sed "s/\s*//g ; s/║//g ; s/│/;/g"
Rank;Country;TotalCases;NewCases▲;TotalDeaths;NewDeaths▲;Recovered;Active;Critical;Cases/1Mpop
1;France(FR);29,155;;1,696;;4,948;22,511;3,375;447

Les trois arguments de sed permettent:

  • s/\s*//g: supprimer les espaces superflu
  • s/║//g : enlever le caractère de fin
  • s/│/;/g": Remplacer les séparateurs par quelque chose d’utilisable

Formater les informations

On peux mieux voir les informations grâce à AWK:

$ curl https://corona-stats.online/fr |\
    grep France |\
    sed "s/\s*//g ; s/║//g ; s/│/;/g" |\
    awk -F';' '{print $2":"$3"("$7","$8")"}'
Country:TotalCases(Recovered,Active)
France(FR):29,155(4,948,22,511)

Attention: ne pas oublier d’enlever la ligne avec les informations de champ avec une utilisation un peut plus poussée.

Conclusion

Il ne nous reste plus qu’à utiliser ces informations, dans une barre d’état par exemple.

Pour aller plus loin, on pourrais ne pas utiliser cURL à chaque appel, mais utiliser un cache car les informations ne sont pas mises a jours toutes les heures:

curl https://corona-stats.online/fr > $HOME/.cache/corona_data
grep France $HOME/.cache/corona_data |\
    sed "s/\s*//g ; s/║//g ; s/│/;/g" |\
    awk -F';' '{print $2":"$3"("$7","$8")"}'
Image de l'auteur Tom Moulard

L'auteur:  Tom Moulard

Depuis mon enfance, je suis captivé par les articles de science et de technologie. Un jour, j'ai décidé de faire partie de ce monde : j'ai pris ma calculatrice programmable (une TI-82 stat).... La suite, sur mon site

Vous avez vu une erreur ? Quelque chose ne va pas ? Vous pouvez contribuer à cette page sur GitHub ou laisser un commentaire en dessous. Merci d'être passé par là :)