#!python
import json
from optparse import OptionParser, IndentedHelpFormatter
from zapimoveis_scraper import search


class BannerHelpFormatter(IndentedHelpFormatter):
    "Just a small tweak to optparse to be able to print a banner."
    def __init__(self, banner, *argv, **argd):
        self.banner = banner
        IndentedHelpFormatter.__init__(self, *argv, **argd)

    def format_usage(self, usage):
        msg = IndentedHelpFormatter.format_usage(self, usage)
        return '%s\n%s' % (self.banner, msg)


# Parse the command line arguments.
formatter = BannerHelpFormatter(
    "ZAP Imóveis crawler and scraper using beautifulsoup4\n"
    "By Geovany Rodrigues\n"
    "https://github.com/GeovRodri/zapimoveis-scraper\n"
)

parser = OptionParser(formatter=formatter)
parser.add_option("--localization", metavar="LOCALIZATION", type="string", default="go+goiania++setor-marista",
                  help="Localidade, pode ser adquirida no site.")
parser.add_option("--num_pages", metavar="NUM_PAGES", type="int", default=1,
                  help="Número maximo de páginas.")
parser.add_option("--acao", metavar="ACAO", type="string", default="aluguel",
                  help="Ação do imovel (alugar, comprar ou lançamentos)")
parser.add_option("--tipo", metavar="TIPO", type="string", default="imoveis",
                  help="Tipo do imovel")
(options, args) = parser.parse_args()
params = [(k, v) for (k, v) in options.__dict__.items() if not k.startswith('_')]
params = dict(params)

# Run the query.
for item in search(**params):
    for key, value in item.__dict__.items():
        print(f'{key}: {value}')

    print('\n')
