added readme
This commit is contained in:
@@ -29,10 +29,6 @@ catch {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#$response | ConvertTo-Json -Depth 10 | Out-File ".\NeoFeed.json"
|
||||
|
||||
$limit = 0
|
||||
|
||||
$response.near_earth_objects.PSObject.Properties | ForEach-Object {
|
||||
|
||||
192
readme.md
192
readme.md
@@ -0,0 +1,192 @@
|
||||
# 🚀 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! 🚀
|
||||
|
||||
Reference in New Issue
Block a user