Source code for oi_cli2.cli.adaptor.AtCoder_printList

from datetime import datetime, timedelta
# from tests.mock.MockHttpUtil import MockHttpUtil
from rich.console import Console
from rich.table import Table
from rich.style import Style

from ac_core.contest import ContestListPage

timeFmt = "%b/%d/%Y %H:%M"


[docs]def min2str(min: int) -> str: # prefix0 _ = lambda v: f'0{v}'[-2:] if min <= 60: return _(min) if min <= 24 * 60: return f'{_(min//60)}:{_(min%60)}' return f'{min//60//24} day {_((min//60)%24)}:{_(min%60)}'
[docs]def full_url(url: str) -> str: return ('https://atcoder.jp' + url) if url.startswith('/') else url
[docs]def printData(cl: ContestListPage): # print(html) cur = cl.up_comming his = cl.recent console = Console() table = Table(title="Upcoming") table.add_column("Name", style="cyan", no_wrap=False) # table.add_column("Writers", style="magenta") table.add_column("Start") table.add_column("Before Start") table.add_column("Length") table.add_column("url", style="magenta") for item in cur: startTime = datetime.fromtimestamp(item.start_timestamp) timediff = startTime - datetime.now() table.add_row( item.name, # item["writers"], # tds[1].get_text().strip(), # https://strftime.org/ # Jan/27/2022 17:35 tds[2].get_text().strip(), startTime.strftime(timeFmt), str(timedelta(days=timediff.days, seconds=timediff.seconds)) if timediff.days >= 0 else 'Started', min2str(item.duration), # tds[3].get_text().strip(), full_url(item.url), # tds[5].get_text().strip(), ) console.print(table) # history table = Table(title="History contests (Recent 10)") table.add_column("Name", style="cyan", no_wrap=False) # table.add_column("Writers", style="magenta") table.add_column("Start") table.add_column("Length") table.add_column("url", style="magenta") for i in range(min(10, len(his))): item = his[i] table.add_row( item.name, # tds[0].get_text().strip(), # item["writers"], # tds[1].get_text().strip(), # https://strftime.org/ # Jan/27/2022 17:35 tds[2].get_text().strip(), datetime.fromtimestamp(item.start_timestamp).strftime(timeFmt), min2str(item.duration), # tds[3].get_text().strip(), full_url(item.url), # tds[5].get_text().strip(), ) console.print(table)