Fix file info fetching

This commit is contained in:
Anton Skrypnyk 2024-07-24 17:15:47 +03:00
parent 4faa240b06
commit 19cac21db6
2 changed files with 20 additions and 13 deletions

View File

@ -128,16 +128,16 @@ class BambuVirtualPrinter:
def update_print_job_info(self):
print_job_info = self.bambu_client.get_device().print_job
filename: str = print_job_info.subtask_name
task_name: str = print_job_info.subtask_name
project_file_info = self.file_system.get_data_by_suffix(
filename, [".3mf", ".gcode.3mf"]
task_name, [".3mf", ".gcode.3mf"]
)
if project_file_info is None:
self._log.debug(f"No 3mf file found for {print_job_info}")
self._current_print_job = None
return
if self.file_system.select_file(filename):
if self.file_system.select_file(project_file_info.file_name):
self.sendOk()
# fuzzy math here to get print percentage to match BambuStudio
@ -307,6 +307,7 @@ class BambuVirtualPrinter:
@gcode_executor.register("M23")
def _select_sd_file(self, data: str) -> bool:
filename = data.split(maxsplit=1)[1].strip()
self._list_sd()
return self.file_system.select_file(filename)
@gcode_executor.register("M26")
@ -340,6 +341,7 @@ class BambuVirtualPrinter:
@gcode_executor.register("M30")
def _delete_sd_file(self, data: str) -> bool:
filename = data.split(None, 1)[1].strip()
self._list_sd()
self.file_system.delete_file(filename)
return True

View File

@ -22,10 +22,10 @@ class FileInfo:
@property
def file_name(self):
return self.path.name.lower()
return self.path.name
def get_log_info(self):
return f'{self.dosname} {self.size} {self.timestamp} "{self.path.as_posix()}"'
return f'{self.dosname} {self.size} {self.timestamp} "{self.file_name}"'
def to_dict(self):
return asdict(self)
@ -103,7 +103,7 @@ class RemoteSDCardFileList:
self._logger.debug(f"get data for path: {file_name}")
# replace if name is an alias
file_name = Path(file_name).name.lower()
file_name = Path(file_name).name
file_name = self._file_alias_cache.get(file_name, file_name)
data = self._file_data_cache.get(file_name, None)
@ -122,15 +122,20 @@ class RemoteSDCardFileList:
}
self._file_data_cache = {info.file_name: info for info in file_info_list}
def get_data_by_suffix(self, file_name: str, allowed_suffixes: list[str]):
file_data = self._get_cached_file_data(file_name)
if file_data is None:
return None
file_path = file_data.path
if any(s in allowed_suffixes for s in file_path.suffixes):
def _get_cached_data_by_suffix(self, file_stem: str, allowed_suffixes: list[str]):
for suffix in allowed_suffixes:
file_data = self._get_cached_file_data(f"{file_stem}{suffix}")
if file_data is not None:
return file_data
return None
def get_data_by_suffix(self, file_stem: str, allowed_suffixes: list[str]):
file_data = self._get_cached_data_by_suffix(file_stem, allowed_suffixes)
if file_data is None:
self._update_existing_files_info()
file_data = self._get_cached_data_by_suffix(file_stem, allowed_suffixes)
return file_data
def select_file(self, file_path: str, check_already_open: bool = False) -> bool:
self._logger.debug(
f"_selectSdFile: {file_path}, check_already_open={check_already_open}"