Files
PS-APIusage/readme.md
2026-04-02 23:11:25 +02:00

193 lines
3.2 KiB
Markdown

# 🚀 NASA Near Earth Objects (NEO) PowerShell Script
Dieses PowerShell-Script ruft Daten der NASA **Near Earth Object (NEO) API** ab, verarbeitet die Ergebnisse und zeigt relevante Informationen zu Asteroiden an.
---
## 📌 Features
* 🔐 API-Key aus `.env` Datei laden
* 🌍 Abruf von Asteroiden-Daten über die NASA API
* 📊 Anzeige von:
* Name des Asteroiden
* Gefährlichkeit (Hazardous)
* Entfernung zur Erde (Miss Distance)
* ⚠️ Farbliche Hervorhebung:
* **Rot** = potenziell gefährlich
* **Grün** = nicht gefährlich
* 📉 Anzeige des API Rate Limits
---
## 📁 Voraussetzungen
* PowerShell 5.1 oder höher (empfohlen: PowerShell 7+)
* Internetverbindung
* NASA API Key
👉 API Key hier erstellen:
https://api.nasa.gov/
---
## ⚙️ Setup
### 1. `.env` Datei erstellen
Erstelle im gleichen Verzeichnis eine `.env` Datei:
```
API_KEY=dein_api_key_hier
```
---
### 2. Script ausführen
```powershell
.\dein-script.ps1
```
---
## 🧠 Funktionsweise
### 🔐 Laden der Umgebungsvariablen
Das Script liest die `.env` Datei und setzt die enthaltenen Variablen in die aktuelle PowerShell-Session:
```powershell
[System.Environment]::SetEnvironmentVariable($name, $value)
```
---
### 🌍 API Request
Abruf der NEO-Daten über die NASA API:
```powershell
Invoke-RestMethod -Uri "<API-URL>" -ResponseHeadersVariable headers
```
* JSON wird automatisch in PowerShell-Objekte konvertiert
* Response-Header werden separat gespeichert
---
### 📊 Rate Limit Anzeige
Folgende Header werden ausgewertet:
* `X-RateLimit-Limit`
* `X-RateLimit-Remaining`
Ausgabe:
```
-------------
Rate Limit: 1000
Remaining : 742
-------------
```
---
### ☄️ Verarbeitung der Asteroiden-Daten
Die API liefert Daten gruppiert nach Datum:
```json
"near_earth_objects": {
"2026-01-01": [ ... ]
}
```
Das Script iteriert dynamisch über alle Datumswerte:
```powershell
$response.near_earth_objects.PSObject.Properties
```
---
### 🎨 Konsolen-Ausgabe
Für jeden Asteroiden werden folgende Informationen angezeigt:
* Name
* Gefährlich (True/False)
* Entfernung zur Erde (km)
Farbliche Darstellung:
* 🔴 Rot → gefährlich
* 🟢 Grün → ungefährlich
---
## 🖥️ Beispielausgabe
```
Datum: 2026-01-01
-------------------
| Name: (2000 KX43) --- Hazardous: False
| Miss-Distance(in KM): 7458392
---------------------
| Name: (422686) --- Hazardous: True
| Miss-Distance(in KM): 3849201
---------------------
```
---
## ⚠️ Fehlerbehandlung
Das Script nutzt `try/catch`, um API-Fehler abzufangen:
```powershell
catch {
Write-Host "Fehler: $($_.Exception.Message)"
}
```
---
## 💡 Hinweise & Best Practices
* 🔒 `.env` Datei nicht in Git committen (`.gitignore`)
* 🔁 API Rate Limits beachten
* 📅 Datum kann angepasst werden:
```powershell
$startDate = "2026-01-01"
$endDate = "2026-01-07"
```
---
## 🚀 Erweiterungsmöglichkeiten
* Export als CSV oder JSON
* Automatische Pagination (`links.next`)
* Filter nach Entfernung oder Größe
* Logging statt `Write-Host`
* Umwandlung in PowerShell Modul
---
## 🏁 Fazit
Dieses Script bietet einen einfachen Einstieg in:
* Arbeiten mit REST APIs in PowerShell
* JSON-Verarbeitung
* Nutzung von Umgebungsvariablen
* Konsolenbasierte Datenvisualisierung
---
Happy scripting! 🚀