From 8acdbb4e58cc39ca0b176f5bb8b37047086b809e Mon Sep 17 00:00:00 2001 From: aaron Date: Tue, 25 Aug 2026 12:10:03 +0200 Subject: [PATCH] feature(helioviewer): add documentation about sources to the script and update the readme --- README.md | 162 +++++++++++++++++++++++++++++++++++++++++--- helioviewer_grab.py | 26 +++++++ 2 files changed, 178 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 53b11e0..1bce6e2 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,167 @@ # helioviewer_grab -Kleines Skript, das ein Sonnen-Vollscheibenbild von [Helioviewer](https://helioviewer.org) -zu einem gewünschten Zeitpunkt herunterlädt. +Small script that downloads a full-disk sun image from +[Helioviewer](https://helioviewer.org) for a given point in time. -Es sucht in der Helioviewer-API die Datenquelle passend zum angegebenen -Stichwort (z.B. `hmi_continuum`), holt das dem Zeitpunkt am nächsten liegende -Bild und speichert es als PNG im aktuellen Verzeichnis. +It looks up the Helioviewer API for the data source matching the given +keyword (e.g. `hmi_continuum`), fetches the image closest to the requested +time, and saves it as a PNG in the current directory. -## Nutzung +## Usage ```bash ./helioviewer_grab.py 2026-08-12T18:18:00Z hmi_continuum -./helioviewer_grab.py --list # verfügbare Datenquellen anzeigen +./helioviewer_grab.py --list # show all available data sources +./helioviewer_grab.py --sources # short explanation of the most useful ones ``` -Ohne Argumente werden Beispielwerte verwendet (siehe Docstring im Skript). +Without arguments, example values are used (see the docstring in the script). + +`--sources` prints a curated, human-readable description for the most +commonly used sources (AIA wavelengths, HMI, GONG H-alpha), what each one +shows and roughly how detailed it is. For full-disk imaging, SDO/HMI +(0.5"/px) and SDO/AIA (0.6"/px) offer the highest resolution among the +continuously available sources. + +Here's a list of all available sources: +```yaml + 0 SOHO/EIT/171 EIT 171 + 1 SOHO/EIT/195 EIT 195 + 2 SOHO/EIT/284 EIT 284 + 3 SOHO/EIT/304 EIT 304 + 4 SOHO/LASCO/C2/white-light LASCO C2 + 5 SOHO/LASCO/C3/white-light LASCO C3 + 6 SOHO/MDI/magnetogram MDI Mag + 7 SOHO/MDI/continuum MDI Int + 8 SDO/AIA/94 AIA 94 + 9 SDO/AIA/131 AIA 131 + 10 SDO/AIA/171 AIA 171 + 11 SDO/AIA/193 AIA 193 + 12 SDO/AIA/211 AIA 211 + 13 SDO/AIA/304 AIA 304 + 14 SDO/AIA/335 AIA 335 + 15 SDO/AIA/1600 AIA 1600 + 16 SDO/AIA/1700 AIA 1700 + 17 SDO/AIA/4500 AIA 4500 + 18 SDO/HMI/continuum HMI Int + 19 SDO/HMI/magnetogram HMI Mag + 20 STEREO_A/SECCHI/EUVI/171 EUVI-A 171 + 21 STEREO_A/SECCHI/EUVI/195 EUVI-A 195 + 22 STEREO_A/SECCHI/EUVI/284 EUVI-A 284 + 23 STEREO_A/SECCHI/EUVI/304 EUVI-A 304 + 24 STEREO_B/SECCHI/EUVI/171 EUVI-B 171 + 25 STEREO_B/SECCHI/EUVI/195 EUVI-B 195 + 26 STEREO_B/SECCHI/EUVI/284 EUVI-B 284 + 27 STEREO_B/SECCHI/EUVI/304 EUVI-B 304 + 28 STEREO_A/SECCHI/COR1/white-light COR1-A + 29 STEREO_A/SECCHI/COR2/white-light COR2-A + 30 STEREO_B/SECCHI/COR1/white-light COR1-B + 31 STEREO_B/SECCHI/COR2/white-light COR2-B + 32 PROBA2/SWAP/174 SWAP 174 + 33 Yohkoh/SXT/AlMgMn SXT AlMgMn + 34 Yohkoh/SXT/thin-Al SXT thin-Al + 35 Yohkoh/SXT/white-light SXT white-light + 39 Hinode/XRT/Al_med/Al_thick XRT Al_med/Al_thick + 40 Hinode/XRT/Al_med/Be_thick XRT Al_med/Be_thick + 42 Hinode/XRT/Al_med/Open XRT Al_med/Open + 43 Hinode/XRT/Al_med/Ti_poly XRT Al_med/Ti_poly + 44 Hinode/XRT/Al_poly/Al_mesh XRT Al_poly/Al_mesh + 45 Hinode/XRT/Al_poly/Al_thick XRT Al_poly/Al_thick + 46 Hinode/XRT/Al_poly/Be_thick XRT Al_poly/Be_thick + 48 Hinode/XRT/Al_poly/Open XRT Al_poly/Open + 49 Hinode/XRT/Al_poly/Ti_poly XRT Al_poly/Ti_poly + 54 Hinode/XRT/Be_med/Open XRT Be_med/Open + 60 Hinode/XRT/Be_thin/Open XRT Be_thin/Open + 62 Hinode/XRT/C_poly/Al_mesh XRT C_poly/Al_mesh + 63 Hinode/XRT/C_poly/Al_thick XRT C_poly/Al_thick + 66 Hinode/XRT/C_poly/Open XRT C_poly/Open + 67 Hinode/XRT/C_poly/Ti_poly XRT C_poly/Ti_poly + 69 Hinode/XRT/Open/Al_mesh XRT Open/Al_mesh + 70 Hinode/XRT/Open/Al_thick XRT Open/Al_thick + 71 Hinode/XRT/Open/Be_thick XRT Open/Be_thick + 74 Hinode/XRT/Open/Ti_poly XRT Open/Ti_poly + 75 TRACE/171 TRACE 171 + 76 TRACE/195 TRACE 195 + 77 TRACE/284 TRACE 284 + 78 TRACE/1216 TRACE 1216 + 79 TRACE/1550 TRACE 1550 + 80 TRACE/1600 TRACE 1600 + 81 TRACE/1700 TRACE 1700 + 82 TRACE/white-light TRACE white-light + 83 MLSO/COSMO/KCor/735 COSMO KCor + 84 SOLO/EUI/FSI/174 EUI FSI 174 + 85 SOLO/EUI/FSI/304 EUI FSI 304 + 86 SOLO/EUI/HRI/174 EUI HRI 174 + 87 SOLO/EUI/HRI/1216 EUI HRI 1216 + 88 IRIS/SJI/1330 IRIS SJI 1330 + 89 IRIS/SJI/2796 IRIS SJI 2796 + 90 IRIS/SJI/1400 IRIS SJI 1400 + 92 IRIS/SJI/2832 IRIS SJI 2832 + 94 GONG/GONG/H-alpha/6562 GONG H-alpha + 95 RHESSI/3-6keV/Back Projection RHESSI + 96 RHESSI/6-12keV/Back Projection RHESSI + 97 RHESSI/12-25keV/Back Projection RHESSI + 98 RHESSI/25-50keV/Back Projection RHESSI + 99 RHESSI/50-100keV/Back Projection RHESSI + 100 RHESSI/100-300keV/Back Projection RHESSI + 101 RHESSI/3-6keV/Clean RHESSI + 102 RHESSI/6-12keV/Clean RHESSI + 103 RHESSI/12-25keV/Clean RHESSI + 104 RHESSI/25-50keV/Clean RHESSI + 105 RHESSI/50-100keV/Clean RHESSI + 106 RHESSI/100-300keV/Clean RHESSI + 107 RHESSI/3-6keV/Clean 59 RHESSI + 108 RHESSI/6-12keV/Clean 59 RHESSI + 109 RHESSI/12-25keV/Clean 59 RHESSI + 110 RHESSI/25-50keV/Clean 59 RHESSI + 111 RHESSI/50-100keV/Clean 59 RHESSI + 112 RHESSI/100-300keV/Clean 59 RHESSI + 113 RHESSI/3-6keV/MEM GE RHESSI + 114 RHESSI/6-12keV/MEM GE RHESSI + 115 RHESSI/12-25keV/MEM GE RHESSI + 116 RHESSI/25-50keV/MEM GE RHESSI + 117 RHESSI/50-100keV/MEM GE RHESSI + 118 RHESSI/100-300keV/MEM GE RHESSI + 119 RHESSI/3-6keV/VIS CS RHESSI + 120 RHESSI/6-12keV/VIS CS RHESSI + 121 RHESSI/12-25keV/VIS CS RHESSI + 122 RHESSI/25-50keV/VIS CS RHESSI + 123 RHESSI/50-100keV/VIS CS RHESSI + 124 RHESSI/100-300keV/VIS CS RHESSI + 125 RHESSI/3-6keV/VIS FWDFIT RHESSI + 126 RHESSI/6-12keV/VIS FWDFIT RHESSI + 127 RHESSI/12-25keV/VIS FWDFIT RHESSI + 128 RHESSI/25-50keV/VIS FWDFIT RHESSI + 129 RHESSI/50-100keV/VIS FWDFIT RHESSI + 130 RHESSI/100-300keV/VIS FWDFIT RHESSI + 131 PUNCH/WFI+NFI/Total Brightness PUNCH + 132 GOES/CCOR-1/CCOR-1/white-light GOES CCOR-1 + 134 PUNCH/WFI+NFI/Polarized Brightness PUNCH +2000 GOES/SUVI/94 SUVI 94 +2001 GOES/SUVI/131 SUVI 131 +2002 GOES/SUVI/171 SUVI 171 +2003 GOES/SUVI/195 SUVI 195 +2004 GOES/SUVI/284 SUVI 284 +2005 GOES/SUVI/304 SUVI 304 +10001 Hinode/XRT/Any/Any XRT Any/Any +10002 Hinode/XRT/Any/Al_mesh XRT Any/Al_mesh +10003 Hinode/XRT/Any/Al_thick XRT Any/Al_thick +10004 Hinode/XRT/Any/Be_thick XRT Any/Be_thick +10005 Hinode/XRT/Any/Gband XRT Any/Gband +10006 Hinode/XRT/Any/Open XRT Any/Open +10007 Hinode/XRT/Any/Ti_poly XRT Any/Ti_poly +10008 Hinode/XRT/Al_med/Any XRT Al_med/Any +10009 Hinode/XRT/Al_poly/Any XRT Al_poly/Any +10010 Hinode/XRT/Be_med/Any XRT Be_med/Any +10011 Hinode/XRT/Be_thin/Any XRT Be_thin/Any +10012 Hinode/XRT/C_poly/Any XRT C_poly/Any +10013 Hinode/XRT/Open/Any XRT Open/Any +``` ## Requirements -Nur die Python-Standardbibliothek, keine Dependencies. -Mit [devenv](https://devenv.sh) steht der passende Interpreter direkt bereit: +Only the Python standard library, no dependencies. +With [devenv](https://devenv.sh), the right interpreter is available right away: ```bash devenv shell diff --git a/helioviewer_grab.py b/helioviewer_grab.py index 4930df7..e594dbe 100644 --- a/helioviewer_grab.py +++ b/helioviewer_grab.py @@ -6,6 +6,7 @@ Holt ein Sonnen-Vollscheibenbild von Helioviewer zu einem Zeitpunkt. Beispiel: ./helioviewer_grab.py 2026-08-12T18:18:00Z hmi_continuum ./helioviewer_grab.py --list + ./helioviewer_grab.py --sources """ import json @@ -15,6 +16,26 @@ import urllib.request API = "https://api.helioviewer.org/v2" +# Kuratierte Kurzerklaerung der gebraeuchlichsten Quellen (sourceId -> Text). +# Nur eine Auswahl, keine vollstaendige Doku -- fuer alle IDs siehe --list. +SOURCE_INFO = { + 8: "AIA 94 - hot flare plasma (~6 MK)", + 9: "AIA 131 - flaring regions (~10 MK)", + 10: "AIA 171 - quiet corona, coronal loops (~0.8 MK)", + 11: "AIA 193 - corona, coronal holes (~1.2 MK)", + 12: "AIA 211 - active region corona (~2 MK)", + 13: "AIA 304 - chromosphere/transition region, prominences (~0.05 MK)", + 14: "AIA 335 - active region corona (~2.5 MK)", + 15: "AIA 1600 - upper photosphere/transition region, flare ribbons", + 16: "AIA 1700 - photosphere/temperature minimum", + 17: "AIA 4500 - near-visible continuum, sunspots", + 18: "HMI continuum - white-light photosphere: sunspots, granulation " + "(highest full-disk resolution, 0.5\"/px)", + 19: "HMI magnetogram - photospheric magnetic field map", + 94: "GONG H-alpha - chromosphere: filaments, plage, flare ribbons " + "(ground-based network)", +} + def call(endpoint, **params): """GET auf die Helioviewer-API. Gibt (content_type, bytes) zurueck.""" @@ -64,6 +85,11 @@ def main(): print(f"{sid:4d} {'/'.join(path):40s} {nick}") return + if "--sources" in sys.argv: + for sid, desc in sorted(SOURCE_INFO.items()): + print(f"{sid:4d} {desc}") + return + date = sys.argv[1] if len(sys.argv) > 1 else "2026-08-12T18:18:00Z" what = sys.argv[2] if len(sys.argv) > 2 else "continuum"