@@ -60,17 +60,24 @@ def parse_html(html_text: str, regex_str=r"const json = '(?P<json_str>{.*?})'")
6060 return parsed
6161
6262
63- def load_parsed (parsed : str , * , json_pl = False ) -> list [dict ] | list :
63+ def load_parsed (parsed : str , file_list = True ) -> list [dict ] | list :
6464 """Deserialize json extracted from device for creating file objects."""
6565 try :
6666 parsed_dict = json .loads (parsed )
6767 except json .JSONDecodeError as e :
6868 logger .error (e )
6969 parsed_dict = {}
7070
71- if json_pl :
72- return parsed_dict
73- return parsed_dict .get ('fileList' , [])
71+ if file_list :
72+ return parsed_dict .get ('fileList' , [])
73+ return parsed_dict
74+
75+
76+ def etl (device : Device , uri : str , * , file_list = True ) -> dict :
77+ extract = talk_to_device (device , uri )
78+ transform = parse_html (extract .text )
79+ load = load_parsed (transform , file_list )
80+ return load
7481
7582
7683def device_uri_gen (device : Device , file_details : list [dict ]) -> Iterator [tuple [str , ...]]:
@@ -80,9 +87,10 @@ def device_uri_gen(device: Device, file_details: list[dict]) -> Iterator[tuple[s
8087 if not file .get ('isDirectory' ):
8188 yield file_uri , file .get ('date' ), file .get ('size' )
8289 else :
83- html = talk_to_device (device , file_uri )
84- re_parse = parse_html (html .text )
85- new_file_details = load_parsed (re_parse )
90+ # html = talk_to_device(device, file_uri)
91+ # re_parse = parse_html(html.text)
92+ # new_file_details = load_parsed(re_parse)
93+ new_file_details = etl (device , file_uri )
8694 yield from device_uri_gen (device , new_file_details )
8795
8896
@@ -169,14 +177,13 @@ def run_inspection(to_download: set) -> None:
169177 logger .info ('Inspection complete' )
170178
171179
172- # def device_meta(device: Device, html_path='/') -> tuple[str, int | None, int | None]:
173- # response = device.http_request(html_path)
174- # re_parse = parse_html(response.text)
175- # payload = load_parsed(re_parse, json_pl=True)
176- # name = payload.get('deviceName', 'Supernote Device')
177- # mem = payload.get('totalByteSize')
178- # mem_used = payload.get('usedMemory')
179- # return name, mem, mem_used
180+ def device_info (device : Device , html_uri = 'Document' ) -> tuple [str , int | None , int | None ]:
181+ payload = etl (device , html_uri , file_list = False )
182+ return (
183+ payload .get ('deviceName' , 'Supernote Device' ),
184+ payload .get ('totalByteSize' ),
185+ payload .get ('usedMemory' ),
186+ )
180187
181188
182189def backup () -> None :
@@ -229,9 +236,14 @@ def backup() -> None:
229236 raise SystemExit ()
230237
231238 device = Device (device_url )
232- logger .info (f'Device at { device .base_url } ' )
233-
239+
234240 try :
241+ device .name , device .memory , device .mem_used = device_info (device )
242+ logger .info (f'Backing up { device .name } at { device .base_url } ' )
243+ percent_mem = device .mem_usage ()
244+ if percent_mem :
245+ logger .info (f'Device using { percent_mem } of available onboard memory.' )
246+
235247 if args .upload :
236248 resp = upload_files (device , args .upload , FOLDERS .get (args .destination ))
237249 msg = resp if resp else 'No files to upload.'
@@ -243,9 +255,10 @@ def backup() -> None:
243255 all_files = []
244256
245257 for folder in args .notes :
246- httpx_response = talk_to_device (device , folder )
247- re_parse = parse_html (httpx_response .text )
248- device_data = load_parsed (re_parse )
258+ # httpx_response = talk_to_device(device, folder)
259+ # re_parse = parse_html(httpx_response.text)
260+ # device_data = load_parsed(re_parse)
261+ device_data = etl (device , folder )
249262 all_files .extend (device_data )
250263
251264 today = today_pth (save_dir )
0 commit comments