diff --git a/alertproviders/bota.py b/alertproviders/bota.py index 7332fcc..a1e050f 100644 --- a/alertproviders/bota.py +++ b/alertproviders/bota.py @@ -20,29 +20,31 @@ class BOTA(HTTPAlertProvider): new_alerts = [] # Find the table of upcoming alerts bs = BeautifulSoup(http_response.content.decode(), features="lxml") - forthcoming_activations_div = bs.body.find('div', attrs={'class': 'view-activations-public'}) - if forthcoming_activations_div: - tbody = forthcoming_activations_div.find('table', attrs={'class': 'views-table'}).find('tbody') - for row in tbody.find_all('tr'): - cells = row.find_all('td') - first_cell_text = str(cells[0].find('a').contents[0]).strip() - ref_name = first_cell_text.split(" by ")[0] - dx_call = str(cells[1].find('a').contents[0]).strip().upper() + div = bs.body.find('div', attrs={'class': 'view-activations-public'}) + if div: + table = div.find('table', attrs={'class': 'views-table'}) + if table: + tbody = table.find('tbody') + for row in tbody.find_all('tr'): + cells = row.find_all('td') + first_cell_text = str(cells[0].find('a').contents[0]).strip() + ref_name = first_cell_text.split(" by ")[0] + dx_call = str(cells[1].find('a').contents[0]).strip().upper() - # Get the date, dealing with the fact we get no year so have to figure out if it's last year or next year - date_text = str(cells[2].find('span').contents[0]).strip() - date_time = datetime.strptime(date_text,"%d %b - %H:%M UTC").replace(tzinfo=pytz.UTC) - date_time = date_time.replace(year=datetime.now(pytz.UTC).year) - # If this was more than a day ago, activation is actually next year - if date_time < datetime.now(pytz.UTC) - timedelta(days=1): - date_time = date_time.replace(year=datetime.now(pytz.UTC).year + 1) + # Get the date, dealing with the fact we get no year so have to figure out if it's last year or next year + date_text = str(cells[2].find('span').contents[0]).strip() + date_time = datetime.strptime(date_text,"%d %b - %H:%M UTC").replace(tzinfo=pytz.UTC) + date_time = date_time.replace(year=datetime.now(pytz.UTC).year) + # If this was more than a day ago, activation is actually next year + if date_time < datetime.now(pytz.UTC) - timedelta(days=1): + date_time = date_time.replace(year=datetime.now(pytz.UTC).year + 1) - # Convert to our alert format - alert = Alert(source=self.name, - dx_calls=[dx_call], - sig_refs=[SIGRef(id=ref_name, sig="BOTA")], - start_time=date_time.timestamp(), - is_dxpedition=False) + # Convert to our alert format + alert = Alert(source=self.name, + dx_calls=[dx_call], + sig_refs=[SIGRef(id=ref_name, sig="BOTA")], + start_time=date_time.timestamp(), + is_dxpedition=False) - new_alerts.append(alert) + new_alerts.append(alert) return new_alerts