diff --git a/parsers/s3_analyzer.py b/parsers/s3_analyzer.py index ee396dc..379f6a5 100644 --- a/parsers/s3_analyzer.py +++ b/parsers/s3_analyzer.py @@ -344,9 +344,13 @@ def parse_structured_bin(bin_blob: bytes) -> list[MarkSplit]: s3_bytes += length elif rec_type == _REC_MARK: label = payload.decode("utf-8", errors="replace") - marks.append(MarkSplit(label=label, - bw_byte_offset=bw_bytes, - s3_byte_offset=s3_bytes)) + # Skip auto-generated bridge lifecycle marks — only keep user marks + if label.startswith("SESSION START") or label.startswith("SESSION END"): + pass + else: + marks.append(MarkSplit(label=label, + bw_byte_offset=bw_bytes, + s3_byte_offset=s3_bytes)) pos = payload_end diff --git a/seismo_lab.py b/seismo_lab.py index 984d6d6..ad7d970 100644 --- a/seismo_lab.py +++ b/seismo_lab.py @@ -652,9 +652,12 @@ class AnalyzerPanel(tk.Frame): if marks: sessions = split_sessions_at_marks(bw_blob, s3_blob, marks) - self.status_var.set(f"Parsing... ({len(marks)} mark(s) found)") + mark_labels = " | ".join(m.label for m in marks) + self.sb_var.set(f"{len(marks)} user mark(s): {mark_labels}") self.update_idletasks() else: + if bin_path and bin_path.exists(): + self.sb_var.set("No user marks found in session .bin — using standard session detection") s3_frames = annotate_frames(parse_s3(s3_blob, trailer_len=0), "S3") bw_frames = annotate_frames(parse_bw(bw_blob, trailer_len=0, validate_checksum=True), "BW")