|

Mini projekt w python z API o kursie walut

Korzystając z API NBP – https://api.nbp.pl/

  • pobrać od użytkownika zakres dat (od – do)
  • pobrać interesujący go 1 kod waluty (np. EUR, USD, itp.) – tabela A
  • z pobranych danych o kursach, wyświetlić kurs z datą
  • najmniejszy kurs
  • największy kurs
  • dzisiejszy kurs lub najbliższy dzisiejszego, jeśli nie ma kursu na dzień dzisiejszy

zapisać te 3 dane do pliku tekstowego (opis, data, kurs)

import requests
from datetime import datetime
import os

# Funkcja do pobrania danych z API NBP
def get_currency_data(start_date, end_date, currency_code):
    url = f'https://api.nbp.pl/api/exchangerates/rates/a/{currency_code}/{start_date}/{end_date}/'
    response = requests.get(url)
    return response.json() if response.status_code == 200 else None

# Pobieranie danych od użytkownika
start_date = input("Podaj datę początkową (YYYY-MM-DD): ")
end_date = input("Podaj datę końcową (YYYY-MM-DD): ")
currency_code = input("Podaj kod waluty (np. EUR, USD): ").upper()

# Pobranie danych o kursach
data = get_currency_data(start_date, end_date, currency_code)

if data and 'rates' in data and data['rates']:
    rates = data['rates']
    
    # Wyświetlenie kursów
    for rate in rates:
        print(f"Data: {rate['effectiveDate']}, Kurs: {rate['mid']}")
    
    # Analiza kursów
    min_rate = min(rates, key=lambda x: x['mid'])
    max_rate = max(rates, key=lambda x: x['mid'])
    
    today = datetime.now()  # Użyj datetime teraz, aby uzyskać czas i datę
    today_date_str = today.date().isoformat()  # Użyj daty jako stringa w formacie YYYY-MM-DD
    today_rate = None
    
    # Znalezienie kursu na dzisiaj lub najbliższego
    for rate in rates:
        if rate['effectiveDate'] == today_date_str:
            today_rate = rate
            break

    if today_rate is None:
        closest_date = min(rates, key=lambda x: abs(datetime.fromisoformat(x['effectiveDate']) - today))
        today_rate = closest_date

    # Wyświetlenie wyników
    print(f"\nNajmniejszy kurs: {min_rate['mid']} z dnia {min_rate['effectiveDate']}")
    print(f"Największy kurs: {max_rate['mid']} z dnia {max_rate['effectiveDate']}")
    print(f"Kurs na dziś (lub najbliższy): {today_rate['mid']} z dnia {today_rate['effectiveDate']}")
    
    # Zapis do pliku
    desktop_path = os.path.join(os.path.expanduser("~"), "Desktop", "currency_rates.txt")
    
    try:
        with open(desktop_path, "w") as file:
            file.write(f"Najmniejszy kurs: {min_rate['mid']} z dnia {min_rate['effectiveDate']}\n")
            file.write(f"Największy kurs: {max_rate['mid']} z dnia {max_rate['effectiveDate']}\n")
            file.write(f"Kurs na dziś (lub najbliższy): {today_rate['mid']} z dnia {today_rate['effectiveDate']}\n")
        print(f"Dane zostały zapisane do pliku {desktop_path}.")
    except Exception as e:
        print(f"Błąd podczas zapisywania do pliku: {e}")
else:
    print("Błąd w pobieraniu danych. Sprawdź kod waluty lub zakres dat.")

Podobne wpisy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *