solareclipseworkbench 1.10.7__tar.gz → 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/PKG-INFO +154 -77
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/README.md +140 -63
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/pyproject.toml +14 -14
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/__init__.py +2 -1
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/bracketing.py +334 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/camera.py +3838 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/camera_check.py +1069 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/command_timing.py +550 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/configuration.py +2 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/contact_visibility.py +88 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/deltat.csv +1 -1
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/exposure_calculator.py +385 -213
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/gui.py +1066 -382
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/hardware_problems.py +143 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/img/live.png +0 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/limb_correction.py +675 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/limb_ui.py +534 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/location_ui.py +21 -1
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/logging_setup.py +144 -0
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/lunar_limb.py +120 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/notifications.py +35 -2
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/reference_moments.py +70 -24
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/scripts.py +23 -5
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/sensors.py +100 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sew.py +4 -2
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/usb_gps.py +52 -11
- solareclipseworkbench-2.0.0/src/solareclipseworkbench/utils.py +738 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/wizard.py +911 -138
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench.egg-info/PKG-INFO +154 -77
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench.egg-info/SOURCES.txt +53 -2
- solareclipseworkbench-2.0.0/src/solareclipseworkbench.egg-info/requires.txt +18 -0
- solareclipseworkbench-2.0.0/tests/test_bailys_beads_contract.py +77 -0
- solareclipseworkbench-2.0.0/tests/test_beads_window.py +127 -0
- solareclipseworkbench-2.0.0/tests/test_bracketing.py +162 -0
- solareclipseworkbench-2.0.0/tests/test_camera_check.py +347 -0
- solareclipseworkbench-2.0.0/tests/test_camera_clock.py +173 -0
- solareclipseworkbench-2.0.0/tests/test_camera_keep_alive.py +183 -0
- solareclipseworkbench-2.0.0/tests/test_canon_aeb.py +61 -0
- solareclipseworkbench-2.0.0/tests/test_canon_burst.py +120 -0
- solareclipseworkbench-2.0.0/tests/test_command_timing.py +387 -0
- solareclipseworkbench-2.0.0/tests/test_contact_step.py +133 -0
- solareclipseworkbench-2.0.0/tests/test_exposure_compensation.py +114 -0
- solareclipseworkbench-2.0.0/tests/test_exposure_step.py +71 -0
- solareclipseworkbench-2.0.0/tests/test_format_shutter_speed.py +34 -0
- solareclipseworkbench-2.0.0/tests/test_gphoto2_locale.py +75 -0
- solareclipseworkbench-2.0.0/tests/test_gps_time_offset.py +66 -0
- solareclipseworkbench-2.0.0/tests/test_hardware_problems.py +78 -0
- solareclipseworkbench-2.0.0/tests/test_hdr.py +210 -0
- solareclipseworkbench-2.0.0/tests/test_limb_consistency.py +139 -0
- solareclipseworkbench-2.0.0/tests/test_limb_download.py +110 -0
- solareclipseworkbench-2.0.0/tests/test_live_view_size.py +123 -0
- solareclipseworkbench-2.0.0/tests/test_load_settings.py +71 -0
- solareclipseworkbench-2.0.0/tests/test_load_time_problems.py +96 -0
- solareclipseworkbench-2.0.0/tests/test_logging_setup.py +117 -0
- solareclipseworkbench-2.0.0/tests/test_main_window_layout.py +77 -0
- solareclipseworkbench-2.0.0/tests/test_moments_display.py +126 -0
- solareclipseworkbench-2.0.0/tests/test_nikon_banner.py +152 -0
- solareclipseworkbench-2.0.0/tests/test_nikon_burst.py +114 -0
- solareclipseworkbench-2.0.0/tests/test_prepare_camera.py +112 -0
- solareclipseworkbench-2.0.0/tests/test_reference_moments.py +32 -0
- solareclipseworkbench-2.0.0/tests/test_save_feedback.py +79 -0
- solareclipseworkbench-2.0.0/tests/test_script_outlasts_totality.py +98 -0
- solareclipseworkbench-2.0.0/tests/test_sensors.py +67 -0
- solareclipseworkbench-2.0.0/tests/test_shutter_release_log.py +119 -0
- solareclipseworkbench-2.0.0/tests/test_sony_banner.py +89 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/tests/test_sony_burst.py +16 -10
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/tests/test_sony_storageinfo.py +6 -7
- solareclipseworkbench-2.0.0/tests/test_unchanged_settings.py +136 -0
- solareclipseworkbench-2.0.0/tests/test_unknown_reference_moments.py +61 -0
- solareclipseworkbench-2.0.0/tests/test_vendor_detection.py +65 -0
- solareclipseworkbench-2.0.0/tests/test_voice_prompt_validation.py +60 -0
- solareclipseworkbench-2.0.0/tests/test_wizard_beads.py +172 -0
- solareclipseworkbench-2.0.0/tests/test_wizard_bracket.py +254 -0
- solareclipseworkbench-1.10.7/src/solareclipseworkbench/camera.py +0 -2710
- solareclipseworkbench-1.10.7/src/solareclipseworkbench/utils.py +0 -271
- solareclipseworkbench-1.10.7/src/solareclipseworkbench.egg-info/requires.txt +0 -18
- solareclipseworkbench-1.10.7/tests/test_sony_save_destination.py +0 -28
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/LICENSE +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/setup.cfg +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/__main__.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/besselian_element_generator.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/commands.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/constants.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/eclipse_besselian.csv +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/20240408.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/20250329.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/__init__.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/test.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/testEOS1000D.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/testEOS80D.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/testEOSR.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/testNikon.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/testSony.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/testVirtualCamera.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/voice_prompts.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/example_scripts/voice_prompts_basic.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/__init__.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/astrowimsara.jpg +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/calendar.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/camera.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/clock.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/datetime-format-popup.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/eclipse-date-popup.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/folder.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/location-popup.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/location.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/logo-small.jpg +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/logo-small.svg +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/logo.jpg +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/refresh.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/save.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/settings.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/simulation-popup.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/simulator.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/stop.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/toolbar.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/img/ui-top.png +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/location.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/nutation.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/observer.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/phone_gps.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/qt_utils.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/solar_eclipse.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/1.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/10.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/15.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/2.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/20_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/3.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/30_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/4.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/40_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/5.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/__init__.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c1.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c1_in_60_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_10_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_15_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_20_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_20_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_25_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_2_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_30_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_30_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_40_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_40_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_4_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_50_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_5_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_60_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_6_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_in_90_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c2_plus_30_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_in_20_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_in_45_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_in_8_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_plus_10_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_plus_15_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_plus_1_minute.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_plus_25_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_plus_2_minutes.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_plus_2_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c3_plus_45_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c4.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/c4_in_60_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/filters_on.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/max.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/sound/max_in_10_seconds.wav +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench/vec.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench.egg-info/dependency_links.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench.egg-info/entry_points.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/src/solareclipseworkbench.egg-info/top_level.txt +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/tests/test_live_view_preview_types.py +0 -0
- {solareclipseworkbench-1.10.7 → solareclipseworkbench-2.0.0}/tests/test_solar_eclipse.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: solareclipseworkbench
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0
|
|
4
4
|
Summary: Tools to photograph solar eclipses
|
|
5
5
|
Author-email: Sara Regibo <sararegibo@gmail.com>, Wim De Meester <deepskywim@gmail.com>
|
|
6
6
|
License: GPL-3.0-or-later
|
|
@@ -9,28 +9,43 @@ Keywords: astronomy,photography,solar eclipse
|
|
|
9
9
|
Requires-Python: >=3.11
|
|
10
10
|
Description-Content-Type: text/markdown
|
|
11
11
|
License-File: LICENSE
|
|
12
|
-
Requires-Dist: astropy==8.0.
|
|
13
|
-
Requires-Dist: geopandas==1.
|
|
14
|
-
Requires-Dist: matplotlib==3.11.
|
|
15
|
-
Requires-Dist: gphoto2==2.6.
|
|
16
|
-
Requires-Dist: apscheduler==3.11.
|
|
17
|
-
Requires-Dist: geodatasets==2026.
|
|
12
|
+
Requires-Dist: astropy==8.0.2
|
|
13
|
+
Requires-Dist: geopandas==1.2.0
|
|
14
|
+
Requires-Dist: matplotlib==3.11.2
|
|
15
|
+
Requires-Dist: gphoto2==2.6.4
|
|
16
|
+
Requires-Dist: apscheduler==3.11.3
|
|
17
|
+
Requires-Dist: geodatasets==2026.10.0
|
|
18
18
|
Requires-Dist: jplephem==2.24
|
|
19
|
-
Requires-Dist: skyfield==1.
|
|
19
|
+
Requires-Dist: skyfield==1.55
|
|
20
20
|
Requires-Dist: skyfield-data==7.0.0
|
|
21
|
-
Requires-Dist: timezonefinder==
|
|
22
|
-
Requires-Dist: playsound3==3.3.
|
|
23
|
-
Requires-Dist: pyqt6==6.
|
|
24
|
-
Requires-Dist: pytz==2026.
|
|
21
|
+
Requires-Dist: timezonefinder==9.0.0
|
|
22
|
+
Requires-Dist: playsound3==3.3.2
|
|
23
|
+
Requires-Dist: pyqt6==6.12.0
|
|
24
|
+
Requires-Dist: pytz==2026.6
|
|
25
25
|
Requires-Dist: pyserial==3.5
|
|
26
26
|
Requires-Dist: pynmea2==1.19.0
|
|
27
|
-
Requires-Dist: geopy==2.
|
|
28
|
-
Requires-Dist: astropy-iers-data==0.2026.
|
|
27
|
+
Requires-Dist: geopy==2.5.0
|
|
28
|
+
Requires-Dist: astropy-iers-data==0.2026.11.2.0.34.55
|
|
29
29
|
Requires-Dist: requests==2.34.2
|
|
30
30
|
Dynamic: license-file
|
|
31
31
|
|
|
32
32
|
# Solar Eclipse Workbench
|
|
33
33
|
|
|
34
|
+
**Important notice**: When generating a script where the sun is below 5 degrees, the calculated shutter speeds are too long! Please use version 2.0.0rc5 or newer for the correct values!
|
|
35
|
+
|
|
36
|
+
Installing version 2.0.0rc5 can be done very similar to the installation instructions, but replace the install command with
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
pip install --pre solareclipseworkbench
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
to update, use
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install --upgrade --pre solareclipseworkbench
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
|
|
34
49
|

|
|
35
50
|
|
|
36
51
|
## Table of contents
|
|
@@ -46,8 +61,7 @@ Dynamic: license-file
|
|
|
46
61
|
- [Installation on Windows 11](#installation-on-windows-11)
|
|
47
62
|
- [Make cameras accessible in wsl](#make-cameras-accessible-in-wsl)
|
|
48
63
|
- [Replace the Windows USB driver with WinUSB (required for gphoto2)](#replace-the-windows-usb-driver-with-winusb-required-for-gphoto2)
|
|
49
|
-
- [Sony PC Remote settings
|
|
50
|
-
- [Important note for Sony bodies in `PC Only` or when the Save Destination option is not available](#important-note-for-sony-bodies-in-pc-only-or-when-the-save-destination-option-is-not-available)
|
|
64
|
+
- [Sony PC Remote settings discussion](#sony-pc-remote-settings-discussion)
|
|
51
65
|
- [Upgrading Solar Eclipse Workbench](#upgrading-solar-eclipse-workbench)
|
|
52
66
|
- [Running Solar Eclipse Workbench](#running-solar-eclipse-workbench)
|
|
53
67
|
- [Command line parameters](#command-line-parameters)
|
|
@@ -58,6 +72,7 @@ Dynamic: license-file
|
|
|
58
72
|
- [Camera overview](#camera-overview)
|
|
59
73
|
- [Simulation mode](#simulation-mode)
|
|
60
74
|
- [Job scheduling](#job-scheduling)
|
|
75
|
+
- [Exposure compensation](#exposure-compensation)
|
|
61
76
|
- [Interrupting scheduled jobs](#interrupting-scheduled-jobs)
|
|
62
77
|
- [Datetime format](#datetime-format)
|
|
63
78
|
- [Saving settings](#saving-settings)
|
|
@@ -79,6 +94,9 @@ Dynamic: license-file
|
|
|
79
94
|
- [Shortcomings](#shortcomings)
|
|
80
95
|
- [Converting scripts from Solar Eclipse Maestro](#converting-scripts-from-solar-eclipse-maestro)
|
|
81
96
|
- [Error handling](#error-handling)
|
|
97
|
+
- [Commands that are too close together](#commands-that-are-too-close-together)
|
|
98
|
+
- [Timing shots around C2 and C3](#timing-shots-around-c2-and-c3)
|
|
99
|
+
- [Handling camera(s) disconnect(s)](#handling-cameras-disconnects)
|
|
82
100
|
- [Development Guide](#development-guide)
|
|
83
101
|
- [Installation on macOS](#installation-on-macos-1)
|
|
84
102
|
- [Installation on Ubuntu 24.04](#installation-on-ubuntu-2404-1)
|
|
@@ -134,7 +152,7 @@ pip install solareclipseworkbench
|
|
|
134
152
|
|
|
135
153
|
```bash
|
|
136
154
|
sudo apt update
|
|
137
|
-
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxkbcommon-x11-0 libxcb-cursor0 libcairo2-dev python3.14-venv
|
|
155
|
+
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxkbcommon-x11-0 libxcb-cursor0 libcairo2-dev python3.14-venv gstreamer1.0-plugins-good
|
|
138
156
|
```
|
|
139
157
|
|
|
140
158
|
- Install gphoto2 to be able to access the cameras by executing the following line in the terminal
|
|
@@ -186,7 +204,7 @@ pip install solareclipseworkbench
|
|
|
186
204
|
|
|
187
205
|
```bash
|
|
188
206
|
sudo apt update
|
|
189
|
-
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxkbcommon-x11-0 libxcb-cursor0 libcairo2-dev python3.12-venv
|
|
207
|
+
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libxkbcommon-x11-0 libxcb-cursor0 libcairo2-dev python3.12-venv gstreamer1.0-plugins-good
|
|
190
208
|
```
|
|
191
209
|
|
|
192
210
|
- Install gphoto2 to be able to access the cameras by executing the following line in the terminal
|
|
@@ -359,42 +377,25 @@ usbipd attach --wsl --busid <busid>
|
|
|
359
377
|
|
|
360
378
|
You only need to do this once; the WinUSB driver persists across reboots for that USB device.
|
|
361
379
|
|
|
362
|
-
> **Sony Alpha cameras** additionally require **PC Remote** mode to be active on the camera itself before gphoto2 can communicate with it:
|
|
363
|
-
> Camera Menu → Network → PC Remote Settings → PC Remote → **On**
|
|
364
|
-
> The camera will show `(PC Control)` in its model name when correctly connected.
|
|
365
380
|
|
|
366
|
-
|
|
381
|
+
## Sony PC Remote settings discussion
|
|
382
|
+
|
|
383
|
+
To enable `PC Remote` mode on your Sony camera, please go to `MENU`, then go to `Tools` section and look for `USB Connection` setting (most probably, you will find it on the 4th screen). Press on it and choose `PC Remote` option. Note - this path applies for pre-2020 cameras; for post-2020 cameras the location of this setting might be different.
|
|
367
384
|
|
|
368
|
-
|
|
385
|
+
On the same screen, also search for `PC Remote Settings`. If you can't find it, it means your camera does not support saving photos to your SD card when it's being controlled from PC through USB connection. If you do find it, then you have the ability to choose between saving to `PC` or `PC+Camera` (post-2020 cameras also support `Camera` option).
|
|
369
386
|
|
|
370
|
-
-
|
|
371
|
-
- Recommended value: **PC+Camera**
|
|
372
|
-
- Writes each image to the SD card *and* keeps a copy in camera RAM so `FILE_ADDED` events still fire.
|
|
373
|
-
- This gives SEW a guaranteed backup (SD card) while still allowing SEW to observe `FILE_ADDED` if desired.
|
|
374
|
-
- Alternative: **Camera Only** — images go to the SD card only (safe, fast).
|
|
375
|
-
- Avoid: **PC Only** — images are kept in camera RAM and must be downloaded over USB.
|
|
376
|
-
- Downloading large RAW files (e.g. ARW) synchronously between shots can take several seconds and will break short-interval shot timing.
|
|
387
|
+
For cameras which lack `PC Remote Settings`, using USB connection will come with the penalty of slow transfer of the photos, as these cameras usually have only micro USB port, which supports only USB2.0 speeds. For a 12MP camera, this might be acceptable (a 5 frame 3EV bracketing sequence centered around 1/20 takes between 8 to 12 seconds to complete, depending on the initial state of camera), but for 24MP and moreso for 42MP cameras, this might be unacceptable. We would suggest you try using Wi-Fi connection through scripts and `command` commands, as it should be much faster (but requires you are tech savvy enough to write such scripts; if you want a reference, you can take a look [here](https://github.com/fliker09/sec2025-scripts) - search for scripts which contain `http` keyword in their name). Another option would be to install an app right on your camera, which will work in a similar way to SEW - you can find it [here](https://github.com/pyzahl/SoFiMagic) (this also requires you are a bit tech savvy, but at least no scripting is involved).
|
|
377
388
|
|
|
378
|
-
|
|
379
|
-
---------------------------------------------------------------------------------------------
|
|
389
|
+
For cameras which do have `PC Remote Settings` available, the situation is much better. These cameras usually have an USB-C port, which provides USB3.0 speeds (they are much higher than USB2.0 ones!). There is also an option of saving RAW files to SD card (`PC+Camera` option), but this option should be compared against the `PC` one, as your card's write speed might be, in fact, slower than the USB3.0 transfer speed. Test both options and see which one is faster for you! On a Sony A7R IIIA, both `PC` and `PC+Camera` options take around 8 to 12 seconds for a 5 frame 3EV bracketing sequence centered around 1/20 takes between 8 to 12 seconds to complete, depending on the initial state of camera.
|
|
380
390
|
|
|
381
|
-
-
|
|
382
|
-
to gphoto2), every captured image is stored in the camera's RAM and must be transferred
|
|
383
|
-
to the computer over USB. Large RAW files can take several seconds to transfer. Expect a
|
|
384
|
-
practical capture rate of no more than one picture every 10 seconds in this mode.
|
|
385
|
-
- Images captured in **PC Only** mode are NOT written to the camera's SD card — SEW saves
|
|
386
|
-
downloaded files to `~/Pictures/SolarEclipseWorkbench` by default. Check that folder for
|
|
387
|
-
your images after a test capture.
|
|
391
|
+
A note on multiple Sony cameras connected - if they all fire in parallel or at least close enough in timing to clash in their data transfers periods, it's preferable that no more than one of the cameras save to PC, with the other(s) having `PC+Camera` option chosen instead.
|
|
388
392
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
guarantees a local backup on the card.
|
|
393
|
+
Warnings: if you intend to use `PC` option with a camera which has an USB-C port, please ensure that the cable is USB3.0 rated and that the port on the PC to which this cable connects is, in fact, a proper USB3.0 one.
|
|
394
|
+
Another thing to keep in mind - filename prefix. If you have multiple Sony cameras connected and more than one is in `PC` mode for some reason, you must ensure that each of them are using unique prefix! Please check out `Set File Name` setting in the `Tools` section (most probably on the 5th screen).
|
|
392
395
|
|
|
393
|
-
|
|
396
|
+
Final note on the `PC+Camera` option - SEW will not actually save JPEG files to PC, they will be ignored and the PTP events on camera flushed, with RAW files being consistently written to SD card (please don't forget to set `RAW+J PC Save Img` setting with `JPEG only` option!).
|
|
394
397
|
|
|
395
|
-
|
|
396
|
-
- If you want reliable, on-time sequences (1–2 s intervals): set **PC+Camera** or **Camera Only** on the camera. SEW will trigger on schedule and your images will be safe on the SD card.
|
|
397
|
-
- If your camera is left in **PC Only** mode, expect slower operation and possible missed/dropped triggers while large RAW files are downloaded.
|
|
398
|
+
Camera clock - SEW cannot set the clock of a Sony camera over USB: pressing `Camera(s)` logs `Could not set date & time (unsupported operation?)`. The clocks of consumer Sony bodies are also known to drift noticeably over a few days, so a clock set by hand well before the eclipse can be off by seconds on the day, and the times in the EXIF data of your pictures cannot be compared with the contact times. This does not affect when SEW takes the pictures (that follows the computer clock, see [GPS time correction](#gps-time-correction)), only the times written in the files. Set the camera clock as close to the eclipse as possible, or sync it from a script: [sony-location-info-link-sync](https://github.com/fliker09/sony-location-info-link-sync) can be run with a `command` line in your script. The log of every run has the time each command released the shutter, in UTC with milliseconds, which is a reliable reference for when each picture was taken.
|
|
398
399
|
|
|
399
400
|
|
|
400
401
|
## Upgrading Solar Eclipse Workbench
|
|
@@ -415,7 +416,9 @@ pip show solareclipseworkbench
|
|
|
415
416
|
|
|
416
417
|
## Running Solar Eclipse Workbench
|
|
417
418
|
|
|
418
|
-
-
|
|
419
|
+
- Canon and Nikon cameras can use 1/3 EV or 1/2 EV exposure steps: brackets and HDR sequences use the shutter speed closest to each exposure. Sony cameras must use 1/3 EV (0.3EV) steps, because their shutter speeds are not set reliably over USB in 1/2 EV steps; `Test Camera...` in the wizard warns about this. Also, check that the camera's `Auto Power Off` setting isn't too short, as once it's asleep, camera can't be awakened by the app. While the cameras are connected and idle, Solar Eclipse Workbench pings them every 20 seconds over USB to keep them awake (paused from 15s before C2 until 15s after C3, and just before scheduled commands), but not every body honours this, so disabling `Auto Power Off` (or setting it to at least 30 minutes) remains the safest choice. For Canon (`Auto power off`) and Nikon (standby timer) the app warns when you press `Camera(s)` if the setting is shorter than that; Sony does not expose this setting, so check it on the camera.
|
|
420
|
+
|
|
421
|
+
- Ensure that you are connected to the Internet the first time you run and use Solar Eclipse Workbench, as it will require to download several files required for calculations. Make sure to do this before eclipse day!
|
|
419
422
|
|
|
420
423
|
- Start Solar Eclipse Workbench by executing the following commands:
|
|
421
424
|
|
|
@@ -428,36 +431,28 @@ sew
|
|
|
428
431
|
- You can add a parameters to set the needed parameters for the eclipse. Some examples:
|
|
429
432
|
|
|
430
433
|
```bash
|
|
431
|
-
# On macos, start the commands with sudo
|
|
432
|
-
cd solareclipseworkbench
|
|
433
|
-
source bin/activate
|
|
434
|
-
sudo sew -d 2024-04-08 -lon -104.63525 -lat 24.01491 -alt 1877.3
|
|
435
|
-
sudo sew
|
|
436
|
-
|
|
437
|
-
# In Linux or using WSL on Windows, start the command without sudo
|
|
438
434
|
cd solareclipseworkbench
|
|
439
435
|
source bin/activate
|
|
440
436
|
sew -d 2024-04-08 -lon -104.63525 -lat 24.01491 -alt 1877.3
|
|
441
437
|
sew
|
|
442
438
|
```
|
|
443
439
|
|
|
444
|
-
- There is a problem with `gphoto2`. On macOS, Solar Eclipse Workbench needs to be started with sudo rights to be able to connect to the cameras. In Linux (or Windows using wsl), sudo should not be used.
|
|
445
|
-
- The first time you run Solar Eclipse Workbench, some files are downloaded from the internet. Make sure to do this before eclipse day!
|
|
446
|
-
|
|
447
440
|
### Command line parameters
|
|
448
441
|
|
|
449
442
|
The following command line parameters can be used to start up gui.py.
|
|
450
443
|
|
|
451
444
|
|
|
452
|
-
| Short parameter | Long parameter | Description
|
|
453
|
-
|
|
454
|
-
| -h | --help | Show the help message and exit
|
|
455
|
-
| -d DATE | --date DATE | Date of the solar eclipse (in YYYY-MM-DD format)
|
|
456
|
-
| -lon LONGITUDE | --longitude LONGITUDE | Longitude of the location where to watch the solar eclipse (W is negative)
|
|
457
|
-
| -lat LATITUDE | --latitude LATITUDE | Latitude of the location where to watch the solar eclipse (N is positive)
|
|
458
|
-
| -alt ALTITUDE | --altitude ALTITUDE | Altitude of the location where to watch the solar eclipse (in meters)
|
|
459
|
-
| -s | --sim | Start the application in simulation mode
|
|
460
|
-
|
|
|
445
|
+
| Short parameter | Long parameter | Description |
|
|
446
|
+
|------------------|-----------------------|-------------------------------------------------------------------------------|
|
|
447
|
+
| -h | --help | Show the help message and exit |
|
|
448
|
+
| -d DATE | --date DATE | Date of the solar eclipse (in YYYY-MM-DD format) |
|
|
449
|
+
| -lon LONGITUDE | --longitude LONGITUDE | Longitude of the location where to watch the solar eclipse (W is negative) |
|
|
450
|
+
| -lat LATITUDE | --latitude LATITUDE | Latitude of the location where to watch the solar eclipse (N is positive) |
|
|
451
|
+
| -alt ALTITUDE | --altitude ALTITUDE | Altitude of the location where to watch the solar eclipse (in meters) |
|
|
452
|
+
| -s | --sim | Start the application in simulation mode |
|
|
453
|
+
| -vc | --virtual-camera | Use a virtual camera. Only for simulation mode! |
|
|
454
|
+
| -lc | --low-cpu | Disable auto update for eclipse visualization (essential for single core CPU) |
|
|
455
|
+
| -scm | --sony-cont-mode | Specify continuous mode search keyword name for Sony cameras |
|
|
461
456
|
|
|
462
457
|
### UI functionality
|
|
463
458
|
|
|
@@ -506,9 +501,26 @@ The functionality of the toolbar buttons is as follows (from left to right):
|
|
|
506
501
|
- Countdown;
|
|
507
502
|
- Altitude (in degrees);
|
|
508
503
|
- Azimuth (in degrees).
|
|
504
|
+
- Sunrise and sunset are the moments the upper edge of the sun touches the horizon, as in almanacs and Stellarium.
|
|
505
|
+
- The altitude shown is the apparent altitude of the centre of the sun, i.e. including atmospheric refraction, which
|
|
506
|
+
lifts the sun by about half a degree near the horizon. At sunrise and sunset it is about -0.3°. The exposure
|
|
507
|
+
calculation uses the geometric altitude (without refraction).
|
|
509
508
|
- This information can only be populated when the location and the eclipse date have been indicated. Note that the reference moments are not automatically updated in case either of them would be modified.
|
|
510
509
|
- Together with the information about the reference moments, the eclipse type (partial / total / annular) will be displayed. For total and annular eclipses, also the time between C2 and C3 will be shown (next to the eclipse type).
|
|
511
510
|
|
|
511
|
+
##### Lunar limb correction and Baily's beads
|
|
512
|
+
|
|
513
|
+
- The Moon's limb is mountainous, so second and third contact do not happen when a smooth disc says they do: a valley lets sunlight through for another second or two, a mountain cuts totality short. Corrections of a few seconds are normal, and 30 s is possible near the edge of the path.
|
|
514
|
+
- With the lunar limb profile installed, the C2 and C3 rows show the contact-point corrected times printed by Solar Eclipse Maestro. Two extra rows show a photographic Baily's beads capture window around each internal contact. Its inner edges, `BEADS_C2_END` and `BEADS_C3_START`, are the distinct whole-arc instants when the last bead vanishes and the first bead returns. The checkbox below the table switches the correction off if you would rather see the mean-limb times; it is locked while a script has pending jobs so displayed contacts cannot disagree with already-scheduled shutters.
|
|
515
|
+
- The corrected contacts are what a script schedules against: `C2` and `C3` are the contact-point corrected times, `C2_MEAN` and `C3_MEAN` the uncorrected ones, and `BEADS_C2` / `BEADS_C3` (with `_START` and `_END`) the capture windows. A window is published only when both edges were solved; an unresolved search produces no schedulable bead timestamps.
|
|
516
|
+
- The capture-window boundary is a photographic heuristic: by default it is where no more than 20° total of the lunar limb remains illuminated. The solver's `arc_degrees` argument makes that threshold configurable; measurements around the reference cases moved the outer edge by about 0.18 s per degree.
|
|
517
|
+
- The limb profile itself is a 72 MB file, `lunar_limb_band_v1.bin`, which is not part of the checkout or the package. It is downloaded automatically the first time the contact times are calculated with the correction on (the `Loading helper files...` window shows the progress), checked against its SHA-256 checksum, and saved in `~/.SolarEclipseWorkbench/`. Without a network connection the download is tried once per session, and the mean-limb contacts are used. You can also put the file there yourself, or in the directory Solar Eclipse Workbench is started from; set the environment variable `SEW_NO_LIMB_DOWNLOAD=1` to never download it. The file is published as an asset of the [`lunar-limb-v1` release](https://github.com/AstroWimSara/SolarEclipseWorkbench/releases/tag/lunar-limb-v1) and is built by `tools/build_limb_blob.py` from **LOLA LDEM_128** (`LRO-L-LOLA-4-GDR-V1.0`). Kaguya is relevant only to the separate, undocumented LRO/Kaguya profile blend used by Solar Eclipse Maestro. Without the blob everything still works with mean-limb contacts, and the bead rows say "no limb profile".
|
|
518
|
+
- Contact geometry is top-of-atmosphere: atmospheric refraction is deliberately excluded. At a solar altitude near 7.5°, its estimated effect is about 0.30 s at C2 and 0.22 s at C3. Evaluating the lunar profile once at maximum instead of separately at C2/C3 changed four measured contacts on two eclipses by no more than 0.014 s.
|
|
519
|
+
- Published-profile validation has a data-source floor. LOLA and Maestro's undocumented LRO/Kaguya blend differ by at least about 0.45 s at sampled contacts and by up to 1.25 s in the current three-sheet set, so the Maestro acceptance tolerance is 1.5 s; tighter assertions would measure source disagreement rather than solver precision.
|
|
520
|
+
- The wizard (`sew_wizard`) centres the beads bursts at C2 and C3 on these windows. It writes them relative to `C2` and `C3` rather than against the `BEADS_*` moments, so a generated script keeps all its lines on a computer without the limb profile.
|
|
521
|
+
- The **"Baily's beads"** toolbar button (a diamond ring icon) opens a window that shows the beads for the current location and eclipse. `Profile` plots the true lunar limb (purple) against the Sun's limb (orange) around the contact point, with the sunlight that still gets through filled in yellow; `Preview` draws the whole Moon over the Sun, with the limb relief exaggerated (10x to 100x) so the beads are visible. With `Free`, the slider moves through the 8 seconds before and after C2 or C3 (the C2 and C3 shown in the reference moments); with `Live`, the window follows the clock (including the simulation offset) and counts down to the beads. It switches to `Live` when a script is loaded. The line above the drawing summarises the corrections, the length of both bead windows and the change in the duration of totality, and warns when a correction is larger than 15 s. The window was written by @mrosseel.
|
|
522
|
+
- The two small lunar orientation kernels it needs (`moon_080317.tf` and `moon_pa_de421_1900-2050.bpc`) are downloaded from NAIF automatically, the same way the ephemeris is.
|
|
523
|
+
|
|
512
524
|
#### Camera overview
|
|
513
525
|
|
|
514
526
|
- When pressing the "Camera" icon, the camera overview in the top section of the UI will be updated. This shows for each camera the following information:
|
|
@@ -516,7 +528,7 @@ The functionality of the toolbar buttons is as follows (from left to right):
|
|
|
516
528
|
- Battery level (in percentage);
|
|
517
529
|
- Free memory (both in percentage and in GB).
|
|
518
530
|
- Apart from updating the camera information in the UI, the following is done for all cameras:
|
|
519
|
-
- Syncing the time with the time of the computer the camera is connected to;
|
|
531
|
+
- Syncing the time with the time of the computer the camera is connected to. The camera clock is only changed when its current value can be read, and it is read back afterwards. If the camera did not take the new time (some older cameras fall back to a default date such as 1980), the previous date and time are restored, a warning is shown, and SEW does not touch the clock of that camera again until it is restarted: set the date and time on the camera by hand in that case. Sony cameras do not allow setting the clock over USB at all (see [Sony PC Remote settings discussion](#sony-pc-remote-settings-discussion)). The `sync_cameras` script command works the same way;
|
|
520
532
|
- Checking whether for the focus mode and the shooting mode are set to "Manual". If this is not the case, a warning message is logged in the Console where the UI was started.
|
|
521
533
|
|
|
522
534
|
#### Simulation mode
|
|
@@ -541,6 +553,13 @@ The functionality of the toolbar buttons is as follows (from left to right):
|
|
|
541
553
|
- Jobs that were scheduled in the past w.r.t. the start of the simulation, will not appear in the list of scheduled jobs.
|
|
542
554
|
- The displayed local execution time of the jobs corresponds to the local time at the observing location, so this may be different from the timezone on you laptop (e.g. when you would be practising beforehand at home).
|
|
543
555
|
|
|
556
|
+
#### Exposure compensation
|
|
557
|
+
|
|
558
|
+
- When clouds, haze or dust make the Sun dimmer (or brighter) than the script expects, the buttons above the jobs table change the exposure of all following shots: `+1 EV` makes them one stop brighter, `−1 EV` one stop darker, and `Reset exposure` goes back to the exposures in the script. The compensation in effect is shown between the buttons, and can go up to 5 EV either way.
|
|
559
|
+
- Only the shutter speed changes: the aperture and ISO stay as in the script. The compensated speed is rounded to the nearest speed the camera supports, and is limited by the camera's shortest and longest speed.
|
|
560
|
+
- The compensation is applied when a shot fires, so it reaches every `take_picture`, `take_burst`, `take_bracket`, `take_hdr` and `prepare_camera` still to come, including those already scheduled. A shot that is already being taken is not changed. The jobs table shows the scripted and the compensated shutter speed, e.g. `1/1000 → 1/500`.
|
|
561
|
+
- The compensation is not saved: it starts at 0 EV every time the application starts.
|
|
562
|
+
|
|
544
563
|
#### Interrupting scheduled jobs
|
|
545
564
|
|
|
546
565
|
- In case the scheduled jobs would have to be interrupted (e.g. because you realised - hopefully in time - that you did not select the correct file), you have to press the "Stop" icon. The scheduler will be shut down and the scheduled jobs will disappear from the bottom section of the UI.
|
|
@@ -563,13 +582,14 @@ The functionality of the toolbar buttons is as follows (from left to right):
|
|
|
563
582
|
|
|
564
583
|
#### Live view
|
|
565
584
|
|
|
566
|
-
- When pressing the **"Live View"** icon
|
|
585
|
+
- When pressing the **"Live View"** icon in the toolbar, a floating preview window opens showing a live image from the connected camera, refreshed once per second.
|
|
567
586
|
- The live view is intended to help you verify that the Sun is still in the frame and remains in focus without having to stop the script, realign the telescope, and restart.
|
|
568
587
|
- The preview image uses gphoto2's `capture_preview` command. This transfers a small JPEG thumbnail over USB and does **not** save anything to disk. The camera continues to store actual eclipse photos directly to its SD card as scheduled.
|
|
569
588
|
- **USB lock safety**: before each preview frame the thread tries to acquire the camera's USB lock with a 50 ms timeout. If a scheduled shot is firing at that exact moment, the preview frame is silently skipped. This guarantees that shot timing is never compromised by live view.
|
|
570
589
|
- **During totality (C2−15s → C3+15s)** the preview is automatically paused so the USB bus is entirely free for the closely-spaced shots in the script. The pause starts 15 seconds before C2 and the preview resumes 15 seconds after C3. The window shows a yellow banner while paused.
|
|
571
590
|
- **Toggle button**: the "Disable / Enable Live View" button in the window lets you turn the preview off or on at any time — before, during, or after totality — without stopping the script or closing the window.
|
|
572
591
|
- If no camera is connected when the Live View button is clicked, a warning dialog is shown.
|
|
592
|
+
- **Preview size** (optional): the preview uses the live-view size set on the camera. Canon EOS and recent Nikon bodies let it be changed (Canon `Large`/`Medium`/`Small`, Nikon `QVGA`/`VGA`/`XGA`), and the `Preview size` list in the window then selects a larger one for more detail, e.g. to check focus with the zoom. The camera's own setting is restored when the window closes. The size of the last frame is shown next to its time. Sony bodies have a fixed preview size, and the list is greyed out. A larger frame takes longer to transfer, and a scheduled shot that fires during a transfer waits for it, so during the partial phases such a shot can be a little later (typically some tens of milliseconds); the shots around totality are not affected, as live view is paused from 15 s before C2 until 15 s after C3.
|
|
573
593
|
|
|
574
594
|
> **Note**: Live view via gphoto2 is tested on the Nikon Z8. Support on other bodies depends on whether their gphoto2 driver implements `capture_preview`. Canon EOS bodies and most modern Nikon and Sony Alpha bodies support it; some entry-level or older bodies do not.
|
|
575
595
|
|
|
@@ -595,6 +615,10 @@ uv run sew_wizard
|
|
|
595
615
|
python -m solareclipseworkbench.wizard
|
|
596
616
|
```
|
|
597
617
|
|
|
618
|
+
On the equipment page, **Test Camera...** reads the shutter speeds, ISO values and apertures the connected camera offers with its lens, and (full test) measures how long a picture and a burst take and checks that the camera clock can be set. The generated script is then fitted to the camera: exposures use the settings the camera really has (compensating with ISO or aperture where needed), and shots are spaced by the measured durations. The diamond ring and Baily's beads bursts are planned in seconds of shooting: 2 s for a diamond ring burst, which a Nikon takes as that many seconds' worth of frames at its measured frame rate (untested: 10 frames per second). The full test takes two bursts back to back (1 s and 5 s for Canon and Sony, 10 and 100 frames for Nikon) to measure how long the camera stays busy per second of shooting, or a Nikon's frame rate, on top of a fixed overhead. A measured picture time only lengthens the default estimate; a burst is planned with its measured overhead plus a margin (1.5 × + 1 s), also when that is shorter than the default, so a camera with a fast card (e.g. a Nikon Z 8 or Canon EOS R5 with CFexpress) is not held back by the default estimate. With the lunar limb profile, a beads burst on a tested camera covers the Baily's beads window plus 0.5 s on either side, up to the longest test burst (at most 5 s), and is shortened when it would move the diamond ring burst next to it by more than 2 s. The generated script records the timing it was planned with in a `# timing:` header line, so the busy-camera warning when the script is loaded uses the same numbers. The result is saved with the camera, so this is needed once per camera and lens. On the last page, **Verify with Camera...** checks the finished script against the connected camera.
|
|
619
|
+
|
|
620
|
+
On the phenomena page, **Bracket each corona exposure** turns every shot of the corona series into a `take_bracket` with the chosen EV step and number of frames, spaced so each bracket has finished before the next one starts. For a tested camera, only the brackets it takes itself are offered (read by **Test Camera...**); otherwise standard steps (1/3 to 3 EV) and 3, 5, 7 or 9 frames are offered, and a bracket the camera does not offer is taken in software. Canon cameras cannot set the number of frames over USB: set `Number of bracketed shots` in the camera menu to the number chosen in the wizard. **Verify with Camera...** warns when a bracket of the script will be taken in software.
|
|
621
|
+
|
|
598
622
|
For a detailed walkthrough of each wizard step, see the [Wizard Guide](docs/WIZARD_GUIDE.md).
|
|
599
623
|
For capturing your GPS coordinates from your smartphone (works over WiFi or phone hotspot — no internet required at the eclipse site), see [docs/GPS_PHONE.md](docs/GPS_PHONE.md).
|
|
600
624
|
|
|
@@ -727,16 +751,22 @@ Test your script before using it during a total solar eclipse! Some cameras can
|
|
|
727
751
|
The following cameras are tested:
|
|
728
752
|
|
|
729
753
|
- Canon EOS 1000D
|
|
754
|
+
- Canon EOS 650D
|
|
730
755
|
- Canon EOS 80D
|
|
731
756
|
- Canon EOS R
|
|
732
757
|
- Nikon DSC D3400
|
|
758
|
+
- Nikon DSC D610
|
|
733
759
|
- Nikon Z8
|
|
734
760
|
- Nikon Z6iii
|
|
761
|
+
- Sony ILCE-7S (α7S)
|
|
735
762
|
- Sony ILCE-7M3 (α7 III)
|
|
736
|
-
- Sony ILCE-
|
|
763
|
+
- Sony ILCE-7RM3A (α7R IIIA)
|
|
764
|
+
- Sony ILCE-7R II (α7R II): Very slow, because it does not support the `PC+Camera` Save Destination mode, so every picture is downloaded over USB before the next one can be taken. Expect a practical capture rate of no more than one picture every 10 seconds with this camera.
|
|
737
765
|
|
|
738
766
|
It is possible to take pictures in burst mode. The speed is limited by the speed of the camera (and card).
|
|
739
767
|
|
|
768
|
+
To test brackets, HDR sequences and shot timing on your own camera, see [Testing your camera](docs/CAMERA_TESTS.md). It has test scripts for Canon, Nikon and Sony bodies.
|
|
769
|
+
|
|
740
770
|
### Reference moments
|
|
741
771
|
|
|
742
772
|
The reference moments of the eclipse that used in the scripts are:
|
|
@@ -759,22 +789,41 @@ Solar Eclipse Workbench can use the following commands:
|
|
|
759
789
|
|
|
760
790
|
This command will take a picture 1 minutes and 2 seconds before first contact (C1) with the Canon EOS 80D. The ISO will be set to 200, aperture to 8.0 and shutter speed to 1/1250s.
|
|
761
791
|
|
|
762
|
-
- **take_burst**
|
|
792
|
+
- **take_burst** - Set the aperture, shutter speed and ISO of the camera and take a burst of pictures during 3 seconds (for Sony and modern Canon cameras; Nikon and older Canon cameras will take 3 pictures in burst mode instead). Note - for Sony cameras the automatically chosen Continuous mode might be either High Speed or Low Speed (completely depends on the cameras's model). If you want to define a specific mode - check out the `--sony-cont-mode` command line option. As for Nikon cameras - your Continuous mode might be dictated by the physical dial. In such a case, please set it beforehand accordingly (it won't affect `take_picture` or `take_hdr`, so no need to touch it once set)! When a Nikon is connected, a banner reminds you of this, naming the commands the loaded script uses for that camera.
|
|
763
793
|
|
|
764
794
|
```take_burst, C1, +, 0:00:08.0, Canon EOS 80D, 1/2000, 5.6, 400, 3, "Burst test"```
|
|
765
795
|
|
|
766
|
-
- **take_bracket**
|
|
796
|
+
- **take_bracket** - Set the aperture, shutter speed and ISO of the camera and take a bracket centred on that exposure. The bracket is given as `"<EV step> <frames>"`, the same for every camera brand: `"1 3"` takes 3 frames 1 EV apart (at 1/60: 1/125, 1/60 and 1/30), `"0.7 5"` or `"1 2/3 5"` takes 5 frames. The EV step can be a decimal (`0.3`, `0.7`, `1.3` are read as thirds) or a fraction, up to 3 EV; the number of frames is 3, 5, 7 or 9. An invalid bracket is reported when the script is loaded.
|
|
797
|
+
- Canon uses its AEB. The number of AEB frames cannot be set over USB: set `Number of bracketed shots` in the camera's custom functions to the number of frames in the script, and use the same number of frames for every bracket. A bracket with fewer frames than that setting is not centred: with 5 set, an EOS 80D shoots 0, -2, -1, +1, +2 steps, so a 3-frame bracket is 0, -2, -1 (an EOS R with its `Bracketing sequence` at -, 0, + shoots -2, -1, 0, +1, +2, so it is -2, -1, 0). A bracket with more frames than the setting stops at the end of the camera's sequence and a warning is logged. Some bodies (the EOS 80D and EOS R) do not report the bracketed shutter speed over USB, so the end of the sequence cannot be seen: they take every frame of the script, and a setting that is too low gives repeated frames instead. `Verify with Camera...` in the wizard warns when a script mixes brackets with different numbers of frames.
|
|
798
|
+
- Nikon uses its bracketing settings (step and pattern). An important note for Nikon cameras with physical dial for capture mode - app will assume you already chose Continuous mode (please see `take_burst` above for more information).
|
|
799
|
+
- Sony uses the matching continuous bracketing capture mode (`Bracketing C ...`). You can look up the available modes using this command: `gphoto2 --get-config=/main/capturesettings/capturemode`.
|
|
800
|
+
- When the camera does not offer the bracket (e.g. no Sony mode with that step and number of frames), it is taken in software: one picture per frame, at the shutter speed closest to each exposure.
|
|
801
|
+
- Older scripts keep working: the Canon form `"+/- 1 2/3"` takes 5 frames, and a Sony capture mode name (e.g. `"Bracketing C 3.0 Steps 5 Pictures"`) is passed to the camera as is.
|
|
802
|
+
|
|
803
|
+
```take_bracket, C1, +, 0:00:08.0, Canon EOS 80D, 1/2000, 5.6, 400, "1 2/3 5", "Bracket test"```
|
|
767
804
|
|
|
768
|
-
|
|
805
|
+
- **take_hdr** - Take an HDR sequence by ramping the shutter speed from a starting (fastest) speed down by the given number of full stops and back up again, while keeping aperture and ISO fixed. Uses `gp_camera_trigger_capture` for maximum speed so successive shots are fired without waiting for each file to be written to the card. The shutter speed choices available on the connected camera are queried at runtime, so the sequence always stays within the actual speeds the body supports. Each frame is 1 EV longer than the previous one, using the camera speed closest to that exposure, so the sequence is right whether the camera is set to 1/3 or 1/2 EV steps. An optional sequence field before the description chooses how the sequence runs:
|
|
806
|
+
- `round-trip` (the default when the field is left out): up to the longest exposure and back down again, 2 × stops + 1 shots.
|
|
807
|
+
- `one-way`: up to the longest exposure only, stops + 1 shots, which is faster in a short totality. A Sony takes it with its own continuous bracketing when it has a 1 EV mode with that number of frames (e.g. `Bracketing C 1.0 Steps 5 Pictures` for 4 stops), which is much faster than changing the shutter speed for every frame.
|
|
769
808
|
|
|
770
|
-
|
|
809
|
+
The longest exposure is always taken once. An unknown sequence, or fewer than 1 stop, is reported when the script is loaded. An important warning for Sony cameras - if the camera is in `PC` mode, the total number of taken shots must not exceed the size of camera's buffer! Otherwise, the entire sequence will be lost. You can find the buffer size of some of the Sony cameras [here](https://capturetheuniverse.com/#buffer-size-usb-speed).
|
|
771
810
|
|
|
772
|
-
The sequence for `stops=4` starting at `1/2000` would be: `1/2000 → 1/1000 → 1/500 → 1/250 → 1/125 → 1/250 → 1/500 → 1/1000 → 1/2000` (9 shots).
|
|
811
|
+
The sequence for `stops=4` starting at `1/2000` would be: `1/2000 → 1/1000 → 1/500 → 1/250 → 1/125 → 1/250 → 1/500 → 1/1000 → 1/2000` (9 shots) as a round trip, and `1/2000 → 1/1000 → 1/500 → 1/250 → 1/125` (5 shots) one way.
|
|
773
812
|
|
|
774
813
|
```take_hdr, MAX, -, 0:00:10.0, Canon EOS R, 1/2000, 5.6, 100, 14, "HDR at mid-totality"```
|
|
775
814
|
|
|
815
|
+
```take_hdr, MAX, -, 0:00:05.0, Sony ILCE-7RM3A, 1/2000, 5.6, 100, 4, one-way, "HDR at mid-totality"```
|
|
816
|
+
|
|
776
817
|
Arguments: camera name, starting shutter speed (fastest in the sequence), aperture, ISO, number of stops to ramp down.
|
|
777
818
|
|
|
819
|
+
- **prepare_camera** - Set the camera up for the command that follows, without taking a picture: its shutter speed, aperture and ISO and, on a Sony, its drive mode: `single`, `burst`, or a bracket as in `take_bracket`. A Sony takes about 4 seconds to change between single pictures, continuous shooting and a bracketing mode; without `prepare_camera` the first burst or bracket after such a change starts that much later than scheduled. Put it a few seconds before the first shot of a sequence, e.g. before the diamond ring at C2 and before the Baily's beads at C3, at a moment no other shot is due. The command that follows then finds the camera ready and shoots right away. Canon and Nikon change drive mode quickly, so for them only the exposure is set. The wizard adds these lines for a Sony.
|
|
820
|
+
|
|
821
|
+
```prepare_camera, C2, -, 0:00:14.5, Sony ILCE-7RM3A, 1/400, 5.6, 400, burst, "Prepare for C2 diamond ring"```
|
|
822
|
+
|
|
823
|
+
```prepare_camera, C2, -, 0:00:30.0, Sony ILCE-7RM3A, 1/30, 8, 400, "Bracketing C 3.0 Steps 5 Pictures", "Prepare for the C2 brackets"```
|
|
824
|
+
|
|
825
|
+
Arguments: camera name, shutter speed, aperture, ISO, drive mode.
|
|
826
|
+
|
|
778
827
|
- **voice_prompt** - Play a sound file.
|
|
779
828
|
|
|
780
829
|
```voice_prompt, C4, -, 00:00:03, C4_IN_3_SECONDS, "3 seconds before C4 voice prompt"```
|
|
@@ -835,7 +884,10 @@ endfor
|
|
|
835
884
|
## Shortcomings
|
|
836
885
|
|
|
837
886
|
- In normal mode, only one picture per two seconds can be made.
|
|
838
|
-
- The computer you are using will probably fall asleep during the solar eclipse. You can prevent this on macOS and Linux using [caffeine](https://www.caffeine-app.net/). On Windows, you can use the Windows [powertoys](https://awake.den.dev/).
|
|
887
|
+
- The computer you are using will probably fall asleep during the solar eclipse. You can prevent this on macOS and Linux using [caffeine](https://www.caffeine-app.net/). On Windows, you can use the Windows [powertoys](https://awake.den.dev/).
|
|
888
|
+
- Sony cameras after cold boot might return wrong configuration values. Please press `Camera(s)` button to retrieve them one more time.
|
|
889
|
+
- Nikon cameras after fresh connection might take a long time to finish their first shot. A potential mitigation is ensuring that the SD card has no other shots on it already.
|
|
890
|
+
- Sony might set wrong shutter speed for some of the exposures when using `take_hdr` command. USB3 connection is prone to cause this more often than USB2 one. No solution has been devised yet.
|
|
839
891
|
|
|
840
892
|
## Converting scripts from Solar Eclipse Maestro
|
|
841
893
|
|
|
@@ -843,11 +895,35 @@ Scripts from Solar Eclipse Maestro are converted automatically to scripts that c
|
|
|
843
895
|
|
|
844
896
|
## Error handling
|
|
845
897
|
|
|
846
|
-
If something goes wrong, an error message will be logged in the log file
|
|
898
|
+
If something goes wrong, an error message will be shown in the terminal and logged in the log file.
|
|
899
|
+
|
|
900
|
+
Every start of `sew` (and of `sew_wizard`) writes a new log file in `~/.SolarEclipseWorkbench/logs/`, named after the moment it started, e.g. `sew-20260812-171503Z.log`. Log files are never overwritten or deleted by the application, so the log of an eclipse is still available afterwards, however often the application was restarted. The log contains every command that was scheduled and executed (or skipped), the contact times, the GPS clock offset and the connected cameras. Timestamps are in UTC with millisecond resolution, like the contact times, so they can be compared directly with the times of the pictures. Every camera command also logs when it really released the shutter, and how long after its scheduled time that was, e.g. `take_bracket released the shutter at 18:29:30.912 UTC: 1.228 s after its scheduled time`: settings are sent to the camera first, which takes a few tenths of a second when nothing changes, but several seconds on a Sony that has to change drive mode.
|
|
901
|
+
|
|
902
|
+
## Commands that are too close together
|
|
903
|
+
|
|
904
|
+
A camera can only execute one command at a time, and a command keeps the camera busy for considerably longer than its exposure time: settings are sent over USB before the picture is taken, and after a `take_burst` the camera has to write its buffer to the card. A command that has to wait more than 1.5 seconds for its camera is skipped rather than executed late. When a script is loaded, Solar Eclipse Workbench estimates how long each command keeps its camera busy and warns about every command that will probably be skipped, so the script can be corrected before the eclipse. As a rule of thumb, allow about 2 seconds plus the exposure time for `take_picture`, and about 6 seconds plus the burst duration for `take_burst`. A Sony bracket takes about 4.5 seconds on top of its exposures, and on a Sony the first command after a change of drive mode (single pictures, burst, a bracketing mode) takes about 4 seconds longer; a `prepare_camera` ahead of time takes that change out of the sequence.
|
|
905
|
+
|
|
906
|
+
## Timing shots around C2 and C3
|
|
907
|
+
|
|
908
|
+
The seconds around second and third contact (Baily's beads, the diamond ring, the chromosphere) are the hardest to time. A few things to keep in mind when writing these lines yourself:
|
|
909
|
+
|
|
910
|
+
- **A burst or a bracket covers a stretch of time, not a moment.** Its frames follow one after the other from the scheduled time, plus the few tenths of a second needed to send the settings. A 5-frame bracket of 3 EV steps around 1/30 shoots all its frames within about 2.5 seconds (the 2 s exposure is one of them) and then keeps the camera busy writing to the card: about 7 seconds in all on a Sony A7R IIIA. Before C2, the *last* frame should come before C2; after C3, the *first* frame should come after C3. The same offset on both sides therefore does not give the same result (Discussion #192). Keep in mind too that the longest, overexposed frames of a bracket make the crescent look wider, as if taken later.
|
|
911
|
+
- **Keep 1.5 to 2 seconds away from the contacts, rather than 1 second.** Different programs give contact times that differ by up to about a second (for the 2026 eclipse in Spain, SEW with the lunar limb correction, Solar Eclipse Maestro and Eclipse Chaser Log differed by up to 0.7 s at C2 and 1.0 s at C3), and the camera needs time to get going.
|
|
912
|
+
- **C2 and C3 do not look the same.** The mountains and valleys at the edge of the Moon decide where and for how long the Baily's beads show, and that is different at C2 and C3. Use the limb-corrected contact times and the `BEADS_C2` / `BEADS_C3` windows (see [Lunar limb correction and Baily's beads](#lunar-limb-correction-and-bailys-beads)), the `Baily's beads` window, or the simulations on the Eclipse Chaser Log map, rather than mirroring your C2 lines at C3.
|
|
913
|
+
- **Prepare the camera before a sequence.** On a Sony, the first command after a change between single pictures, a burst and a bracketing mode takes about 4 seconds longer. Put a `prepare_camera` a few seconds before the first shot of the C2 and C3 sequences (the wizard does this for you).
|
|
914
|
+
- **First and fourth contact are not visible when they happen.** The Moon's bite shows once it is a couple of pixels deep: with a 75 mm lens that took about 45 seconds after C1 in 2026, with a telescope a few seconds. The wizard spaces its C1 and C4 shots accordingly from the focal length and the pixel size of your camera (`Test Camera...` fills in the pixel size for common Canon, Nikon and Sony bodies).
|
|
915
|
+
- **Rehearse, and read the log.** Run your script in simulation mode with the cameras you will use. The log has, for every command, `… released the shutter at … UTC: … s after its scheduled time`, so you can see how late each sequence really starts and adjust the offsets.
|
|
916
|
+
|
|
917
|
+
## Handling camera(s) disconnect(s)
|
|
918
|
+
|
|
919
|
+
In case your camera was turned off or disconnected from USB, you don't have to restart the app to reconnect back to your camera. Once your camera is back online, press `Stop`, agree to remove the scheduled jobs, press `Camera(s)` and see if the camera is properly detected. After that, load your script again (thankfully, the file dialog will remember your last directory) and the execution will resume (do note that the events missed while you were restoring the connection will not be re-attempted).
|
|
920
|
+
|
|
921
|
+
Note - this should work fine even if multiple cameras are connected and only one of them is affected. In case it doesn't work for some reason, turn off / disconnect from USB all of the cameras and try again.
|
|
847
922
|
|
|
848
923
|
## Development Guide
|
|
849
924
|
|
|
850
925
|
When you want to help with the development of Solar Eclipse Workbench, some extra installation is needed.
|
|
926
|
+
|
|
851
927
|
### Installation on macOS
|
|
852
928
|
|
|
853
929
|
- For modern Apple Mac computers (using Apple Silicon processors), install [homebrew](https://brew.sh/). Add your homebrew/bin directory to your PATH. Then install gphoto2 and GDAL (required by geopandas) using homebrew:
|
|
@@ -883,7 +959,7 @@ uv pip install PyObjC
|
|
|
883
959
|
- Install uv by executing the following line in the terminal:
|
|
884
960
|
|
|
885
961
|
```bash
|
|
886
|
-
sudo apt install curl git gstreamer1.0-plugins-base-apps
|
|
962
|
+
sudo apt install curl git gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-good
|
|
887
963
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
888
964
|
```
|
|
889
965
|
|
|
@@ -998,3 +1074,4 @@ See [CHANGELOG.md](CHANGELOG.md) for a detailed list of changes and updates to t
|
|
|
998
1074
|
- <a href="https://www.flaticon.com/free-icons/simulation" title="simulation icons">Simulation icons created by Freepik - Flaticon</a>
|
|
999
1075
|
- <a href="https://www.flaticon.com/free-icons/save" title="save icons">Save icons created by Freepik - Flaticon</a>
|
|
1000
1076
|
- <a href="https://www.flaticon.com/free-icons/refresh" title="refresh icons">Refresh icons created by Magnific - Flaticon</a>
|
|
1077
|
+
- <a href="https://www.flaticon.com/free-icons/live-video" title="live video icons">Live video icons created by bearicons - Flaticon</a>
|