Python client to interact with SkillCorner On Demand API
Project description
Getting Started
Installation
uv pip install skillcorner-on-demand
Credentials
You need to add in your environment your username
and password
with that you can access to the service, if you don't like this method follow the alternative
export SKILLCORNER_ON_DEMAND_USERNAME=email@mycompagny.com
export SKILLCORNER_ON_DEMAND_PASSWORD=mysuperpassword
How to use it
You just need to instanciate the client like this
import os
from skillcorner_on_demand.client import SkillcornerOnDemandClient
USERNAME = os.getenv('SKILLCORNER_ON_DEMAND_USERNAME')
PASSWORD = os.getenv('SKILLCORNER_ON_DEMAND_PASSWORD')
client = SkillcornerOnDemandClient(USERNAME, PASSWORD)
Get Methods
Get All requests
With the reponse
"count": 6,
"next": null,
"previous": null,
"results": {
"matches": [
{
"id": 14,
"status": "input_data",
"tactical_data": [],
"match": {
"id": 1429092,
"unique_name": "Match Name",
"date_time": "2024-02-10T13:00:00Z",
},
"is_matchsheet_csv_valid": true,
"is_period_limits_csv_valid": true,
"is_homeside_team_csv_valid": true,
"is_video_uploaded": false
},
...
]
}
Get request by ID
or get just one request by his ID
client.get_request(request_id=6)
response
{
"id": 6,
"status": "processing",
"tactical_data": [],
"match": {
"id": 1429095,
"unique_name": "20240806_LOSC Lille_Fenerbahce",
"date_time": "2024-08-06T18:30:00Z",
"status": "not_started"
},
"is_matchsheet_csv_valid": true,
"is_period_limits_csv_valid": true,
"is_homeside_team_csv_valid": true,
"is_video_uploaded": true
}
Upload methods
Period Limits
response = client.upload_period_limits(
request_id=6,
period_limits_path="path/to/file.csv",
)
response
{"message": "Information successfully added and uploaded to the request"}
Match Sheet
response = client.upload_match_sheet(
request_id=6,
match_sheet_path="path/to/file.csv",
)
response
{"message": "Information successfully added and uploaded to the request"}
Home Team Side
response = client.upload_home_team_side(
request_id=6,
home_team_side_path="path/to/file.csv",
)
response
{"message": "Information successfully added and uploaded to the request"}
Video
response = client.upload_match_video(
request_id=6,
video_path="path/to/file.mp4",
)
response
{"message": "Information successfully added and uploaded to the request"}
Update a file
To update a file you just need to call the upload method and pass the is_update=True
parameter like this
response = client.upload_match_sheet(
request_id=6,
match_sheet_path="path/to/file.mp4",
is_update=True
)
response
{"message": "Match Sheet successfully updated"}
CSV Validation
if some lineup information is not valid the API will return you a list of errors like these:
{
"errors": [
"Home team does not have 11 start players it has 10.",
"Away team does not have 11 start players it has 12.",
"Duplicate player id [133003] for the home team",
"Player J. David has been subbed in for himself.",
"Duplicate jersey number [53] for the away team",
"Team home has duplicate positions ['RW'].",
"Team away has duplicate positions ['RCB', 'LW']."
]
}
Get the data of the match when the process is done
For the next api call you need the match ID, this is not the same at the request ID, you can find the match id in the payload from the method here
Data Collection
Get data collection of this match
response = client.get_data_collection(
match_id=1429103,
)
response
{
"match_id": 1429103,
"status": "postmatch",
"physical_last_modified": "2024-09-13T13:02:23.992345Z",
"physical_v3_last_modified": null,
"tracking_last_modified": "2024-09-13T12:59:43.067225Z",
"tracking_extra_last_modified": "2024-09-13T12:59:43.067225Z",
...
}
Tracking
Get tracking data
response = client.get_tracking(
match_id=1429103,
)
response
{
"data": [],
"possession": {
"group": null,
"trackable_object": null
},
"frame": 1,
"image_corners_projection":
[-29.886810706710552, 39.0, -9.262864149625193, -24.788953625823087, 8.817583207115144, -25.174142763841694, 32.730019680050475, 39.0],
"timestamp": null,
"period": null
}
...
Match data
Get all the information about the match
response = client.get_match_data(
match_id=1429103,
)
response
{
"id": 1429103,
"home_team_score": 0,
"away_team_score": 0,
"date_time": "2024-08-25T20:45:00Z",
"stadium": {
"id": 1198,
"name": "Subaru Park",
"city": "Chester",
"capacity": 18500
},
"home_team": {
"id": 1503,
"name": "Philadelphia Union",
"short_name": "Philadelphia",
"acronym": "PHI"
},
"home_team_kit": {
"id": 3879,
"team_id": 1503,
"season": {
"id": 8,
"start_year": 2021,
"end_year": 2022,
"name": "2021/2022"
},
"name": "Home",
"jersey_color": "#000000",
"number_color": "#95a44c"
},
"away_team": {
"id": 1499,
"name": "Colorado Rapids",
"short_name": "Colorado Rapids",
"acronym": "COL"
},
"away_team_kit": {
"id": 11169,
"team_id": 1499,
"season": {
"id": 29,
"start_year": 2024,
"end_year": 2024,
"name": "2024"
},
"name": "24/25",
"jersey_color": "#5f9cdd",
"number_color": "#0b3bcb"
},
"home_team_coach": null,
"away_team_coach": null,
...
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file skillcorner_on_demand-0.1.0.tar.gz
.
File metadata
- Download URL: skillcorner_on_demand-0.1.0.tar.gz
- Upload date:
- Size: 39.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10e723cc57abf716ee3e98298a81a772dea1c3a76cbbff05c672434c7dc6c118 |
|
MD5 | 1b4ba30cbe4a9fd9cf858a1638328bab |
|
BLAKE2b-256 | 79f94d917cb78a14cfb1c9fcad13e5c99943944989963fe6947a440ce84edcce |
File details
Details for the file skillcorner_on_demand-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: skillcorner_on_demand-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.4.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9457eff0b2700e65d99fb24a7e016ccdb0af612c1eb223b4bedf6b55b821004 |
|
MD5 | de84f052ff494d61e46074f70e56c86c |
|
BLAKE2b-256 | 4ad1c3f3a3b65bafe44daca29b9969392fc18ce3519448432c49e70a213aa7a2 |