Biblioteca para obter dados dos calendários acadêmicos da UFFS de forma automatizada

Overview


uffs-ca-scraping

Um pacote PHP para raspagem dos calendários acadêmicos da Universidade Federal da Fronteira Sul. A ideia desse pacote é permitir que APIs sejam criadas com informações sobre datas importantes para a comunidade acadêmica, como rematrícula, fechamento de diário, etc.

Features

  • Obtenção automática de informações dos calendários acadêmicos através da listagem no site da UFFS;
  • Obtem um (ou todos) os calendários acadêmicos publicados no site;
  • Não necessita de alterações para obter calendários futuros (que ainda serão publicados pela UFFS);
  • Dados estruturados para facilitar a manipulação.

🚀 Utilização

1. Adicione o pacote ao seu projeto

Na pasta raiz do seu projeto PHP, rode:

composer require ccuffs/uffs-ca-scraping

Todas as dependências serão instaladas.

2. Obtenção de todos os calendários acadêmicos

Para obtem qualquer calendário acadêmico, você utilizará a classe AcademicCalendarUFFS. Um objeto dessa classe possui diversos métodos para obtenção de calendários.

O mais simples é a obtenção de todos os calendários já publicados:

$ac = new \CCUFFS\Scrap\AcademicCalendarUFFS();
$calendars = $ac->fetchCalendars();

Nesse caso, $calendars será um vetor onde cada entrada é um calendário acadêmico (com informação do título dele, a URL onde ele foi obtido e os dados/datas referentes):

array(3) {
    [0]=>
    array(3) {
      ["title"]=>
      string(193) "PORTARIA N 2042/GR/UFFS/2022 - Estabelece o ... para o ano letivo de 2022. "
      ["url"]=>
      string(61) "https://www.uffs.edu.br/atos-normativos/portaria/gr/2022-2042"
      ["data"]=>
      array(11) {
        ["ABRIL / 2022"]=> array(3) {
            ["month"]=>
            string(5) "Abril"
            ["events"]=>
            array(13) {
              [0]=>
              array(2) {
                ["period"]=>
                string(1) "8"
                ["event"]=>
                string(176) "Publicação dos editais com os resultados ..."
              }
              [1]=>
              array(2) {
                ["period"]=>
                string(7) "11 a 18"
                ["event"]=>
                string(195) "Período para matrícula dos selecionados ..."
              }
              ...
            }
        ["MAIO / 2022"]=> ...
        ["JUNHO / 2022"]=> ...
        ...
      }
    [1]=> 
    array(3) {
      ["title"]=>
      string(193) "PORTARIA N 1090/GR/UFFS/2021 - Estabelece o ... para o ano letivo de 2021."
      ["url"]=>
      string(61) "https://www.uffs.edu.br/atos-normativos/portaria/gr/2021-1090"
      ["data"]=>
      array(11) {
        ["JANEIRO / 2021"]=> ...
        ["FEVEREIRO / 2021"]=> ...
        ["MARÇO / 2021"]=> ...
        ...
      }

Esse método tende a retornar valores diferentes conforme os meses passem. Por exemplo, se a UFFS publicar um novo calendário acadêmico, uma nova entrada será retornada no vetor em questão.

3. Obtenção de um calendário acadêmico específico

Se você deseja obter um calendário acadêmico em específico, você pode usar a URL dele no site da UFFS para obter os dados:

$ac = new \CCUFFS\Scrap\AcademicCalendarUFFS();
$calendar = $ac->fetchCalendarByUrl('https://www.uffs.edu.br/atos-normativos/portaria/gr/2022-2042');

A variável $calendar conterá os dados do calendário acadêmico em questão (o equivalente ao campo data de um calendário obtido com fetchCalendars()). Os índices são associativos e represetam o mês e ano do calendário. Por exemplo:

array(11) {
    ["ABRIL / 2022"]=>
    array(3) {
      ["month"]=>
      string(5) "Abril"
      ["events"]=>
      array(13) {
        [0]=>
        array(2) {
          ["period"]=>
          string(1) "8"
          ["event"]=>
          string(176) "Publicação dos editais com os resultados de Transferência Interna e Retorno de Aluno-abandono da UFFS, Transferência Externa e Retorno de Graduado, para ingresso em 2022.1."
        }
        [1]=>
        array(2) {
          ["period"]=>
          string(7) "11 a 18"
          ["event"]=>
          string(195) "Período para matrícula dos selecionados no Processo Seletivo de Transferência Interna e Retorno de Aluno-abandono da UFFS, Transferência Externa e Retorno de Graduado, para ingresso em 2022.1"
        }
        [2]=>
        array(2) {
          ["period"]=>
          string(2) "14"
          ["event"]=>
          string(50) "TÉRMINO DO SEMESTRE LETIVO 2021.2 DA GRADUAÇÃO."
        }
        [3]=>
        array(2) {
          ["period"]=>
          string(7) "15 a 30"
          ["event"]=>
          string(31) "Período de recesso acadêmico."
        }
        [4]=>
        array(2) {
          ["period"]=>
          string(2) "18"
          ["event"]=>
          string(110) "Data limite para encerramento dos Diários de Classe on-line e entrega dos mesmos nas Secretarias Acadêmicas."
        }
        [5]=>
        array(2) {
          ["period"]=>
          string(10) "19/4 a 2/5"
          ["event"]=>
          string(132) "Período para destrancamento ou renovação de trancamento de matrícula da graduação para o semestre 2022.1, via Portal do Aluno."
        }
        [6]=>
        array(2) {
          ["period"]=>
          string(10) "19/4 a 2/5"
          ["event"]=>
          string(86) "Período de autoavaliação geral dos estudantes, TAEs, docentes e comunidade externa."
        }
        [7]=>
        array(2) {
          ["period"]=>
          string(11) "19/4 a 31/5"
          ["event"]=>
          string(84) "Período de preenchimento e aprovação do plano de ensino, via Portal do Professor."
        }
        [8]=>
        array(2) {
          ["period"]=>
          string(11) "19/4 a 31/5"
          ["event"]=>
          string(117) "Período para elaboração e entrega do Plano de Adaptações Curriculares ao estudante e ao Setor de Acessibilidade."
        }
        [9]=>
        array(2) {
          ["period"]=>
          string(7) "19 a 24"
          ["event"]=>
          string(70) "Período para rematrícula 2022.1 da graduação, via Portal do Aluno."
        }
        [10]=>
        array(2) {
          ["period"]=>
          string(7) "25 e 26"
          ["event"]=>
          string(66) "Período para análise dos pedidos de rematrícula da graduação."
        }
        [11]=>
        array(2) {
          ["period"]=>
          string(7) "25 a 29"
          ["event"]=>
          string(54) "Período de planejamento do ano letivo da graduação."
        }
        [12]=>
        array(2) {
          ["period"]=>
          string(10) "27/4 a 2/5"
          ["event"]=>
          string(96) "Período para solicitação de ajustes de matrícula 2022.1 da graduação, via Portal do Aluno."
        }
      }
      ["festivities"]=>
      array(2) {
        [0]=>
        string(46) "15 - Paixão de Cristo - Feriado Nacional."
        [1]=>
        string(39) "21 - Tiradentes - Feriado Nacional."
      }
    }
    ["MAIO / 2022"]=>
    array(3) {
      ["month"]=>
      string(4) "Maio"
      ["events"]=>
      array(14) {
        [0]=>
        array(2) {
          ["period"]=>
          string(10) "19/4 a 2/5"
          ["event"]=>
          string(132) "Período para destrancamento ou renovação de trancamento de matrícula da graduação para o semestre 2022.1, via Portal do Aluno."
        }
        [1]=>
        array(2) {
          ["period"]=>
          string(10) "19/4 a 2/5"
          ["event"]=>
          string(86) "Período de autoavaliação geral dos estudantes, TAEs, docentes e comunidade externa."
        }
        [2]=>
        array(2) {
          ["period"]=>
          string(11) "19/4 a 31/5"
          ["event"]=>
          string(84) "Período de preenchimento e aprovação do plano de ensino, via Portal do Professor."
        }
        [3]=>
        array(2) {
          ["period"]=>
          string(11) "19/4 a 31/5"
          ["event"]=>
          string(117) "Período para elaboração e entrega do Plano de Adaptações Curriculares ao estudante e ao Setor de Acessibilidade."
        }
        [4]=>
        array(2) {
          ["period"]=>
          string(10) "27/4 a 2/5"
          ["event"]=>
          string(96) "Período para solicitação de ajustes de matrícula 2022.1 da graduação, via Portal do Aluno."
        }
        [5]=>
        array(2) {
          ["period"]=>
          string(1) "2"
          ["event"]=>
          string(60) "INÍCIO DO SEMESTRE LETIVO 2022/1 DOS CURSOS DE GRADUAÇÃO."
        }
        [6]=>
        array(2) {
          ["period"]=>
          string(5) "3 e 4"
          ["event"]=>
          string(75) "Período para análise dos pedidos de ajustes de matrícula da graduação."
        }
        [7]=>
        array(2) {
          ["period"]=>
          string(6) "5 a 15"
          ["event"]=>
          string(68) "Período para inclusão extraordinária de CCR, via Portal do Aluno."
        }
        [8]=>
        array(2) {
          ["period"]=>
          string(6) "5 a 31"
          ["event"]=>
          string(88) "Período para solicitação de cancelamento de CCRs da graduação, via Portal do Aluno."
        }
        [9]=>
        array(2) {
          ["period"]=>
          string(1) "9"
          ["event"]=>
          string(181) "Data de publicação do edital do processo seletivo de Aluno-especial da graduação, se houver viabilidade de realização das inscrições devido aos efeitos da Pandemia Covid-19."
        }
        [10]=>
        array(2) {
          ["period"]=>
          string(7) "10 e 11"
          ["event"]=>
          string(87) "Período para inscrição no processo seletivo de Aluno-especial da graduação 2022/1."
        }
        [11]=>
        array(2) {
          ["period"]=>
          string(2) "17"
          ["event"]=>
          string(65) "Divulgação do resultado do processo seletivo de Aluno-especial."
        }
        [12]=>
        array(2) {
          ["period"]=>
          string(13) "18/05 a 02/07"
          ["event"]=>
          string(65) "Período para realização das formaturas dos concluintes 2021.2."
        }
        [13]=>
        array(2) {
          ["period"]=>
          string(7) "23 a 31"
          ["event"]=>
          string(78) "Período para solicitação de exame de suficiência na Secretaria Acadêmica."
        }
      }
      ["festivities"]=>
      array(1) {
        [0]=>
        string(51) "1 - Dia Mundial do Trabalho - Feriado Nacional."
      }
    }
}

👩‍💻 Desenvolvimento

Se você pretende criar features novas, corrigir bugs ou afins, siga o passo a passo abaixo.

Clone o repositório:

git clone https://github.com/ccuffs/uffs-ca-scraping && cd uffs-ca-scraping

Instale as dependências:

composer install

Implemente o que for necessário e rode os testes:

composer test

Em teoria todos os testes devem passar. Se algo existente estiver quebrando, muito provavelmente a UFFS atualizou o site e você precisará atualizar o pacote. Que fase, né?

🤝 Contribua

Sua ajuda é muito bem-vinda, independente da forma! Confira o arquivo CONTRIBUTING.md para conhecer todas as formas de contribuir com o projeto. Por exemplo, sugerir uma nova funcionalidade, reportar um problema/bug, enviar um pull request, ou simplemente utilizar o projeto e comentar sua experiência.

🎫 Licença

Esse projeto é licenciado nos termos da licença open-source MIT e está disponível de graça.

🧬 Changelog

Veja todas as alterações desse projeto no arquivo CHANGELOG.md.

🧪 Projetos semelhates

Abaixo está uma lista de links interessantes e projetos similares:

You might also like...
PHP 7+ Payment processing library. It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc. - provided by Forma-Pro

Supporting Payum Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our

Message Queue, Job Queue, Broadcasting, WebSockets packages for PHP, Symfony, Laravel, Magento. DEVELOPMENT REPOSITORY - provided by Forma-Pro
Message Queue, Job Queue, Broadcasting, WebSockets packages for PHP, Symfony, Laravel, Magento. DEVELOPMENT REPOSITORY - provided by Forma-Pro

Supporting Enqueue Enqueue is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and

Um encurtador de URL's gratuito e Open source. Torne suas URL's um tanto pequenas forma rápida e gratuita

Slim Framework 4 Skeleton Application Use this skeleton application to quickly setup and start working on a new Slim Framework 4 application. This app

Crea rutas en php de la forma mas fácil posible.
Crea rutas en php de la forma mas fácil posible.

SimpleRouter-php Te permitirá crear un routing de la forma mas fácil posible, recibiendo todo lo enviado por un usuario a través de un callback. Prime

Atividade de transações em banco de dados II

Transaction php with postgres on csv O desafio aqui é implementar uma transação em diferentes linguagens de programação. Ao implementar uma transação

 Formulário de contato utilizando HTML, CSS, Bootstrap, PHP, Javascript e conexão ao banco de dados MySQL.
Formulário de contato utilizando HTML, CSS, Bootstrap, PHP, Javascript e conexão ao banco de dados MySQL.

Formulário de Contato Tecnologias | Projeto | Licença | 🚀 Tecnologias Esse projeto foi desenvolvido com as seguintes tecnologias: HTML CSS PHP JavaSc

💻 ➔  Projeto de um website que possuí um Banco de Dados, feito juntamente com minha amiga Helena (hmiranda99).
💻 ➔ Projeto de um website que possuí um Banco de Dados, feito juntamente com minha amiga Helena (hmiranda99).

💈 Barber Shop Duhel Website feito para o projeto final do 2º Módulo da matéria de PW2. Visite o site clicando aqui 📎 Autores 👨‍💻 Helena Miranda 👨

PHP 7+ Payment processing library. It offers everything you need to work with payments: Credit card & offsite purchasing, subscriptions, payouts etc. - provided by Forma-Pro

Supporting Payum Payum is an MIT-licensed open source project with its ongoing development made possible entirely by the support of community and our

Projeto de uma página de login desenvolvido totalmente em PHP (puro) - com conexão a banco de dados MySQL.

Projeto Página de Login com conexão à Banco de dados: Tecnologias Utilizadas: HTML(Em documento PHP); PHP (Sem a utilização de Frameworks - puro); MyS

Dashboard autônoma que mostra os dados gerais da campanha de vacinação contra a Covid-19 do Estado de Mato-Grosso

Vacinometro Covid-19 MT Web App Demo: https://vacinometro-mt.netlify.app/ Dashboard que mostra o progresso da campanha de vacinação da Covid-19 no est

Livro de introdução ao PHP orientado a objetos com MVC de forma prática
Livro de introdução ao PHP orientado a objetos com MVC de forma prática

phpoo-livro Livro de introdução ao PHP orientado a objetos usando MVC com rotas. Porque de forma prática, por conta da criação, passo a passo, de um a

Este es un sitema bibliotecario para registro de adquisiciones y prestamos para INATEC Siuna

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Desafio prático para desenvolvedores fullstack que desejam entrar para nosso time.

Instruções para realizar os exercícios Essa avaliação é composta por três partes, que visam servir de base para análise das competências dos candidato

PHP com duas funções: uma para gerar a linha do Pix Copia e Cola e outra para gerar o QRCode baseado no retorno da primeira função.

pix-copiacola-qrcode Pix.php - Funções para gerar, de forma simples, a linha "Copia e Cola" e o QRCode Necessita PHP 7 ou superior Para o QRCode usa a

Scripts em PHP para um processo seletivo, onde trabalho com lógica básica para testar minhas competências na linguagem referida.

Processo-Seletivo-PHP-Junior Scripts em PHP para um processo seletivo, onde trabalho com lógica básica para testar minhas competências na linguagem re

Plugin de Wordpress para criar um Hacker News-like para o ManualdoUsuario.net

🪐 Órbita Plugin de Wordpress para criar um painel de debates baseado em links, similar ao Hacker News, para o Manual do Usuário. Rodar o projeto Requ

Paquete laravel para leer indicadores previsionales desde Previred y tramos de impuesto de 2da categoría desde SII
Paquete laravel para leer indicadores previsionales desde Previred y tramos de impuesto de 2da categoría desde SII

Laravel PreviScraper Indicadores previsionales Chile 🇨🇱 Indicadores previsionales desde Previred y tramos de impuesto desde SII Los datos se obtiene

Herramienta para limpiar Comprobantes Fiscales Digitales v3.3

phpcfdi/cfdi-cleaner Herramienta para limpiar Comprobantes Fiscales Digitales por Internet mexicanos. 🇺🇸 The documentation of this project is in spa

API simples utilizando workerman(assincrono) usando TDD, DDD e boas praticas para escalonamento horizontal.

Motivos para usar workerman Além de mais rápido que o swoole, não necessita de libs externas, porém o ponto negativo é não possuir corrotinas, sendo n

Owner
CC - UFFS
Curso de Ciência da Computação da Universidade Federal da Fronteira Sul, campus Chapecó
CC - UFFS
Jéssica Paula 7 Aug 12, 2022
Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

CRUD PHP MVC Criação de um mini sistema de registro, onde será aplicado o processo de adição, atualização e remoção de dados do banco de dados MySQL.

Ricardo Santos 1 Nov 15, 2021
Biblioteca PHP para validação de padrões brasileiros

BrCommons Validators BrCommons validator is a set of usefull validators that helps you develop fast and realiable code. Installation by composer Run c

Fernando Rech 3 Oct 2, 2021
Biblioteca para busca (on-line) de estados e os seus respectivos municípios via API disponibilizada pelo IBGE.

LocalidadeX Biblioteca para busca (on-line) e listagem de estados e seus respectivos municípios, efetua a consulta via API do IBGE, disponibilizando o

Estênio Mariano 3 Feb 12, 2022
Loja virtual fictícia para compra de produtos e estilização dos mesmos. Desenvolvido com as tecnologias: HTML, CSS, PHP, CODEIGNITER, JavaScript, Bootstrap e Mysql.

StampGeek Loja virtual fictícia para compra de produtos e estilização dos mesmos. Desenvolvido com as tecnologias: HTML, CSS, PHP, CODEIGNITER, JavaSc

Pablo Silva 1 Jan 13, 2022
Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de login, guarda de rotas e cadastro de usuários no banco de dados MySQL

Times-de-Futebol-BR Descrição do Projeto Aplicação criada com Angular e Laravel em conjunto para fazer um treinamento de autenticação com sistema de l

Lucas Henrique Pessutto 5 Mar 14, 2022
Teste dos mano do pay lá ft. Lumen Framework

Teste dos caras lá pay Avisos antes de começar Crie um repositório no seu GitHub sem citar nada relacionado a empresa dos cara lá. (CHECK) Faça seus c

Daniel Reis 24 Nov 7, 2022
Crud en Laravel 8 con dos tablas relacionadas

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

José Manríquez 1 Oct 22, 2021
🦅 Um site (completo) feito em Laravel (o famoso "framework dos artesãos da web)

WebSite feito em Laravel "o framework dos artesãos da web" Pacotes usados Jetstream Livewire Funcionalidades Baseado no projeto dessa playlist: Curso

Érik Freitas 2 Nov 23, 2021
Este Repositório guarda arquivos dos meus primeiros passos utilizando o Framework Laravel. Curso: Matheus Battisti.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

null 1 Jun 12, 2022