crawlora-sofascore 0.3.5__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/PKG-INFO +7 -3
  2. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/README.md +5 -1
  3. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/__init__.py +2 -2
  4. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/operations.py +75 -2
  5. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/platform.py +50 -2
  6. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/platform.pyi +426 -8
  7. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore.egg-info/PKG-INFO +7 -3
  8. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/pyproject.toml +2 -2
  9. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/tests/test_package.py +1 -1
  10. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/LICENSE +0 -0
  11. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/__init__.pyi +0 -0
  12. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/_pagination.py +0 -0
  13. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/_transport_sync.py +0 -0
  14. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/async_client.py +0 -0
  15. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/client.py +0 -0
  16. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore/py.typed +0 -0
  17. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore.egg-info/SOURCES.txt +0 -0
  18. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore.egg-info/dependency_links.txt +0 -0
  19. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore.egg-info/requires.txt +0 -0
  20. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/crawlora_sofascore.egg-info/top_level.txt +0 -0
  21. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/setup.cfg +0 -0
  22. {crawlora_sofascore-0.3.5 → crawlora_sofascore-0.5.0}/tests/test_types.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crawlora-sofascore
3
- Version: 0.3.5
4
- Summary: Crawlora SofaScore API client with 109 endpoints for live events, match details, lineups, statistics, tournaments, and player/team data
3
+ Version: 0.5.0
4
+ Summary: Crawlora SofaScore API client with 113 endpoints for live events, match details, lineups, statistics, tournaments, and player/team data
5
5
  Author: Crawlora
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage
@@ -24,7 +24,7 @@ Dynamic: license-file
24
24
 
25
25
  # crawlora-sofascore — SofaScore API client for Python
26
26
 
27
- Python client for Crawlora's hosted SofaScore API. It exposes 109 API endpoints covering live events, match details, lineups, statistics, tournaments, and player/team data. Requests go to [Crawlora](https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage); the package does not run a browser or scrape
27
+ Python client for Crawlora's hosted SofaScore API. It exposes 113 API endpoints covering live events, match details, lineups, statistics, tournaments, and player/team data. Requests go to [Crawlora](https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage); the package does not run a browser or scrape
28
28
  SofaScore locally. A Crawlora account and `CRAWLORA_API_KEY` are required,
29
29
  and API use is billed under your Crawlora account. Crawlora is independent from and not endorsed by
30
30
  SofaScore or its owners.
@@ -118,6 +118,7 @@ This package exposes every route below through direct snake_case methods and the
118
118
  | `GET` | `/sofascore/event-lineups` | `sofascore-event-lineups` | SofaScore event lineups |
119
119
  | `GET` | `/sofascore/event-managers` | `sofascore-event-managers` | SofaScore event managers |
120
120
  | `GET` | `/sofascore/event-odds` | `sofascore-event-odds` | SofaScore event odds |
121
+ | `GET` | `/sofascore/event-player-actions` | `sofascore-event-player-actions` | SofaScore football player action maps |
121
122
  | `GET` | `/sofascore/event-player-heatmap` | `sofascore-event-player-heatmap` | SofaScore event player heatmap |
122
123
  | `GET` | `/sofascore/event-player-statistics` | `sofascore-event-player-statistics` | SofaScore event player statistics |
123
124
  | `GET` | `/sofascore/event-point-by-point` | `sofascore-event-point-by-point` | SofaScore event point-by-point |
@@ -125,6 +126,7 @@ This package exposes every route below through direct snake_case methods and the
125
126
  | `GET` | `/sofascore/event-shotmap` | `sofascore-event-shotmap` | SofaScore event shot map |
126
127
  | `GET` | `/sofascore/event-statistics` | `sofascore-event-statistics` | SofaScore event statistics |
127
128
  | `GET` | `/sofascore/event-team-heatmap` | `sofascore-event-team-heatmap` | SofaScore event team heatmap |
129
+ | `GET` | `/sofascore/event-team-shotmap` | `sofascore-event-team-shotmap` | SofaScore basketball team shot chart |
128
130
  | `GET` | `/sofascore/event-team-streaks` | `sofascore-event-team-streaks` | SofaScore event team streaks |
129
131
  | `GET` | `/sofascore/event-tennis-power` | `sofascore-event-tennis-power` | SofaScore event tennis power |
130
132
  | `GET` | `/sofascore/event-tv-channels` | `sofascore-event-tv-channels` | SofaScore event TV channels |
@@ -146,7 +148,9 @@ This package exposes every route below through direct snake_case methods and the
146
148
  | `GET` | `/sofascore/player-season-heatmap` | `sofascore-player-season-heatmap` | SofaScore player season heatmap |
147
149
  | `GET` | `/sofascore/player-season-statistics` | `sofascore-player-season-statistics` | SofaScore player season statistics |
148
150
  | `GET` | `/sofascore/player-statistical-rankings` | `sofascore-player-statistical-rankings` | SofaScore player ranking among all players in a season |
151
+ | `GET` | `/sofascore/player-statistics` | `sofascore-player-statistics` | SofaScore player statistics for every season |
149
152
  | `GET` | `/sofascore/player-statistics-seasons` | `sofascore-player-statistics-seasons` | SofaScore player statistics seasons |
153
+ | `GET` | `/sofascore/player-tournament-events` | `sofascore-player-tournament-events` | SofaScore player matches in one competition |
150
154
  | `GET` | `/sofascore/player-tournaments` | `sofascore-player-tournaments` | SofaScore player competitions |
151
155
  | `GET` | `/sofascore/player-transfers` | `sofascore-player-transfers` | SofaScore player transfer history |
152
156
  | `GET` | `/sofascore/ranking-types` | `sofascore-ranking-types` | SofaScore ranking catalogue |
@@ -1,6 +1,6 @@
1
1
  # crawlora-sofascore — SofaScore API client for Python
2
2
 
3
- Python client for Crawlora's hosted SofaScore API. It exposes 109 API endpoints covering live events, match details, lineups, statistics, tournaments, and player/team data. Requests go to [Crawlora](https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage); the package does not run a browser or scrape
3
+ Python client for Crawlora's hosted SofaScore API. It exposes 113 API endpoints covering live events, match details, lineups, statistics, tournaments, and player/team data. Requests go to [Crawlora](https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage); the package does not run a browser or scrape
4
4
  SofaScore locally. A Crawlora account and `CRAWLORA_API_KEY` are required,
5
5
  and API use is billed under your Crawlora account. Crawlora is independent from and not endorsed by
6
6
  SofaScore or its owners.
@@ -94,6 +94,7 @@ This package exposes every route below through direct snake_case methods and the
94
94
  | `GET` | `/sofascore/event-lineups` | `sofascore-event-lineups` | SofaScore event lineups |
95
95
  | `GET` | `/sofascore/event-managers` | `sofascore-event-managers` | SofaScore event managers |
96
96
  | `GET` | `/sofascore/event-odds` | `sofascore-event-odds` | SofaScore event odds |
97
+ | `GET` | `/sofascore/event-player-actions` | `sofascore-event-player-actions` | SofaScore football player action maps |
97
98
  | `GET` | `/sofascore/event-player-heatmap` | `sofascore-event-player-heatmap` | SofaScore event player heatmap |
98
99
  | `GET` | `/sofascore/event-player-statistics` | `sofascore-event-player-statistics` | SofaScore event player statistics |
99
100
  | `GET` | `/sofascore/event-point-by-point` | `sofascore-event-point-by-point` | SofaScore event point-by-point |
@@ -101,6 +102,7 @@ This package exposes every route below through direct snake_case methods and the
101
102
  | `GET` | `/sofascore/event-shotmap` | `sofascore-event-shotmap` | SofaScore event shot map |
102
103
  | `GET` | `/sofascore/event-statistics` | `sofascore-event-statistics` | SofaScore event statistics |
103
104
  | `GET` | `/sofascore/event-team-heatmap` | `sofascore-event-team-heatmap` | SofaScore event team heatmap |
105
+ | `GET` | `/sofascore/event-team-shotmap` | `sofascore-event-team-shotmap` | SofaScore basketball team shot chart |
104
106
  | `GET` | `/sofascore/event-team-streaks` | `sofascore-event-team-streaks` | SofaScore event team streaks |
105
107
  | `GET` | `/sofascore/event-tennis-power` | `sofascore-event-tennis-power` | SofaScore event tennis power |
106
108
  | `GET` | `/sofascore/event-tv-channels` | `sofascore-event-tv-channels` | SofaScore event TV channels |
@@ -122,7 +124,9 @@ This package exposes every route below through direct snake_case methods and the
122
124
  | `GET` | `/sofascore/player-season-heatmap` | `sofascore-player-season-heatmap` | SofaScore player season heatmap |
123
125
  | `GET` | `/sofascore/player-season-statistics` | `sofascore-player-season-statistics` | SofaScore player season statistics |
124
126
  | `GET` | `/sofascore/player-statistical-rankings` | `sofascore-player-statistical-rankings` | SofaScore player ranking among all players in a season |
127
+ | `GET` | `/sofascore/player-statistics` | `sofascore-player-statistics` | SofaScore player statistics for every season |
125
128
  | `GET` | `/sofascore/player-statistics-seasons` | `sofascore-player-statistics-seasons` | SofaScore player statistics seasons |
129
+ | `GET` | `/sofascore/player-tournament-events` | `sofascore-player-tournament-events` | SofaScore player matches in one competition |
126
130
  | `GET` | `/sofascore/player-tournaments` | `sofascore-player-tournaments` | SofaScore player competitions |
127
131
  | `GET` | `/sofascore/player-transfers` | `sofascore-player-transfers` | SofaScore player transfer history |
128
132
  | `GET` | `/sofascore/ranking-types` | `sofascore-ranking-types` | SofaScore ranking catalogue |
@@ -6,10 +6,10 @@ from .operations import OPERATION_COUNT, OPERATION_IDS, PLATFORM
6
6
 
7
7
  Client = SofascoreClient
8
8
  AsyncClient = AsyncSofascoreClient
9
- __version__ = '0.3.5'
9
+ __version__ = '0.5.0'
10
10
  DISPLAY_NAME = 'SofaScore'
11
11
  PLATFORM = 'sofascore'
12
- CONTRACT_REVISION = 'sha256:645115670262bb86bf9c49f16ddbfdd94bbec67befb2aa8497f10f86ee2d5e46'
12
+ CONTRACT_REVISION = 'sha256:da5eb33b004378f90899a9cefef992842f7a32b122e006a31dda22e23a68c5f7'
13
13
 
14
14
  __all__ = [
15
15
  "SofascoreClient", "AsyncSofascoreClient", "Client", "AsyncClient",
@@ -1,7 +1,7 @@
1
1
  # Generated by scripts/generate.py. Do not edit manually.
2
2
  PLATFORM = 'sofascore'
3
- OPERATION_COUNT = 109
4
- OPERATION_IDS = ('sofascore-categories', 'sofascore-category-tournaments', 'sofascore-draft', 'sofascore-draft-picks', 'sofascore-esports-game', 'sofascore-event', 'sofascore-event-at-bat-pitches', 'sofascore-event-at-bats', 'sofascore-event-average-positions', 'sofascore-event-baseball-top-performers', 'sofascore-event-best-players', 'sofascore-event-comments', 'sofascore-event-esports-games', 'sofascore-event-graph', 'sofascore-event-h2h', 'sofascore-event-highlights', 'sofascore-event-incidents', 'sofascore-event-innings', 'sofascore-event-lineups', 'sofascore-event-managers', 'sofascore-event-odds', 'sofascore-event-player-heatmap', 'sofascore-event-player-statistics', 'sofascore-event-point-by-point', 'sofascore-event-pregame-form', 'sofascore-event-shotmap', 'sofascore-event-statistics', 'sofascore-event-team-heatmap', 'sofascore-event-team-streaks', 'sofascore-event-tennis-power', 'sofascore-event-tv-channels', 'sofascore-event-votes', 'sofascore-live-events', 'sofascore-manager', 'sofascore-manager-events', 'sofascore-mma-card', 'sofascore-mma-schedule', 'sofascore-odds-dropping', 'sofascore-odds-winning', 'sofascore-player', 'sofascore-player-attributes', 'sofascore-player-events', 'sofascore-player-last-year-summary', 'sofascore-player-national-team-statistics', 'sofascore-player-penalty-history', 'sofascore-player-ratings', 'sofascore-player-season-heatmap', 'sofascore-player-season-statistics', 'sofascore-player-statistical-rankings', 'sofascore-player-statistics-seasons', 'sofascore-player-tournaments', 'sofascore-player-transfers', 'sofascore-ranking-types', 'sofascore-rankings', 'sofascore-referee', 'sofascore-referee-events', 'sofascore-referee-statistics', 'sofascore-round-events', 'sofascore-scheduled-events', 'sofascore-scheduled-tournaments', 'sofascore-search', 'sofascore-search-typed', 'sofascore-season-events', 'sofascore-sports', 'sofascore-stage', 'sofascore-stage-categories', 'sofascore-stage-driver-performance', 'sofascore-stage-featured', 'sofascore-stage-schedule', 'sofascore-stage-seasons', 'sofascore-stage-standings', 'sofascore-stage-substages', 'sofascore-standings', 'sofascore-team', 'sofascore-team-achievements', 'sofascore-team-events', 'sofascore-team-goal-distributions', 'sofascore-team-near-events', 'sofascore-team-of-the-week', 'sofascore-team-of-the-week-periods', 'sofascore-team-performance', 'sofascore-team-player-statistics', 'sofascore-team-player-statistics-seasons', 'sofascore-team-players', 'sofascore-team-rankings', 'sofascore-team-season-statistics', 'sofascore-team-statistics-seasons', 'sofascore-team-top-players', 'sofascore-team-tournaments', 'sofascore-team-transfers', 'sofascore-tennis-player-grand-slam-results', 'sofascore-tournament-cuptree', 'sofascore-tournament-info', 'sofascore-tournament-player-of-the-season', 'sofascore-tournament-player-statistics', 'sofascore-tournament-rounds', 'sofascore-tournament-seasons', 'sofascore-tournament-statistics-info', 'sofascore-tournament-team-of-the-season', 'sofascore-tournament-teams', 'sofascore-tournament-top-players', 'sofascore-tournament-top-teams', 'sofascore-tournament-venues', 'sofascore-tournament-winners', 'sofascore-tournaments-with-feature', 'sofascore-trending-events', 'sofascore-trending-players', 'sofascore-venue', 'sofascore-venue-events')
3
+ OPERATION_COUNT = 113
4
+ OPERATION_IDS = ('sofascore-categories', 'sofascore-category-tournaments', 'sofascore-draft', 'sofascore-draft-picks', 'sofascore-esports-game', 'sofascore-event', 'sofascore-event-at-bat-pitches', 'sofascore-event-at-bats', 'sofascore-event-average-positions', 'sofascore-event-baseball-top-performers', 'sofascore-event-best-players', 'sofascore-event-comments', 'sofascore-event-esports-games', 'sofascore-event-graph', 'sofascore-event-h2h', 'sofascore-event-highlights', 'sofascore-event-incidents', 'sofascore-event-innings', 'sofascore-event-lineups', 'sofascore-event-managers', 'sofascore-event-odds', 'sofascore-event-player-actions', 'sofascore-event-player-heatmap', 'sofascore-event-player-statistics', 'sofascore-event-point-by-point', 'sofascore-event-pregame-form', 'sofascore-event-shotmap', 'sofascore-event-statistics', 'sofascore-event-team-heatmap', 'sofascore-event-team-shotmap', 'sofascore-event-team-streaks', 'sofascore-event-tennis-power', 'sofascore-event-tv-channels', 'sofascore-event-votes', 'sofascore-live-events', 'sofascore-manager', 'sofascore-manager-events', 'sofascore-mma-card', 'sofascore-mma-schedule', 'sofascore-odds-dropping', 'sofascore-odds-winning', 'sofascore-player', 'sofascore-player-attributes', 'sofascore-player-events', 'sofascore-player-last-year-summary', 'sofascore-player-national-team-statistics', 'sofascore-player-penalty-history', 'sofascore-player-ratings', 'sofascore-player-season-heatmap', 'sofascore-player-season-statistics', 'sofascore-player-statistical-rankings', 'sofascore-player-statistics', 'sofascore-player-statistics-seasons', 'sofascore-player-tournament-events', 'sofascore-player-tournaments', 'sofascore-player-transfers', 'sofascore-ranking-types', 'sofascore-rankings', 'sofascore-referee', 'sofascore-referee-events', 'sofascore-referee-statistics', 'sofascore-round-events', 'sofascore-scheduled-events', 'sofascore-scheduled-tournaments', 'sofascore-search', 'sofascore-search-typed', 'sofascore-season-events', 'sofascore-sports', 'sofascore-stage', 'sofascore-stage-categories', 'sofascore-stage-driver-performance', 'sofascore-stage-featured', 'sofascore-stage-schedule', 'sofascore-stage-seasons', 'sofascore-stage-standings', 'sofascore-stage-substages', 'sofascore-standings', 'sofascore-team', 'sofascore-team-achievements', 'sofascore-team-events', 'sofascore-team-goal-distributions', 'sofascore-team-near-events', 'sofascore-team-of-the-week', 'sofascore-team-of-the-week-periods', 'sofascore-team-performance', 'sofascore-team-player-statistics', 'sofascore-team-player-statistics-seasons', 'sofascore-team-players', 'sofascore-team-rankings', 'sofascore-team-season-statistics', 'sofascore-team-statistics-seasons', 'sofascore-team-top-players', 'sofascore-team-tournaments', 'sofascore-team-transfers', 'sofascore-tennis-player-grand-slam-results', 'sofascore-tournament-cuptree', 'sofascore-tournament-info', 'sofascore-tournament-player-of-the-season', 'sofascore-tournament-player-statistics', 'sofascore-tournament-rounds', 'sofascore-tournament-seasons', 'sofascore-tournament-statistics-info', 'sofascore-tournament-team-of-the-season', 'sofascore-tournament-teams', 'sofascore-tournament-top-players', 'sofascore-tournament-top-teams', 'sofascore-tournament-venues', 'sofascore-tournament-winners', 'sofascore-tournaments-with-feature', 'sofascore-trending-events', 'sofascore-trending-players', 'sofascore-venue', 'sofascore-venue-events')
5
5
 
6
6
  OPERATIONS = {'sofascore-categories': {'bodyParam': None,
7
7
  'bodyRequired': False,
@@ -287,6 +287,21 @@ OPERATIONS = {'sofascore-categories': {'bodyParam': None,
287
287
  'produces': ['application/json'],
288
288
  'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'}],
289
289
  'security': ['ApiKeyAuth']},
290
+ 'sofascore-event-player-actions': {'bodyParam': None,
291
+ 'bodyRequired': False,
292
+ 'consumes': ['application/json'],
293
+ 'formParams': [],
294
+ 'id': 'sofascore-event-player-actions',
295
+ 'method': 'GET',
296
+ 'path': '/sofascore/event-player-actions',
297
+ 'pathParams': [],
298
+ 'produces': ['application/json'],
299
+ 'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'},
300
+ {'in': 'query',
301
+ 'name': 'player_id',
302
+ 'required': True,
303
+ 'type': 'string'}],
304
+ 'security': ['ApiKeyAuth']},
290
305
  'sofascore-event-player-heatmap': {'bodyParam': None,
291
306
  'bodyRequired': False,
292
307
  'consumes': ['application/json'],
@@ -379,6 +394,21 @@ OPERATIONS = {'sofascore-categories': {'bodyParam': None,
379
394
  'required': True,
380
395
  'type': 'string'}],
381
396
  'security': ['ApiKeyAuth']},
397
+ 'sofascore-event-team-shotmap': {'bodyParam': None,
398
+ 'bodyRequired': False,
399
+ 'consumes': ['application/json'],
400
+ 'formParams': [],
401
+ 'id': 'sofascore-event-team-shotmap',
402
+ 'method': 'GET',
403
+ 'path': '/sofascore/event-team-shotmap',
404
+ 'pathParams': [],
405
+ 'produces': ['application/json'],
406
+ 'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'},
407
+ {'in': 'query',
408
+ 'name': 'team_id',
409
+ 'required': True,
410
+ 'type': 'string'}],
411
+ 'security': ['ApiKeyAuth']},
382
412
  'sofascore-event-team-streaks': {'bodyParam': None,
383
413
  'bodyRequired': False,
384
414
  'consumes': ['application/json'],
@@ -759,6 +789,21 @@ OPERATIONS = {'sofascore-categories': {'bodyParam': None,
759
789
  'name': 'type',
760
790
  'type': 'string'}],
761
791
  'security': ['ApiKeyAuth']},
792
+ 'sofascore-player-statistics': {'bodyParam': None,
793
+ 'bodyRequired': False,
794
+ 'consumes': ['application/json'],
795
+ 'formParams': [],
796
+ 'id': 'sofascore-player-statistics',
797
+ 'method': 'GET',
798
+ 'path': '/sofascore/player-statistics',
799
+ 'pathParams': [],
800
+ 'produces': ['application/json'],
801
+ 'queryParams': [{'in': 'query', 'name': 'id', 'required': True, 'type': 'string'},
802
+ {'enum': ['overall', 'home', 'away'],
803
+ 'in': 'query',
804
+ 'name': 'match_type',
805
+ 'type': 'string'}],
806
+ 'security': ['ApiKeyAuth']},
762
807
  'sofascore-player-statistics-seasons': {'bodyParam': None,
763
808
  'bodyRequired': False,
764
809
  'consumes': ['application/json'],
@@ -773,6 +818,26 @@ OPERATIONS = {'sofascore-categories': {'bodyParam': None,
773
818
  'required': True,
774
819
  'type': 'string'}],
775
820
  'security': ['ApiKeyAuth']},
821
+ 'sofascore-player-tournament-events': {'bodyParam': None,
822
+ 'bodyRequired': False,
823
+ 'consumes': ['application/json'],
824
+ 'formParams': [],
825
+ 'id': 'sofascore-player-tournament-events',
826
+ 'method': 'GET',
827
+ 'paginatable': True,
828
+ 'path': '/sofascore/player-tournament-events',
829
+ 'pathParams': [],
830
+ 'produces': ['application/json'],
831
+ 'queryParams': [{'in': 'query',
832
+ 'name': 'id',
833
+ 'required': True,
834
+ 'type': 'string'},
835
+ {'in': 'query',
836
+ 'name': 'tournament_id',
837
+ 'required': True,
838
+ 'type': 'string'},
839
+ {'in': 'query', 'name': 'page', 'type': 'integer'}],
840
+ 'security': ['ApiKeyAuth']},
776
841
  'sofascore-player-tournaments': {'bodyParam': None,
777
842
  'bodyRequired': False,
778
843
  'consumes': ['application/json'],
@@ -1865,6 +1930,7 @@ GROUPS = {'sofascore': {'categories': 'sofascore-categories',
1865
1930
  'event_lineups': 'sofascore-event-lineups',
1866
1931
  'event_managers': 'sofascore-event-managers',
1867
1932
  'event_odds': 'sofascore-event-odds',
1933
+ 'event_player_actions': 'sofascore-event-player-actions',
1868
1934
  'event_player_heatmap': 'sofascore-event-player-heatmap',
1869
1935
  'event_player_statistics': 'sofascore-event-player-statistics',
1870
1936
  'event_point_by_point': 'sofascore-event-point-by-point',
@@ -1872,6 +1938,7 @@ GROUPS = {'sofascore': {'categories': 'sofascore-categories',
1872
1938
  'event_shotmap': 'sofascore-event-shotmap',
1873
1939
  'event_statistics': 'sofascore-event-statistics',
1874
1940
  'event_team_heatmap': 'sofascore-event-team-heatmap',
1941
+ 'event_team_shotmap': 'sofascore-event-team-shotmap',
1875
1942
  'event_team_streaks': 'sofascore-event-team-streaks',
1876
1943
  'event_tennis_power': 'sofascore-event-tennis-power',
1877
1944
  'event_tv_channels': 'sofascore-event-tv-channels',
@@ -1893,7 +1960,9 @@ GROUPS = {'sofascore': {'categories': 'sofascore-categories',
1893
1960
  'player_season_heatmap': 'sofascore-player-season-heatmap',
1894
1961
  'player_season_statistics': 'sofascore-player-season-statistics',
1895
1962
  'player_statistical_rankings': 'sofascore-player-statistical-rankings',
1963
+ 'player_statistics': 'sofascore-player-statistics',
1896
1964
  'player_statistics_seasons': 'sofascore-player-statistics-seasons',
1965
+ 'player_tournament_events': 'sofascore-player-tournament-events',
1897
1966
  'player_tournaments': 'sofascore-player-tournaments',
1898
1967
  'player_transfers': 'sofascore-player-transfers',
1899
1968
  'ranking_types': 'sofascore-ranking-types',
@@ -1976,6 +2045,7 @@ class OperationId:
1976
2045
  SOFASCORE_EVENT_LINEUPS = 'sofascore-event-lineups'
1977
2046
  SOFASCORE_EVENT_MANAGERS = 'sofascore-event-managers'
1978
2047
  SOFASCORE_EVENT_ODDS = 'sofascore-event-odds'
2048
+ SOFASCORE_EVENT_PLAYER_ACTIONS = 'sofascore-event-player-actions'
1979
2049
  SOFASCORE_EVENT_PLAYER_HEATMAP = 'sofascore-event-player-heatmap'
1980
2050
  SOFASCORE_EVENT_PLAYER_STATISTICS = 'sofascore-event-player-statistics'
1981
2051
  SOFASCORE_EVENT_POINT_BY_POINT = 'sofascore-event-point-by-point'
@@ -1983,6 +2053,7 @@ class OperationId:
1983
2053
  SOFASCORE_EVENT_SHOTMAP = 'sofascore-event-shotmap'
1984
2054
  SOFASCORE_EVENT_STATISTICS = 'sofascore-event-statistics'
1985
2055
  SOFASCORE_EVENT_TEAM_HEATMAP = 'sofascore-event-team-heatmap'
2056
+ SOFASCORE_EVENT_TEAM_SHOTMAP = 'sofascore-event-team-shotmap'
1986
2057
  SOFASCORE_EVENT_TEAM_STREAKS = 'sofascore-event-team-streaks'
1987
2058
  SOFASCORE_EVENT_TENNIS_POWER = 'sofascore-event-tennis-power'
1988
2059
  SOFASCORE_EVENT_TV_CHANNELS = 'sofascore-event-tv-channels'
@@ -2004,7 +2075,9 @@ class OperationId:
2004
2075
  SOFASCORE_PLAYER_SEASON_HEATMAP = 'sofascore-player-season-heatmap'
2005
2076
  SOFASCORE_PLAYER_SEASON_STATISTICS = 'sofascore-player-season-statistics'
2006
2077
  SOFASCORE_PLAYER_STATISTICAL_RANKINGS = 'sofascore-player-statistical-rankings'
2078
+ SOFASCORE_PLAYER_STATISTICS = 'sofascore-player-statistics'
2007
2079
  SOFASCORE_PLAYER_STATISTICS_SEASONS = 'sofascore-player-statistics-seasons'
2080
+ SOFASCORE_PLAYER_TOURNAMENT_EVENTS = 'sofascore-player-tournament-events'
2008
2081
  SOFASCORE_PLAYER_TOURNAMENTS = 'sofascore-player-tournaments'
2009
2082
  SOFASCORE_PLAYER_TRANSFERS = 'sofascore-player-transfers'
2010
2083
  SOFASCORE_RANKING_TYPES = 'sofascore-ranking-types'
@@ -7,7 +7,7 @@ from .async_client import AsyncCrawloraClient
7
7
  class SofascoreClient(CrawloraClient):
8
8
  """Synchronous SofaScore API client."""
9
9
  def __init__(self, *args: Any, **kwargs: Any) -> None:
10
- kwargs.setdefault('user_agent', 'crawlora-sofascore-python/0.3.5')
10
+ kwargs.setdefault('user_agent', 'crawlora-sofascore-python/0.5.0')
11
11
  super().__init__(*args, **kwargs)
12
12
 
13
13
  def categories(self, **params: Any) -> Any:
@@ -136,6 +136,12 @@ class SofascoreClient(CrawloraClient):
136
136
  headers = params.pop('_headers', None)
137
137
  return self.request('sofascore-event-odds', params, response_type=response_type, timeout=timeout, headers=headers)
138
138
 
139
+ def event_player_actions(self, **params: Any) -> Any:
140
+ response_type = params.pop('_response_type', 'auto')
141
+ timeout = params.pop('_timeout', None)
142
+ headers = params.pop('_headers', None)
143
+ return self.request('sofascore-event-player-actions', params, response_type=response_type, timeout=timeout, headers=headers)
144
+
139
145
  def event_player_heatmap(self, **params: Any) -> Any:
140
146
  response_type = params.pop('_response_type', 'auto')
141
147
  timeout = params.pop('_timeout', None)
@@ -178,6 +184,12 @@ class SofascoreClient(CrawloraClient):
178
184
  headers = params.pop('_headers', None)
179
185
  return self.request('sofascore-event-team-heatmap', params, response_type=response_type, timeout=timeout, headers=headers)
180
186
 
187
+ def event_team_shotmap(self, **params: Any) -> Any:
188
+ response_type = params.pop('_response_type', 'auto')
189
+ timeout = params.pop('_timeout', None)
190
+ headers = params.pop('_headers', None)
191
+ return self.request('sofascore-event-team-shotmap', params, response_type=response_type, timeout=timeout, headers=headers)
192
+
181
193
  def event_team_streaks(self, **params: Any) -> Any:
182
194
  response_type = params.pop('_response_type', 'auto')
183
195
  timeout = params.pop('_timeout', None)
@@ -304,12 +316,24 @@ class SofascoreClient(CrawloraClient):
304
316
  headers = params.pop('_headers', None)
305
317
  return self.request('sofascore-player-statistical-rankings', params, response_type=response_type, timeout=timeout, headers=headers)
306
318
 
319
+ def player_statistics(self, **params: Any) -> Any:
320
+ response_type = params.pop('_response_type', 'auto')
321
+ timeout = params.pop('_timeout', None)
322
+ headers = params.pop('_headers', None)
323
+ return self.request('sofascore-player-statistics', params, response_type=response_type, timeout=timeout, headers=headers)
324
+
307
325
  def player_statistics_seasons(self, **params: Any) -> Any:
308
326
  response_type = params.pop('_response_type', 'auto')
309
327
  timeout = params.pop('_timeout', None)
310
328
  headers = params.pop('_headers', None)
311
329
  return self.request('sofascore-player-statistics-seasons', params, response_type=response_type, timeout=timeout, headers=headers)
312
330
 
331
+ def player_tournament_events(self, **params: Any) -> Any:
332
+ response_type = params.pop('_response_type', 'auto')
333
+ timeout = params.pop('_timeout', None)
334
+ headers = params.pop('_headers', None)
335
+ return self.request('sofascore-player-tournament-events', params, response_type=response_type, timeout=timeout, headers=headers)
336
+
313
337
  def player_tournaments(self, **params: Any) -> Any:
314
338
  response_type = params.pop('_response_type', 'auto')
315
339
  timeout = params.pop('_timeout', None)
@@ -667,7 +691,7 @@ class SofascoreClient(CrawloraClient):
667
691
  class AsyncSofascoreClient(AsyncCrawloraClient):
668
692
  """Asynchronous SofaScore API client."""
669
693
  def __init__(self, *args: Any, **kwargs: Any) -> None:
670
- kwargs.setdefault('user_agent', 'crawlora-sofascore-python/0.3.5')
694
+ kwargs.setdefault('user_agent', 'crawlora-sofascore-python/0.5.0')
671
695
  super().__init__(*args, **kwargs)
672
696
 
673
697
  async def categories(self, **params: Any) -> Any:
@@ -796,6 +820,12 @@ class AsyncSofascoreClient(AsyncCrawloraClient):
796
820
  headers = params.pop('_headers', None)
797
821
  return await self.request('sofascore-event-odds', params, response_type=response_type, timeout=timeout, headers=headers)
798
822
 
823
+ async def event_player_actions(self, **params: Any) -> Any:
824
+ response_type = params.pop('_response_type', 'auto')
825
+ timeout = params.pop('_timeout', None)
826
+ headers = params.pop('_headers', None)
827
+ return await self.request('sofascore-event-player-actions', params, response_type=response_type, timeout=timeout, headers=headers)
828
+
799
829
  async def event_player_heatmap(self, **params: Any) -> Any:
800
830
  response_type = params.pop('_response_type', 'auto')
801
831
  timeout = params.pop('_timeout', None)
@@ -838,6 +868,12 @@ class AsyncSofascoreClient(AsyncCrawloraClient):
838
868
  headers = params.pop('_headers', None)
839
869
  return await self.request('sofascore-event-team-heatmap', params, response_type=response_type, timeout=timeout, headers=headers)
840
870
 
871
+ async def event_team_shotmap(self, **params: Any) -> Any:
872
+ response_type = params.pop('_response_type', 'auto')
873
+ timeout = params.pop('_timeout', None)
874
+ headers = params.pop('_headers', None)
875
+ return await self.request('sofascore-event-team-shotmap', params, response_type=response_type, timeout=timeout, headers=headers)
876
+
841
877
  async def event_team_streaks(self, **params: Any) -> Any:
842
878
  response_type = params.pop('_response_type', 'auto')
843
879
  timeout = params.pop('_timeout', None)
@@ -964,12 +1000,24 @@ class AsyncSofascoreClient(AsyncCrawloraClient):
964
1000
  headers = params.pop('_headers', None)
965
1001
  return await self.request('sofascore-player-statistical-rankings', params, response_type=response_type, timeout=timeout, headers=headers)
966
1002
 
1003
+ async def player_statistics(self, **params: Any) -> Any:
1004
+ response_type = params.pop('_response_type', 'auto')
1005
+ timeout = params.pop('_timeout', None)
1006
+ headers = params.pop('_headers', None)
1007
+ return await self.request('sofascore-player-statistics', params, response_type=response_type, timeout=timeout, headers=headers)
1008
+
967
1009
  async def player_statistics_seasons(self, **params: Any) -> Any:
968
1010
  response_type = params.pop('_response_type', 'auto')
969
1011
  timeout = params.pop('_timeout', None)
970
1012
  headers = params.pop('_headers', None)
971
1013
  return await self.request('sofascore-player-statistics-seasons', params, response_type=response_type, timeout=timeout, headers=headers)
972
1014
 
1015
+ async def player_tournament_events(self, **params: Any) -> Any:
1016
+ response_type = params.pop('_response_type', 'auto')
1017
+ timeout = params.pop('_timeout', None)
1018
+ headers = params.pop('_headers', None)
1019
+ return await self.request('sofascore-player-tournament-events', params, response_type=response_type, timeout=timeout, headers=headers)
1020
+
973
1021
  async def player_tournaments(self, **params: Any) -> Any:
974
1022
  response_type = params.pop('_response_type', 'auto')
975
1023
  timeout = params.pop('_timeout', None)
@@ -1772,6 +1772,31 @@ ModelSofascorePlayerTournamentsResponse = TypedDict('ModelSofascorePlayerTournam
1772
1772
  'tournaments': NotRequired[list[ModelSofascoreUniqueTournamentBrief]],
1773
1773
  }, total=False)
1774
1774
 
1775
+ ModelSofascorePlayerTournamentEventsResponseDoc = TypedDict('ModelSofascorePlayerTournamentEventsResponseDoc', {
1776
+ 'code': NotRequired[int],
1777
+ 'data': NotRequired[ModelSofascorePlayerTournamentEventsResponse],
1778
+ 'msg': NotRequired[str],
1779
+ }, total=False)
1780
+
1781
+ ModelSofascorePlayerTournamentEventsResponse = TypedDict('ModelSofascorePlayerTournamentEventsResponse', {
1782
+ 'count': NotRequired[int],
1783
+ 'events': NotRequired[list[ModelSofascorePlayerEventRow]],
1784
+ 'fetched_at': NotRequired[str],
1785
+ 'has_next_page': NotRequired[bool],
1786
+ 'page': NotRequired[int],
1787
+ 'player_id': NotRequired[int],
1788
+ 'source_url': NotRequired[str],
1789
+ 'tournament_id': NotRequired[int],
1790
+ }, total=False)
1791
+
1792
+ ModelSofascorePlayerEventRow = TypedDict('ModelSofascorePlayerEventRow', {
1793
+ 'event': NotRequired[ModelSofascoreEventSummary],
1794
+ 'incident_counts': NotRequired[dict[str, float]],
1795
+ 'on_bench': NotRequired[bool],
1796
+ 'played_for_team_id': NotRequired[int],
1797
+ 'statistics': NotRequired[dict[str, float]],
1798
+ }, total=False)
1799
+
1775
1800
  ModelSofascorePlayerStatisticsSeasonsResponseDoc = TypedDict('ModelSofascorePlayerStatisticsSeasonsResponseDoc', {
1776
1801
  'code': NotRequired[int],
1777
1802
  'data': NotRequired[ModelSofascorePlayerStatisticsSeasonsResponse],
@@ -1786,6 +1811,38 @@ ModelSofascorePlayerStatisticsSeasonsResponse = TypedDict('ModelSofascorePlayerS
1786
1811
  'tournaments': NotRequired[list[ModelSofascoreStatisticsTournament]],
1787
1812
  }, total=False)
1788
1813
 
1814
+ ModelSofascorePlayerStatisticsResponseDoc = TypedDict('ModelSofascorePlayerStatisticsResponseDoc', {
1815
+ 'code': NotRequired[int],
1816
+ 'data': NotRequired[ModelSofascorePlayerStatisticsResponse],
1817
+ 'msg': NotRequired[str],
1818
+ }, total=False)
1819
+
1820
+ ModelSofascorePlayerStatisticsResponse = TypedDict('ModelSofascorePlayerStatisticsResponse', {
1821
+ 'all_statistics': NotRequired[dict[str, float]],
1822
+ 'count': NotRequired[int],
1823
+ 'fetched_at': NotRequired[str],
1824
+ 'match_type': NotRequired[str],
1825
+ 'player_id': NotRequired[int],
1826
+ 'seasons': NotRequired[list[ModelSofascorePlayerStatisticsSeasonRow]],
1827
+ 'source_url': NotRequired[str],
1828
+ }, total=False)
1829
+
1830
+ ModelSofascorePlayerStatisticsSeasonRow = TypedDict('ModelSofascorePlayerStatisticsSeasonRow', {
1831
+ 'end_year': NotRequired[int],
1832
+ 'season': NotRequired[ModelSofascorePlayerStatisticsSeasonRef],
1833
+ 'start_year': NotRequired[int],
1834
+ 'statistics': NotRequired[dict[str, float]],
1835
+ 'team': NotRequired[ModelSofascoreTeamRef],
1836
+ 'tournament': NotRequired[ModelSofascoreUniqueTournamentBrief],
1837
+ 'year': NotRequired[str],
1838
+ }, total=False)
1839
+
1840
+ ModelSofascorePlayerStatisticsSeasonRef = TypedDict('ModelSofascorePlayerStatisticsSeasonRef', {
1841
+ 'id': NotRequired[int],
1842
+ 'name': NotRequired[str],
1843
+ 'year': NotRequired[str],
1844
+ }, total=False)
1845
+
1789
1846
  ModelSofascorePlayerStatisticalRankingsResponseDoc = TypedDict('ModelSofascorePlayerStatisticalRankingsResponseDoc', {
1790
1847
  'code': NotRequired[int],
1791
1848
  'data': NotRequired[ModelSofascorePlayerStatisticalRankingsResponse],
@@ -1967,14 +2024,6 @@ ModelSofascorePlayerEventsResponse = TypedDict('ModelSofascorePlayerEventsRespon
1967
2024
  'source_url': NotRequired[str],
1968
2025
  }, total=False)
1969
2026
 
1970
- ModelSofascorePlayerEventRow = TypedDict('ModelSofascorePlayerEventRow', {
1971
- 'event': NotRequired[ModelSofascoreEventSummary],
1972
- 'incident_counts': NotRequired[dict[str, float]],
1973
- 'on_bench': NotRequired[bool],
1974
- 'played_for_team_id': NotRequired[int],
1975
- 'statistics': NotRequired[dict[str, float]],
1976
- }, total=False)
1977
-
1978
2027
  ModelSofascorePlayerAttributesResponseDoc = TypedDict('ModelSofascorePlayerAttributesResponseDoc', {
1979
2028
  'code': NotRequired[int],
1980
2029
  'data': NotRequired[ModelSofascorePlayerAttributesResponse],
@@ -2361,6 +2410,23 @@ ModelSofascoreTeamStreak = TypedDict('ModelSofascoreTeamStreak', {
2361
2410
  'value': NotRequired[str],
2362
2411
  }, total=False)
2363
2412
 
2413
+ ModelSofascoreEventTeamShotmapResponse = TypedDict('ModelSofascoreEventTeamShotmapResponse', {
2414
+ 'count': NotRequired[int],
2415
+ 'event_id': NotRequired[int],
2416
+ 'fetched_at': NotRequired[str],
2417
+ 'locations': NotRequired[list[ModelSofascoreShotLocation]],
2418
+ 'source_url': NotRequired[str],
2419
+ 'team_id': NotRequired[int],
2420
+ }, total=False)
2421
+
2422
+ ModelSofascoreShotLocation = TypedDict('ModelSofascoreShotLocation', {
2423
+ 'made': NotRequired[int],
2424
+ 'missed': NotRequired[int],
2425
+ 'saved': NotRequired[int],
2426
+ 'x': NotRequired[int],
2427
+ 'y': NotRequired[int],
2428
+ }, total=False)
2429
+
2364
2430
  ModelSofascoreEventTeamHeatmapResponseDoc = TypedDict('ModelSofascoreEventTeamHeatmapResponseDoc', {
2365
2431
  'code': NotRequired[int],
2366
2432
  'data': NotRequired[ModelSofascoreEventTeamHeatmapResponse],
@@ -2557,6 +2623,26 @@ ModelSofascoreEventPlayerHeatmapResponse = TypedDict('ModelSofascoreEventPlayerH
2557
2623
  'source_url': NotRequired[str],
2558
2624
  }, total=False)
2559
2625
 
2626
+ ModelSofascoreEventPlayerActionsResponse = TypedDict('ModelSofascoreEventPlayerActionsResponse', {
2627
+ 'ball_carries': NotRequired[list[ModelSofascorePlayerAction]],
2628
+ 'defensive': NotRequired[list[ModelSofascorePlayerAction]],
2629
+ 'dribbles': NotRequired[list[ModelSofascorePlayerAction]],
2630
+ 'event_id': NotRequired[int],
2631
+ 'fetched_at': NotRequired[str],
2632
+ 'passes': NotRequired[list[ModelSofascorePlayerAction]],
2633
+ 'player_id': NotRequired[int],
2634
+ 'source_url': NotRequired[str],
2635
+ }, total=False)
2636
+
2637
+ ModelSofascorePlayerAction = TypedDict('ModelSofascorePlayerAction', {
2638
+ 'coordinates': NotRequired[ModelSofascoreCoordinates],
2639
+ 'end_coordinates': NotRequired[ModelSofascoreCoordinates],
2640
+ 'is_home': NotRequired[bool],
2641
+ 'key_pass': NotRequired[bool],
2642
+ 'outcome': NotRequired[bool],
2643
+ 'type': NotRequired[str],
2644
+ }, total=False)
2645
+
2560
2646
  ModelSofascoreEventOddsResponseDoc = TypedDict('ModelSofascoreEventOddsResponseDoc', {
2561
2647
  'code': NotRequired[int],
2562
2648
  'data': NotRequired[ModelSofascoreEventOddsResponse],
@@ -3457,6 +3543,15 @@ SofascoreEventOddsParams = TypedDict('SofascoreEventOddsParams', {
3457
3543
  'id': Required[str],
3458
3544
  }, total=False)
3459
3545
 
3546
+ SofascoreEventPlayerActionsResponse = Any
3547
+ SofascoreEventPlayerActionsParams = TypedDict('SofascoreEventPlayerActionsParams', {
3548
+ '_response_type': NotRequired[ResponseType],
3549
+ '_timeout': NotRequired[float],
3550
+ '_headers': NotRequired[Mapping[str, str]],
3551
+ 'id': Required[str],
3552
+ 'player_id': Required[str],
3553
+ }, total=False)
3554
+
3460
3555
  SofascoreEventPlayerHeatmapResponse = ModelSofascoreEventPlayerHeatmapResponseDoc
3461
3556
  SofascoreEventPlayerHeatmapParams = TypedDict('SofascoreEventPlayerHeatmapParams', {
3462
3557
  '_response_type': NotRequired[ResponseType],
@@ -3516,6 +3611,15 @@ SofascoreEventTeamHeatmapParams = TypedDict('SofascoreEventTeamHeatmapParams', {
3516
3611
  'team_id': Required[str],
3517
3612
  }, total=False)
3518
3613
 
3614
+ SofascoreEventTeamShotmapResponse = Any
3615
+ SofascoreEventTeamShotmapParams = TypedDict('SofascoreEventTeamShotmapParams', {
3616
+ '_response_type': NotRequired[ResponseType],
3617
+ '_timeout': NotRequired[float],
3618
+ '_headers': NotRequired[Mapping[str, str]],
3619
+ 'id': Required[str],
3620
+ 'team_id': Required[str],
3621
+ }, total=False)
3622
+
3519
3623
  SofascoreEventTeamStreaksResponse = ModelSofascoreEventTeamStreaksResponseDoc
3520
3624
  SofascoreEventTeamStreaksParams = TypedDict('SofascoreEventTeamStreaksParams', {
3521
3625
  '_response_type': NotRequired[ResponseType],
@@ -3700,6 +3804,15 @@ SofascorePlayerStatisticalRankingsParams = TypedDict('SofascorePlayerStatistical
3700
3804
  'type': NotRequired[Literal['overall']],
3701
3805
  }, total=False)
3702
3806
 
3807
+ SofascorePlayerStatisticsResponse = ModelSofascorePlayerStatisticsResponseDoc
3808
+ SofascorePlayerStatisticsParams = TypedDict('SofascorePlayerStatisticsParams', {
3809
+ '_response_type': NotRequired[ResponseType],
3810
+ '_timeout': NotRequired[float],
3811
+ '_headers': NotRequired[Mapping[str, str]],
3812
+ 'id': Required[str],
3813
+ 'match_type': NotRequired[Literal['overall', 'home', 'away']],
3814
+ }, total=False)
3815
+
3703
3816
  SofascorePlayerStatisticsSeasonsResponse = ModelSofascorePlayerStatisticsSeasonsResponseDoc
3704
3817
  SofascorePlayerStatisticsSeasonsParams = TypedDict('SofascorePlayerStatisticsSeasonsParams', {
3705
3818
  '_response_type': NotRequired[ResponseType],
@@ -3708,6 +3821,16 @@ SofascorePlayerStatisticsSeasonsParams = TypedDict('SofascorePlayerStatisticsSea
3708
3821
  'id': Required[str],
3709
3822
  }, total=False)
3710
3823
 
3824
+ SofascorePlayerTournamentEventsResponse = ModelSofascorePlayerTournamentEventsResponseDoc
3825
+ SofascorePlayerTournamentEventsParams = TypedDict('SofascorePlayerTournamentEventsParams', {
3826
+ '_response_type': NotRequired[ResponseType],
3827
+ '_timeout': NotRequired[float],
3828
+ '_headers': NotRequired[Mapping[str, str]],
3829
+ 'id': Required[str],
3830
+ 'tournament_id': Required[str],
3831
+ 'page': NotRequired[int],
3832
+ }, total=False)
3833
+
3711
3834
  SofascorePlayerTournamentsResponse = ModelSofascorePlayerTournamentsResponseDoc
3712
3835
  SofascorePlayerTournamentsParams = TypedDict('SofascorePlayerTournamentsParams', {
3713
3836
  '_response_type': NotRequired[ResponseType],
@@ -4376,6 +4499,12 @@ class SofascoreGroup:
4376
4499
  @overload
4377
4500
  def event_odds(self, **params: Unpack[SofascoreEventOddsDefaultParams]) -> SofascoreEventOddsResponse: ...
4378
4501
  @overload
4502
+ def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsStreamParams]) -> BinaryIO: ...
4503
+ @overload
4504
+ def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsTextResponseParams]) -> str: ...
4505
+ @overload
4506
+ def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsDefaultParams]) -> SofascoreEventPlayerActionsResponse: ...
4507
+ @overload
4379
4508
  def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapStreamParams]) -> BinaryIO: ...
4380
4509
  @overload
4381
4510
  def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapTextResponseParams]) -> str: ...
@@ -4418,6 +4547,12 @@ class SofascoreGroup:
4418
4547
  @overload
4419
4548
  def event_team_heatmap(self, **params: Unpack[SofascoreEventTeamHeatmapDefaultParams]) -> SofascoreEventTeamHeatmapResponse: ...
4420
4549
  @overload
4550
+ def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapStreamParams]) -> BinaryIO: ...
4551
+ @overload
4552
+ def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapTextResponseParams]) -> str: ...
4553
+ @overload
4554
+ def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapDefaultParams]) -> SofascoreEventTeamShotmapResponse: ...
4555
+ @overload
4421
4556
  def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksStreamParams]) -> BinaryIO: ...
4422
4557
  @overload
4423
4558
  def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksTextResponseParams]) -> str: ...
@@ -4544,12 +4679,24 @@ class SofascoreGroup:
4544
4679
  @overload
4545
4680
  def player_statistical_rankings(self, **params: Unpack[SofascorePlayerStatisticalRankingsDefaultParams]) -> SofascorePlayerStatisticalRankingsResponse: ...
4546
4681
  @overload
4682
+ def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsStreamParams]) -> BinaryIO: ...
4683
+ @overload
4684
+ def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsTextResponseParams]) -> str: ...
4685
+ @overload
4686
+ def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsDefaultParams]) -> SofascorePlayerStatisticsResponse: ...
4687
+ @overload
4547
4688
  def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsStreamParams]) -> BinaryIO: ...
4548
4689
  @overload
4549
4690
  def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsTextResponseParams]) -> str: ...
4550
4691
  @overload
4551
4692
  def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsDefaultParams]) -> SofascorePlayerStatisticsSeasonsResponse: ...
4552
4693
  @overload
4694
+ def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsStreamParams]) -> BinaryIO: ...
4695
+ @overload
4696
+ def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsTextResponseParams]) -> str: ...
4697
+ @overload
4698
+ def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsDefaultParams]) -> SofascorePlayerTournamentEventsResponse: ...
4699
+ @overload
4553
4700
  def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsStreamParams]) -> BinaryIO: ...
4554
4701
  @overload
4555
4702
  def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsTextResponseParams]) -> str: ...
@@ -4926,6 +5073,7 @@ OperationId = Literal[
4926
5073
  'sofascore-event-lineups',
4927
5074
  'sofascore-event-managers',
4928
5075
  'sofascore-event-odds',
5076
+ 'sofascore-event-player-actions',
4929
5077
  'sofascore-event-player-heatmap',
4930
5078
  'sofascore-event-player-statistics',
4931
5079
  'sofascore-event-point-by-point',
@@ -4933,6 +5081,7 @@ OperationId = Literal[
4933
5081
  'sofascore-event-shotmap',
4934
5082
  'sofascore-event-statistics',
4935
5083
  'sofascore-event-team-heatmap',
5084
+ 'sofascore-event-team-shotmap',
4936
5085
  'sofascore-event-team-streaks',
4937
5086
  'sofascore-event-tennis-power',
4938
5087
  'sofascore-event-tv-channels',
@@ -4954,7 +5103,9 @@ OperationId = Literal[
4954
5103
  'sofascore-player-season-heatmap',
4955
5104
  'sofascore-player-season-statistics',
4956
5105
  'sofascore-player-statistical-rankings',
5106
+ 'sofascore-player-statistics',
4957
5107
  'sofascore-player-statistics-seasons',
5108
+ 'sofascore-player-tournament-events',
4958
5109
  'sofascore-player-tournaments',
4959
5110
  'sofascore-player-transfers',
4960
5111
  'sofascore-ranking-types',
@@ -5351,6 +5502,18 @@ class CrawloraClient:
5351
5502
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5352
5503
  ) -> SofascoreEventOddsResponse: ...
5353
5504
  @overload
5505
+ def operation(
5506
+ self,
5507
+ operation_id: Literal['sofascore-event-player-actions'],
5508
+ params: SofascoreEventPlayerActionsParams,
5509
+ *,
5510
+ response_type: ResponseType = ...,
5511
+ timeout: float | None = ...,
5512
+ headers: Mapping[str, str] | None = ...,
5513
+ retries: int | None = ...,
5514
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5515
+ ) -> SofascoreEventPlayerActionsResponse: ...
5516
+ @overload
5354
5517
  def operation(
5355
5518
  self,
5356
5519
  operation_id: Literal['sofascore-event-player-heatmap'],
@@ -5435,6 +5598,18 @@ class CrawloraClient:
5435
5598
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5436
5599
  ) -> SofascoreEventTeamHeatmapResponse: ...
5437
5600
  @overload
5601
+ def operation(
5602
+ self,
5603
+ operation_id: Literal['sofascore-event-team-shotmap'],
5604
+ params: SofascoreEventTeamShotmapParams,
5605
+ *,
5606
+ response_type: ResponseType = ...,
5607
+ timeout: float | None = ...,
5608
+ headers: Mapping[str, str] | None = ...,
5609
+ retries: int | None = ...,
5610
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5611
+ ) -> SofascoreEventTeamShotmapResponse: ...
5612
+ @overload
5438
5613
  def operation(
5439
5614
  self,
5440
5615
  operation_id: Literal['sofascore-event-team-streaks'],
@@ -5687,6 +5862,18 @@ class CrawloraClient:
5687
5862
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5688
5863
  ) -> SofascorePlayerStatisticalRankingsResponse: ...
5689
5864
  @overload
5865
+ def operation(
5866
+ self,
5867
+ operation_id: Literal['sofascore-player-statistics'],
5868
+ params: SofascorePlayerStatisticsParams,
5869
+ *,
5870
+ response_type: ResponseType = ...,
5871
+ timeout: float | None = ...,
5872
+ headers: Mapping[str, str] | None = ...,
5873
+ retries: int | None = ...,
5874
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5875
+ ) -> SofascorePlayerStatisticsResponse: ...
5876
+ @overload
5690
5877
  def operation(
5691
5878
  self,
5692
5879
  operation_id: Literal['sofascore-player-statistics-seasons'],
@@ -5699,6 +5886,18 @@ class CrawloraClient:
5699
5886
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5700
5887
  ) -> SofascorePlayerStatisticsSeasonsResponse: ...
5701
5888
  @overload
5889
+ def operation(
5890
+ self,
5891
+ operation_id: Literal['sofascore-player-tournament-events'],
5892
+ params: SofascorePlayerTournamentEventsParams,
5893
+ *,
5894
+ response_type: ResponseType = ...,
5895
+ timeout: float | None = ...,
5896
+ headers: Mapping[str, str] | None = ...,
5897
+ retries: int | None = ...,
5898
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
5899
+ ) -> SofascorePlayerTournamentEventsResponse: ...
5900
+ @overload
5702
5901
  def operation(
5703
5902
  self,
5704
5903
  operation_id: Literal['sofascore-player-tournaments'],
@@ -6671,6 +6870,18 @@ class CrawloraClient:
6671
6870
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
6672
6871
  ) -> SofascoreEventOddsResponse: ...
6673
6872
  @overload
6873
+ def request(
6874
+ self,
6875
+ operation_id: Literal['sofascore-event-player-actions'],
6876
+ params: SofascoreEventPlayerActionsParams,
6877
+ *,
6878
+ response_type: ResponseType = ...,
6879
+ timeout: float | None = ...,
6880
+ headers: Mapping[str, str] | None = ...,
6881
+ retries: int | None = ...,
6882
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
6883
+ ) -> SofascoreEventPlayerActionsResponse: ...
6884
+ @overload
6674
6885
  def request(
6675
6886
  self,
6676
6887
  operation_id: Literal['sofascore-event-player-heatmap'],
@@ -6755,6 +6966,18 @@ class CrawloraClient:
6755
6966
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
6756
6967
  ) -> SofascoreEventTeamHeatmapResponse: ...
6757
6968
  @overload
6969
+ def request(
6970
+ self,
6971
+ operation_id: Literal['sofascore-event-team-shotmap'],
6972
+ params: SofascoreEventTeamShotmapParams,
6973
+ *,
6974
+ response_type: ResponseType = ...,
6975
+ timeout: float | None = ...,
6976
+ headers: Mapping[str, str] | None = ...,
6977
+ retries: int | None = ...,
6978
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
6979
+ ) -> SofascoreEventTeamShotmapResponse: ...
6980
+ @overload
6758
6981
  def request(
6759
6982
  self,
6760
6983
  operation_id: Literal['sofascore-event-team-streaks'],
@@ -7007,6 +7230,18 @@ class CrawloraClient:
7007
7230
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
7008
7231
  ) -> SofascorePlayerStatisticalRankingsResponse: ...
7009
7232
  @overload
7233
+ def request(
7234
+ self,
7235
+ operation_id: Literal['sofascore-player-statistics'],
7236
+ params: SofascorePlayerStatisticsParams,
7237
+ *,
7238
+ response_type: ResponseType = ...,
7239
+ timeout: float | None = ...,
7240
+ headers: Mapping[str, str] | None = ...,
7241
+ retries: int | None = ...,
7242
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
7243
+ ) -> SofascorePlayerStatisticsResponse: ...
7244
+ @overload
7010
7245
  def request(
7011
7246
  self,
7012
7247
  operation_id: Literal['sofascore-player-statistics-seasons'],
@@ -7019,6 +7254,18 @@ class CrawloraClient:
7019
7254
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
7020
7255
  ) -> SofascorePlayerStatisticsSeasonsResponse: ...
7021
7256
  @overload
7257
+ def request(
7258
+ self,
7259
+ operation_id: Literal['sofascore-player-tournament-events'],
7260
+ params: SofascorePlayerTournamentEventsParams,
7261
+ *,
7262
+ response_type: ResponseType = ...,
7263
+ timeout: float | None = ...,
7264
+ headers: Mapping[str, str] | None = ...,
7265
+ retries: int | None = ...,
7266
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
7267
+ ) -> SofascorePlayerTournamentEventsResponse: ...
7268
+ @overload
7022
7269
  def request(
7023
7270
  self,
7024
7271
  operation_id: Literal['sofascore-player-tournaments'],
@@ -7892,6 +8139,12 @@ class SofascoreClient(CrawloraClient):
7892
8139
  @overload
7893
8140
  def event_odds(self, **params: Unpack[SofascoreEventOddsDefaultParams]) -> SofascoreEventOddsResponse: ...
7894
8141
  @overload
8142
+ def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsStreamParams]) -> BinaryIO: ...
8143
+ @overload
8144
+ def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsTextResponseParams]) -> str: ...
8145
+ @overload
8146
+ def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsDefaultParams]) -> SofascoreEventPlayerActionsResponse: ...
8147
+ @overload
7895
8148
  def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapStreamParams]) -> BinaryIO: ...
7896
8149
  @overload
7897
8150
  def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapTextResponseParams]) -> str: ...
@@ -7934,6 +8187,12 @@ class SofascoreClient(CrawloraClient):
7934
8187
  @overload
7935
8188
  def event_team_heatmap(self, **params: Unpack[SofascoreEventTeamHeatmapDefaultParams]) -> SofascoreEventTeamHeatmapResponse: ...
7936
8189
  @overload
8190
+ def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapStreamParams]) -> BinaryIO: ...
8191
+ @overload
8192
+ def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapTextResponseParams]) -> str: ...
8193
+ @overload
8194
+ def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapDefaultParams]) -> SofascoreEventTeamShotmapResponse: ...
8195
+ @overload
7937
8196
  def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksStreamParams]) -> BinaryIO: ...
7938
8197
  @overload
7939
8198
  def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksTextResponseParams]) -> str: ...
@@ -8060,12 +8319,24 @@ class SofascoreClient(CrawloraClient):
8060
8319
  @overload
8061
8320
  def player_statistical_rankings(self, **params: Unpack[SofascorePlayerStatisticalRankingsDefaultParams]) -> SofascorePlayerStatisticalRankingsResponse: ...
8062
8321
  @overload
8322
+ def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsStreamParams]) -> BinaryIO: ...
8323
+ @overload
8324
+ def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsTextResponseParams]) -> str: ...
8325
+ @overload
8326
+ def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsDefaultParams]) -> SofascorePlayerStatisticsResponse: ...
8327
+ @overload
8063
8328
  def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsStreamParams]) -> BinaryIO: ...
8064
8329
  @overload
8065
8330
  def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsTextResponseParams]) -> str: ...
8066
8331
  @overload
8067
8332
  def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsDefaultParams]) -> SofascorePlayerStatisticsSeasonsResponse: ...
8068
8333
  @overload
8334
+ def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsStreamParams]) -> BinaryIO: ...
8335
+ @overload
8336
+ def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsTextResponseParams]) -> str: ...
8337
+ @overload
8338
+ def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsDefaultParams]) -> SofascorePlayerTournamentEventsResponse: ...
8339
+ @overload
8069
8340
  def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsStreamParams]) -> BinaryIO: ...
8070
8341
  @overload
8071
8342
  def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsTextResponseParams]) -> str: ...
@@ -8550,6 +8821,12 @@ class AsyncSofascoreClient(AsyncCrawloraClient):
8550
8821
  @overload
8551
8822
  async def event_odds(self, **params: Unpack[SofascoreEventOddsDefaultParams]) -> SofascoreEventOddsResponse: ...
8552
8823
  @overload
8824
+ async def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsStreamParams]) -> BinaryIO: ...
8825
+ @overload
8826
+ async def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsTextResponseParams]) -> str: ...
8827
+ @overload
8828
+ async def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsDefaultParams]) -> SofascoreEventPlayerActionsResponse: ...
8829
+ @overload
8553
8830
  async def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapStreamParams]) -> BinaryIO: ...
8554
8831
  @overload
8555
8832
  async def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapTextResponseParams]) -> str: ...
@@ -8592,6 +8869,12 @@ class AsyncSofascoreClient(AsyncCrawloraClient):
8592
8869
  @overload
8593
8870
  async def event_team_heatmap(self, **params: Unpack[SofascoreEventTeamHeatmapDefaultParams]) -> SofascoreEventTeamHeatmapResponse: ...
8594
8871
  @overload
8872
+ async def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapStreamParams]) -> BinaryIO: ...
8873
+ @overload
8874
+ async def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapTextResponseParams]) -> str: ...
8875
+ @overload
8876
+ async def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapDefaultParams]) -> SofascoreEventTeamShotmapResponse: ...
8877
+ @overload
8595
8878
  async def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksStreamParams]) -> BinaryIO: ...
8596
8879
  @overload
8597
8880
  async def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksTextResponseParams]) -> str: ...
@@ -8718,12 +9001,24 @@ class AsyncSofascoreClient(AsyncCrawloraClient):
8718
9001
  @overload
8719
9002
  async def player_statistical_rankings(self, **params: Unpack[SofascorePlayerStatisticalRankingsDefaultParams]) -> SofascorePlayerStatisticalRankingsResponse: ...
8720
9003
  @overload
9004
+ async def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsStreamParams]) -> BinaryIO: ...
9005
+ @overload
9006
+ async def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsTextResponseParams]) -> str: ...
9007
+ @overload
9008
+ async def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsDefaultParams]) -> SofascorePlayerStatisticsResponse: ...
9009
+ @overload
8721
9010
  async def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsStreamParams]) -> BinaryIO: ...
8722
9011
  @overload
8723
9012
  async def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsTextResponseParams]) -> str: ...
8724
9013
  @overload
8725
9014
  async def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsDefaultParams]) -> SofascorePlayerStatisticsSeasonsResponse: ...
8726
9015
  @overload
9016
+ async def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsStreamParams]) -> BinaryIO: ...
9017
+ @overload
9018
+ async def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsTextResponseParams]) -> str: ...
9019
+ @overload
9020
+ async def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsDefaultParams]) -> SofascorePlayerTournamentEventsResponse: ...
9021
+ @overload
8727
9022
  async def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsStreamParams]) -> BinaryIO: ...
8728
9023
  @overload
8729
9024
  async def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsTextResponseParams]) -> str: ...
@@ -9206,6 +9501,12 @@ class _AsyncSofascoreGroup:
9206
9501
  @overload
9207
9502
  async def event_odds(self, **params: Unpack[SofascoreEventOddsDefaultParams]) -> SofascoreEventOddsResponse: ...
9208
9503
  @overload
9504
+ async def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsStreamParams]) -> BinaryIO: ...
9505
+ @overload
9506
+ async def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsTextResponseParams]) -> str: ...
9507
+ @overload
9508
+ async def event_player_actions(self, **params: Unpack[SofascoreEventPlayerActionsDefaultParams]) -> SofascoreEventPlayerActionsResponse: ...
9509
+ @overload
9209
9510
  async def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapStreamParams]) -> BinaryIO: ...
9210
9511
  @overload
9211
9512
  async def event_player_heatmap(self, **params: Unpack[SofascoreEventPlayerHeatmapTextResponseParams]) -> str: ...
@@ -9248,6 +9549,12 @@ class _AsyncSofascoreGroup:
9248
9549
  @overload
9249
9550
  async def event_team_heatmap(self, **params: Unpack[SofascoreEventTeamHeatmapDefaultParams]) -> SofascoreEventTeamHeatmapResponse: ...
9250
9551
  @overload
9552
+ async def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapStreamParams]) -> BinaryIO: ...
9553
+ @overload
9554
+ async def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapTextResponseParams]) -> str: ...
9555
+ @overload
9556
+ async def event_team_shotmap(self, **params: Unpack[SofascoreEventTeamShotmapDefaultParams]) -> SofascoreEventTeamShotmapResponse: ...
9557
+ @overload
9251
9558
  async def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksStreamParams]) -> BinaryIO: ...
9252
9559
  @overload
9253
9560
  async def event_team_streaks(self, **params: Unpack[SofascoreEventTeamStreaksTextResponseParams]) -> str: ...
@@ -9374,12 +9681,24 @@ class _AsyncSofascoreGroup:
9374
9681
  @overload
9375
9682
  async def player_statistical_rankings(self, **params: Unpack[SofascorePlayerStatisticalRankingsDefaultParams]) -> SofascorePlayerStatisticalRankingsResponse: ...
9376
9683
  @overload
9684
+ async def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsStreamParams]) -> BinaryIO: ...
9685
+ @overload
9686
+ async def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsTextResponseParams]) -> str: ...
9687
+ @overload
9688
+ async def player_statistics(self, **params: Unpack[SofascorePlayerStatisticsDefaultParams]) -> SofascorePlayerStatisticsResponse: ...
9689
+ @overload
9377
9690
  async def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsStreamParams]) -> BinaryIO: ...
9378
9691
  @overload
9379
9692
  async def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsTextResponseParams]) -> str: ...
9380
9693
  @overload
9381
9694
  async def player_statistics_seasons(self, **params: Unpack[SofascorePlayerStatisticsSeasonsDefaultParams]) -> SofascorePlayerStatisticsSeasonsResponse: ...
9382
9695
  @overload
9696
+ async def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsStreamParams]) -> BinaryIO: ...
9697
+ @overload
9698
+ async def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsTextResponseParams]) -> str: ...
9699
+ @overload
9700
+ async def player_tournament_events(self, **params: Unpack[SofascorePlayerTournamentEventsDefaultParams]) -> SofascorePlayerTournamentEventsResponse: ...
9701
+ @overload
9383
9702
  async def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsStreamParams]) -> BinaryIO: ...
9384
9703
  @overload
9385
9704
  async def player_tournaments(self, **params: Unpack[SofascorePlayerTournamentsTextResponseParams]) -> str: ...
@@ -10190,6 +10509,30 @@ SofascoreEventOddsStreamParams = TypedDict('SofascoreEventOddsStreamParams', {
10190
10509
  'id': Required[str],
10191
10510
  }, total=False)
10192
10511
 
10512
+ SofascoreEventPlayerActionsDefaultParams = TypedDict('SofascoreEventPlayerActionsDefaultParams', {
10513
+ '_timeout': NotRequired[float],
10514
+ '_headers': NotRequired[Mapping[str, str]],
10515
+ '_response_type': NotRequired[Literal["auto", "json"]],
10516
+ 'id': Required[str],
10517
+ 'player_id': Required[str],
10518
+ }, total=False)
10519
+
10520
+ SofascoreEventPlayerActionsTextResponseParams = TypedDict('SofascoreEventPlayerActionsTextResponseParams', {
10521
+ '_timeout': NotRequired[float],
10522
+ '_headers': NotRequired[Mapping[str, str]],
10523
+ '_response_type': Required[Literal["text"]],
10524
+ 'id': Required[str],
10525
+ 'player_id': Required[str],
10526
+ }, total=False)
10527
+
10528
+ SofascoreEventPlayerActionsStreamParams = TypedDict('SofascoreEventPlayerActionsStreamParams', {
10529
+ '_timeout': NotRequired[float],
10530
+ '_headers': NotRequired[Mapping[str, str]],
10531
+ '_response_type': Required[Literal["stream"]],
10532
+ 'id': Required[str],
10533
+ 'player_id': Required[str],
10534
+ }, total=False)
10535
+
10193
10536
  SofascoreEventPlayerHeatmapDefaultParams = TypedDict('SofascoreEventPlayerHeatmapDefaultParams', {
10194
10537
  '_timeout': NotRequired[float],
10195
10538
  '_headers': NotRequired[Mapping[str, str]],
@@ -10346,6 +10689,30 @@ SofascoreEventTeamHeatmapStreamParams = TypedDict('SofascoreEventTeamHeatmapStre
10346
10689
  'team_id': Required[str],
10347
10690
  }, total=False)
10348
10691
 
10692
+ SofascoreEventTeamShotmapDefaultParams = TypedDict('SofascoreEventTeamShotmapDefaultParams', {
10693
+ '_timeout': NotRequired[float],
10694
+ '_headers': NotRequired[Mapping[str, str]],
10695
+ '_response_type': NotRequired[Literal["auto", "json"]],
10696
+ 'id': Required[str],
10697
+ 'team_id': Required[str],
10698
+ }, total=False)
10699
+
10700
+ SofascoreEventTeamShotmapTextResponseParams = TypedDict('SofascoreEventTeamShotmapTextResponseParams', {
10701
+ '_timeout': NotRequired[float],
10702
+ '_headers': NotRequired[Mapping[str, str]],
10703
+ '_response_type': Required[Literal["text"]],
10704
+ 'id': Required[str],
10705
+ 'team_id': Required[str],
10706
+ }, total=False)
10707
+
10708
+ SofascoreEventTeamShotmapStreamParams = TypedDict('SofascoreEventTeamShotmapStreamParams', {
10709
+ '_timeout': NotRequired[float],
10710
+ '_headers': NotRequired[Mapping[str, str]],
10711
+ '_response_type': Required[Literal["stream"]],
10712
+ 'id': Required[str],
10713
+ 'team_id': Required[str],
10714
+ }, total=False)
10715
+
10349
10716
  SofascoreEventTeamStreaksDefaultParams = TypedDict('SofascoreEventTeamStreaksDefaultParams', {
10350
10717
  '_timeout': NotRequired[float],
10351
10718
  '_headers': NotRequired[Mapping[str, str]],
@@ -10835,6 +11202,30 @@ SofascorePlayerStatisticalRankingsStreamParams = TypedDict('SofascorePlayerStati
10835
11202
  'type': NotRequired[Literal['overall']],
10836
11203
  }, total=False)
10837
11204
 
11205
+ SofascorePlayerStatisticsDefaultParams = TypedDict('SofascorePlayerStatisticsDefaultParams', {
11206
+ '_timeout': NotRequired[float],
11207
+ '_headers': NotRequired[Mapping[str, str]],
11208
+ '_response_type': NotRequired[Literal["auto", "json"]],
11209
+ 'id': Required[str],
11210
+ 'match_type': NotRequired[Literal['overall', 'home', 'away']],
11211
+ }, total=False)
11212
+
11213
+ SofascorePlayerStatisticsTextResponseParams = TypedDict('SofascorePlayerStatisticsTextResponseParams', {
11214
+ '_timeout': NotRequired[float],
11215
+ '_headers': NotRequired[Mapping[str, str]],
11216
+ '_response_type': Required[Literal["text"]],
11217
+ 'id': Required[str],
11218
+ 'match_type': NotRequired[Literal['overall', 'home', 'away']],
11219
+ }, total=False)
11220
+
11221
+ SofascorePlayerStatisticsStreamParams = TypedDict('SofascorePlayerStatisticsStreamParams', {
11222
+ '_timeout': NotRequired[float],
11223
+ '_headers': NotRequired[Mapping[str, str]],
11224
+ '_response_type': Required[Literal["stream"]],
11225
+ 'id': Required[str],
11226
+ 'match_type': NotRequired[Literal['overall', 'home', 'away']],
11227
+ }, total=False)
11228
+
10838
11229
  SofascorePlayerStatisticsSeasonsDefaultParams = TypedDict('SofascorePlayerStatisticsSeasonsDefaultParams', {
10839
11230
  '_timeout': NotRequired[float],
10840
11231
  '_headers': NotRequired[Mapping[str, str]],
@@ -10856,6 +11247,33 @@ SofascorePlayerStatisticsSeasonsStreamParams = TypedDict('SofascorePlayerStatist
10856
11247
  'id': Required[str],
10857
11248
  }, total=False)
10858
11249
 
11250
+ SofascorePlayerTournamentEventsDefaultParams = TypedDict('SofascorePlayerTournamentEventsDefaultParams', {
11251
+ '_timeout': NotRequired[float],
11252
+ '_headers': NotRequired[Mapping[str, str]],
11253
+ '_response_type': NotRequired[Literal["auto", "json"]],
11254
+ 'id': Required[str],
11255
+ 'tournament_id': Required[str],
11256
+ 'page': NotRequired[int],
11257
+ }, total=False)
11258
+
11259
+ SofascorePlayerTournamentEventsTextResponseParams = TypedDict('SofascorePlayerTournamentEventsTextResponseParams', {
11260
+ '_timeout': NotRequired[float],
11261
+ '_headers': NotRequired[Mapping[str, str]],
11262
+ '_response_type': Required[Literal["text"]],
11263
+ 'id': Required[str],
11264
+ 'tournament_id': Required[str],
11265
+ 'page': NotRequired[int],
11266
+ }, total=False)
11267
+
11268
+ SofascorePlayerTournamentEventsStreamParams = TypedDict('SofascorePlayerTournamentEventsStreamParams', {
11269
+ '_timeout': NotRequired[float],
11270
+ '_headers': NotRequired[Mapping[str, str]],
11271
+ '_response_type': Required[Literal["stream"]],
11272
+ 'id': Required[str],
11273
+ 'tournament_id': Required[str],
11274
+ 'page': NotRequired[int],
11275
+ }, total=False)
11276
+
10859
11277
  SofascorePlayerTournamentsDefaultParams = TypedDict('SofascorePlayerTournamentsDefaultParams', {
10860
11278
  '_timeout': NotRequired[float],
10861
11279
  '_headers': NotRequired[Mapping[str, str]],
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crawlora-sofascore
3
- Version: 0.3.5
4
- Summary: Crawlora SofaScore API client with 109 endpoints for live events, match details, lineups, statistics, tournaments, and player/team data
3
+ Version: 0.5.0
4
+ Summary: Crawlora SofaScore API client with 113 endpoints for live events, match details, lineups, statistics, tournaments, and player/team data
5
5
  Author: Crawlora
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage
@@ -24,7 +24,7 @@ Dynamic: license-file
24
24
 
25
25
  # crawlora-sofascore — SofaScore API client for Python
26
26
 
27
- Python client for Crawlora's hosted SofaScore API. It exposes 109 API endpoints covering live events, match details, lineups, statistics, tournaments, and player/team data. Requests go to [Crawlora](https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage); the package does not run a browser or scrape
27
+ Python client for Crawlora's hosted SofaScore API. It exposes 113 API endpoints covering live events, match details, lineups, statistics, tournaments, and player/team data. Requests go to [Crawlora](https://crawlora.net/?utm_source=pypi&utm_medium=referral&utm_campaign=platform-clients&utm_content=sofascore-python-homepage); the package does not run a browser or scrape
28
28
  SofaScore locally. A Crawlora account and `CRAWLORA_API_KEY` are required,
29
29
  and API use is billed under your Crawlora account. Crawlora is independent from and not endorsed by
30
30
  SofaScore or its owners.
@@ -118,6 +118,7 @@ This package exposes every route below through direct snake_case methods and the
118
118
  | `GET` | `/sofascore/event-lineups` | `sofascore-event-lineups` | SofaScore event lineups |
119
119
  | `GET` | `/sofascore/event-managers` | `sofascore-event-managers` | SofaScore event managers |
120
120
  | `GET` | `/sofascore/event-odds` | `sofascore-event-odds` | SofaScore event odds |
121
+ | `GET` | `/sofascore/event-player-actions` | `sofascore-event-player-actions` | SofaScore football player action maps |
121
122
  | `GET` | `/sofascore/event-player-heatmap` | `sofascore-event-player-heatmap` | SofaScore event player heatmap |
122
123
  | `GET` | `/sofascore/event-player-statistics` | `sofascore-event-player-statistics` | SofaScore event player statistics |
123
124
  | `GET` | `/sofascore/event-point-by-point` | `sofascore-event-point-by-point` | SofaScore event point-by-point |
@@ -125,6 +126,7 @@ This package exposes every route below through direct snake_case methods and the
125
126
  | `GET` | `/sofascore/event-shotmap` | `sofascore-event-shotmap` | SofaScore event shot map |
126
127
  | `GET` | `/sofascore/event-statistics` | `sofascore-event-statistics` | SofaScore event statistics |
127
128
  | `GET` | `/sofascore/event-team-heatmap` | `sofascore-event-team-heatmap` | SofaScore event team heatmap |
129
+ | `GET` | `/sofascore/event-team-shotmap` | `sofascore-event-team-shotmap` | SofaScore basketball team shot chart |
128
130
  | `GET` | `/sofascore/event-team-streaks` | `sofascore-event-team-streaks` | SofaScore event team streaks |
129
131
  | `GET` | `/sofascore/event-tennis-power` | `sofascore-event-tennis-power` | SofaScore event tennis power |
130
132
  | `GET` | `/sofascore/event-tv-channels` | `sofascore-event-tv-channels` | SofaScore event TV channels |
@@ -146,7 +148,9 @@ This package exposes every route below through direct snake_case methods and the
146
148
  | `GET` | `/sofascore/player-season-heatmap` | `sofascore-player-season-heatmap` | SofaScore player season heatmap |
147
149
  | `GET` | `/sofascore/player-season-statistics` | `sofascore-player-season-statistics` | SofaScore player season statistics |
148
150
  | `GET` | `/sofascore/player-statistical-rankings` | `sofascore-player-statistical-rankings` | SofaScore player ranking among all players in a season |
151
+ | `GET` | `/sofascore/player-statistics` | `sofascore-player-statistics` | SofaScore player statistics for every season |
149
152
  | `GET` | `/sofascore/player-statistics-seasons` | `sofascore-player-statistics-seasons` | SofaScore player statistics seasons |
153
+ | `GET` | `/sofascore/player-tournament-events` | `sofascore-player-tournament-events` | SofaScore player matches in one competition |
150
154
  | `GET` | `/sofascore/player-tournaments` | `sofascore-player-tournaments` | SofaScore player competitions |
151
155
  | `GET` | `/sofascore/player-transfers` | `sofascore-player-transfers` | SofaScore player transfer history |
152
156
  | `GET` | `/sofascore/ranking-types` | `sofascore-ranking-types` | SofaScore ranking catalogue |
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "crawlora-sofascore"
7
- version = "0.3.5"
8
- description = "Crawlora SofaScore API client with 109 endpoints for live events, match details, lineups, statistics, tournaments, and player/team data"
7
+ version = "0.5.0"
8
+ description = "Crawlora SofaScore API client with 113 endpoints for live events, match details, lineups, statistics, tournaments, and player/team data"
9
9
  readme = "README.md"
10
10
  keywords = ["crawlora", "api-client", "sdk", "web-scraping", "scraping-api", "sofascore", "sofascore-api", "sofascore-scraper", "sofascore-data", "sofascore-live-events", "sofascore-match-details", "sofascore-lineups", "sofascore-statistics", "sofascore-tournaments", "sofascore-player-team-data"]
11
11
  requires-python = ">=3.10"
@@ -28,7 +28,7 @@ class MockTransport:
28
28
  class PackageTests(unittest.TestCase):
29
29
  def test_platform_metadata_and_aliases(self):
30
30
  self.assertEqual(client_package.PLATFORM, "sofascore")
31
- self.assertEqual(client_package.__version__, "0.3.5")
31
+ self.assertEqual(client_package.__version__, "0.5.0")
32
32
  self.assertIs(client_package.Client, client_package.SofascoreClient)
33
33
  self.assertIs(client_package.AsyncClient, client_package.AsyncSofascoreClient)
34
34
  self.assertEqual(client_package.OPERATION_COUNT, len(client_package.OPERATION_IDS))