gpulr


Namegpulr JSON
Version 1.8 PyPI version JSON
download
home_pagehttps://github.com/Paulin17/GPU_Python_Module
SummaryModule pour gérer les connexions et récupérer des informations depuis le site GPU
upload_time2024-10-22 12:41:32
maintainerNone
docs_urlNone
authorDOYON Paulin
requires_python>=3.6
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # GPU Module Repository



## Description

Ce repository contient le module `GPU` conçu pour gérer les connexions et récupérer des informations depuis le site GPU. Il inclut des fonctions pour se connecter, obtenir des informations sur les étudiants, lister les semaines disponibles et télécharger les données d'une semaine spécifique. Il contient également des classes pour représenter des événements et des étudiants, ainsi qu'un agenda pour gérer ces événements.



## Installation

Pour utiliser ce module, assurez-vous que tous les fichiers nécessaires sont dans le même répertoire et que vous avez configuré les variables d'environnement si nécessaire.



### Pré-requis

- Python 3.x

- Modules `re`,`requests`, `BeautifulSoup`, et `datetime`



## Contenu du Module



### Fichiers et Fonctions Principales



- **fonctions.py**

  - `get_connection(login: int, password: str='123') -> requests.Session`: Connexion à GPU via une requête POST et retourne la session avec les cookies.

  - `get_infos(session: requests.Session) -> tuple[str, int, int]`: Récupère les informations de l'étudiant en utilisant la session active.

  - `list_semaine(session: requests.Session) -> list[int]`: Récupère la liste des semaines disponibles à partir de la page d'agenda étudiant.

  - `get_Semaine(num_etu: int, week: int, session: requests.Session, directory: str) -> None`: Télécharge les données d'une semaine donnée et les enregistre dans un fichier VCS.

  - `get_Semaine_Pdf(num_etu: int, week: int, year: int, session: requests.Session, directory: str) -> None`:Télécharge les données d'une semaine donnée et les enregistre dans un fichier PDF.





- **class_perso.py**

  - `Event`: Classe représentant un événement iCalendar (RFC 5545).

    - `__init__(self, sequence: int, uid: str, dtstamp: datetime.datetime, description: str, summary: str, location: str, dtstart: datetime.datetime, dtend: datetime.datetime, priority: int, event_class: str) -> None`: Initialise un événement avec tous ses attributs.

    - `__str__(self) -> str`: Retourne une chaîne lisible représentant l'événement.

    - `format_datas(self) -> None`: Restructure les données de l'événement.

    - `ajouter_heure_si_hiver(self) -> None`: Rajoute une heure au début et à la fin d'un événement si celui-ci est dans l'heure d'hiver.

    - `parse_datetime(ical_date: str) -> datetime.datetime`: Convertit une chaîne de date au format iCalendar en objet datetime.

    - `from_ical(cls, ical_data: dict[str, str]) -> 'Event'`: Crée une instance d'Event à partir des données iCalendar.

  - `Student`: Classe représentant un étudiant.

    - `__init__(self, num: int, nom: Optional[str] = None, td: Optional[int] = None, tp: Optional[int] = None) -> None`: Initialise un nouvel étudiant avec un numéro, et éventuellement un nom, un groupe de TD et un groupe de TP.

    - `__repr__(self) -> str`: Retourne une représentation de l'étudiant.

    - `_completer_infos(self) -> None`: Complète les informations de l'étudiant en utilisant les fonctions get_connection et get_infos.

  - `Agenda`: Classe représentant un agenda pour un étudiant.

    - `__init__(self, student: Student) -> None`: Initialise un nouvel agenda pour un étudiant.

    - `__len__(self) -> int`: Renvoie le nombre d'événements dans l'agenda.

    - `ajouter_event(self, event: Event) -> None`: Ajoute un événement à l'agenda.

    - `ajouter_events(self, events: list[Event]) -> None`: Ajoute plusieurs événements à l'agenda.

    - `__repr__(self) -> str`: Retourne une représentation sous forme de chaîne de l'agenda.

    - `restructuration(self) -> None`: Restructure les données des événements.

    - `export(self, filename: str) -> None`: Exporte l'agenda dans un fichier iCalendar.



## Utilisation



### Exemple d'Utilisation



```python

import gpulr as GPU

import os,sys



def main(etudiant: GPU.Student) -> None:

    # Définition des paramètres

    num_etu = etudiant.num

    etu_directory = str(num_etu)

    temp_dir_week = f"{etu_directory}/week_temp"



    print("Démarrage du script")

    # Création des répertoires

    os.makedirs(etu_directory, exist_ok=True)

    os.makedirs(temp_dir_week, exist_ok=True)



    try:

        print('Initialisation de la connexion à GPU')

        user_session = GPU.get_connection(num_etu)

    except ConnectionError:

        print('ConnectionError: Échec de la connexion')

        return



    print('Connecté avec succès')



    semaines_dispo = GPU.list_semaine(user_session)

    print(f'Liste des semaines disponibles : {semaines_dispo}')



    for numero in semaines_dispo:

        print(f'Téléchargement de la semaine {numero}')

        GPU.get_Semaine(num_etu, numero, user_session, temp_dir_week)



    agenda = GPU.Agenda(etudiant)

    for file in os.listdir(temp_dir_week):

        file_path = os.path.join(temp_dir_week, file)

        with open(file_path, 'r') as f:

            agenda.ajouter_events(GPU.parse_multiple_events(f.readlines()))

    

    

    print("Restructuration des événements")

    agenda.restructuration()



    print(f"Export de l'agenda dans le fichier {etu_directory}/{num_etu}.ics")

    agenda.export(f"{etu_directory}/{num_etu}.ics")



if __name__ == "__main__":

    # Passer le numéro étudiant comme argument

    if len(sys.argv) != 2:

        print("Usage: python script.py <num_etu>")

        sys.exit(1)

    main(GPU.Student(int(sys.argv[1])))

```




            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Paulin17/GPU_Python_Module",
    "name": "gpulr",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": null,
    "author": "DOYON Paulin",
    "author_email": "contact@paulinodoyn.fr",
    "download_url": "https://files.pythonhosted.org/packages/f8/de/8df23344b0cad76c65385de834d8c2d856eb6f8f6be20333a16ae15d78dd/gpulr-1.8.tar.gz",
    "platform": null,
    "description": "# GPU Module Repository\r\n\r\n\r\n\r\n## Description\r\n\r\nCe repository contient le module `GPU` con\u00e7u pour g\u00e9rer les connexions et r\u00e9cup\u00e9rer des informations depuis le site GPU. Il inclut des fonctions pour se connecter, obtenir des informations sur les \u00e9tudiants, lister les semaines disponibles et t\u00e9l\u00e9charger les donn\u00e9es d'une semaine sp\u00e9cifique. Il contient \u00e9galement des classes pour repr\u00e9senter des \u00e9v\u00e9nements et des \u00e9tudiants, ainsi qu'un agenda pour g\u00e9rer ces \u00e9v\u00e9nements.\r\n\r\n\r\n\r\n## Installation\r\n\r\nPour utiliser ce module, assurez-vous que tous les fichiers n\u00e9cessaires sont dans le m\u00eame r\u00e9pertoire et que vous avez configur\u00e9 les variables d'environnement si n\u00e9cessaire.\r\n\r\n\r\n\r\n### Pr\u00e9-requis\r\n\r\n- Python 3.x\r\n\r\n- Modules `re`,`requests`, `BeautifulSoup`, et `datetime`\r\n\r\n\r\n\r\n## Contenu du Module\r\n\r\n\r\n\r\n### Fichiers et Fonctions Principales\r\n\r\n\r\n\r\n- **fonctions.py**\r\n\r\n  - `get_connection(login: int, password: str='123') -> requests.Session`: Connexion \u00e0 GPU via une requ\u00eate POST et retourne la session avec les cookies.\r\n\r\n  - `get_infos(session: requests.Session) -> tuple[str, int, int]`: R\u00e9cup\u00e8re les informations de l'\u00e9tudiant en utilisant la session active.\r\n\r\n  - `list_semaine(session: requests.Session) -> list[int]`: R\u00e9cup\u00e8re la liste des semaines disponibles \u00e0 partir de la page d'agenda \u00e9tudiant.\r\n\r\n  - `get_Semaine(num_etu: int, week: int, session: requests.Session, directory: str) -> None`: T\u00e9l\u00e9charge les donn\u00e9es d'une semaine donn\u00e9e et les enregistre dans un fichier VCS.\r\n\r\n  - `get_Semaine_Pdf(num_etu: int, week: int, year: int, session: requests.Session, directory: str) -> None`:T\u00e9l\u00e9charge les donn\u00e9es d'une semaine donn\u00e9e et les enregistre dans un fichier PDF.\r\n\r\n\r\n\r\n\r\n\r\n- **class_perso.py**\r\n\r\n  - `Event`: Classe repr\u00e9sentant un \u00e9v\u00e9nement iCalendar (RFC 5545).\r\n\r\n    - `__init__(self, sequence: int, uid: str, dtstamp: datetime.datetime, description: str, summary: str, location: str, dtstart: datetime.datetime, dtend: datetime.datetime, priority: int, event_class: str) -> None`: Initialise un \u00e9v\u00e9nement avec tous ses attributs.\r\n\r\n    - `__str__(self) -> str`: Retourne une cha\u00eene lisible repr\u00e9sentant l'\u00e9v\u00e9nement.\r\n\r\n    - `format_datas(self) -> None`: Restructure les donn\u00e9es de l'\u00e9v\u00e9nement.\r\n\r\n    - `ajouter_heure_si_hiver(self) -> None`: Rajoute une heure au d\u00e9but et \u00e0 la fin d'un \u00e9v\u00e9nement si celui-ci est dans l'heure d'hiver.\r\n\r\n    - `parse_datetime(ical_date: str) -> datetime.datetime`: Convertit une cha\u00eene de date au format iCalendar en objet datetime.\r\n\r\n    - `from_ical(cls, ical_data: dict[str, str]) -> 'Event'`: Cr\u00e9e une instance d'Event \u00e0 partir des donn\u00e9es iCalendar.\r\n\r\n  - `Student`: Classe repr\u00e9sentant un \u00e9tudiant.\r\n\r\n    - `__init__(self, num: int, nom: Optional[str] = None, td: Optional[int] = None, tp: Optional[int] = None) -> None`: Initialise un nouvel \u00e9tudiant avec un num\u00e9ro, et \u00e9ventuellement un nom, un groupe de TD et un groupe de TP.\r\n\r\n    - `__repr__(self) -> str`: Retourne une repr\u00e9sentation de l'\u00e9tudiant.\r\n\r\n    - `_completer_infos(self) -> None`: Compl\u00e8te les informations de l'\u00e9tudiant en utilisant les fonctions get_connection et get_infos.\r\n\r\n  - `Agenda`: Classe repr\u00e9sentant un agenda pour un \u00e9tudiant.\r\n\r\n    - `__init__(self, student: Student) -> None`: Initialise un nouvel agenda pour un \u00e9tudiant.\r\n\r\n    - `__len__(self) -> int`: Renvoie le nombre d'\u00e9v\u00e9nements dans l'agenda.\r\n\r\n    - `ajouter_event(self, event: Event) -> None`: Ajoute un \u00e9v\u00e9nement \u00e0 l'agenda.\r\n\r\n    - `ajouter_events(self, events: list[Event]) -> None`: Ajoute plusieurs \u00e9v\u00e9nements \u00e0 l'agenda.\r\n\r\n    - `__repr__(self) -> str`: Retourne une repr\u00e9sentation sous forme de cha\u00eene de l'agenda.\r\n\r\n    - `restructuration(self) -> None`: Restructure les donn\u00e9es des \u00e9v\u00e9nements.\r\n\r\n    - `export(self, filename: str) -> None`: Exporte l'agenda dans un fichier iCalendar.\r\n\r\n\r\n\r\n## Utilisation\r\n\r\n\r\n\r\n### Exemple d'Utilisation\r\n\r\n\r\n\r\n```python\r\n\r\nimport gpulr as GPU\r\n\r\nimport os,sys\r\n\r\n\r\n\r\ndef main(etudiant: GPU.Student) -> None:\r\n\r\n    # D\u00e9finition des param\u00e8tres\r\n\r\n    num_etu = etudiant.num\r\n\r\n    etu_directory = str(num_etu)\r\n\r\n    temp_dir_week = f\"{etu_directory}/week_temp\"\r\n\r\n\r\n\r\n    print(\"D\u00e9marrage du script\")\r\n\r\n    # Cr\u00e9ation des r\u00e9pertoires\r\n\r\n    os.makedirs(etu_directory, exist_ok=True)\r\n\r\n    os.makedirs(temp_dir_week, exist_ok=True)\r\n\r\n\r\n\r\n    try:\r\n\r\n        print('Initialisation de la connexion \u00e0 GPU')\r\n\r\n        user_session = GPU.get_connection(num_etu)\r\n\r\n    except ConnectionError:\r\n\r\n        print('ConnectionError: \u00c9chec de la connexion')\r\n\r\n        return\r\n\r\n\r\n\r\n    print('Connect\u00e9 avec succ\u00e8s')\r\n\r\n\r\n\r\n    semaines_dispo = GPU.list_semaine(user_session)\r\n\r\n    print(f'Liste des semaines disponibles : {semaines_dispo}')\r\n\r\n\r\n\r\n    for numero in semaines_dispo:\r\n\r\n        print(f'T\u00e9l\u00e9chargement de la semaine {numero}')\r\n\r\n        GPU.get_Semaine(num_etu, numero, user_session, temp_dir_week)\r\n\r\n\r\n\r\n    agenda = GPU.Agenda(etudiant)\r\n\r\n    for file in os.listdir(temp_dir_week):\r\n\r\n        file_path = os.path.join(temp_dir_week, file)\r\n\r\n        with open(file_path, 'r') as f:\r\n\r\n            agenda.ajouter_events(GPU.parse_multiple_events(f.readlines()))\r\n\r\n    \r\n\r\n    \r\n\r\n    print(\"Restructuration des \u00e9v\u00e9nements\")\r\n\r\n    agenda.restructuration()\r\n\r\n\r\n\r\n    print(f\"Export de l'agenda dans le fichier {etu_directory}/{num_etu}.ics\")\r\n\r\n    agenda.export(f\"{etu_directory}/{num_etu}.ics\")\r\n\r\n\r\n\r\nif __name__ == \"__main__\":\r\n\r\n    # Passer le num\u00e9ro \u00e9tudiant comme argument\r\n\r\n    if len(sys.argv) != 2:\r\n\r\n        print(\"Usage: python script.py <num_etu>\")\r\n\r\n        sys.exit(1)\r\n\r\n    main(GPU.Student(int(sys.argv[1])))\r\n\r\n```\r\n\r\n\r\n\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Module pour g\u00e9rer les connexions et r\u00e9cup\u00e9rer des informations depuis le site GPU",
    "version": "1.8",
    "project_urls": {
        "Homepage": "https://github.com/Paulin17/GPU_Python_Module"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a405d8e79907fd59023e7bb71d19df4657980da8fee75a92318bc238753ff278",
                "md5": "d40d60cec86afd1741b6cd3bdd23bb64",
                "sha256": "072e25feb19939f9ae2c44a26cc8f42ae3096982594ebb5232cfdf13f32ef1a1"
            },
            "downloads": -1,
            "filename": "gpulr-1.8-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d40d60cec86afd1741b6cd3bdd23bb64",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 11149,
            "upload_time": "2024-10-22T12:41:31",
            "upload_time_iso_8601": "2024-10-22T12:41:31.072535Z",
            "url": "https://files.pythonhosted.org/packages/a4/05/d8e79907fd59023e7bb71d19df4657980da8fee75a92318bc238753ff278/gpulr-1.8-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f8de8df23344b0cad76c65385de834d8c2d856eb6f8f6be20333a16ae15d78dd",
                "md5": "4c34de016389e5e710e9343107ae9217",
                "sha256": "fca5c6ea4de10cef9d7375468d64ba46e7dc00ad07b309c3f67b36ed51729ccc"
            },
            "downloads": -1,
            "filename": "gpulr-1.8.tar.gz",
            "has_sig": false,
            "md5_digest": "4c34de016389e5e710e9343107ae9217",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 11107,
            "upload_time": "2024-10-22T12:41:32",
            "upload_time_iso_8601": "2024-10-22T12:41:32.031388Z",
            "url": "https://files.pythonhosted.org/packages/f8/de/8df23344b0cad76c65385de834d8c2d856eb6f8f6be20333a16ae15d78dd/gpulr-1.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-22 12:41:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Paulin17",
    "github_project": "GPU_Python_Module",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "gpulr"
}
        
Elapsed time: 0.39547s