Draw the waterfall for everything that never spoke
Every capture that is not voice, or whose voice yields five characters or fewer of transcript, now gets a PNG of the waterfall it would have painted on screen: spectrogram from the IQ where it was kept, from the demodulated audio otherwise, captioned and labelled either way. The browser shows it in the picture panel, but only when there is no transcript, Morse or decoded data to show instead. bandsaunter waterfall [PATH...] [--all] [--redraw] [--min-chars N] draws them after the fact for recordings already on disk. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016PsWPTweCT6pwxKngvVxcg
This commit is contained in:
parent
7e8b9b268d
commit
dee262e130
17 changed files with 1383 additions and 35 deletions
|
|
@ -488,6 +488,10 @@ def test_a_simulated_transmission_becomes_a_file_on_disk(tmp_path):
|
|||
assert hit.image_kind == "SSTV" and hit.image_mode == "Martin M1"
|
||||
assert hit.category == "image"
|
||||
assert hit.kept, "a picture was decoded and then discarded"
|
||||
written = list(tmp_path.glob("*.png"))
|
||||
# Named, not merely globbed: every capture that produced no words has a
|
||||
# waterfall drawn beside it, and an SSTV transmission produced a picture
|
||||
# rather than words. Both are PNGs; only one of them is 320 across.
|
||||
written = [p for p in tmp_path.glob("*.png")
|
||||
if not p.name.endswith("_waterfall.png")]
|
||||
assert written
|
||||
assert _read_png(written[0]).shape[1] == 320
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue