coach-scraper/app/exporter.py

35 lines
848 B
Python
Raw Normal View History

2023-12-01 00:12:16 +00:00
from app.repo import AnsiColor, Repo
from typing import Union
from typing_extensions import TypedDict
class Export(TypedDict, total=False):
fide_rapid: int
class BaseExporter(Repo):
def __init__(self, site: str, username: str):
super().__init__(site)
self.username = username
def export_fide_rapid(self) -> Union[int, None]:
raise NotImplementedError()
def export(self) -> Export:
"""Transform coach-specific data into uniform format."""
export: Export = {}
fide_rapid = self.export_fide_rapid()
if fide_rapid:
export["fide_rapid"] = fide_rapid
self.log(
[
(AnsiColor.INFO, "[INFO]"),
(None, ": Exported "),
(AnsiColor.DATA, self.username),
]
)
return export