Skip to content

API's atsakymai

DonatasNoreika edited this page Oct 30, 2024 · 5 revisions

API's atsakymai

1

import requests

url = 'https://api.frankfurter.app/'


def get_rate(base, to):
    payload = {
        "from": base,
        "to": to,
    }
    r = requests.get(f"{url}/latest", params=payload)
    result_dict = r.json()
    try:
        print(f"{base}-{to}:\t{result_dict['rates'][to]}")
    except:
        r = requests.get(f'{url}/currencies')
        currencies_dict = r.json()
        print(f"Wrong currency. Currencies: {", ".join(currencies_dict.keys())}")


get_rate('EUR', 'GBP')
get_rate('ZZZ', 'GBP')

Alternatyva:

import requests

url = 'https://api.frankfurter.app/'

def get_currency_list():
    r = requests.get(f'{url}currencies')
    dictionary = r.json()
    currency_list = []
    for key in dictionary.keys():
        currency_list.append(key)
    return currency_list


def get_rate(base, to):
    if base in get_currency_list() and to in get_currency_list():
        payload = {'from': base, 'to': to}
        r = requests.get(f'{url}latest', params=payload)
        dictionary = r.json()
        print(f'{dictionary["base"]}-{to}:\t{dictionary["rates"][to]}')
    else:
        print(f'''
Neteisingai suvestos valiutos. Galimų variantų sąrašas:
{get_currency_list()}
''')

get_rate('ZZZ', 'GBP')

2

import requests

url = 'https://api.frankfurter.app/'

def dict_converter(dict_to_convert, to):
    original = dict_to_convert["rates"]
    converted = {original[date][to]: date for date in original}
    return converted

def get_rate(base, to, start_date, end_date):
    payload = {
        "from": base,
        "to": to,
    }
    r = requests.get(f"{url}/{start_date}..{end_date}", params=payload)
    result_dict = r.json()
    try:
        converted = dict_converter(result_dict, to)
        max_rate = max(converted)
        min_rate = min(converted)
        print(f'''
            Valiutų poroje {base}-{to}, periode nuo {start_date} iki {end_date}:
            Žemiausias kursas buvo {converted[min_rate]} - {min_rate}
            Aukščiausias kursas buvo {converted[max_rate]} - {max_rate}
            ''')
    except:
        r = requests.get(f'{url}/currencies')
        currencies_dict = r.json()
        print(f"Wrong currency. Currencies: {", ".join(currencies_dict.keys())}")


get_rate('EUR', 'GBP', "2024-01-01", "2024-02-01")
get_rate('ZZZ', 'GBP', "2024-01-01", "2024-02-01")

Alternatyva:

import requests
import json

url = 'https://api.frankfurter.app/'

def get_key(val, dct):
    """Little key by value extractor"""
    for k, v in dct.items():
        if val == v:
            return k


def currency_pair_analysis(base, to, start_date, end_date):
    payload = {'from': base, 'to': to}                                      # susikuriame parametrų žodyną
    r = requests.get(f'{url}{start_date}..{end_date}', params=payload)      # susikuriame užklausą pagal API dokumentaciją
    result = json.loads(r.text)                 # Atsakymą paverčiame Python žodynu
    new_dict = {}                               # Susikuriame tuščią žodyną
    for k, v in result['rates'].items():        # Užpildome jį reikšmėmis 'data': 'kursas'
        new_dict[k] = v[to]

    values_list = list(new_dict.values())       # Susikuriame kursų sąrašą
    min_value = min(values_list)                # Ištraukiame žemiausią reikšmę
    max_value = max(values_list)                # Ištraukiame aukščiausią reikšmę
    min_date = get_key(min_value, new_dict)     # Panaudojame pagalbinę funkciją rakto pagal reikšmę paieškai (gauname datą)
    max_date = get_key(max_value, new_dict)     # Gauname kitą datą

    ''' Formuojame Atsakymą:'''

    print(f'''
    Valiutų poroje {base}-{to}, periode nuo {start_date} iki {end_date}:
    Žemiausias kursas buvo {min_date} - {min_value}
    Aukščiausias kursas buvo {max_date} - {max_value}
    ''')

currency_pair_analysis('EUR', 'USD', '2015-01-01', '2015-01-10')

    # Valiutų poroje EUR-GBP, periode nuo 2019-01-01 iki 2019-12-31:
    # Žemiausias kursas buvo 2019-12-09 - 0.84116
    # Aukščiausias kursas buvo 2019-08-12 - 0.92203

Dekoratoriai

Iteratoriai ir generatoriai

RegEx

Pillow

Email

NumPy

Pandas

Seaborn

Mašininis mokymasis

Requests, JSON, API

Web Scraping (Beautiful Soup)

Duomenų bazės

Flask

Django

Django REST

Odoo

Linux

Pabaigimo užduotis: savo programos kūrimas

Clone this wiki locally