16 Mar 18:08
zadanko kotrys
import requests
import json
query = 'https://pokeapi.co/api/v2/pokemon/pikachu'
response = requests.get(query)
if response.status_code == 404:
print("Nie znaleziono pokemona")
elif response.status_code == 200:
data = response.json()
with open('data.json', 'w') as f:
json.dump(data, f)
print(f"Name: {data['name']}")
print("Moves:", end="")
for move in data["moves"]:
print(f"{move['move']['name']}", end=", ")
print("")
print(f"Weight: {data['weight']}")
print("Types:", end="")
for t in data["types"]:
print(t["type"]["name"], end=", ")
print("")
query = "https://www.poznan.pl/mim/plan/map_service.html?mtype=pub_transport&co=parking_meters"
response = requests.get(query)
data = response.json()
print("Strefy płatnego parkowania:")
strefy = []
if response.status_code == 200:
for feature in data["features"]:
if feature["properties"]["zone"] not in strefy:
strefy.append(feature["properties"]["zone"])
print(", ".join(strefy))
else:
print("Nie można pobrać danych o strefach płatnego parkowania.")
wybrana_strefa = "Śródmiejska SPP Jeżyce"
ulice = set()
for feature in data["features"]:
if feature["properties"]["zone"] == wybrana_strefa:
# Usuń numer z ulicy (np. "Kościelna 10" -> "Kościelna")
ulica = feature["properties"]["street"].split()[0]
ulice.add(ulica)
print(f"Ulice w strefie {wybrana_strefa}:")
print(", ".join(sorted(ulice)))
print("API FASTAPI:")
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import Dict, List
import uvicorn
app = FastAPI()
rooms: Dict[str, str] = {} # nazwa pokoju -> opis
reservations: Dict[str, List[Dict[str, str]]] = {} # nazwa pokoju -> lista rezerwacji
class RoomModel(BaseModel):
name: str
description: str
class ReservationModel(BaseModel):
who: str
when: str # "YYYY-MM-DD"
@app.get("/")
def root():
total_rooms = len(rooms)
total_reservations = sum(len(r) for r in reservations.values())
return {
"state": "OK",
"data": {
"rooms": total_rooms,
"reservations": total_reservations,
"message": "System rezerwacji pomieszczeń"
}
}
@app.get("/clear")
def clear():
try:
rooms.clear()
reservations.clear()
return {"state": "OK"}
except Exception:
return {"state": "ERROR"}
@app.get("/rooms")
def get_rooms():
return {"state": "OK", "rooms": list(rooms.keys())}
@app.get("/reservations/{room}")
def get_reservations(room: str):
if room not in rooms:
return {"state": "ERROR", "message": f"Nie mam pokoju {room}."}
return {"state": "OK", "data": reservations.get(room, [])}
@app.get("/print/rooms")
def print_rooms():
data = [f"Pokój {name} {desc}" for name, desc in rooms.items()]
return {"state": "OK", "data": data}
@app.get("/print/reservations/{room}")
def print_reservations(room: str):
if room not in rooms:
return {"state": "ERROR", "message": f"Nie mam pokoju {room}."}
data = [f"{r['who']} zarezerwował termin {r['when']}" for r in reservations.get(room, [])]
return {"state": "OK", "data": data}
@app.post("/rooms/add")
def add_room(room: RoomModel):
if room.name in rooms:
return {"state": "ERROR", "data": {"room": room.name, "message": f"Pokój {room.name} jest już w systemie"}}
rooms[room.name] = room.description
reservations[room.name] = []
return {"state": "OK", "data": {"room": room.name, "message": f"Pokój {room.name} został dodany do systemu"}}
@app.post("/reservations/{room}/add")
def add_reservation(room: str, reservation: ReservationModel):
if room not in rooms:
return {"state": "ERROR", "message": f"Nie mam pokoju {room}."}
for r in reservations[room]:
if r["when"] == reservation.when:
return {"state": "ERROR", "message": f"Termin {reservation.when} jest już zajęty."}
reservations[room].append({"who": reservation.who, "when": reservation.when})
return {"state": "OK", "data": {"room": room, "message": f"Rezerwacja dodana dla {reservation.who} na termin {reservation.when}"}}
if __name__ == '__main__':
uvicorn.run(app)
#uvicorn fastapi_app:app --reload