# API e Requests

## 🔄API

Este com certeza você já ouviu uma vez na vida. API, ou **I**nterface de **P**rogramação de **A**plicações, é um conjunto de regras e ferramentas que permite a comunicação entre diferentes softwares. Em termos simples, é <mark>uma ponte</mark> 🌉 que permite que um programa utilize funcionalidades de outro. Muitas empresas conhecidas oferecem API's para realizar operações específicas, algumas operações incluem a obtenção de dados de um serviço online, o envio de informações para um servidor, ou a interação com outros componentes de software.

No manual de API da empresa tem os parâmetros e como usar API's, a API do 🎶 iTunes da Apple🍏 neste endereço : `https://itunes.apple.com/search?entity=song&limit=1&term=coldplay` se copiar📋 esse link e colar no navegador, irá baixar um arquivo JSON, como mostra a seguinte imagem 👇:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1706306775095/5c5c79c7-0edf-44b6-a868-bce55548afc6.png align="center")

Com o Python pode-se fazer um tratamento a esses dados, e bora 🚀 fazer utilizando dois módulos: (se você não sabe o que são módulos, aqui tem o 👉[link](https://hashnode.com/post/clrv49osa00010ajsctt489gg))

* requests
    
* json
    

### 📡 JSON & requests (módulo)

Este módulo vem por padrão na biblioteca do python, então é só importar ele.

```python
import requests
import json

resposta = requests.get("https://itunes.apple.com/search?entity=song&limit=1&term=coldplay")
print(json.dumps(response.json(), indent=2))
# foi usado o param indent=2 ,2 ou 3 fica bom 
```

O `requests.get()` ☝️ vai fazer uma requisição 'get' no link, ou seja, vai acessar o link, o site vai retornar um arquivo JSON (mas que não da pra entender é nada), que é um padrão de troca de informação no mundo da programação👨‍💻 e vai receber a mesma informação igual na imagem anterior.

Com o `json.dumps()` iremos ordenar essa informação em algo mais legível, e você que está acompanhando esse blog, irá observar que o JSON é um dicionário com listas que guardam dicionários, como mostra a seguinte imagem 👇:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1706307653630/98ec4af5-c45c-4a05-8faa-76d8fa814212.png align="center")

Existem muitas possibilidades de usar esses dados, mas aqui iremos utilizar só o `trackName` e o `primaryGenreName` que está dentro de um dicionário numa lista chamada "results", bora 🚀 utilizar um loop para selecionar o valor desejado.

```python
import requests
import json

#limitado a 10 músicas ou resultados
# busca por 'pagode'
resposta = requests.get("https://itunes.apple.com/search?entity=song&limit=10&term=pagode")
dados = resposta.json()

for resultado in dados["results"]:
    print(f"Música: {resultado['trackName']}   Gênero:{resultado['primaryGenreName']}")
```

Esse script ☝️ está limitado a uma busca. Para aprimorar pode-se adicionar um input do usuário, mas neste exemplo, irei usar o módulo `sys`

```python
import requests
import sys
import json

if len(sys.argv) != 2:
    sys.exit()

#limitado a 10 músicas ou resultados
# busca ilimitada
resposta = requests.get("https://itunes.apple.com/search?entity=song&limit=10&term=" + sys.argv[1])
dados = resposta.json()

for resultado in dados["results"]:
    print(f"Música: {resultado['trackName']}   Gênero:{resultado['primaryGenreName']}")
```

Resultado 📊 👇

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1706319774476/990f43b3-d862-4c9b-8467-781b09b5ab92.png align="center")
