Closed patootey closed 8 months ago
import requests
countries = requests.get("https://restcountries.com/v3.1/all")
countries = countries.json()
print(countries[0]['name']['official'])
for i in countries[10]['name']:
if i == "nativeName":
for x in countries[10]['name'][i]:
if "Norway" in countries[10]['name'][i][x]:
print(x)
if "Norway" in countries[10]['name'][i]:
print(countries[10]['name'][i])
Denne koden bruker APIet til land, og er bare en sketch for en "søkemotor"
currency API-et
import tkinter
import requests
from matplotlib import pyplot as plt
class Currency():
def __init__(self):
self.key = "https://api.frankfurter.app/"
def chooser(self):
self.fromCurrency = "from="+input("From (EUR): ")
self.toCurrency = "to="+input("To (NOK,USD,GBP): ")
return "?"+self.fromCurrency+"&"+self.toCurrency
def set_date(self):
self.startDate = input("Start (YYYY-MM-DD): ")
self.endDate = input("End (..YYYY-MM-DD): ")
def time(self):
check = input("Current values? Y/N: ")
if check.lower() == "y":
return "latest"
else:
self.set_date()
return self.startDate + self.endDate
def fetch_data(self):
self.key += self.time() + self.chooser()
print(self.key)
self.key = requests.get(self.key)
return self.key.json()
def list_maker(self):
goob = self.fetch_data()
base = goob['base']
rates = goob['rates']
values = []
for i in rates:
values.append(rates[i]['NOK'])
return values
def plotter(self):
data = self.list_maker()
plt.plot(data)
plt.ylabel(f"{self.toCurrency[3:]} i {self.fromCurrency[5:]}")
plt.xlabel(f"Tid fra {self.startDate} til {self.endDate}")
plt.show()
penge = Currency()
penge.plotter()
La til en funksjon som legger verdiene til en graf, men dette funker bare om en har valutaen i NOK og funker ikke om det kun er en spesifikk dato. Bør kun brukes som eksempel på en mulig løsning og ikke som et svar.
Land API-et
import requests
countries = requests.get("https://restcountries.com/v3.1/all")
countries = countries.json()
def search(key:str):
for country in countries:
for i in country['name']:
if key in country['name'][i]:
for name in country['currencies']:
symbol = name
return country['name']['common'], symbol, country['currencies'][symbol]["symbol"]
if i == "nativeName":
for x in country['name'][i]:
for z in country['name'][i][x]:
if key in country['name'][i][x][z]:
for name in country['currencies']:
symbol = name
return country['name']['common'], symbol, country['currencies'][symbol]["symbol"]
return f"Fant ikke landet '{key}'."
print(search("Norway"))
print(search("Norge"))
print(search("Britain"))
print(search("Lugudo"))
Forbedret med hjelp av Erik ❤️. Gjorde programmet funksjonsbasert og ryddet opp i den. Den funker nå for alle land og skriver ut navnet, valutanavnet og pengesymbolet.
import tkinter
import requests
from matplotlib import pyplot as plt
countries = requests.get("https://restcountries.com/v3.1/all")
countries = countries.json()
def search(key:str):
for country in countries:
for code in country['name']:
if code != "nativeName" and key.lower() in country['name'][code].lower():
for name in country['currencies']:
code = name
return country['name']['common'], country['currencies'][code]['name'], code, country['currencies'][code]["symbol"], country['flags']['png']
elif code == "nativeName":
for symbol in country['name'][code]:
for z in country['name'][code][symbol]:
if key.lower() in country['name'][code][symbol][z].lower():
for name in country['currencies']:
code = name
return country['name']['common'], country['currencies'][code]['name'], code, country['currencies'][code]["symbol"], country['flags']['png']
try:
for code in country['currencies']:
if key.lower() == code.lower():
return country['name']['common'], country['currencies'][code]['name'], code, country['currencies'][code]["symbol"], country['flags']['png']
for symbol in country['currencies'][code]:
if key.lower() == country['currencies'][code][symbol].lower():
return country['name']['common'], country['currencies'][code]['name'], code, country['currencies'][code]["symbol"], country['flags']['png']
except:
pass
return f"Fant ikke landet '{key}'."
class Currency():
def __init__(self):
self.key = "https://api.frankfurter.app/"
def chooser(self):
self.fromCurrency = search(input("Gi land fra: "))
self.toCurrency1 = search(input("Gi land til 1: "))
self.toCurrency2 = search(input("Gi land til 2: "))
self.fromCurrency = "from="+self.fromCurrency[2]
self.toCurrency1 = "to="+self.toCurrency1[2]
self.toCurrency2 = self.toCurrency2[2]
return "?"+self.fromCurrency+"&"+self.toCurrency1+","+self.toCurrency2
def set_date(self):
self.startDate = input("Start (YYYY-MM-DD): ")
self.endDate = input("End (..YYYY-MM-DD): ")
return self.startDate + self.endDate
def fetch_data(self):
self.key += self.set_date() + self.chooser()
print(self.key)
self.key = requests.get(self.key)
return self.key.json()
def list_maker(self, data):
raw_data = data
if data != None:
raw_data = self.fetch_data()
rates = raw_data['rates']
values1,values2 = [],[]
for i in rates:
try:values1.append(rates[i][self.toCurrency1[3:]])
except:pass
try:values2.append(rates[i][self.toCurrency2])
except:pass
return values1,values2
def plotter(self, data=None):
data = self.list_maker(data)
plt.grid()
plt.plot(data[0], color="blue")
plt.plot(data[1], color="red")
plt.ylabel(f"{self.fromCurrency[5:]} i valutaer")
plt.xlabel(f"Tid fra {self.startDate} til {self.endDate}")
plt.tick_params(axis='x', which='both', labelbottom=False)
plt.legend([self.toCurrency1[3:],self.toCurrency2])
plt.show()
penge = Currency()
penge.plotter(search('norway'))
Forbedret og i grunnen ferdigstilt, med noen innspill fra Henrik. search funksjonen tar nå for seg alle aspekter ved søkingen da du kan søke med valuta navn, kode, og landets navn på engelsk og eget språk. Nå gjenstår det bare å få gitt det en GUI som Henrik tar seg av.
Denne bruker input i konsoll til å sveise sammen en nøkkel som den bruker til å be om data fra API som den skriver ut