nathnat / pronote-php
PHP API 封装 PRONOTE 学生管理系统。
Requires
- phpseclib/phpseclib: ~3.0
This package is auto-updated.
Last update: 2024-09-21 20:25:55 UTC
README
介绍
一个 PHP 库,用于从学生账户访问 PRONOTE 的数据。该库使用 PHP 利用 Pronote 的内部 API。
可获取的数据
- Pronote、学校和用户信息
- 课程表
- 作业
- 成绩
- 缺席/惩罚/迟到
安装
该库可以通过 Composer 安装,并在 Packagist 上提供 nathnat/pronote-php
$ composer require nathnat/pronote-php
使用方法
首先,使用 Composer 在代码开头包含库
require 'vendor/autoload.php'; use Pronote\Pronote;
该库的使用非常简单直观,用于连接、获取成绩、课程表等。
示例
如果您想直接开始,以下是一个简单的使用示例
<?php require 'vendor/autoload.php'; use Pronote\Pronote; // Initialise le client $client = new Pronote('https://demo.index-education.net/pronote/eleve.html', 'demonstration', 'pronotevs', /*, cas*/); // Connecte le client à Pronote $client->login(); echo "Connecté en tant que {$client->user->name}\n"; $today = new DateTime(); $timetable = $client->timetable($today); // Récupére l'emploi du temps du jour foreach ($client->periods as $period) { $grades = $period->grades(); foreach ($grades as $grade) { // Parcourt toutes les notes echo "{$grade['value']}/{$grade['scale']}\n"; // Affiche la note dans ce style : 15/20 } }
以下是一个文档,介绍了大多数主要功能。
初始化客户端
客户端对应于 Pronote 类的一个实例。客户端一次只能连接到一个 Pronote 会话。
// Initialise le client $client = new Pronote('https://demo.index-education.net/pronote/eleve.html', 'demonstration', 'pronotevs' /*, cas*/); // Connecte le client à Pronote $client->login();
支持的地区账户
仅在你无法直接通过 Pronote 连接,但必须通过特殊地区界面时。
如果您可以直接在 Pronote 界面登录,该 API 应该适用于任何学院。
目前支持的地区账户很少。
以下是目前支持的学院列表
案例列表
在初始化客户端时必须提供案例。所有案例都可以通过 PronoteCas
类访问。
// On inclut la classe use Pronote\PronoteCas; // Initialise le client avec ici l'interface de l'Ile de France $client = new Pronote( 'https://demo.index-education.net/pronote/eleve.html', 'demonstration', 'pronotevs', PronoteCas::ILE_DE_FRANCE );
获取课程表
timetable()
函数返回学生在两个日期之间的课程,按时间顺序排序。如果未提供第二个日期,则仅返回第一个日期的课程。
注意:日期必须是 PHP 原生类的实例 DateTime
$today = new DateTime(); $timetable = $client->timetable($today); // Récupére l'emploi du temps du jour // Récupère les cours entre le 25 février 2023 et le 5 mars 2023 $timetable = $client->timetable( DateTime::createFromFormat('d/m/Y', '25/02/2023'), DateTime::createFromFormat('d/m/Y', '5/03/2023'), );
该函数返回一个具有此形状的表格
Array ( [0] => Array ( [start] => 27/02/2023 09:00:00 // L'heure de début du cours [end] => 27/02/2023 10:00:00 // L'heure de fin du cours [color] => #2338BB // La couleur de la case du cours sur Pronote [status] => 'Cours annulé' // Le statut du cours (Cours annulé, Prof. absent, etc.) [subject] => FRANCAIS // La matière étudiée [teacher] => GALLET B. // Le nom du professeur [room] => 105 // La classe où a lieu le cours ) ...
获取作业
与 ->timetable()
函数类似,允许获取作业的 ->homework()
函数返回两个日期之间的作业。
$today = new DateTime(); $timetable = $client->homework($today); // Récupére les devoirs du jour // Récupère les devoirs entre le 25 février 2023 et le 5 mars 2023 $timetable = $client->homework( DateTime::createFromFormat('d/m/Y', '25/02/2023'), DateTime::createFromFormat('d/m/Y', '5/03/2023'), );
该函数返回一个具有此形状的表格
Array ( [0] => Array ( [subject] => FRANCAIS // La matière du devoir [description] => <div>Exercice 36 page 132</div> // La description du devoir [backgroundColor] => #FEA7FC // La couleur de fond du devoir [isDone] => false // Si le devoir est fait [date] => 15/03/2023 // La date de rendu du devoir ) ...
周期
周期是学校提供的学年周期(第一学期、第二学期、白卷考试等)。周期存储在 $client->periods
表格中。每个周期允许访问相关的数据,如成绩、缺席和迟到。
获取学生的成绩
成绩可以通过周期获取。
存在三个函数
-
$period->grades()
允许获取以下形式的笔记表格Array ( [0] => Array ( [title] => DS1 Civilisations // La description de la note [value] => 13 // La note de l'élève [scale] => 20 // Le barème [subject] => HISTOIRE-GEOGRAPHIE // La matière de la note [average] => 11,89 // La moyenne de la classe [max] => 15 // La note la plus basse dans la classe [min] => 10 // La note la plus haute dans la classe [coefficient] => 2 [date] => 26/09/2022 // La date de la note [isBonus] => false // Si la note est bonus : seul les points au dessus de 10 comptent [isOptionnal] => false // Si la note est optionnel : elle compte seulement si elle augmente la moyenne [isScaledTo20] => false // Si la note est ramené sur 20 ) ...
-
$period->gradesBySubject()
允许按科目获取笔记Array () [0] => Array ( [name] => ANGLAIS LV1 // Le nom de la matière [average] => Array ( [student] => 17 // La moyenne de l'élève dans la matière [class] => 13,79 // La moyenne de la classe dans la matière [min] => 6,5 // La plus basse moyenne de la classe [max] => 18 // La plus haute moyenne de la classe [scale] => 20 // Le barème des moyennes ) [color] => #B76AFD // La couleur de fond de la matière dans l'emploi du temps [grades] => Array () // Un tableau contenant toutes les notes de la matière au même format que celles renvoyées par la fonction `->grades()` ) ...
-
最后,
$period->overallAverage()
允许获取学生的平均分$moyennes = $client->periods[1]->overallAverage(); echo 'Moyennes du ' . $client->periods[1]->name . " : \n"; print_r($moyennes);
Moyennes du Trimestre 2 : Array ( [student] => 14,33 // La moyenne de l'élève [class] => 11,54 // La moyenne de la classe [scale] => 20 // Le barème des moyennes )
获取学生的缺席/迟到/惩罚
- 可以通过周期获取成绩
$absences = $client->periods[1]->absences(); // Fonction pour récupérer les absences renvoit : Array ( [0] => Array ( [from] => 02/02/2023 09:00:00 // La date de début de l'absence [to] => 02/02/2023 10:00:00 // La date de fin de l'absence [isJustified] => true // Si l'absence est justifiée [hoursMissed] => 1h00 // Le nombre d'heure ratée [daysMissed] => 1 // Le nombre de jour raté [reasons] => Array // La liste des raisons de l'absene ( [0] => L-Rendez-vous médical ) ) ...
- 可以通过周期获取迟到
$retards = $client->periods[1]->delays(); // Fonction pour récupérer les retards renvoit : Array ( [0] => Array ( [date] => 27/01/2023 09:00:00 // La date du retard [minutesMissed] => 5 // Le nombre de minute ratée [justified] => false // Si l'absence est justifié [justification] => // La justification du retard [reasons] => Array // La liste des raisons du retard ( [0] => PROBLEME DE REVEIL ) ) ...
- 可以通过周期获取惩罚
$punitions = $client->periods[1]->punishments(); // Fonction pour récupérer les punitions renvoit : Array ( [0] => Array ( [given] => 01/09/2022 // La date à laquelle la punition a été donnée [isExclusion] => false // Si la punition est une exclusion [isDuringLesson] => true // Si la punition est durant un cours [homework] => Exercices 1 à 18 p283-284 // Les devoirs donnés par la punition [homeworkDocuments] => Array() // Les documents attachés pour ces devoirs [circonstances] => Insultes suite à une réprimande // Les circonstances de la punition [circonstancesDocuments] => Array() // Les documents pouvant accompagné les circonstances [nature] => Retenue // La nature de la punition [reasons] => Array // La liste des raisons de la punition ( [0] => Violence verbale ) [giver] => M. PROFESSEUR M. // Le nom de la personne ayant donné la punition [isSchedulable] => true // Si la punition est programmable [schedule] => Array // Liste des dates pour lesquelles la punition est programmé ( [0] => 07/09/2022 ) [duration] => 60 // La durée de la punition ) ...