#-----------------------------------------------------------------------
#                                            Prof. Dr. Walmes M. Zeviani
#                                leg.ufpr.br/~walmes · github.com/walmes
#                                        walmes@ufpr.br · @walmeszeviani
#                      Laboratory of Statistics and Geoinformation (LEG)
#                Department of Statistics · Federal University of Paraná
#                                       2019-abr-20 · Curitiba/PR/Brazil
#-----------------------------------------------------------------------

#-----------------------------------------------------------------------
# Carrega os módulos.

import os
os.getcwd()

# Instalar com `anaconda3/bin/pip install requests`
import requests as rqst
import wget

#-----------------------------------------------------------------------
# Download mais simples, baseado apenas na URL.

# NOTE: wget sabe expandir `~`.
url = "http://leg.ufpr.br/~walmes/data/duster_venda_260314.txt"
path = "~/Downloads/" + os.path.basename(url)
wget.download(url = url, out = path)

#-----------------------------------------------------------------------
# Download que pode exigir mais argumentos para requisição, por exemplo,
# headers, parâmetros, etc.

url = "http://dsbd.leg.ufpr.br/img/logo-small.png"
r = rqst.get(url)

r.status_code
r.headers["Content-Type"]
r.headers["Content-Length"]

# Conteúdo em binário.
r.content[:100]

# Escrever em disco. NOTE: open() não sabe expandir `~`.
path = os.path.expanduser("~/Downloads/") + os.path.basename(url)
with open(file = path, mode = "wb") as f:
    f.write(r.content)

#-----------------------------------------------------------------------
# Qual usar com URL parametrizada (query string).

# NOTE: wget não funciona para URL com query strings.
url = "http://nominatim.openstreetmap.org/search?" + \
      "q=2300, Rua Brigadeiro Franco, Curitiba, BR&format=json"

path = "~/Downloads/response.json"
wget.download(url = url, out = path)

r = rqst.get(url)

r.status_code
r.headers["Content-Type"]

# Conteúdo em binário.
r.content[:100] # Conteúdo é bytes.
r.text[:100]    # Conteúdo é string.

# Escrever em disco
path = os.path.expanduser("~/Downloads/") + "response.json"
with open(file = path, mode = "w") as f:
    f.write(r.text)

#-----------------------------------------------------------------------
