Skip to main content

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

response = client.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 match ID

    client.get_request(match_id=1429095)

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

Matches List

response = client.upload_match_list(
    path="path/to/file.csv",
)

Period Limits

response = client.upload_period_limits(
    match_id=1429095,
    period_limits_path="path/to/file.csv",
)

response

{"message": "Information successfully added and uploaded to the request"}

Match Sheet

response = client.upload_match_sheet(
    match_id=1429095,
    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(
    match_id=1429095,
    home_team_side_path="path/to/file.csv",
)

response

{"message": "Information successfully added and uploaded to the request"}

Video

response = client.upload_match_video(
    match_id=1429095,
    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(
    match_id=1429095,
    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']."
    ]
}

Start Processing a Match

To add the match to the process queue you need to call this method

response = client.launch_match(
    match_id=1429095,
)

Get the data of the match when the process is done

Data Collection

Get data collection of this match

response = client.get_data_collection(
    match_id=1429095,
)

response

{
    "match_id": 1429095,
    "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

Warning: This method can take a long time to complete because of the large file size.

response = client.get_tracking(
    match_id=1429095,
)

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=1429095,
)

response

{
    "id": 1429095,
    "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,
    ...
}

Physical

Get physical data for this match, pass csv in argument if you want to download data directly in csv

response = client.get_match_physical(
    match_id=1429095,
    csv=True
)

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

skillcorner_on_demand-0.1.12.tar.gz (281.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skillcorner_on_demand-0.1.12-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file skillcorner_on_demand-0.1.12.tar.gz.

File metadata

File hashes

Hashes for skillcorner_on_demand-0.1.12.tar.gz
Algorithm Hash digest
SHA256 bc07c7e47259125107db387e38271fffa6cac3bd40407b91792ace12a5a4bb8f
MD5 44ac742c195d3ebe5297b46081338f7c
BLAKE2b-256 18b7fd92842535212857c6220a698fc3bcd79fdc4dbb892fc5068100946925cb

See more details on using hashes here.

File details

Details for the file skillcorner_on_demand-0.1.12-py3-none-any.whl.

File metadata

File hashes

Hashes for skillcorner_on_demand-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 022f45f1cb7154fe1c450dff195da241b84c63eab5b724f829f4da6b0394338c
MD5 c8e46650606e1501393215face5cad65
BLAKE2b-256 384f90d7341e64864494f36c4a7b141d0e701b5548ba0186c3b022e2d994f45d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page