---
# System prepended metadata

title: API vaja 1

---

# 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()
```