Código-fonte para DadosAbertosBrasil.ibge._cidades

from typing import Iterator, Optional

from ..utils import Get, parse


class _Fotografia:
    """Metadados de uma fotografia da bblioteca do IBGE.

    Attributes
    ----------
    ano : str
        Ano que a fotografia foi tirada.

    autor : str
        Autor(a) da fotografia.

    codigo_municipal : str
        Código IBGE da localidade.

    id : str
        Código da fotografia.

    link : str
        Nome do arquivo na biblioteca do IBGE.

    titulo : str
        Título da fotografia.

    Methods
    -------
    __call__(altura:int=None, largura:int=None) -> str
        Gera a URL da fotografia.

    Examples
    --------
    Instanciar a galeria de fotos de Fortaleza.

    >>> fortaleza = ibge.Galeria(2304400)

    Visualizar lista de fotografias dentro da galeria.

    >>> fortaleza.fotografias

    Selecionar primeira fotografia da galeria.

    >>> foto = fortaleza[0]

    Gerar uma URL da fotografia com altura máxima de 500 pixels.

    >>> foto(altura=500)
    'https://servicodados.ibge.gov.br/api/v1/resize/image?maxwidth=600&max...'

    Notes
    -----
    API original do IBGE Cidades
        https://cidades.ibge.gov.br/

    """

    def __init__(self, dados):
        for k in dados:
            self.__setattr__(k.lower(), dados[k])

    def __repr__(self) -> str:
        return f"<DadosAbertosBrasil.ibge: Fotografia {self.id}>"

    def __str__(self) -> str:
        return f"Fotografia {self.id}"

    def __call__(
        self,
        altura: Optional[int] = None,
        largura: Optional[int] = None,
    ) -> str:
        """Gera a URL da foto.

        Parameters
        ----------
        altura : int, optional
            Altura máxima da fotografia em pixels.
        largura : int, optional
            Largura máxima da fotografia em pixels.

        Returns
        -------
        str
            URL da fotografia.

        """

        if altura is None and largura is None:
            altura, largura = 600, 600
        elif altura is None:
            altura = largura
        elif largura is None:
            largura = altura
        return f"https://servicodados.ibge.gov.br/api/v1/resize/image?maxwidth={largura}&maxheight={altura}&caminho=biblioteca.ibge.gov.br/visualizacao/fotografias/GEBIS%20-%20RJ/{self.link}"


[documentos] class Galeria: """Gera uma galeria de fotos da localidade desejada. Parameters ---------- localidade : int Código IBGE da localidade. O código pode ser obtido com auxílio da função `ibge.localidades`. verificar_certificado : bool, default=True Defina esse argumento como `False` em caso de falha na verificação do certificado SSL. Attributes ---------- fotografias : list[ibge._Fotografia] Lista de fotografias da localidade. localidade : int Código IBGE da localidade. Examples -------- Instanciar a galeria de fotos de Fortaleza. >>> fortaleza = ibge.Galeria(2304400) Visualizar lista de fotografias dentro da galeria. >>> fortaleza.fotografias Selecionar primeira fotografia da galeria. >>> foto = fortaleza[0] Gerar uma URL da fotografia com altura máxima de 500 pixels. >>> foto(altura=500) 'https://servicodados.ibge.gov.br/api/v1/resize/image?maxwidth=600&max...' Notes ----- API original do IBGE Cidades https://cidades.ibge.gov.br/ """ def __init__(self, localidade: int | str, verificar_certificado: bool = True): self.verify = verificar_certificado self.localidade = parse.localidade(localidade) galeria = self._get_photos() self.fotografias = [_Fotografia(galeria[foto]) for foto in galeria] def __iter__(self) -> Iterator: return iter(self.fotografias) def __len__(self) -> int: return len(self.fotografias) def __getitem__(self, slice): return self.fotografias[slice] def __repr__(self) -> str: return f"<DadosAbertosBrasil.ibge: Galeria de fotos da localidade {self.localidade}>" def __reversed__(self) -> list: return reversed(self.fotografias) def __str__(self) -> str: return f"Galeria {self.localidade}" def _get_photos(self) -> dict: return Get( endpoint="ibge", path=["biblioteca"], params={ "codmun": self.localidade, "aspas": "3", "fotografias": "1", "serie": "Acervo dos Trabalhos Geográficos de Campo|Acervo dos Municípios brasileiros", }, verify=self.verify, ).json
[documentos] class Historia: """Histórico de uma localidade. Parameters ---------- localidade : int or str Código da localidade. Este código pode ser obtido com auxílio da função `ìbge.localidades`. verificar_certificado : bool, default=True Defina esse argumento como `False` em caso de falha na verificação do certificado SSL. Attributes ---------- ano : int Ano da publicação do histórico. estado : str Nome do estado no formato 'Estado - UF'. estado1 : str Nome do estado sem a sigla. formacao_administrativa : str Descrição da formação administrativa da localidade. gentilico : str Gentílico dos naturais desta localidade. historico : str Texto descrevendo a história da localidade. historico_fonte : str Fonte do texto do atributo `historico`. localidade : int Código da localidade. municipio : str Nome do município. Raises ------ DAB_LocalidadeError Caso o código da localidade seja inválido. Examples -------- Capturar o histórico de Belo Horizonte e a fonte do texto. >>> bh = ibge.Historia(localidade=310620) >>> bh.historico 'Foi à procura de ouro que, no distante 1701, o bandeirante João Leite...' >>> bh.historico_fonte 'Belo Horizonte (MG). Prefeitura. 2014. Disponível em: ...' Capturar o histórico do estado de Minas Gerais >>> mg = ibge.Historia(52) Notes ----- API original do IBGE Cidades https://cidades.ibge.gov.br/ """ def __init__(self, localidade: int | str, verificar_certificado: bool = True): self.localidade = parse.localidade(localidade) self.verify = verificar_certificado d = self._get_historia() self._set_attribs(d) def __repr__(self) -> str: return f"<DadosAbertosBrasil.ibge: História da localidade {self.localidade}>" def __str__(self) -> str: return f"História ({self.localidade})" def _get_historia(self) -> dict: return Get( endpoint="ibge", path=["biblioteca"], params={"aspas": "3", "codmun": self.localidade}, verify=self.verify, ).json def _set_attribs(self, d: dict) -> None: for attribs in d: for k in d[attribs]: self.__setattr__(k.lower(), d[attribs][k])