from typing import Optional YOUTUBE_VIDEO_URL = "https://www.youtube.com/watch?v=" IMDB_VIDEO_URL = "https://www.imdb.com/title/" class BookType: ... class BookMetadata: title: str run_time_seconds: Optional[int] authors = Optional[str] goodreads_id = Optional[str] koreader_data_by_hash = Optional[dict] isbn = Optional[str] # isbn_13 = Optional[str] # isbn_10 = Optional[str] pages = Optional[int] language = Optional[str] first_publish_year = Optional[int] summary = Optional[str] # General cover_url: Optional[str] genres: list[str] def __init__(self, title: Optional[str] = ""): self.title = title def as_dict_with_authors_cover_and_genres(self) -> tuple: book_dict = vars(self) authors = book_dict.pop("authors") cover = book_dict.pop("cover_url") genres = book_dict.pop("genres") return book_dict, authors, cover, genres