# API naloge
**Velik del vaje je učenje branja dokumentacije**
**Dokumentacija Requests knjižnice:** [Docs](https://requests.readthedocs.io/en/latest/)
## Osnoven API klic
```python=
response = requests.get("https://example.com/api")
```
## Parametri klica (ponavadi, ko delamo GET klic)
```python=
params = {"param1": "value1", "param2": "value2"}
response = requests.get("https://example.com/api", params= params)
```
## Body klica (ponavadi, ko delamo POST klic)
```python=
headers = {
"User-Agent": "my-app/1.0",
"Authorization": "Bearer token123",
"Accept": "application/json" # zahteva JSON podatkov
}
response = requests.get("https://example.com/api", headers=headers)
```
Seveda lahko kombiniramo headers in params.
## Primerjava GET in POST (za spodnje vaje bomo večino uporabljali GET)
| Lastnost | GET | POST |
|--------------------------|------------------------------------|-----------------------------------|
| **Podatki v URL-ju** | Podatki so priloženi v URL-ju. | Podatki niso v URL-ju. |
| **Omejitev dolžine** | Omejitev dolžine URL-ja (običajno omejeno na približno 2.000 znakov). | Ni omejitve dolžine podatkov v telesu zahteve. |
| **Varnost** | Manj varno, ker so podatki vidni v URL-ju in jih je mogoče videti v zgodovini brskalnika ali dnevnikih strežnika. | Bolj varno, ker se podatki prenašajo v telesu zahteve in niso vidni v URL-ju. |
| **Podatki v telesu** | Podatki se ne prenašajo v telesu zahteve, zato so primerni za zahteve, ki ne spreminjajo stanja na strežniku (samo read). | Podatki se prenašajo v telesu zahteve, zato so primerni za zahteve, ki spreminjajo stanje na strežniku (npr. dodajanje ali urejanje podatkov). |
| **Uporaba v obrazcih HTML** | Primeren za branje podatkov iz strežnika, na primer iskanje rezultatov iskanja. | Primeren za pošiljanje obrazcev s podatki na strežnik, na primer prijavo ali oddajo obrazca. |
[Za radovedne](https://www.guru99.com/difference-get-post-http.html)
## Naloge
1. Seznam vseh sposobnosti (moves) poljubnega Pokémona (Uporaba Pokémon API)
2. Iskanje aktivnosti glede na kriterije (Uporaba Bored API)
3. Odkrivanje dejstev o sadju (Uporaba Trefle API)
4. Sledenje Mednarodni vesoljski postaji
├── 4.1 Sledenje lokaciji MVP
└── 4.2 Kako daleč je MVP od mene zdaj? (Zahteva vnos vaše lokacije)
└── Vnesite vašo lokacijo (Zemljepisna širina, Zemljepisna dolžina): [Vnos uporabnika]
5. Prevedite slovensko besedo skozi N prevodov in nazaj v slovenščino
## Navodila
**za prijavo na APIje, ki potrebujejo login (za dostop do API ključa) uporabi kar "temp mail"**
1. **Seznam vseh sposobnosti (moves) izbranega Pokemona (Pokémon API):**
Pridobi vse sposobnosti izbranega Pokemona iz Pokémon API-ja. Uporabite API: https://pokeapi.co.
Skripta naj nato izvleče in prikaže seznam sposobnosti, ki jih Pikachu poseduje.
2. **Iskanje aktivnosti glede na kriterije (Bored API):**
Ustvarite funkcijo, ki bo sprejela parametre, kot so cena, število ljudi in število aktivnosti, ter uporabila Bored API za iskanje primernih aktivnosti. Uporabite naslovno točko: http://www.boredapi.com. Skripta naj pošlje zahteve na Bored API s podanimi parametri in vrne seznam predlaganih aktivnosti.
3. **Odkrivanje dejstev o sadju (Trefle API):**
Napišite skripto, ki omogoča vnos imena sadja in izvedbo iskanja petih zanimivih dejstev o njem prek Trefle API-ja. Uporabite naslovno točko: https://trefle.io. Skripta naj razčleni odgovor API-ja in izvleče informacije, kot so znanstveno ime, družina, rod in druge zanimive podrobnosti. Nato izpiši še 5 poljubnih dejstev o sadju.
4. **Sledenje MVP (Mednarodna vesoljska postaja):**
**API najdi sam!!**
1. Sledenje lokaciji MVP:
Izpiši trenutno lokacijo MVP.
1. Razdalja do MVP:
Vnesite svojo trenutno lokacijo (zemljepisno širino in dolžino) in izračunajte razdaljo med vašo lokacijo in trenutno lokacijo MVP.
**po spletu poišči kako izračunamo razdaljo med dvema koordinatama**
5. **Prevedite slovensko besedo skozi N prevodov in nazaj v slovenščino:**
Ta naloga vključuje večkratno prevajanje slovenske besede in nato povratno prevajanje v slovenščino. Omogočite uporabniku, da določi število prevodov (N) in vpiše besedo za prevajanje. Skripta naj prevede besedo skozi N prevodov (naključnih jezikov) in jo nato ponovno prevede v slovenščino za končni rezultat. Uporabi poljuen API
**implementacija čez katere jezike gre prevod je poljubna.**
6. **implementriaj poljubno uporabnost nekega APIja**
### Oblika izbirnika
1. Poglej sposobnosti Pokémona
└── Vnesi ime Pokémona (npr. Pikachu):
2. Išči aktivnosti
└── Vnesi ceno, število ljudi in število aktivnosti (npr. 10, 5, 3):
3. Odkrij dejstva o sadju
└── Vnesi ime sadja (npr. apple):
4. Sledenje MVP
1. Sledi lokaciji MVP
2. Izračunaj razdaljo do MVP
5. Prevajanje besed skozi N prevodov
└── Vnesi število prevodov (npr. 3) in besedo za prevajanje (npr. hiša):
Recimo slovensko -> angleško -> italjankso -> nemško -> slovensko
## Pomoč pri oblikovanju menija:
```python=
import requests
def main():
while True:
print("Izberite nalogo:")
print("1. Poglej sposobnosti Pokémona")
print("2. Iskanje aktivnosti")
print("3. Informacije o sadju")
print("4. Sledenje MVP")
print("5. Verižno prevajanje")
choice = input("Izberi možnost: ")
if choice == "1":
pokemon_name = input("Vnesite ime Pokémona: ")
# koda za izbiro 1
elif choice == "2":
# Koda za izbiro 2
pass
elif choice == "3":
# Koda za izbiro 3
pass
elif choice == "4":
print("1. Sledi lokaciji MVP")
print("2. Izračunaj razdaljo do MVP")
mvp_choice = input("Izberite podnalogo: ")
if mvp_choice == "1":
pass # koda za izbiro 4.1
elif mvp_choice == "2":
pass # koda za izbiro 4.2
elif choice == "5":
# Koda za izbiro 5
pass
main()
```