Skip to content

🍰 Simple and πŸ¦… fast covid-19 api global data parser using Flask, data gathered from Novel Coronavirus (COVID-19) Cases, provided by JHU CSSE

License

Notifications You must be signed in to change notification settings

k1m0ch1/covid-19-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

73 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Coronavirus Disease 19 API Tracker

GitHub code size in bytes GitHub repo size GitHub last commit GitHub stars GitHub pull requests GitHub forks GitHub issues GitHub watchers Twitter

This is just a simple API tracker for covid-19 latest information for recovered, confirmed and deaths cases. The main purpose of this repo is for bot announcement to whatsapp, telegram and discord about latest cases of covid-19.

you can try the api here https://covid19-api.yggdrasil.id/ Website thanks for @habibiefaried for helping the server or Deploy

Bot Whatsapp

(WARNING: This is only available with Bahasa Language, need some help for translation) This bot is for covid-19 information purpose by automatically answer for available data, by using !covid <command>, here is the available command :

  1. status This will return information about current global case, example output
Confirmed: xx
Deaths: xx
Recovered: xx
  1. id This will return information about current indonesia corona case, example output
Terkonfirmasi: xx
Meninggal: xx
Sembuh: xx
Dalam Perawatan: xx

Update Terakhir:
2020-03-17T07:01:01+00:00
  1. id info This will return basic information about corona in indonesia
  2. ping The bot will response "pong"
  3. halo, hello, help The introduction and list of available command

Requirement

Docker

Installation

run this command

docker run --restart on-failure --name gobot-covid k1m0ch1/gobot-covid

The QR Code will be available in terminal for more less than 10 second, if timeout you need to run the first command again after the QR Code is succesfully scanned I prefer to run the container in the background by stop the container first with Ctrl+C and then run the container again with command docker start gobot-covid

For advance usage

  • Session store This feature will enable to store the session for the later use, by adding the argument as the file name for sesion for example
docker run --restart on-failure --name gobot-covid k1m0ch1/gobot-covid MyPhoneNumber

the file MyPhoneNumber.go will be stored at ./session folder

the folder session in the container at path /go/src/github.com/k1m0ch1/covid-19-api/session so you can use -v parameter to put the session file in the localhost

here is the complete parameter

docker run -v ~/session:/go/src/github.com/k1m0ch1/covid-19-api/session x--restart on-failure --name gobot-covid k1m0ch1/gobot-covid MyPhoneNumber

Endpoint

Get latest information about confirmed, deaths and recovered

GET /
{"Confirmed":167447,"Deaths":6440,"Recovered":76034}

Get each countries confirmed, deaths, and recovered cases

GET /confirmed
[
    ...,
    {
        "confirmed": 14991,
        "countryRegion": "Iran",
        "lastUpdate": "2020-03-16T14:38:45",
        "latitude": "32.4279",
        "longitude": "53.6880",
        "provinceState": null
    }
    ...,
]

same as result with endpoint GET /deaths and GET /recovered

Get latest information about all country cases status

GET /all
[
    ...,
    {
        "Confirmed": xx,
        "CountryRegion": "CountryName",
        "Deaths": xx,
        "LastUpdate": <timestamp iso 8601 format>,
        "Latitude": "xx.x",
        "Longitude": "-xx.x",
        "ProvinceState": "State" or null,
        "Recovered": xx
    },
    ...
]

List of available countries

GET /countries

List of available countries detail cases

GET /countries/<alpha2-country-code>
GET /countries/us
[
    ...,
    {
        "confirmed": 557,
        "countryRegion": "US",
        "deaths": 7,
        "lastUpdate": "2020-03-16T23:53:03",
        "latitude": "36.1162",
        "longitude": "-119.6816",
        "provinceState": "California",
        "recovered": 6
    },
    ...,
    {
        "summary": {
            "confirmed": 4632,
            "deaths": 85,
            "recovered": 17
        }
    }
    ...,
]

if the country only have a single data, the summary data will not exist

List of available news

GET /news

get the latest top headlines about corona virus, the news is get from NewsAPI.org see there for available news

List of available news in specific countries

GET /news/<alpha2-country-code>

get the latest top headlines about corona virus in specific countries, the news is get from NewsAPI.org see there for available news

Docker

You can use docker by pull

docker run --name covid-19-api -p 5001:5001 -d docker.pkg.github.com/k1m0ch1/covid-19-api/covid-19-api:latest run

or

docker run --name covid-19-api -p 5000:5000 -d docker.pkg.github.com/k1m0ch1/covid-19-api/covid-19-api:latest run_web_prod

Development

This repo is still on development and feel free to contribute.

Requirement

  1. Python 3.7
  2. pipenv/ pip
  3. venv/ virtualenv

Running on development

pipenv run python manage.py run

Running on production

pipenv run python manage.py run_web_prod
or
gunicorn --config python:src.gunicorn_cfg src.wsgi:app

Next to do :

  • deploy to server for public use deployed to https://covid19-api.yggdrasil.id/ Thanks @habibiefaried
  • add new endpoint for each countries referrence from @mathdroid
  • add new endoint /confirmed /deaths and /recovered
  • bot discord
  • bot whatsapp
  • bot telegram
  • news crawler from reliable resource

Bot Whatsapp to do :

Referrence