covid19nys-ts
Version:
Track COVID-19 cases in NYS, rewritten in TypeScript.
64 lines (63 loc) • 3.07 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
const axios = require('axios');
const cheerio = require('cheerio');
const NYS_HEALTH_URL = 'https://health.ny.gov/statistics/diseases/communicable/2019-nCoV/new_york_state_positive_cases_by_county.htm';
function getCountyData() {
return __awaiter(this, void 0, void 0, function* () {
console.log('Fetching COVID-19 data from NYS Health Department...');
try {
const { data } = yield axios.get(NYS_HEALTH_URL, {
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
Connection: 'keep-alive',
},
});
console.log('Data fetched successfully!');
const $ = cheerio.load(data);
const countyData = [];
$('table#case_count_table tbody tr').each((i, elem) => {
const countyName = $(elem).find('td:first-child').text().trim();
const casesText = $(elem).find('td:last-child').text().trim();
const cases = parseInt(casesText.replace(/,/g, ''), 10);
if (countyName && !isNaN(cases)) {
countyData.push({ name: countyName, cases });
}
});
return countyData;
}
catch (error) {
console.error('Failed to fetch data:', error);
throw error;
}
});
}
function main() {
return __awaiter(this, void 0, void 0, function* () {
try {
const countyData = yield getCountyData();
console.log('\nCOVID-19 Cases by County in New York State:');
console.log('===========================================');
countyData.forEach((county) => {
console.log(`${county.name}: ${county.cases.toLocaleString()} cases`);
});
const totalCases = countyData.reduce((sum, county) => sum + county.cases, 0);
console.log(`\nTotal cases across all counties: ${totalCases.toLocaleString()}`);
}
catch (error) {
console.error('An error occurred:', error);
}
});
}
main();