@@ -489,19 +489,28 @@ def log_rclone_output_python_api(stdout, stderr):
489489
490490def log_rclone_copy_errors_api (errors ):
491491 """"""
492+ message = ""
493+
494+ if errors ["nothing_was_transferred_rawdata" ] is True :
495+ message += "\n \n Note! Nothing was transferred from rawdata!\n "
496+
497+ if errors ["nothing_was_transferred_derivatives" ] is True :
498+ message += "\n \n Note! Nothing was transferred from derivatives!\n "
499+
492500 if any (errors ["messages" ]):
493501 if any (errors ["file_names" ]):
494- message = (
502+ message + = (
495503 "\n \n Errors were detected! In files:"
496504 "\n -------------------------------\n "
497505 )
498506 message += "\n " .join (errors ["file_names" ])
499507 else :
500- message = "\n \n [red]Errors detected![/red]"
508+ message + = "\n \n [red]Errors detected![/red]"
501509 message += "\n \n The error messages are:\n -----------------------\n "
502510 message += "\n " .join (errors ["messages" ])
503511 message += "\n "
504- else :
512+
513+ if message == "" :
505514 message = "No transfer errors were detected.\n "
506515
507516 utils .log_and_message (message , use_rich = True )
@@ -510,16 +519,23 @@ def log_rclone_copy_errors_api(errors):
510519def parse_rclone_copy_output (top_level_folder , output ):
511520 """"""
512521 stdout , out_errors = reformat_rclone_copy_output (
513- output .stdout , capture_errors = True , top_level_folder = top_level_folder
522+ output .stdout , top_level_folder = top_level_folder
514523 )
515524
516525 stderr , err_errors = reformat_rclone_copy_output (
517- output .stderr , capture_errors = True
526+ output .stderr , top_level_folder = top_level_folder
518527 )
519528
520529 all_errors = {
521- "file_names" : out_errors ["file_names" ] + err_errors ["file_names" ],
530+ "file_names" : out_errors ["file_names" ]
531+ + err_errors ["file_names" ], # TODO: this is so messy
522532 "messages" : out_errors ["messages" ] + err_errors ["messages" ],
533+ "nothing_was_transferred_rawdata" : err_errors [
534+ "nothing_was_transferred_rawdata"
535+ ],
536+ "nothing_was_transferred_derivatives" : err_errors [
537+ "nothing_was_transferred_derivatives"
538+ ],
523539 }
524540
525541 all_errors ["file_names" ] = list (set (all_errors ["file_names" ]))
@@ -531,15 +547,16 @@ def get_empty_errors_dict() -> TransferErrors:
531547 return {
532548 "file_names" : [],
533549 "messages" : [],
550+ "nothing_was_transferred_rawdata" : None ,
551+ "nothing_was_transferred_derivatives" : None ,
534552 }
535553
536554
537555def reformat_rclone_copy_output (
538556 stream : bytes ,
539- capture_errors : bool = False ,
540557 top_level_folder : TopLevelFolder | None = None ,
541558) -> tuple [str , TransferErrors ]:
542- """"""
559+ """:return: """
543560 split_stream = stream .decode ("utf-8" ).split ("\n " )
544561
545562 errors = get_empty_errors_dict ()
@@ -550,16 +567,21 @@ def reformat_rclone_copy_output(
550567 except json .JSONDecodeError :
551568 continue
552569
553- if capture_errors :
554- if line_json ["level" ] in ["error" , "critical" ]:
555- if "object" in line_json :
556- full_filepath = f"{ top_level_folder } /{ line_json ['object' ]} "
557- errors ["file_names" ].append (full_filepath )
558- errors ["messages" ].append (
559- f"The file { full_filepath } failed to transfer. Reason: { line_json ['msg' ]} "
560- )
561- else :
562- errors ["messages" ].append (f"ERROR : { line_json ['msg' ]} " )
570+ if line_json ["level" ] in ["error" , "critical" ]:
571+ if "object" in line_json :
572+ full_filepath = f"{ top_level_folder } /{ line_json ['object' ]} "
573+ errors ["file_names" ].append (full_filepath )
574+ errors ["messages" ].append (
575+ f"The file { full_filepath } failed to transfer. Reason: { line_json ['msg' ]} "
576+ )
577+ else :
578+ errors ["messages" ].append (f"ERROR : { line_json ['msg' ]} " )
579+
580+ elif "stats" in line_json and "totalTransfers" in line_json ["stats" ]:
581+ if line_json ["stats" ]["totalTransfers" ] == 0 :
582+ errors [f"nothing_was_transferred_{ top_level_folder } " ] = True # type:ignore
583+ else :
584+ errors [f"nothing_was_transferred_{ top_level_folder } " ] = False # type:ignore
563585
564586 split_stream [idx ] = (
565587 f"{ line_json ['time' ][:19 ]} { line_json ['level' ].upper ()} : { line_json ['msg' ]} "
0 commit comments