Skip to main content

Obtenha os dados dos postos de vacinação da covid-19 em São Paulo

Project description

Logo filometro
Filometro

Metadata
PyPI License MIT Total Downloads

Status
PyPI - Status Tests - Status

Index

O que é?

Filometro é um wrapper (embrulho) do site De Olho Na Fila, de modo a disponibilizar acesso a diversos dados sobre os postos de vacinação em todo o Estado de São Paulo.

Com esse pacote você tem acesso aos seguintes dados dos postos:

  • Equipamento
  • Endereço
  • Contatos
  • Distrito
  • Zona
  • Os imunizantes disponíveis
  • Situação da fila
  • Modalidade
  • Data e hora da última atualização

As informações são exatamente as mesmas disponíveis no site oficial (De Olho na Fila), porém disponibilizados por meio de um pacote Python simples para facilitar a coleta, manipulação e filtragem dos dados. Consulte a documentação para saber como utiliza-lo.

Instalação

Instale o pacote usando pip:

$ pip install filometro

Demo

Obtenha uma lista de postos que tem disponível em seu estoque o imunizante da PFizer:

>>> from filometro import Filometro
>>> from filometro import Immunizing

>>> filometro = Filometro()

>>> postos = filometro.by_immunizing(Immunizing.PFIZER)
>>> postos
[
    Posto(equipment='UBS HUMAITÁ - DR. JOÃO DE AZEVEDO LAGE', last_update='2021-12-22 12:51:18.653'),
    ...  # comprimido
    Posto(equipment='UBS SANTA CRUZ', last_update='2021-12-22 12:46:35.190')
]

Verifique a documentação para obter informações sobre os atributos e métodos disponíveis.

Documentação

Essa é a documentação completa do pacote Filometro. Nessa seção contém o necessário para utilizar o pacote completamente.

Como utilizar?

Para utilizar o pacote é necessário importar a classe Filometro e instanciar um objeto dessa mesma classe:

>>> from filometro import Filometro
>>> filometro = Filometro()

Quando o objeto é instanciado ocorre a coleta dos dados no site De Olho na Fila e, quando finalizado, são armazenados na memória em um atributo de uso interno do objeto. Para obter todos os dados é aconselhado utilizar o método all_postos:

>>> postos = filometro.all_postos()

Uma lista de objetos do tipo Posto será retornada. O objeto Posto contém atributos que armazenam as informações de um posto. Por exemplo, é possível verificar o endereço de um posto acessando o atributo address:

>>> posto = postos[10]  # Obtendo o posto na posição 10 da lista de postos
>>> posto.address

Também é possível obter uma lista de postos conforme um requisito de filtragem, para isso existem métodos que usam identificadores (Enumeração ou Enum para os íntimos) específicos para realizar a filtragem. Você deve importar o identificador que deseja utilizar e passar como argumento para o método de filtragem. Por exemplo, caso você queira obter uma lista de postos que estão localizados na zona Sul de São Paulo:

>>> from filometro import Zone
>>> filometro.by_zone(Zone.SUL)

Para atualizar os dados dos postos armazenados em memória é indicado utilizar o método reload:

>>> filometro.reload()

Esse método recarrega todos os dados com as informações mais recentes disponíveis no site oficial.

Sempre que precisar, utilize a função help() em alguma classe, objeto ou método para obter ajuda:

>>> help(filometro)

Objeto Posto

Todos os métodos tem como retorno uma lista de dados, esses dados são representados no objeto Posto. Veja quais são seus atributos:

>>> posto.equipment             # Equipamento da unidade.
>>> posto.address               # Endereço onde está localizado.
>>> posto.district              # Distrito onde está localizado.
>>> posto.zone                  # Zona onde está localizado.
>>> posto.maps                  # Um link do Google Maps para o endereço.
>>> posto.contacts              # Uma lista de contatos, se houver.
>>> posto.astrazeneca           # '0' ou '1' caso astrazeneca não esteja ou esteja disponível.
>>> posto.coronavac             # '0' ou '1' caso coronavac não esteja ou esteja disponível.
>>> posto.coronavac_pediatrica  # '0' ou '1' caso coronavac pediátrica não esteja ou esteja disponível.
>>> posto.pfizer                # '0' ou '1' caso pfizer não esteja ou esteja disponível.
>>> posto.pfizer_baby           # '0' ou '1' caso pfizer baby não esteja ou esteja disponível.
>>> posto.pfizer_bivalente      # '0' ou '1' caso pfizer bivalente não esteja ou esteja disponível.
>>> posto.pfizer_pediatrica     # '0' ou '1' caso pfizer pediátrica não esteja ou esteja disponível.
>>> posto.janssen               # '0' ou '1' caso janssen não esteja ou esteja disponível.
>>> posto.influenza             # '0' ou '1' caso influenza não esteja ou esteja disponível.
>>> posto.intercambialidade     # '0' ou '1' caso intercambialidade não esteja ou esteja disponível.
>>> posto.situation             # A última atualização da situação da fila.
>>> posto.modality              # A modalidade da unidade.
>>> posto.last_update           # Data e hora da última atualização no formato AAAA-MM-DD HH:MM:SS.MS.

Métodos da classe Filometro

>>> filometro.reload()             # Atualizar dados em memória.
>>> filometro.all_postos()         # Obter todos os postos.
>>> filometro.all_postos_open()    # Obter todos os postos abertos.
>>> filometro.all_postos_closed()  # Obter todos os postos fechados.
>>> filometro.by_zone(...)         # Obter todos postos de uma zona.
>>> filometro.by_modality(...)     # Obter todos postos de uma modalidade.
>>> filometro.by_district(...)     # Obter todos postos de um distrito.
>>> filometro.by_situation(...)    # Obter todos postos por situação.
>>> filometro.by_immunizing(...)   # Obter todos postos que possuem um imunizante.
>>> filometro.to_dict()            # Obter todos postos convertidos para `dict`.

Identificadores para filtragem

Todos os identificadores estão disponíveis para uso atráves da interface príncipal do pacote:

>>> from filometro import Zone, Modality, District, Situation, Immunizing

Zone - Representa as zonas do Estado de São Paulo:

>>> Zone.SUL
>>> Zone.OESTE
>>> Zone.NORTE
>>> Zone.LESTE
>>> Zone.CENTRO
>>> Zone.MEGA_DRIVES

Modality - Representa as modalidades dos postos:

>>> Modality.PARQUES
>>> Modality.POSTO_FIXO
>>> Modality.POSTO_VOLANTE
>>> Modality.DRIVE_THRU
>>> Modality.MEGAPOSTO

District - Representa todos os distritos do Estado de São Paulo que disponíbilizam um imunizante em seus postos. Como há muitos distritos, use a função dir ou help para mais infomações:

>>> help(District)
>>> dir(District)

Situation - Representa as situações das filas nos postos:

>>> Situation.NAO_FUNCIONANDO
>>> Situation.SEM_FILA
>>> Situation.FILA_PEQUENA
>>> Situation.FILA_MEDIA
>>> Situation.FILA_GRANDE

Immunizing - Representa os imunizantes disponíveis nos postos no Estado de São Paulo:

>>> Immunizing.ASTRAZENECA
>>> Immunizing.INTERCAMBIALIDADE
>>> Immunizing.PFIZER
>>> Immunizing.PFIZER_BABY
>>> Immunizing.PFIZER_BIVALENTE
>>> Immunizing.PFIZER_PEDIATRICA
>>> Immunizing.CORONAVAC
>>> Immunizing.CORONAVAC_PEDIATRICA
>>> Immunizing.JANSSEN
>>> Immunizing.INFLUENZA

Contribuições

Toda contribuição é super bem-vinda!

Abaixo mostro com o que você pode contribuir:

  • Encontrou algum bug, quer propor uma nova funcionalidade ou conversar sobre o projeto? Abra uma Issue e descreva seu caso.

  • Existe uma issue aberta e você quer resolve-la, quer implementar uma nova funcionalidade ou melhorar a documentação? Faça suas adições e me envie um Pull Request

  • Gostou do projeto, mas não quer ou ainda não consegue contribuir com ele? Considere deixar uma estrela ⭐ para o Filometro

Obrigado pelo interesse em colaborar de alguma forma com o projeto ❤

Licença

Filometro utiliza a licença MIT em todo seu código, confira suas condições em MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

filometro-1.2.0.tar.gz (14.0 kB view hashes)

Uploaded source

Built Distribution

filometro-1.2.0-py3-none-any.whl (11.4 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page