vituu999
vituu999

Reputation: 3

I'm having trouble consuming this api

I'm having trouble consuming this api, it's always giving me an error in this code here

that is a meke in python

chave_IPA = "Aqa9_KZFeRDAiAsJwyxVLQJh5tfZYeMyGHtUXEVd7PGm13xT1evy3vwA5MCcscqd"
distancia_matrix = []
for x in lista_cep:
    lista = []
    for j in lista_cidade:
        rota = "http://dev.virtualearth.net/REST/V1/Routes/Driving?wp,0=" + x +"&mp.1=" + j +"/&key="+chave_IPA
        r = requests.get(url = rota)
        result = r.json()
        distancia = result["resourceSets"][0]["resources"][0]['travelDistance']
        lista.append(distancia)
        distancia_matrix.append(lista)
matrix = pd.DataFrame(distancia_matrix)

Upvotes: -1

Views: 53

Answers (1)

Your API whas malformed. This is the right way to do it:

chave_IPA = "Aqa9_KZFeRDAiAsJwyxVLQJh5tfZYeMyGHtUXEVd7PGm13xT1evy3vwA5MCcscqd"
distancia_matrix = []
for x in lista_cep:
    lista = []
    for j in lista_cidade:
        rota = f"http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0=redmond%2Cwa&wp.1=Issaquah%2Cwa&avoid=minimizeTolls&key={chave_IPA}"
        r = requests.get(url = rota)
        result = r.json()
        distancia = result["resourceSets"][0]["resources"][0]['travelDistance']
        lista.append(distancia)
        distancia_matrix.append(lista)
matrix = pd.DataFrame(distancia_matrix)

or like this:

import requests
import pandas as pd

chave_IPA = "Aqa9_KZFeRDAiAsJwyxVLQJh5tfZYeMyGHtUXEVd7PGm13xT1evy3vwA5MCcscqd"
lista_cep = ["YOUR_ZIP_CODE_LIST"]  
lista_cidade = ["YOUR_CITY_LIST"] 
distancia_matrix = []

for x in lista_cep:
    lista = []
    for j in lista_cidade:
        rota = f"http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0=redmond%2Cwa&wp.1=Issaquah%2Cwa&avoid=minimizeTolls&key={chave_IPA}"
        try:
            r = requests.get(url=rota)
            r.raise_for_status() 
            result = r.json()
            distancia = result.get("resourceSets", [{}])[0].get("resources", [{}])[0].get('travelDistance', None)
            if distancia is not None:
                lista.append(distancia)
            else:
                lista.append('Error: Distance not found')
        except requests.exceptions.RequestException as e:
            print(f"Request error: {e}")
            lista.append('Error: Request failed')
    distancia_matrix.append(lista)

matrix = pd.DataFrame(distancia_matrix, columns=lista_cidade, index=lista_cep)

pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
print(matrix)

which returns:

                    YOUR_CITY_LIST
YOUR_ZIP_CODE_LIST          29.285

In other words:

Replace:

"http://dev.virtualearth.net/REST/V1/Routes/Driving?wp,0=" + x +"&mp.1=" + j +"/&key="+chave_IPA

with

f"http://dev.virtualearth.net/REST/V1/Routes/Driving?wp.0=redmond%2Cwa&wp.1=Issaquah%2Cwa&avoid=minimizeTolls&key={chave_IPA}"

Upvotes: 0

Related Questions