Python Json Döviz Çevirici - API Entegre etmeyi nasıl yapabilirim?

Arkadaşlar merhaba, pythonda json kullanarak fixer.io üzerinden anlık döviz kurlarını alıp, kullanıcının girdiği 2 para birimini çevirmek istiyorum. Ancak bir türlü API entegre edemedim, yardımcı olur musunuz?(bir videodan gördüm yapılışını fakat siteye sonradan API eklemişler sanırım)
kod şöyle:

import requests

url = “https://data.fixer.io/api/latest?base=
birinci = input("Birinci Döviz: ")
ikinci = input("ikinci Döviz: ")
miktar = float(input("Miktar: "))

response = requests.get(url + birinci)
print(response)
json_verisi = response.json()
print(float(json_verisi[“rates”][ikinci]) * miktar)

Koda girdi olarak ne verildigini bilmemiz lazim
(veya daha iyisi, girdilerin hazir girilmis halini temsil eden bir kod almamiz)

Kodda bir adet print var, nasil bir cikti verdigini de bilmemiz lazim
Kod hata veriyorsa onu da alabiliriz.


“Access key” diyecek arkadaslar: biraz sabredin.

1 Beğeni

Merhaba kodu dediğiniz tarzda tekrardan yazayım ve verdiği çıktıyı da altına ekleyeceğim:

import requests

url = "https://data.fixer.io/api/latest?base="
birinci = input("Birinci Döviz: ")
ikinci = input("ikinci Döviz: ")
miktar = float(input("Miktar: "))

response = requests.get(url + birinci)
print(response)
json_verisi = response.json()
print(float(json_verisi["rates"][ikinci]) * miktar)

Çıktı:

Birinci Döviz: USD
ikinci Döviz: TRY
Miktar: 50
15<Response [200]>
Traceback (most recent call last):
File “/home/mert/PycharmProjects/ilk/jsonilecailsmak1.py”, line 22, in
print(float(json_verisi[“rates”][ikinci]) * miktar)
KeyError: ‘rates’

Process finished with exit code 1

Response objesinin icerigini su sekilde yazdirdigimizda:

import requests

url = "https://data.fixer.io/api/latest?base="
birinci = "TRY"#input("Birinci Döviz: ")
ikinci = "USD"#input("ikinci Döviz: ")
miktar = 50#float(input("Miktar: "))

response = requests.get(url + birinci)
print(response.content)
json_verisi = response.json()
print(float(json_verisi["rates"][ikinci]) * miktar)

Gelen cevabi goruyoruz:

{
  "success": false,
  "error": {
    "code": 101,
    "type": "missing_access_key",
    "info": "You have not supplied an API Access Key. [Required format: access_key=YOUR_ACCESS_KEY]"
  }
}

Yani API herkese acik degil, bir adet access key istiyor.

Bu arada elle ?base= seklinde verdigimiz query string parametrelerini dogru sekilde vermenin vakti de geliyor sanirim.

2 Beğeni

verdiğiniz linki inceledim fakat hala API keyini hangi şekilde ekleyeceğimi anlayamadım

Once base'i eklemek lazim.

Key’in de degerini siteden almak.

1 Beğeni

key’e sahibim fakat bir kod örneğiyle dediğiniz yolla base ve x diyelim örnek keyi nasıl ekleyeceğimi göstermeniz mümkün mü proje üstünde?

import requests

key = "YOUR_KEY"

base = input("Baz alınacak para birimi: ")
currency = input("Çevirelecek para birimi: ")

url = f"https://data.fixer.io/api/latest?access_key={key}&base={base}&symbols={currency}"

quantity = float(input("Miktar: "))

response = requests.get(url)
json_data = response.json()

print(float(json_data["rates"][currency]) * quantity)

Key’e sahip olmadığım için kodu deneyemedim ama siz YOUR_KEY kısmını sahip olduğunuz key ile değiştirirseniz çalışacağını düşünüyorum.

1 Beğeni

evet çalıştı key ile teşekkür ederim, tek sorun https bağlantısından dolayı çıktı onu da http yaparak çözdüm,bedava üyelikten dolayı desteklemiyormuş @aib size de teşekkür ederim yardımlarınızdan ötürü.

Dort mesaj once bahsettigim yanlis yontemi gostermissiniz, tesekkurler, ama keske yaninda dogrusunu da gosterseydiniz.

Gerci verdigim linkte yazandan daha acik bir sekilde nasil ifade edilebilir, ben de bilmiyorum. Turkcelestirmek mi lazim?

1 Beğeni

Sizin yazdıklarınıza bakmadan cevabı yazmıştım. Ama evet dediğiniz daha doğru o yüzden kodu düzelttim.

import requests

url = "https://data.fixer.io/api/latest"
key = "YOUR_KEY"

base = input("Baz alınacak para birimi: ")
currency = input("Çevirelecek para birimi: ")
quantity = float(input("Miktar: "))

payload = {"access_key": key, "base": base, "symbols": currency}
response = requests.get(url, params=payload)
json_data = response.json()

print(float(json_data["rates"][currency]) * quantity)
2 Beğeni