feature(helioviewer): add documentation about sources to the script and update the readme

This commit is contained in:
2026-08-25 12:10:29 +02:00
parent 6726b586a5
commit 8acdbb4e58
2 changed files with 178 additions and 10 deletions
+152 -10
View File
@@ -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
+26
View File
@@ -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"