{"id":15286628,"url":"https://github.com/ccuffs/uffs-ca-scraping","last_synced_at":"2026-01-24T07:07:00.408Z","repository":{"id":62500407,"uuid":"466840069","full_name":"ccuffs/uffs-ca-scraping","owner":"ccuffs","description":"Biblioteca para obter dados dos calendários acadêmicos da UFFS de forma automatizada","archived":false,"fork":false,"pushed_at":"2022-03-19T21:38:36.000Z","size":53,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-28T01:43:24.847Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ccuffs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-03-06T19:50:00.000Z","updated_at":"2022-03-20T11:33:28.000Z","dependencies_parsed_at":"2022-11-02T09:46:09.206Z","dependency_job_id":null,"html_url":"https://github.com/ccuffs/uffs-ca-scraping","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"ccuffs/template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fuffs-ca-scraping","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fuffs-ca-scraping/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fuffs-ca-scraping/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ccuffs%2Fuffs-ca-scraping/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ccuffs","download_url":"https://codeload.github.com/ccuffs/uffs-ca-scraping/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239550297,"owners_count":19657538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-30T15:17:46.014Z","updated_at":"2026-01-24T07:07:00.369Z","avatar_url":"https://github.com/ccuffs.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\".github/logo.png\" title=\"Logo do projeto\"\u003e\u003cbr /\u003e\n    \u003cimg src=\"https://img.shields.io/maintenance/yes/2022?style=for-the-badge\" title=\"Status do projeto\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/workflow/status/ccuffs/uffs-ca-scraping/ci.uffs.cc?label=Build\u0026logo=github\u0026logoColor=white\u0026style=for-the-badge\" title=\"Build status\"\u003e\n\u003c/p\u003e\n\n# uffs-ca-scraping\n\nUm pacote PHP para raspagem dos calendários acadêmicos da [Universidade Federal da Fronteira Sul](https://www.uffs.edu.br). 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.\n\n## ✨Features\n\n* Obtenção automática de informações dos calendários acadêmicos através da [listagem no site da UFFS](https://www.uffs.edu.br/institucional/pro-reitorias/graduacao/calendario-academico);\n* Obtem um (ou todos) os calendários acadêmicos publicados no site;\n* Não necessita de alterações para obter calendários futuros (que ainda serão publicados pela UFFS);\n* Dados estruturados para facilitar a manipulação.\n\n## 🚀 Utilização\n\n### 1. Adicione o pacote ao seu projeto\n\nNa pasta raiz do seu projeto PHP, rode:\n\n```\ncomposer require ccuffs/uffs-ca-scraping\n```\n\nTodas as dependências serão instaladas.\n\n### 2. Obtenção de todos os calendários acadêmicos\n\nPara 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.\n\nO mais simples é a obtenção de todos os calendários já publicados:\n\n```php\n$ac = new \\CCUFFS\\Scrap\\AcademicCalendarUFFS();\n$calendars = $ac-\u003efetchCalendars();\n```\n\nNesse 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):\n\n```php\narray(3) {\n    [0]=\u003e\n    array(3) {\n      [\"title\"]=\u003e\n      string(193) \"PORTARIA N 2042/GR/UFFS/2022 - Estabelece o ... para o ano letivo de 2022. \"\n      [\"url\"]=\u003e\n      string(61) \"https://www.uffs.edu.br/atos-normativos/portaria/gr/2022-2042\"\n      [\"data\"]=\u003e\n      array(11) {\n        [\"ABRIL / 2022\"]=\u003e array(3) {\n            [\"month\"]=\u003e\n            string(5) \"Abril\"\n            [\"events\"]=\u003e\n            array(13) {\n              [0]=\u003e\n              array(2) {\n                [\"period\"]=\u003e\n                string(1) \"8\"\n                [\"event\"]=\u003e\n                string(176) \"Publicação dos editais com os resultados ...\"\n              }\n              [1]=\u003e\n              array(2) {\n                [\"period\"]=\u003e\n                string(7) \"11 a 18\"\n                [\"event\"]=\u003e\n                string(195) \"Período para matrícula dos selecionados ...\"\n              }\n              ...\n            }\n        [\"MAIO / 2022\"]=\u003e ...\n        [\"JUNHO / 2022\"]=\u003e ...\n        ...\n      }\n    [1]=\u003e \n    array(3) {\n      [\"title\"]=\u003e\n      string(193) \"PORTARIA N 1090/GR/UFFS/2021 - Estabelece o ... para o ano letivo de 2021.\"\n      [\"url\"]=\u003e\n      string(61) \"https://www.uffs.edu.br/atos-normativos/portaria/gr/2021-1090\"\n      [\"data\"]=\u003e\n      array(11) {\n        [\"JANEIRO / 2021\"]=\u003e ...\n        [\"FEVEREIRO / 2021\"]=\u003e ...\n        [\"MARÇO / 2021\"]=\u003e ...\n        ...\n      }\n``` \n\nEsse 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.\n\n### 3. Obtenção de um calendário acadêmico específico\n\nSe 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:\n\n```php\n$ac = new \\CCUFFS\\Scrap\\AcademicCalendarUFFS();\n$calendar = $ac-\u003efetchCalendarByUrl('https://www.uffs.edu.br/atos-normativos/portaria/gr/2022-2042');\n```\n\nA 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:\n\n```php\narray(11) {\n    [\"ABRIL / 2022\"]=\u003e\n    array(3) {\n      [\"month\"]=\u003e\n      string(5) \"Abril\"\n      [\"events\"]=\u003e\n      array(13) {\n        [0]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(1) \"8\"\n          [\"event\"]=\u003e\n          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.\"\n        }\n        [1]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(7) \"11 a 18\"\n          [\"event\"]=\u003e\n          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\"\n        }\n        [2]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(2) \"14\"\n          [\"event\"]=\u003e\n          string(50) \"TÉRMINO DO SEMESTRE LETIVO 2021.2 DA GRADUAÇÃO.\"\n        }\n        [3]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(7) \"15 a 30\"\n          [\"event\"]=\u003e\n          string(31) \"Período de recesso acadêmico.\"\n        }\n        [4]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(2) \"18\"\n          [\"event\"]=\u003e\n          string(110) \"Data limite para encerramento dos Diários de Classe on-line e entrega dos mesmos nas Secretarias Acadêmicas.\"\n        }\n        [5]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(10) \"19/4 a 2/5\"\n          [\"event\"]=\u003e\n          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.\"\n        }\n        [6]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(10) \"19/4 a 2/5\"\n          [\"event\"]=\u003e\n          string(86) \"Período de autoavaliação geral dos estudantes, TAEs, docentes e comunidade externa.\"\n        }\n        [7]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(11) \"19/4 a 31/5\"\n          [\"event\"]=\u003e\n          string(84) \"Período de preenchimento e aprovação do plano de ensino, via Portal do Professor.\"\n        }\n        [8]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(11) \"19/4 a 31/5\"\n          [\"event\"]=\u003e\n          string(117) \"Período para elaboração e entrega do Plano de Adaptações Curriculares ao estudante e ao Setor de Acessibilidade.\"\n        }\n        [9]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(7) \"19 a 24\"\n          [\"event\"]=\u003e\n          string(70) \"Período para rematrícula 2022.1 da graduação, via Portal do Aluno.\"\n        }\n        [10]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(7) \"25 e 26\"\n          [\"event\"]=\u003e\n          string(66) \"Período para análise dos pedidos de rematrícula da graduação.\"\n        }\n        [11]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(7) \"25 a 29\"\n          [\"event\"]=\u003e\n          string(54) \"Período de planejamento do ano letivo da graduação.\"\n        }\n        [12]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(10) \"27/4 a 2/5\"\n          [\"event\"]=\u003e\n          string(96) \"Período para solicitação de ajustes de matrícula 2022.1 da graduação, via Portal do Aluno.\"\n        }\n      }\n      [\"festivities\"]=\u003e\n      array(2) {\n        [0]=\u003e\n        string(46) \"15 - Paixão de Cristo - Feriado Nacional.\"\n        [1]=\u003e\n        string(39) \"21 - Tiradentes - Feriado Nacional.\"\n      }\n    }\n    [\"MAIO / 2022\"]=\u003e\n    array(3) {\n      [\"month\"]=\u003e\n      string(4) \"Maio\"\n      [\"events\"]=\u003e\n      array(14) {\n        [0]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(10) \"19/4 a 2/5\"\n          [\"event\"]=\u003e\n          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.\"\n        }\n        [1]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(10) \"19/4 a 2/5\"\n          [\"event\"]=\u003e\n          string(86) \"Período de autoavaliação geral dos estudantes, TAEs, docentes e comunidade externa.\"\n        }\n        [2]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(11) \"19/4 a 31/5\"\n          [\"event\"]=\u003e\n          string(84) \"Período de preenchimento e aprovação do plano de ensino, via Portal do Professor.\"\n        }\n        [3]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(11) \"19/4 a 31/5\"\n          [\"event\"]=\u003e\n          string(117) \"Período para elaboração e entrega do Plano de Adaptações Curriculares ao estudante e ao Setor de Acessibilidade.\"\n        }\n        [4]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(10) \"27/4 a 2/5\"\n          [\"event\"]=\u003e\n          string(96) \"Período para solicitação de ajustes de matrícula 2022.1 da graduação, via Portal do Aluno.\"\n        }\n        [5]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(1) \"2\"\n          [\"event\"]=\u003e\n          string(60) \"INÍCIO DO SEMESTRE LETIVO 2022/1 DOS CURSOS DE GRADUAÇÃO.\"\n        }\n        [6]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(5) \"3 e 4\"\n          [\"event\"]=\u003e\n          string(75) \"Período para análise dos pedidos de ajustes de matrícula da graduação.\"\n        }\n        [7]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(6) \"5 a 15\"\n          [\"event\"]=\u003e\n          string(68) \"Período para inclusão extraordinária de CCR, via Portal do Aluno.\"\n        }\n        [8]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(6) \"5 a 31\"\n          [\"event\"]=\u003e\n          string(88) \"Período para solicitação de cancelamento de CCRs da graduação, via Portal do Aluno.\"\n        }\n        [9]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(1) \"9\"\n          [\"event\"]=\u003e\n          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.\"\n        }\n        [10]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(7) \"10 e 11\"\n          [\"event\"]=\u003e\n          string(87) \"Período para inscrição no processo seletivo de Aluno-especial da graduação 2022/1.\"\n        }\n        [11]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(2) \"17\"\n          [\"event\"]=\u003e\n          string(65) \"Divulgação do resultado do processo seletivo de Aluno-especial.\"\n        }\n        [12]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(13) \"18/05 a 02/07\"\n          [\"event\"]=\u003e\n          string(65) \"Período para realização das formaturas dos concluintes 2021.2.\"\n        }\n        [13]=\u003e\n        array(2) {\n          [\"period\"]=\u003e\n          string(7) \"23 a 31\"\n          [\"event\"]=\u003e\n          string(78) \"Período para solicitação de exame de suficiência na Secretaria Acadêmica.\"\n        }\n      }\n      [\"festivities\"]=\u003e\n      array(1) {\n        [0]=\u003e\n        string(51) \"1 - Dia Mundial do Trabalho - Feriado Nacional.\"\n      }\n    }\n}\n```\n\n## 👩‍💻 Desenvolvimento\n\nSe você pretende criar features novas, corrigir bugs ou afins, siga o passo a passo abaixo.\n\nClone o repositório:\n\n```\ngit clone https://github.com/ccuffs/uffs-ca-scraping \u0026\u0026 cd uffs-ca-scraping\n```\n\nInstale as dependências:\n\n```\ncomposer install\n```\n\nImplemente o que for necessário e rode os testes:\n\n```\ncomposer test\n```\n\nEm 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é?\n\n## 🤝 Contribua\n\nSua ajuda é muito bem-vinda, independente da forma! Confira o arquivo [CONTRIBUTING.md](CONTRIBUTING.md) para conhecer todas as formas de contribuir com o projeto. Por exemplo, [sugerir uma nova funcionalidade](https://github.com/ccuffs/uffs-ca-scraping/issues/new?assignees=\u0026labels=\u0026template=feature_request.md\u0026title=), [reportar um problema/bug](https://github.com/ccuffs/uffs-ca-scraping/issues/new?assignees=\u0026labels=bug\u0026template=bug_report.md\u0026title=), [enviar um pull request](https://github.com/ccuffs/hacktoberfest/blob/master/docs/tutorial-pull-request.md), ou simplemente utilizar o projeto e comentar sua experiência.\n\n\n## 🎫 Licença\n\nEsse projeto é licenciado nos termos da licença open-source [MIT](https://choosealicense.com/licenses/mit) e está disponível de graça.\n\n## 🧬 Changelog\n\nVeja todas as alterações desse projeto no arquivo [CHANGELOG.md](CHANGELOG.md).\n\n## 🧪 Projetos semelhates\n\nAbaixo está uma lista de links interessantes e projetos similares:\n\n* [uffs-sga-scraping](https://github.com/ccuffs/uffs-sga-scraping)\n* [auth-iduffs](https://github.com/ccuffs/auth-iduffs)\n* [dados-uffs](https://github.com/grintex/dados-uffs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccuffs%2Fuffs-ca-scraping","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fccuffs%2Fuffs-ca-scraping","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fccuffs%2Fuffs-ca-scraping/lists"}