30 lines
841 B
Python
30 lines
841 B
Python
from dataclasses import dataclass, field
|
|
from typing import List, Optional
|
|
from pathlib import Path
|
|
|
|
@dataclass
|
|
class Metadata:
|
|
title: str = None
|
|
description: Optional[str] = None
|
|
year: Optional[int] = None
|
|
developer: Optional[str] = None
|
|
publisher: Optional[str] = None
|
|
genre: Optional[List[str]] = field(default_factory=list)
|
|
players: Optional[int] = None
|
|
cover_image: Optional[str] = None # Remote URL
|
|
screenshot: Optional[str] = None # Remote URL
|
|
cover_image_path: Optional[Path] = None # Local file path
|
|
screenshot_path: Optional[Path] = None # Local file path
|
|
tags: Optional[List[str]] = field(default_factory=list)
|
|
|
|
@dataclass
|
|
class Game:
|
|
title: str
|
|
path: Path
|
|
metadata: Metadata|None = None
|
|
|
|
@dataclass
|
|
class Roms:
|
|
list: List[Game] = field(default_factory=list)
|
|
|