mirror of
https://github.com/oddluck/limnoria-plugins.git
synced 2025-04-26 13:01:09 -05:00
Corona: various minor adjustments
This commit is contained in:
parent
11fef3b9d3
commit
cfcfdf55e7
195
Corona/plugin.py
195
Corona/plugin.py
@ -42,8 +42,7 @@ except ImportError:
|
|||||||
# without the i18n module
|
# without the i18n module
|
||||||
_ = lambda x: x
|
_ = lambda x: x
|
||||||
|
|
||||||
|
countries = {
|
||||||
CC = {
|
|
||||||
"AF": "AFGHANISTAN",
|
"AF": "AFGHANISTAN",
|
||||||
"AX": "ÅLAND ISLANDS",
|
"AX": "ÅLAND ISLANDS",
|
||||||
"AL": "ALBANIA",
|
"AL": "ALBANIA",
|
||||||
@ -91,7 +90,7 @@ CC = {
|
|||||||
"CL": "CHILE",
|
"CL": "CHILE",
|
||||||
"CN": "CHINA",
|
"CN": "CHINA",
|
||||||
"CX": "CHRISTMAS ISLAND",
|
"CX": "CHRISTMAS ISLAND",
|
||||||
"CC": "COCOS (KEELING) ISLANDS",
|
"CC": "COCOS ISLANDS",
|
||||||
"CO": "COLOMBIA",
|
"CO": "COLOMBIA",
|
||||||
"KM": "COMOROS",
|
"KM": "COMOROS",
|
||||||
"CG": "CONGO",
|
"CG": "CONGO",
|
||||||
@ -232,7 +231,7 @@ CC = {
|
|||||||
"SH": "SAINT HELENA",
|
"SH": "SAINT HELENA",
|
||||||
"KN": "SAINT KITTS AND NEVIS",
|
"KN": "SAINT KITTS AND NEVIS",
|
||||||
"LC": "SAINT LUCIA",
|
"LC": "SAINT LUCIA",
|
||||||
"MF": "SAINT MARTIN (FRENCH PART)",
|
"MF": "SAINT MARTIN",
|
||||||
"PM": "SAINT PIERRE AND MIQUELON",
|
"PM": "SAINT PIERRE AND MIQUELON",
|
||||||
"VC": "SAINT VINCENT AND THE GRENADINES",
|
"VC": "SAINT VINCENT AND THE GRENADINES",
|
||||||
"WS": "SAMOA",
|
"WS": "SAMOA",
|
||||||
@ -296,108 +295,125 @@ CC = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
states = {
|
states = {
|
||||||
'AK': 'Alaska',
|
'AK': 'ALASKA',
|
||||||
'AL': 'Alabama',
|
'AL': 'ALABAMA',
|
||||||
'AR': 'Arkansas',
|
'AR': 'ARKANSAS',
|
||||||
'AS': 'American Samoa',
|
'AS': 'AMERICAN SAMOA',
|
||||||
'AZ': 'Arizona',
|
'AZ': 'ARIZONA',
|
||||||
'CA': 'California',
|
'CA': 'CALIFORNIA',
|
||||||
'CO': 'Colorado',
|
'CO': 'COLORADO',
|
||||||
'CT': 'Connecticut',
|
'CT': 'CONNECTICUT',
|
||||||
'DC': 'District of Columbia',
|
'DC': 'DISTRICT OF COLUMBIA',
|
||||||
'DE': 'Delaware',
|
'DE': 'DELAWARE',
|
||||||
'FL': 'Florida',
|
'FL': 'FLORIDA',
|
||||||
'GA': 'Georgia',
|
'GA': 'GEORGIA',
|
||||||
'GU': 'Guam',
|
'GU': 'GUAM',
|
||||||
'HI': 'Hawaii',
|
'HI': 'HAWAII',
|
||||||
'IA': 'Iowa',
|
'IA': 'IOWA',
|
||||||
'ID': 'Idaho',
|
'ID': 'IDAHO',
|
||||||
'IL': 'Illinois',
|
'IL': 'ILLINOIS',
|
||||||
'IN': 'Indiana',
|
'IN': 'INDIANA',
|
||||||
'KS': 'Kansas',
|
'KS': 'KANSAS',
|
||||||
'KY': 'Kentucky',
|
'KY': 'KENTUCKY',
|
||||||
'LA': 'Louisiana',
|
'LA': 'LOUISIANA',
|
||||||
'MA': 'Massachusetts',
|
'MA': 'MASSACHUSETTS',
|
||||||
'MD': 'Maryland',
|
'MD': 'MARYLAND',
|
||||||
'ME': 'Maine',
|
'ME': 'MAINE',
|
||||||
'MI': 'Michigan',
|
'MI': 'MICHIGAN',
|
||||||
'MN': 'Minnesota',
|
'MN': 'MINNESOTA',
|
||||||
'MO': 'Missouri',
|
'MO': 'MISSOURI',
|
||||||
'MP': 'Northern Mariana Islands',
|
'MP': 'NORTHERN MARIANA ISLANDS',
|
||||||
'MS': 'Mississippi',
|
'MS': 'MISSISSIPPI',
|
||||||
'MT': 'Montana',
|
'MT': 'MONTANA',
|
||||||
'NA': 'National',
|
'NA': 'NATIONAL',
|
||||||
'NC': 'North Carolina',
|
'NC': 'NORTH CAROLINA',
|
||||||
'ND': 'North Dakota',
|
'ND': 'NORTH DAKOTA',
|
||||||
'NE': 'Nebraska',
|
'NE': 'NEBRASKA',
|
||||||
'NH': 'New Hampshire',
|
'NH': 'NEW HAMPSHIRE',
|
||||||
'NJ': 'New Jersey',
|
'NJ': 'NEW JERSEY',
|
||||||
'NM': 'New Mexico',
|
'NM': 'NEW MEXICO',
|
||||||
'NV': 'Nevada',
|
'NV': 'NEVADA',
|
||||||
'NY': 'New York',
|
'NY': 'NEW YORK',
|
||||||
'OH': 'Ohio',
|
'OH': 'OHIO',
|
||||||
'OK': 'Oklahoma',
|
'OK': 'OKLAHOMA',
|
||||||
'OR': 'Oregon',
|
'OR': 'OREGON',
|
||||||
'PA': 'Pennsylvania',
|
'PA': 'PENNSYLVANIA',
|
||||||
'PR': 'Puerto Rico',
|
'PR': 'PUERTO RICO',
|
||||||
'RI': 'Rhode Island',
|
'RI': 'RHODE ISLAND',
|
||||||
'SC': 'South Carolina',
|
'SC': 'SOUTH CAROLINA',
|
||||||
'SD': 'South Dakota',
|
'SD': 'SOUTH DAKOTA',
|
||||||
'TN': 'Tennessee',
|
'TN': 'TENNESSEE',
|
||||||
'TX': 'Texas',
|
'TX': 'TEXAS',
|
||||||
'UT': 'Utah',
|
'UT': 'UTAH',
|
||||||
'VA': 'Virginia',
|
'VA': 'VIRGINIA',
|
||||||
'VI': 'Virgin Islands',
|
'VI': 'VIRGIN ISLANDS',
|
||||||
'VT': 'Vermont',
|
'VT': 'VERMONT',
|
||||||
'WA': 'Washington',
|
'WA': 'WASHINGTON',
|
||||||
'WI': 'Wisconsin',
|
'WI': 'WISCONSIN',
|
||||||
'WV': 'West Virginia',
|
'WV': 'WEST VIRGINIA',
|
||||||
'WY': 'Wyoming'
|
'WY': 'WYOMING'
|
||||||
}
|
}
|
||||||
|
|
||||||
class Corona(callbacks.Plugin):
|
class Corona(callbacks.Plugin):
|
||||||
"""Displays current stats of the Coronavirus outbreak"""
|
"""Displays current stats of the Coronavirus outbreak"""
|
||||||
threaded = True
|
threaded = True
|
||||||
|
|
||||||
@wrap([optional('text')])
|
def getCSV(self):
|
||||||
def corona(self, irc, msg, args, search):
|
data = None
|
||||||
"""<area>
|
|
||||||
Displays Coronavirus stats
|
|
||||||
"""
|
|
||||||
git = api = False
|
|
||||||
url = "https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/1/query?f=json&where=Confirmed>0&outFields=*"
|
|
||||||
try:
|
|
||||||
data = requests.get(url, timeout=10)
|
|
||||||
data.raise_for_status()
|
|
||||||
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
|
||||||
log.debug('Corona: error retrieving data from API: {0}'.format(e))
|
|
||||||
try:
|
try:
|
||||||
day = date.today().strftime('%m-%d-%Y')
|
day = date.today().strftime('%m-%d-%Y')
|
||||||
url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/{0}.csv".format(day)
|
url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/{0}.csv".format(day)
|
||||||
data = requests.get(url, timeout=10)
|
r = requests.get(url, timeout=10)
|
||||||
data.raise_for_status()
|
r.raise_for_status()
|
||||||
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
||||||
log.debug('Corona: error retrieving data for today: {0}'.format(e))
|
log.debug('Corona: error retrieving data for today: {0}'.format(e))
|
||||||
try:
|
try:
|
||||||
day = date.today() - timedelta(days=1)
|
day = date.today() - timedelta(days=1)
|
||||||
day = day.strftime('%m-%d-%Y')
|
day = day.strftime('%m-%d-%Y')
|
||||||
url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/{0}.csv".format(day)
|
url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_daily_reports/{0}.csv".format(day)
|
||||||
data = requests.get(url, timeout=10)
|
r = requests.get(url, timeout=10)
|
||||||
|
r.raise_for_status()
|
||||||
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
||||||
log.debug('Corona: error retrieving data for yesterday: {0}'.format(e))
|
log.debug('Corona: error retrieving data for yesterday: {0}'.format(e))
|
||||||
return
|
|
||||||
else:
|
else:
|
||||||
git = True
|
data = csv.DictReader(r.iter_lines(decode_unicode = True))
|
||||||
data = csv.DictReader(data.iter_lines(decode_unicode = True))
|
|
||||||
else:
|
else:
|
||||||
git = True
|
data = csv.DictReader(r.iter_lines(decode_unicode = True))
|
||||||
data = csv.DictReader(data.iter_lines(decode_unicode = True))
|
return data
|
||||||
|
|
||||||
|
def getAPI(self):
|
||||||
|
data = None
|
||||||
|
url = "https://services1.arcgis.com/0MSEUqKaxRlEPj5g/arcgis/rest/services/ncov_cases/FeatureServer/1/query?f=json&where=Confirmed>0&outFields=*"
|
||||||
|
try:
|
||||||
|
r = requests.get(url, timeout=10)
|
||||||
|
r.raise_for_status()
|
||||||
|
except (requests.exceptions.RequestException, requests.exceptions.HTTPError) as e:
|
||||||
|
log.debug('Corona: error retrieving data from API: {0}'.format(e))
|
||||||
else:
|
else:
|
||||||
api = True
|
r = json.loads(r.content.decode())
|
||||||
data = json.loads(data.content.decode())
|
data = r.get('features')
|
||||||
data = data.get('features')
|
|
||||||
if not data:
|
if not data:
|
||||||
log.debug("Corona: Error retrieving features data from API.")
|
log.debug("Corona: Error retrieving features data from API.")
|
||||||
|
return data
|
||||||
|
|
||||||
|
@wrap([optional('text')])
|
||||||
|
def corona(self, irc, msg, args, search):
|
||||||
|
"""[region]
|
||||||
|
Displays Coronavirus statistics. Add a region name to search for country/state
|
||||||
|
specific results. Accepts full country/state names or ISO 3166-1 alpha-2 (two
|
||||||
|
character) country abbreviations and US Postal (two character) state abbreviations.
|
||||||
|
Invalid region names or search terms without data return global results.
|
||||||
|
"""
|
||||||
|
git = api = False
|
||||||
|
data = self.getAPI()
|
||||||
|
if data:
|
||||||
|
api = True
|
||||||
|
else:
|
||||||
|
data = self.getCSV()
|
||||||
|
if data:
|
||||||
|
git = True
|
||||||
|
if not data:
|
||||||
|
irc.reply("Error. Unable to access database.")
|
||||||
return
|
return
|
||||||
total_confirmed = total_deaths = total_recovered = 0
|
total_confirmed = total_deaths = total_recovered = 0
|
||||||
confirmed = deaths = recovered = 0
|
confirmed = deaths = recovered = 0
|
||||||
@ -414,10 +430,10 @@ class Corona(callbacks.Plugin):
|
|||||||
else:
|
else:
|
||||||
region = r.get('Country/Region')
|
region = r.get('Country/Region')
|
||||||
state = r.get('Province/State')
|
state = r.get('Province/State')
|
||||||
if len(search) == 2 and search.lower() != 'us' and search.lower() != 'uk':
|
if len(search) == 2:
|
||||||
if self.registryValue("countryFirst", msg.channel):
|
if self.registryValue("countryFirst", msg.channel):
|
||||||
try:
|
try:
|
||||||
search = CC[search.upper()]
|
search = countries[search.upper()]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
try:
|
try:
|
||||||
search = states[search.upper()]
|
search = states[search.upper()]
|
||||||
@ -428,12 +444,10 @@ class Corona(callbacks.Plugin):
|
|||||||
search = states[search.upper()]
|
search = states[search.upper()]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
try:
|
try:
|
||||||
search = CC[search.upper()]
|
search = countries[search.upper()]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
if 'china' in search.lower():
|
if search.lower() == 'usa' or 'united states' in search.lower():
|
||||||
search = 'mainland china'
|
|
||||||
elif search.lower() == 'usa' or 'united states' in search.lower():
|
|
||||||
search = 'us'
|
search = 'us'
|
||||||
elif 'united kingdom' in search.lower():
|
elif 'united kingdom' in search.lower():
|
||||||
search = 'uk'
|
search = 'uk'
|
||||||
@ -469,4 +483,3 @@ class Corona(callbacks.Plugin):
|
|||||||
irc.reply(template)
|
irc.reply(template)
|
||||||
|
|
||||||
Class = Corona
|
Class = Corona
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user