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.
- 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.
Na pasta raiz do seu projeto PHP, rode:
composer require ccuffs/uffs-ca-scraping
Todas as dependências serão instaladas.
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.
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."
}
}
}
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é?
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.
Esse projeto é licenciado nos termos da licença open-source MIT e está disponível de graça.
Veja todas as alterações desse projeto no arquivo CHANGELOG.md.
Abaixo está uma lista de links interessantes e projetos similares: