Skip to content

Commit

Permalink
1.9.5 add different of value with days a go
Browse files Browse the repository at this point in the history
  • Loading branch information
k1m0ch1 committed Mar 21, 2020
1 parent ef0577b commit 4e3d289
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 61 deletions.
117 changes: 71 additions & 46 deletions src/gobot-covid/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"strings"
"syscall"
"time"
"math"

b64 "encoding/base64"

Expand Down Expand Up @@ -71,7 +72,7 @@ func parsedataCountries(country_id string) string {
r += result[i]["recovered"].(float64)
}

return fmt.Sprintf("%s\n\nConfirmed: %.0f\nDeaths: %.0f\nRecovered: %.0f", countries(strings.ToUpper(country_id)), c, d, r)
return fmt.Sprintf("*%s*\n\nConfirmed: %.0f\nDeaths: %.0f\nRecovered: %.0f", countries(strings.ToUpper(country_id)), c, d, r)

}

Expand All @@ -85,7 +86,7 @@ func parsedata(url string) string {
log.Fatal(jsonErr)
}

reply := fmt.Sprintf("Global Cases\n\nConfirmed: %.0f \nDeaths: %.0f \nRecovered: %.0f", result["confirmed"], result["deaths"], result["recovered"])
reply := fmt.Sprintf("*Global Cases*\n\nConfirmed: %.0f \nDeaths: %.0f \nRecovered: %.0f", result["confirmed"], result["deaths"], result["recovered"])

return reply
}
Expand All @@ -104,22 +105,86 @@ func parsedataID(url string) string {
time.RFC3339,
fmt.Sprintf("%s+00:00", result["metadata"]["last_updated"]))

reply := fmt.Sprintf("Indonesia\n\nTerkonfirmasi: %.0f *(+%.0f)*\nMeninggal: %.0f *(+%.0f)*\nSembuh: %.0f *(+%.0f)*\nDalam Perawatan: %.0f *(+%.0f)*\n\nUpdate terakhir %s",
reply := fmt.Sprintf("*Indonesia*\n\nTerkonfirmasi: %.0f *(+%.0f)*\nMeninggal: %.0f *(+%.0f)*\nSembuh: %.0f *(+%.0f)*\nDalam Perawatan: %.0f *(+%.0f)*\n\nUpdate terakhir %s",
result["confirmed"]["value"], result["confirmed"]["diff"],
result["deaths"]["value"], result["deaths"]["diff"],
result["recovered"]["value"], result["recovered"]["diff"],
result["active_care"]["value"], result["active_care"]["diff"],
t1.Add(7*time.Hour).Format("02 Jan 06 15:04"))
t1.Add(7*time.Hour).Format("02 Jan 2006 15:04"))

return reply
}

func parseDataCountryState(country_id string, state string) string {
url := "https://covid19-api.yggdrasil.id/%s/%s"
url = fmt.Sprintf(url, country_id, state)
body := reqUrl(url)

var result map[string]map[string]interface{}

jsonErr := json.Unmarshal(body, &result)

if jsonErr != nil {
log.Fatal(jsonErr)
}

if _, ok := result["message"]; ok {
return "Belum Tersedia"
}

proses_pemantauan := result["proses_pemantauan"]["value"]
proses_pengawasan := result["proses_pengawasan"]["value"]
selesai_pemantauan := result["selesai_pemantauan"]["value"]
selesai_pengawasan := result["selesai_pengawasan"]["value"]
total_meninggal := result["total_meninggal"]["value"].(float64)
total_meninggal_diff := result["total_meninggal"]["diff"].(float64)
total_odp := result["total_odp"]["value"]
total_pdp := result["total_pdp"]["value"]
total_positif_saat_ini := result["total_positif_saat_ini"]["value"].(float64)
total_positif_saat_ini_diff := result["total_positif_saat_ini"]["diff"].(float64)
total_sembuh := result["total_sembuh"]["value"].(float64)
total_sembuh_diff := result["total_sembuh"]["diff"].(float64)

tmg := ""
if math.Signbit(total_meninggal_diff) {
tmg = fmt.Sprintf("%.0f", total_meninggal_diff)
}else{
tmg = fmt.Sprintf("+%.0f", total_meninggal_diff)
}

tpsi := ""
if math.Signbit(total_positif_saat_ini_diff) {
tpsi = fmt.Sprintf("%.0f", total_positif_saat_ini_diff)
}else{
tpsi = fmt.Sprintf("+%.0f", total_positif_saat_ini_diff)
}

ts := ""
if math.Signbit(total_sembuh_diff) {
ts = fmt.Sprintf("%.0f", total_sembuh_diff)
}else{
ts = fmt.Sprintf("+%.0f", total_sembuh_diff)
}

return fmt.Sprintf("*%s* \n\nSembuh: %.0f *(%s)*\nPositif: %.0f *(%s)*\nTotal Meninggal: %.0f *(%s)* \n" +
"\nProses Pemantauan: %.0f \nProses Pengawasan: %.0f \nSelesai Pemantauan: %.0f " +
"\nSelesai Pengawasan: %.0f \nODP: %.0f \nPDP: %.0f " +
"\n\nUpdate terakhir %s" +
"\n\n Data Ini Diambil Dari %s ",
strings.Title(strings.ToUpper(state)), total_sembuh, ts, total_positif_saat_ini, tpsi, total_meninggal, tmg,
proses_pemantauan, proses_pengawasan, selesai_pemantauan, selesai_pengawasan, total_odp, total_pdp,
result["tanggal"]["value"],
result["source"]["value"])

}


//Optional to be implemented. Implement HandleXXXMessage for the types you need.
func (wh *waHandler) HandleTextMessage(message whatsapp.TextMessage) {
// fmt.Printf("%v %v %v \n\t%v\n", message.Info.Timestamp, message.Info.Id, message.Info.RemoteJid, message.Text)
cm1 := fmt.Sprint(b64.StdEncoding.DecodeString("eWFoeWE="))
cmAr := fmt.Sprint(b64.StdEncoding.DecodeString("Z2FudGVuZyBwaXNhbg=="))
introduction := fmt.Sprintf("Halo 🤗\n\nPerkenalan saya robot covid-19 untuk mendapatkan informasi tentang covid," +
introduction := fmt.Sprintf("*Halo* 🤗\n\nPerkenalan saya robot covid-19 untuk mendapatkan informasi tentang covid," +
"panggil saya menggunakan awalan !covid\n\nPerintah yang tersedia :\n1. status (global cases)\n" +
"2. news (top headline news)\n3. id (indonesia cases)" +
"\n4. id nama_provinsi Contoh : !covid id jabar" +
Expand Down Expand Up @@ -164,7 +229,7 @@ func (wh *waHandler) HandleTextMessage(message whatsapp.TextMessage) {
case "jabar":
reply = parseDataCountryState(command[1], command[2])
default:
reply = parsedataID(fmt.Sprintf(covid19_api, "/id"))
reply = "timeout"
}
} else {
reply = parsedataID(fmt.Sprintf(covid19_api, "/id"))
Expand Down Expand Up @@ -385,43 +450,3 @@ func reqUrl(url string) []byte {

return body
}

func parseDataCountryState(country_id string, state string) string {
url := "https://covid19-api.yggdrasil.id/%s/%s"
url = fmt.Sprintf(url, country_id, state)
body := reqUrl(url)

var result map[string]interface{}

jsonErr := json.Unmarshal(body, &result)

if jsonErr != nil {
log.Fatal(jsonErr)
}

if _, ok := result["message"]; ok {
return "Belum Tersedia"
}

proses_pemantauan := result["proses_pemantauan"]
proses_pengawasan := result["proses_pengawasan"]
selesai_pemantauan := result["selesai_pemantauan"]
selesai_pengawasan := result["selesai_pengawasan"]
total_meninggal := result["total_meninggal"]
total_odp := result["total_odp"]
total_pdp := result["total_pdp"]
total_positif_saat_ini := result["total_positif_saat_ini"]
total_sembuh := result["total_sembuh"]

return fmt.Sprintf("%s \n\n Total Meninggal: %.0f \n Positif: %.0f " +
"\n Proses Pemantauan: %.0f \n Proses Pengawasan: %.0f \n Selesai Pemantauan: %.0f " +
"\n Selesai Pengawasan: %.0f \n ODP: %.0f \n PDP: %.0f \n Sembuh: %.0f " +
"\n\nUpdate terakhir %s" +
"\n\n Data Ini Diambil Dari %s ",
strings.Title(strings.ToUpper(state)), total_meninggal, total_positif_saat_ini,
proses_pemantauan, proses_pengawasan, selesai_pemantauan,
selesai_pengawasan, total_odp, total_pdp, total_sembuh,
result["tanggal"],
result["source"])

}
46 changes: 31 additions & 15 deletions src/route/root.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,12 +210,6 @@ def _get_today(**kwargs):
@root.route('/id/<state>')
def status_by_state(state):
result = {}
keys = [
'meninggal', 'positif', 'proses_pemantauan', 'proses_pengawasan',
'selesai_pemantauan', 'selesai_pengawasan', 'sembuh',
'tanggal', 'total_meninggal', 'total_odp', 'total_pdp',
'total_positif_saat_ini', 'total_sembuh'
]
if 'jabar' in state:
response = requests.get(JABAR)
if not response.status_code == 200:
Expand All @@ -230,17 +224,11 @@ def status_by_state(state):
twodaysago = _search_list(
json_resp, "tanggal",
datetime.strftime(TODAY - timedelta(days=2), "%d-%m-%Y"))
for key in keys:
result[key] = int(yeday_stat[key]) \
if key not in ["tanggal"] else \
yeday_stat[key]
result = _set_value(yeday_stat, twodaysago)
else:
for key in keys:
result = int(today_stat[key]) \
if key not in ["tanggal"] else \
today_stat[key]
result = _set_value(today_stat, yeday_stat)

result['source'] = "https://pikobar.jabarprov.go.id/"
result['source'] = {"value": "https://pikobar.jabarprov.go.id/"}
return jsonify(result), 200
if len(result) == 0:
jsonify({"message": "Not Found"}), 404
Expand Down Expand Up @@ -316,3 +304,31 @@ def _is_date(string, fuzzy=False):

except ValueError:
return False


def _is_empty(string):
return 0 if string == "" else string


def _set_value(before, after):
result = {}
keys = [
'meninggal', 'positif', 'proses_pemantauan', 'proses_pengawasan',
'selesai_pemantauan', 'selesai_pengawasan', 'sembuh',
'tanggal', 'total_meninggal', 'total_odp', 'total_pdp',
'total_positif_saat_ini', 'total_sembuh'
]
for key in keys:
if key not in \
["tanggal", "meninggal", "positif",
"selesai_pengawasan", "proses_pemantauan"]:
result[key] = {
"value": int(before[key]),
"diff": int(before[key]) -
int(_is_empty(after[key]))
}
else:
result[key] = {"value": int(before[key])
if key not in ["tanggal"] else
before[key]}
return result

0 comments on commit 4e3d289

Please sign in to comment.