diff --git a/docs/changelog.md b/docs/changelog.md index 107b567c6..244dba7e7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -11,6 +11,8 @@ The format is based on [Keep a Changelog]. ### Added - **metadata**: Auto-detect forks of PrusaSlicer. +- **metadata**: Add `printer_vendor`, `printer_model`, `printer_variant`, + and `profile_version` parsing for PrusaSlicer derivatives. ## [0.10.0] - 2026-01-21 diff --git a/moonraker/components/file_manager/metadata.py b/moonraker/components/file_manager/metadata.py index 59b4c468c..3c9df42a0 100644 --- a/moonraker/components/file_manager/metadata.py +++ b/moonraker/components/file_manager/metadata.py @@ -323,6 +323,18 @@ def parse_filament_weight_total(self) -> Optional[float]: def parse_filament_weights(self) -> Optional[List[float]]: return None + def parse_printer_vendor(self) -> Optional[str]: + return None + + def parse_printer_model(self) -> Optional[str]: + return None + + def parse_printer_variant(self) -> Optional[str]: + return None + + def parse_profile_version(self) -> Optional[str]: + return None + def parse_thumbnails(self) -> Optional[List[Dict[str, Any]]]: parsed_matches: List[Dict[str, Any]] = [] has_miniature: bool = False @@ -621,6 +633,18 @@ def parse_filament_change_count(self) -> Optional[int]: return res return regex_find_int(r"; total filament change = (%D)", self.config_data) + def parse_printer_vendor(self) -> Optional[str]: + return regex_find_string(r'; printer_vendor = (%S)', self.footer_data) + + def parse_printer_model(self) -> Optional[str]: + return regex_find_string(r'; printer_model = (%S)', self.footer_data) + + def parse_printer_variant(self) -> Optional[str]: + return regex_find_string(r'; printer_variant = (%S)', self.footer_data) + + def parse_profile_version(self) -> Optional[str]: + return regex_find_string(r'; profile_version = (%S)', self.footer_data) + class Slic3rPE(PrusaSlicer): @classmethod def identify(cls, data: str) -> Tuple[str, str] | None: