🟢 README.md: Updated command to retrieve schedule and added new commands for searching events by age group and retrieving match details

🛠️ myice/myice.py: Implemented a function to parse the schedule JSON file based on given age groups, improved error handling, enhanced formatting when printing results, added a new command `myice search`
This commit is contained in:
2024-11-01 10:38:43 +01:00
parent 6c502f94f1
commit 7a19f9acb7
2 changed files with 68 additions and 28 deletions

View File

@@ -3,47 +3,47 @@
## récupérer le schedule ## récupérer le schedule
```shell ```shell
./myice.py schedule -o schedule.json myice schedule -o schedule.json
``` ```
## data ## data
### listing
Pour récupérer les event des U13 Elite par exemple: Pour récupérer les event des U13 Elite par exemple:
```shell ```shell
jq -r '.[] | select(.agegroup == "U13 (Elite)") | [.date, .id_event, .event, .title] | join(" - ")' schedule.json myice search "U13 (Elite)"
2024-11-01 - 561896 - - U13 (Elite) [576653] 2024-11-04 practice 17:00-> 17:00
Spécial practice: Off-Ice Patinoire des Vernets - Patinoire Extérieure
Shooting Box Groupe #3
2024-11-01 - 561904 - - U13 (Elite) [572066] 2024-11-04 practice 18:00-> 18:00
Off-Ice practice: On-Ice Patinoire des Vernets - Patinoire Extérieure
Patinoire des Vernets - Patinoire Extérieure
2024-11-01 - 561855 - - U13 (Elite) [576652] 2024-11-05 practice 18:00-> 18:00
On-Ice practice: Off-Ice Patinoire des Vernets - Patinoire Extérieure
Patinoire des Vernets - Patinoire Extérieure
2024-11-04 - 576653 - - U13 (Elite) [572068] 2024-11-05 practice 19:15-> 19:15
Off-Ice practice: On-Ice Patinoire des Vernets - Patinoire Extérieure
Patinoire des Vernets - Patinoire Extérieure
2024-11-04 - 572066 - - U13 (Elite) [576655] 2024-11-08 practice 18:00-> 18:00
On-Ice practice: Off-Ice Patinoire des Vernets - Patinoire Extérieure
Patinoire des Vernets - Patinoire Extérieure
2024-11-05 - 576652 - - U13 (Elite) [572073] 2024-11-08 practice 19:15-> 19:15
Off-Ice practice: On-Ice Patinoire des Vernets - Patinoire Extérieure
Patinoire des Vernets - Patinoire Extérieure
2024-11-05 - 572068 - - U13 (Elite) [117015] 2024-11-02 game 12:15-> 12:15
On-Ice game: Saison HC Ajoie
Patinoire des Vernets - Patinoire Extérieure
2024-11-02 - 117015 - Jeu - U13 (Elite)
Saison
HC Ajoie
``` ```
Et on récupère la convoc du match:
### match ### match
alors pour avoir la convocation du match contre Ajoie, l'id c'est 117015: alors pour avoir la convocation du match contre Ajoie, l'id c'est 117015:
```shell ```shell
./get_schedule.py game 117015 myice game 117015
Opening file game_117015.pdf Opening file game_117015.pdf
``` ```
@@ -53,7 +53,7 @@ Opening file game_117015.pdf
et pour la convoc d'un entraînement: et pour la convoc d'un entraînement:
```shell ```shell
./myice.py practice 561855 myice practice 561855
Opening file practice_561855.pdf Opening file practice_561855.pdf
``` ```

View File

@@ -9,6 +9,7 @@ import json
import os import os
import re import re
import sys import sys
from enum import Enum
from pathlib import Path from pathlib import Path
from typing import Annotated from typing import Annotated
import requests import requests
@@ -21,6 +22,15 @@ session: requests.Session
userid: int userid: int
class AgeGroup(str, Enum):
u13e = "U13 (Elite)"
u13t = "U13 (Top)"
u13a = "U13 (A)"
u13p = "U13 (Prép)"
u15t = "U15 (Top)"
u15a = "U15 (A)"
def load_cookies(file: str = "cookies.txt") -> requests.cookies.RequestsCookieJar: def load_cookies(file: str = "cookies.txt") -> requests.cookies.RequestsCookieJar:
cookie_jar_file = Path(file) cookie_jar_file = Path(file)
cj_dict = {} cj_dict = {}
@@ -233,5 +243,35 @@ def get_practice_pdf(
open(output_filename) open(output_filename)
@app.command("search")
def parse_schedule(
age_group: Annotated[AgeGroup, typer.Argument(...)],
schedule_file: Annotated[
Path, typer.Option(help="schedule json file to parse")
] = Path("schedule.json"),
):
"""
Parse schedule.json to look for specific games or practices
"""
with schedule_file.open("r") as f:
data = json.load(f)
for event in [x for x in data if x["agegroup"] == age_group]:
# print(json.dumps(event, indent=2))
raw_title = event["title"].removeprefix(age_group + "\n")
title = " ".join(raw_title.split("\n"))
start = datetime.datetime.fromisoformat(event["start"])
start_fmt = start.strftime("%H:%M")
end = datetime.datetime.fromisoformat(event["end"])
end_fmt = end.strftime("%H:%M")
if "event" in event and event["event"] == "Jeu":
event_type = "game"
else:
event_type = "practice"
print(
f"[{event['id_event']}] {event['date']} {event_type} {start_fmt}-> {end_fmt}"
)
print(f"{event_type}: {title}\n")
if __name__ == "__main__": if __name__ == "__main__":
app() app()