Fix file info fetching
This commit is contained in:
parent
4faa240b06
commit
19cac21db6
@ -128,16 +128,16 @@ class BambuVirtualPrinter:
|
|||||||
|
|
||||||
def update_print_job_info(self):
|
def update_print_job_info(self):
|
||||||
print_job_info = self.bambu_client.get_device().print_job
|
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(
|
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:
|
if project_file_info is None:
|
||||||
self._log.debug(f"No 3mf file found for {print_job_info}")
|
self._log.debug(f"No 3mf file found for {print_job_info}")
|
||||||
self._current_print_job = None
|
self._current_print_job = None
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.file_system.select_file(filename):
|
if self.file_system.select_file(project_file_info.file_name):
|
||||||
self.sendOk()
|
self.sendOk()
|
||||||
|
|
||||||
# fuzzy math here to get print percentage to match BambuStudio
|
# fuzzy math here to get print percentage to match BambuStudio
|
||||||
@ -307,6 +307,7 @@ class BambuVirtualPrinter:
|
|||||||
@gcode_executor.register("M23")
|
@gcode_executor.register("M23")
|
||||||
def _select_sd_file(self, data: str) -> bool:
|
def _select_sd_file(self, data: str) -> bool:
|
||||||
filename = data.split(maxsplit=1)[1].strip()
|
filename = data.split(maxsplit=1)[1].strip()
|
||||||
|
self._list_sd()
|
||||||
return self.file_system.select_file(filename)
|
return self.file_system.select_file(filename)
|
||||||
|
|
||||||
@gcode_executor.register("M26")
|
@gcode_executor.register("M26")
|
||||||
@ -340,6 +341,7 @@ class BambuVirtualPrinter:
|
|||||||
@gcode_executor.register("M30")
|
@gcode_executor.register("M30")
|
||||||
def _delete_sd_file(self, data: str) -> bool:
|
def _delete_sd_file(self, data: str) -> bool:
|
||||||
filename = data.split(None, 1)[1].strip()
|
filename = data.split(None, 1)[1].strip()
|
||||||
|
self._list_sd()
|
||||||
self.file_system.delete_file(filename)
|
self.file_system.delete_file(filename)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -22,10 +22,10 @@ class FileInfo:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def file_name(self):
|
def file_name(self):
|
||||||
return self.path.name.lower()
|
return self.path.name
|
||||||
|
|
||||||
def get_log_info(self):
|
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):
|
def to_dict(self):
|
||||||
return asdict(self)
|
return asdict(self)
|
||||||
@ -103,7 +103,7 @@ class RemoteSDCardFileList:
|
|||||||
self._logger.debug(f"get data for path: {file_name}")
|
self._logger.debug(f"get data for path: {file_name}")
|
||||||
|
|
||||||
# replace if name is an alias
|
# 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)
|
file_name = self._file_alias_cache.get(file_name, file_name)
|
||||||
|
|
||||||
data = self._file_data_cache.get(file_name, None)
|
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}
|
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]):
|
def _get_cached_data_by_suffix(self, file_stem: str, allowed_suffixes: list[str]):
|
||||||
file_data = self._get_cached_file_data(file_name)
|
for suffix in allowed_suffixes:
|
||||||
if file_data is None:
|
file_data = self._get_cached_file_data(f"{file_stem}{suffix}")
|
||||||
return None
|
if file_data is not None:
|
||||||
file_path = file_data.path
|
return file_data
|
||||||
if any(s in allowed_suffixes for s in file_path.suffixes):
|
|
||||||
return file_data
|
|
||||||
return None
|
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:
|
def select_file(self, file_path: str, check_already_open: bool = False) -> bool:
|
||||||
self._logger.debug(
|
self._logger.debug(
|
||||||
f"_selectSdFile: {file_path}, check_already_open={check_already_open}"
|
f"_selectSdFile: {file_path}, check_already_open={check_already_open}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user