ccuffs/uffs-ca-scraping

用于自动化获取UFFS大学学术日历的库

dev-master 2022-03-19 21:38 UTC

This package is auto-updated.

Last update: 2024-09-20 03:28:20 UTC


README


uffs-ca-scraping

一个用于抓取南联邦大学学术日历的PHP包。此包的目的是允许创建API,其中包含关于学术社区重要日期的信息,例如重新注册,日记结束等。

✨特性

  • 通过UFFS网站上的列表自动获取学术日历信息;
  • 获取网站上发布的一个或所有学术日历;
  • 无需更改即可获取未来的日历(将由UFFS发布);
  • 结构化数据,便于操作。

🚀 使用

1. 将包添加到您的项目

在您的PHP项目根目录中运行

composer require ccuffs/uffs-ca-scraping

所有依赖项将被安装。

2. 获取所有学术日历

要获取任何学术日历,您将使用AcademicCalendarUFFS类。此类对象具有获取日历的多种方法。

最简单的是获取所有已发布的日历

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

在这种情况下,$calendars将是一个数组,其中每个条目都是一个学术日历(包含标题、获取它的URL和相关的数据/日期)

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"]=> ...
        ...
      }

此方法可能随月份的不同而返回不同的值。例如,如果UFFS发布一个新的学术日历,那么在相应的数组中会返回一个新的条目。

3. 获取特定学术日历

如果您想获取特定学术日历,可以使用UFFS网站上的URL获取数据

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

变量$calendar将包含相关学术日历的数据(与使用fetchCalendars获取的日历的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 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."
      }
    }
}

👩‍💻 开发

如果您打算创建新功能、修复错误等,请按照以下步骤操作。

克隆存储库

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

安装依赖项

composer install

实现所需内容并运行测试

composer test

理论上所有测试都应该通过。如果现有内容出现问题,很可能UFFS更新了网站,您需要更新包。这是什么阶段,对吧?

🤝 贡献

您的帮助非常受欢迎,无论形式如何!请查看CONTRIBUTING.md文件,了解所有贡献项目的方式。例如,建议新功能报告问题/错误发送pull request,或者只是使用项目并评论您的体验。

🎫 许可证

该项目根据MIT开源许可证MIT许可,并免费提供。

🧬 更新日志

查看此项目的所有更改,请参阅文件 CHANGELOG.md

🧪 相似项目

以下是一些有趣的链接和相似项目