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