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)
aib
Mayıs 20, 2020, 7:50ös
2
Merhaba arkadaşlar.
Çoğu gönderide kodların düzgün bir şekilde görünmediğine dikkat ettim. Bu sebeple bunun nasıl yapılabileceğini burada paylaşmak istedim.
Kullandığımız forumun gönderi yazma sözdiziminde(Markdown’ın biraz gelişmiş hali) kodlar genelde iki şekilde yazılıyor. Bunlardan ilki 4 satır girintileme ile yazmak. Bu basit bir yol. Ancak burada birkaç sorun var. Birincisi her satırın başına ayrı ayrı 4 satır koymanız gerekiyor. İkinci sorun ise bu şekilde kodu biçimlendirdiğinizde kod …
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
aib
Mayıs 22, 2020, 9:43ös
4
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
aib
Mayıs 22, 2020, 10:37ös
6
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ü.
aib
Mayıs 23, 2020, 10:29öö
10
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