Fixed issues with user display by fetching user info from userinfo endpoint Improved error handling for JSON responses in schedule endpoint Fixed account selection to use available accounts from config instead of default Enhanced frontend to properly handle API responses and errors
myice
introduction
With this tool, you can fetch kids' schedules from MyIce and generate the PDFs you need.
install
with uv:
uv tool install --extra-index-url https://gitea.parano.ch/api/packages/herel/pypi/simple/ myice
with pipx:
pipx install --extra-index-url https://gitea.parano.ch/api/packages/herel/pypi/simple/ myice
configuration
Create a myice.ini file with your credentials:
[default]
username = your_email@example.com
password = your_password
userid = 12345
token = your_api_token
club_id = 172
You can also create multiple sections for different users:
[default]
username = user1@example.com
password = password1
userid = 12345
token = token1
club_id = 172
[second_kid]
username = charlie@example.com
password = password2
userid = 67890
token = token2
club_id = 186
Note: The userid, token, and club_id fields are optional. If you don't
have them, the tool can fetch them automatically using the mobile-login
command (see below).
To fetch the token and club_id using mobile-login:
myice mobile-login
This will output the necessary information that you can add to your myice.ini file.
web interface
The tool includes a web interface that can be accessed by running the web API server:
uv run fastapi run myice/webapi.py
Then open your browser at http://localhost:8000. The web interface allows you to:
- Select between different configured accounts
- View upcoming games and practices
- See detailed information about events including player rosters
Authentication
The web interface supports two authentication methods:
-
Infomaniak OpenID Connect (Recommended): Click the "Se connecter avec Infomaniak" button to authenticate using Infomaniak's OIDC provider. Only users in the allowed list will be granted access.
-
Static API Key: For development purposes, you can still use
abcas the token.
Environment Variables
To configure OIDC authentication, set the following environment variables:
CLIENT_ID: Your OIDC client ID (default: 8ea04fbb-4237-4b1d-a895-0b3575a3af3f)CLIENT_SECRET: Your OIDC client secretREDIRECT_URI: The redirect URI (default: http://localhost:8000/callback)ALLOWED_USERS: Comma-separated list of allowed email addresses (e.g., "user1@example.com,user2@example.com")
The web API provides the following endpoints:
/schedule- Get the schedule for a specific account/game/{game_id}- Get details for a specific game/accounts- Get a list of available accounts/health- Health check endpoint/login- Initiate OIDC login flow/callback- Handle OIDC callback/userinfo- Get user information
All endpoints (except /health, /login, and /callback) require an Authorization header with a Bearer token.
mobile functions
The tool includes several mobile API functions that interact with MyIce's mobile API:
myice mobile-login- Authenticate and get authentication tokensmyice mobile- Fetch game data using the mobile APImyice mobile-game {game_id}- Get detailed information about a specific game
These functions can be useful for debugging or when the regular web interface is not available.
fetch schedule
myice schedule -o schedule.json
To use a specific configuration section:
myice schedule -o schedule.json --config-section isaac
data
listing
To fetch events for U13 Elite for example:
❯ myice search "U13 (Elite)"
[576653] 2024-11-04 practice 17:00-> 17:00
practice: Off-Ice Patinoire des Vernets - Patinoire Extérieure
[572066] 2024-11-04 practice 18:00-> 18:00
practice: On-Ice Patinoire des Vernets - Patinoire Extérieure
[576652] 2024-11-05 practice 18:00-> 18:00
practice: Off-Ice Patinoire des Vernets - Patinoire Extérieure
[572068] 2024-11-05 practice 19:15-> 19:15
practice: On-Ice Patinoire des Vernets - Patinoire Extérieure
[576655] 2024-11-08 practice 18:00-> 18:00
practice: Off-Ice Patinoire des Vernets - Patinoire Extérieure
[572073] 2024-11-08 practice 19:15-> 19:15
practice: On-Ice Patinoire des Vernets - Patinoire Extérieure
[117015] 2024-11-02 game 12:15-> 12:15
game: Saison HC Ajoie
And we retrieve the match roster:
match
To get the roster for the match against Ajoie, the ID is 117015:
❯ myice game 117015
Opening file game_117015.pdf
To use a specific configuration section:
❯ myice game 117015 --config-section isaac
practice
And for a practice roster:
❯ myice practice 561855
Opening file practice_561855.pdf
To use a specific configuration section:
❯ myice practice 561855 --config-section isaac
AI
❯ myice ai
> prochain match u13 top ?
< Le prochain match de l'équipe U13 Top se déroulera le dimanche 10 novembre 2024 contre HC Ajoie à la Raffeisen Arena de Porrentruy. Le match débutera à 14h00 et se terminera à 16h15.
> et les u13 a ?
< Le prochain match de l'équipe U13 A se déroulera le samedi 9 novembre 2024 contre HC Vallorbe à P. du Frézillon, 1337 Vallorbe VD. Le match débutera à 13h00 et se terminera à 15h00. Le prochain match à domicile de l'équipe U13 A se déroulera le dimanche 10 novembre 2024 contre CP Meyrin à Les Vernets, Glace extérieure, 1227 Les Acacias GE. Le match débutera à 13h00 et se terminera à 15h00.
To use a specific configuration section:
❯ myice ai --config-section isaac