def get_fot_major_events(): """ Get the FOT major events. There is a known issue with words/phrases enclosed in <span class=SpellE></span> which ends up causing words run together. E.g. Lunar eclipse 2000:302 that "Required Solar arrayoffpointing". """ page = 'fot_major_events' if page in evts_cache: return evts_cache[page] html = occweb.get_url(page) soup = parse_html(html) table = soup.find('table', attrs={'class': 'MsoNormalTable'}) rows = get_table_rows(table) evts = [] for i, row_vals in enumerate(rows[1:]): start = DateTime(row_vals[0]) caldate = start.caldate evt = dict(start=start.date[:8], date='{}-{}-{}'.format(caldate[:4], caldate[4:7], caldate[7:9]), tstart=start.secs + i, # add i for later sorting descr=row_vals[1], note=row_vals[2], source='FOT') evts.append(evt) evts_cache[page] = evts return evts
def get_fdb_major_events(): """ Get the FDB major events. Some events in the early mission have multiple CAPs, which causes run-together CAP numbers. """ page = 'fdb_major_events' if page in evts_cache: return evts_cache[page] html = occweb.get_url(page) soup = parse_html(html) table = soup.find('table') rows = get_table_rows(table) evts = [] mons = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split() for i, row_vals in enumerate(rows[:0:-1]): try: mm, dd, yy = (int(x) for x in row_vals[0].split('/')) except ValueError: continue yyyy = yy + (1900 if yy > 97 else 2000) start = DateTime('{}{}{:02d} at 12:00:00'.format(yyyy, mons[mm - 1], dd)) notes = [] if row_vals[2]: notes.append('CAP {}'.format(row_vals[2])) if row_vals[3]: notes.append('FSW PR {}'.format(row_vals[3])) evt = dict(start=start.date[:8], date='{}-{}-{:02d}'.format(yyyy, mons[mm - 1], dd), tstart=start.secs + i + 1000, # add i + 1000 for later sorting descr=row_vals[1], note=', '.join(notes), source='FDB') evts.append(evt) evts_cache[page] = evts return evts