crawlora 1.42.0.dev1__tar.gz → 1.42.0.dev3__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 (31) hide show
  1. {crawlora-1.42.0.dev1/crawlora.egg-info → crawlora-1.42.0.dev3}/PKG-INFO +1 -1
  2. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/client.py +1 -1
  3. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/client.pyi +51 -2
  4. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/operations.py +15 -2
  5. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3/crawlora.egg-info}/PKG-INFO +1 -1
  6. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/docs/operations.md +5 -4
  7. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/pyproject.toml +1 -1
  8. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_client.py +3 -2
  9. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/LICENSE +0 -0
  10. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/MANIFEST.in +0 -0
  11. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/README.md +0 -0
  12. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/__init__.py +0 -0
  13. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/_pagination.py +0 -0
  14. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/_transport_sync.py +0 -0
  15. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/async_client.py +0 -0
  16. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/py.typed +0 -0
  17. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/SOURCES.txt +0 -0
  18. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/dependency_links.txt +0 -0
  19. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/requires.txt +0 -0
  20. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/top_level.txt +0 -0
  21. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/docs/recipes.md +0 -0
  22. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/async_search.py +0 -0
  23. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/bing_search.py +0 -0
  24. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/paginate.py +0 -0
  25. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/youtube_transcript.py +0 -0
  26. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/setup.cfg +0 -0
  27. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_async_httpx.py +0 -0
  28. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_examples.py +0 -0
  29. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_v14_features.py +0 -0
  30. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_v15_features.py +0 -0
  31. {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_w2_features.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crawlora
3
- Version: 1.42.0.dev1
3
+ Version: 1.42.0.dev3
4
4
  Summary: Official Python SDK for the Crawlora web-scraping API: typed grouped and dynamic operation calls for every public endpoint, with retries, pagination, hooks, and an async client.
5
5
  Author: Crawlora
6
6
  License-Expression: MIT
@@ -20,7 +20,7 @@ from ._transport_sync import KeepAliveTransport
20
20
  from .operations import GROUPS, OPERATIONS
21
21
 
22
22
  DEFAULT_BASE_URL = "https://api.crawlora.net/api/v1"
23
- VERSION = "1.42.0-sdk.1"
23
+ VERSION = "1.42.0-sdk.3"
24
24
  DEFAULT_USER_AGENT = f"crawlora-python-sdk/{VERSION}"
25
25
  DEFAULT_MAX_RETRY_DELAY = 30.0
26
26
  DEFAULT_RETRY_STATUSES = (408, 409, 425, 429)
@@ -30673,6 +30673,7 @@ ModelLivescienceAuthorSocialLink = TypedDict('ModelLivescienceAuthorSocialLink',
30673
30673
  ModelLivescoreLivescoreNewsFeedItemDoc = TypedDict('ModelLivescoreLivescoreNewsFeedItemDoc', {
30674
30674
  'author': NotRequired[str],
30675
30675
  'categories': NotRequired[list[str]],
30676
+ 'content': NotRequired[str],
30676
30677
  'description': NotRequired[str],
30677
30678
  'guid': NotRequired[str],
30678
30679
  'link': NotRequired[str],
@@ -30686,6 +30687,20 @@ ModelLivescoreLivescoreNewsFeedResponseDoc = TypedDict('ModelLivescoreLivescoreN
30686
30687
  'msg': NotRequired[str],
30687
30688
  }, total=False)
30688
30689
 
30690
+ ModelLivescoreLivescoreNewsPublisherDoc = TypedDict('ModelLivescoreLivescoreNewsPublisherDoc', {
30691
+ 'contact': NotRequired[str],
30692
+ 'logo_url': NotRequired[str],
30693
+ 'name': NotRequired[str],
30694
+ 'telephone': NotRequired[str],
30695
+ 'website': NotRequired[str],
30696
+ }, total=False)
30697
+
30698
+ ModelLivescoreLivescoreNewsPublishersResponseDoc = TypedDict('ModelLivescoreLivescoreNewsPublishersResponseDoc', {
30699
+ 'code': NotRequired[int],
30700
+ 'data': NotRequired[dict[str, Any]],
30701
+ 'msg': NotRequired[str],
30702
+ }, total=False)
30703
+
30689
30704
  ModelLivescoreNewsCategoriesResponseDoc = TypedDict('ModelLivescoreNewsCategoriesResponseDoc', {
30690
30705
  'code': NotRequired[int],
30691
30706
  'data': NotRequired[dict[str, Any]],
@@ -77338,6 +77353,14 @@ LiveScoreLivescoreNewsFeedParams = TypedDict('LiveScoreLivescoreNewsFeedParams',
77338
77353
  '_response_type': NotRequired[ResponseType],
77339
77354
  '_timeout': NotRequired[float],
77340
77355
  '_headers': NotRequired[Mapping[str, str]],
77356
+ 'include_content': NotRequired[bool],
77357
+ }, total=False)
77358
+
77359
+ LiveScoreLivescoreNewsPublishersResponse = ModelLivescoreLivescoreNewsPublishersResponseDoc
77360
+ LiveScoreLivescoreNewsPublishersParams = TypedDict('LiveScoreLivescoreNewsPublishersParams', {
77361
+ '_response_type': NotRequired[ResponseType],
77362
+ '_timeout': NotRequired[float],
77363
+ '_headers': NotRequired[Mapping[str, str]],
77341
77364
  }, total=False)
77342
77365
 
77343
77366
  LiveScoreLivescorePlayerResponse = ModelLivescoreResponseDoc
@@ -90171,7 +90194,7 @@ XboxBrowseParams = TypedDict('XboxBrowseParams', {
90171
90194
  'sort': NotRequired[Literal['relevance', 'release_date_desc', 'most_popular', 'price_asc', 'price_desc', 'most_wishlisted', 'discount_desc', 'title_asc', 'title_desc']],
90172
90195
  'genre': NotRequired[list[Literal['Action & adventure', 'Card & board', 'Casino', 'Classics', 'Companion', 'Educational', 'Family & kids', 'Fighting', 'Multi-Player Online Battle Arena', 'Music', 'Other', 'Platformer', 'Puzzle & trivia', 'Racing & flying', 'Role playing', 'Shooter', 'Simulation', 'Sports', 'Strategy', 'Tools', 'Word']]],
90173
90196
  'price': NotRequired[list[Literal['OnSale', '0', '0.01To5', '5To10', '10To20', '20To40', '40To60', '60To']]],
90174
- 'platform': NotRequired[list[Literal['XboxSeriesX|S', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']]],
90197
+ 'platform': NotRequired[list[Literal['XboxSeriesX\x7cS', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']]],
90175
90198
  'subscription': NotRequired[list[Literal['CFQ7TTC0KHS0', 'CFQ7TTC0P85B', 'CFQ7TTC0K5DJ', 'CFQ7TTC0K6L8', 'CFQ7TTC0KGQ8', 'CFQ7TTC0K5DH', 'CFQ7TTC0QH5H']]],
90176
90199
  'age_rating': NotRequired[list[Literal['ESRB:EC', 'ESRB:E', 'ESRB:E10', 'ESRB:T', 'ESRB:M', 'ESRB:AO', 'ESRB:RPEveryone', 'ESRB:RPMature', 'ESRB:RPTeen', 'ESRB:UR']]],
90177
90200
  'multiplayer': NotRequired[list[Literal['CrossPlatformMultiplayer', 'CrossPlatformCoop', 'SinglePlayer', 'OnlineMultiplayerWithGold', 'CoopSupportOnline', 'CoopSupportLocal', 'LocalMultiplayer']]],
@@ -90224,7 +90247,7 @@ XboxSearchParams = TypedDict('XboxSearchParams', {
90224
90247
  'sort': NotRequired[Literal['relevance', 'release_date_desc', 'most_popular', 'price_asc', 'price_desc', 'most_wishlisted', 'discount_desc', 'title_asc', 'title_desc']],
90225
90248
  'genre': NotRequired[list[Literal['Action & adventure', 'Card & board', 'Casino', 'Classics', 'Companion', 'Educational', 'Family & kids', 'Fighting', 'Multi-Player Online Battle Arena', 'Music', 'Other', 'Platformer', 'Puzzle & trivia', 'Racing & flying', 'Role playing', 'Shooter', 'Simulation', 'Sports', 'Strategy', 'Tools', 'Word']]],
90226
90249
  'price': NotRequired[list[Literal['OnSale', '0', '0.01To5', '5To10', '10To20', '20To40', '40To60', '60To']]],
90227
- 'platform': NotRequired[list[Literal['XboxSeriesX|S', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']]],
90250
+ 'platform': NotRequired[list[Literal['XboxSeriesX\x7cS', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']]],
90228
90251
  'subscription': NotRequired[list[Literal['CFQ7TTC0KHS0', 'CFQ7TTC0P85B', 'CFQ7TTC0K5DJ', 'CFQ7TTC0K6L8', 'CFQ7TTC0KGQ8', 'CFQ7TTC0K5DH', 'CFQ7TTC0QH5H']]],
90229
90252
  'age_rating': NotRequired[list[Literal['ESRB:EC', 'ESRB:E', 'ESRB:E10', 'ESRB:T', 'ESRB:M', 'ESRB:AO', 'ESRB:RPEveryone', 'ESRB:RPMature', 'ESRB:RPTeen', 'ESRB:UR']]],
90230
90253
  'multiplayer': NotRequired[list[Literal['CrossPlatformMultiplayer', 'CrossPlatformCoop', 'SinglePlayer', 'OnlineMultiplayerWithGold', 'CoopSupportOnline', 'CoopSupportLocal', 'LocalMultiplayer']]],
@@ -93571,6 +93594,7 @@ class LiveScoreGroup:
93571
93594
  def livescore_news_article(self, **params: Unpack[LiveScoreLivescoreNewsArticleParams]) -> LiveScoreLivescoreNewsArticleResponse: ...
93572
93595
  def livescore_news_categories(self, **params: Unpack[LiveScoreLivescoreNewsCategoriesParams]) -> LiveScoreLivescoreNewsCategoriesResponse: ...
93573
93596
  def livescore_news_feed(self, **params: Unpack[LiveScoreLivescoreNewsFeedParams]) -> LiveScoreLivescoreNewsFeedResponse: ...
93597
+ def livescore_news_publishers(self, **params: Unpack[LiveScoreLivescoreNewsPublishersParams]) -> LiveScoreLivescoreNewsPublishersResponse: ...
93574
93598
  def livescore_player(self, **params: Unpack[LiveScoreLivescorePlayerParams]) -> LiveScoreLivescorePlayerResponse: ...
93575
93599
  def livescore_scores(self, **params: Unpack[LiveScoreLivescoreScoresParams]) -> LiveScoreLivescoreScoresResponse: ...
93576
93600
  def livescore_scores_toc(self, **params: Unpack[LiveScoreLivescoreScoresTocParams]) -> LiveScoreLivescoreScoresTocResponse: ...
@@ -97178,6 +97202,7 @@ OperationId = Literal[
97178
97202
  'livescore-news-article',
97179
97203
  'livescore-news-categories',
97180
97204
  'livescore-news-feed',
97205
+ 'livescore-news-publishers',
97181
97206
  'livescore-player',
97182
97207
  'livescore-scores',
97183
97208
  'livescore-scores-toc',
@@ -118138,6 +118163,18 @@ class CrawloraClient:
118138
118163
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
118139
118164
  ) -> LiveScoreLivescoreNewsFeedResponse: ...
118140
118165
  @overload
118166
+ def operation(
118167
+ self,
118168
+ operation_id: Literal['livescore-news-publishers'],
118169
+ params: LiveScoreLivescoreNewsPublishersParams = ...,
118170
+ *,
118171
+ response_type: ResponseType = ...,
118172
+ timeout: float | None = ...,
118173
+ headers: Mapping[str, str] | None = ...,
118174
+ retries: int | None = ...,
118175
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
118176
+ ) -> LiveScoreLivescoreNewsPublishersResponse: ...
118177
+ @overload
118141
118178
  def operation(
118142
118179
  self,
118143
118180
  operation_id: Literal['livescore-player'],
@@ -156058,6 +156095,18 @@ class CrawloraClient:
156058
156095
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
156059
156096
  ) -> LiveScoreLivescoreNewsFeedResponse: ...
156060
156097
  @overload
156098
+ def request(
156099
+ self,
156100
+ operation_id: Literal['livescore-news-publishers'],
156101
+ params: LiveScoreLivescoreNewsPublishersParams = ...,
156102
+ *,
156103
+ response_type: ResponseType = ...,
156104
+ timeout: float | None = ...,
156105
+ headers: Mapping[str, str] | None = ...,
156106
+ retries: int | None = ...,
156107
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
156108
+ ) -> LiveScoreLivescoreNewsPublishersResponse: ...
156109
+ @overload
156061
156110
  def request(
156062
156111
  self,
156063
156112
  operation_id: Literal['livescore-player'],
@@ -29126,8 +29126,19 @@ OPERATIONS = {'7now-catalog': {'bodyParam': None,
29126
29126
  'path': '/livescore/news-feed',
29127
29127
  'pathParams': [],
29128
29128
  'produces': ['application/json'],
29129
- 'queryParams': [],
29129
+ 'queryParams': [{'in': 'query', 'name': 'include_content', 'type': 'boolean'}],
29130
29130
  'security': ['ApiKeyAuth']},
29131
+ 'livescore-news-publishers': {'bodyParam': None,
29132
+ 'bodyRequired': False,
29133
+ 'consumes': ['application/json'],
29134
+ 'formParams': [],
29135
+ 'id': 'livescore-news-publishers',
29136
+ 'method': 'GET',
29137
+ 'path': '/livescore/news-publishers',
29138
+ 'pathParams': [],
29139
+ 'produces': ['application/json'],
29140
+ 'queryParams': [],
29141
+ 'security': ['ApiKeyAuth']},
29131
29142
  'livescore-player': {'bodyParam': None,
29132
29143
  'bodyRequired': False,
29133
29144
  'consumes': ['application/json'],
@@ -56206,6 +56217,7 @@ GROUPS = {'abc_news': {'abcnews_article': 'abcnews-article',
56206
56217
  'livescore_news_article': 'livescore-news-article',
56207
56218
  'livescore_news_categories': 'livescore-news-categories',
56208
56219
  'livescore_news_feed': 'livescore-news-feed',
56220
+ 'livescore_news_publishers': 'livescore-news-publishers',
56209
56221
  'livescore_player': 'livescore-player',
56210
56222
  'livescore_scores': 'livescore-scores',
56211
56223
  'livescore_scores_toc': 'livescore-scores-toc',
@@ -57798,7 +57810,7 @@ GROUPS = {'abc_news': {'abcnews_article': 'abcnews-article',
57798
57810
  'restaurant_menu': 'zomato-restaurant-menu',
57799
57811
  'search': 'zomato-search'}}
57800
57812
 
57801
- OPERATION_COUNT = 3159
57813
+ OPERATION_COUNT = 3160
57802
57814
 
57803
57815
  class OperationId:
57804
57816
  ABC_NEWS_ABCNEWS_ARTICLE = 'abcnews-article'
@@ -59330,6 +59342,7 @@ class OperationId:
59330
59342
  LIVE_SCORE_LIVESCORE_NEWS_ARTICLE = 'livescore-news-article'
59331
59343
  LIVE_SCORE_LIVESCORE_NEWS_CATEGORIES = 'livescore-news-categories'
59332
59344
  LIVE_SCORE_LIVESCORE_NEWS_FEED = 'livescore-news-feed'
59345
+ LIVE_SCORE_LIVESCORE_NEWS_PUBLISHERS = 'livescore-news-publishers'
59333
59346
  LIVE_SCORE_LIVESCORE_PLAYER = 'livescore-player'
59334
59347
  LIVE_SCORE_LIVESCORE_SCORES = 'livescore-scores'
59335
59348
  LIVE_SCORE_LIVESCORE_SCORES_TOC = 'livescore-scores-toc'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crawlora
3
- Version: 1.42.0.dev1
3
+ Version: 1.42.0.dev3
4
4
  Summary: Official Python SDK for the Crawlora web-scraping API: typed grouped and dynamic operation calls for every public endpoint, with retries, pagination, hooks, and an async client.
5
5
  Author: Crawlora
6
6
  License-Expression: MIT
@@ -2,7 +2,7 @@
2
2
 
3
3
  Generated from `openapi/public.json`. Deprecated, admin, and internal operations are excluded from this SDK contract.
4
4
 
5
- Total operations: `3159`
5
+ Total operations: `3160`
6
6
 
7
7
  | Group | SDK method | Operation ID | HTTP | Params | Auth | Response | Notes |
8
8
  | --- | --- | --- | --- | --- | --- | --- | --- |
@@ -1579,7 +1579,8 @@ Total operations: `3159`
1579
1579
  | live_score | `live_score.livescore_news` | `livescore-news` | `GET /livescore/news` | `category` (query str required) | `ApiKeyAuth` | `LiveScoreLivescoreNewsResponse` | |
1580
1580
  | live_score | `live_score.livescore_news_article` | `livescore-news-article` | `GET /livescore/news-article` | `path` (query str required) | `ApiKeyAuth` | `LiveScoreLivescoreNewsArticleResponse` | |
1581
1581
  | live_score | `live_score.livescore_news_categories` | `livescore-news-categories` | `GET /livescore/news-categories` | none | `ApiKeyAuth` | `LiveScoreLivescoreNewsCategoriesResponse` | |
1582
- | live_score | `live_score.livescore_news_feed` | `livescore-news-feed` | `GET /livescore/news-feed` | none | `ApiKeyAuth` | `LiveScoreLivescoreNewsFeedResponse` | |
1582
+ | live_score | `live_score.livescore_news_feed` | `livescore-news-feed` | `GET /livescore/news-feed` | `include_content` (query bool) | `ApiKeyAuth` | `LiveScoreLivescoreNewsFeedResponse` | |
1583
+ | live_score | `live_score.livescore_news_publishers` | `livescore-news-publishers` | `GET /livescore/news-publishers` | none | `ApiKeyAuth` | `LiveScoreLivescoreNewsPublishersResponse` | |
1583
1584
  | live_score | `live_score.livescore_player` | `livescore-player` | `GET /livescore/player` | `path` (query str required) | `ApiKeyAuth` | `LiveScoreLivescorePlayerResponse` | |
1584
1585
  | live_score | `live_score.livescore_scores` | `livescore-scores` | `GET /livescore/scores` | `sport` (query Literal['soccer', 'hockey', 'basketball', 'tennis', 'cricket'] required)<br>`date` (query str required)<br>`timezone_offset` (query int)<br>`paging` (query bool)<br>`cursor` (query str)<br>`direction` (query Literal['down', 'up']) | `ApiKeyAuth` | `LiveScoreLivescoreScoresResponse` | |
1585
1586
  | live_score | `live_score.livescore_scores_toc` | `livescore-scores-toc` | `GET /livescore/scores-toc` | `sport` (query Literal['soccer', 'hockey', 'basketball', 'tennis', 'cricket'] required)<br>`date` (query str required)<br>`timezone_offset` (query int) | `ApiKeyAuth` | `LiveScoreLivescoreScoresTocResponse` | |
@@ -3005,11 +3006,11 @@ Total operations: `3159`
3005
3006
  | x | `x.post` | `x-post` | `GET /x/post/{id}` | `id` (path str required)<br>`username` (query str) | `ApiKeyAuth` | `XPostResponse` | |
3006
3007
  | x | `x.profile` | `x-profile` | `GET /x/profile/{username}` | `username` (path str required) | `ApiKeyAuth` | `XProfileResponse` | |
3007
3008
  | x | `x.profile_posts` | `x-profile-posts` | `GET /x/profile/{username}/posts` | `username` (path str required)<br>`limit` (query int) | `ApiKeyAuth` | `XProfilePostsResponse` | |
3008
- | xbox | `xbox.browse` | `xbox-browse` | `GET /xbox/browse` | `cursor` (query str)<br>`sort` (query Literal['relevance', 'release_date_desc', 'most_popular', 'price_asc', 'price_desc', 'most_wishlisted', 'discount_desc', 'title_asc', 'title_desc'])<br>`genre` (query list[Literal['Action & adventure', 'Card & board', 'Casino', 'Classics', 'Companion', 'Educational', 'Family & kids', 'Fighting', 'Multi-Player Online Battle Arena', 'Music', 'Other', 'Platformer', 'Puzzle & trivia', 'Racing & flying', 'Role playing', 'Shooter', 'Simulation', 'Sports', 'Strategy', 'Tools', 'Word']])<br>`price` (query list[Literal['OnSale', '0', '0.01To5', '5To10', '10To20', '20To40', '40To60', '60To']])<br>`platform` (query list[Literal['XboxSeriesX\|S', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']])<br>`subscription` (query list[Literal['CFQ7TTC0KHS0', 'CFQ7TTC0P85B', 'CFQ7TTC0K5DJ', 'CFQ7TTC0K6L8', 'CFQ7TTC0KGQ8', 'CFQ7TTC0K5DH', 'CFQ7TTC0QH5H']])<br>`age_rating` (query list[Literal['ESRB:EC', 'ESRB:E', 'ESRB:E10', 'ESRB:T', 'ESRB:M', 'ESRB:AO', 'ESRB:RPEveryone', 'ESRB:RPMature', 'ESRB:RPTeen', 'ESRB:UR']])<br>`multiplayer` (query list[Literal['CrossPlatformMultiplayer', 'CrossPlatformCoop', 'SinglePlayer', 'OnlineMultiplayerWithGold', 'CoopSupportOnline', 'CoopSupportLocal', 'LocalMultiplayer']])<br>`technical_features` (query list[Literal['CapabilityXboxEnhanced', 'ConsoleGen9Optimized', 'ConsoleCrossGen', 'Capability4k', 'CapabilityHDR', '60fps', '120fps', 'RayTracing']])<br>`handheld_compatibility` (query list[Literal['VERIFIED', 'PLAYABLE', 'UNSUPPORTED', 'UNKNOWN']])<br>`supported_language` (query list[Literal['ar-SA', 'zh-CN', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-NL', 'en-GB', 'en-US', 'fi-FI', 'fr-FR', 'de-DE', 'el-GR', 'he-IL', 'hu-HU', 'it-IT', 'ja-JP', 'ko-KR', 'nb-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'es-MX', 'es-ES', 'sv-SE', 'tr-TR']])<br>`accessibility` (query list[Literal['AccessibilityOnLaunch', 'AdjustableDifficulty', 'OnDemandTutorials', 'Pausable', 'ProgressSavingOptions', 'MonoSound', 'CustomVolumeControls', 'NarratedGameMenus', 'StereoSound', 'SpatialAudio', 'SteadyCamera', 'ContrastOptions', 'ColorOptions', 'SubtitleOptions', 'AdjustableTextSize', 'AdjustableInputSensitivity', 'BasicInputRemapping', 'TtsSttCommunications', 'InputRemapping', 'PlayableWithButtonsOnly', 'FullKeyboardSupport', 'PlayableWithMouseOnly', 'PlayableWithTouchOnly', 'NoButtonHolds', 'PlayableWithoutMotionControls', 'NoQuickTimeEvents', 'PlayableWithoutTouchControls', 'SingleStickGameplay', 'StickInversion']])<br>`locale` (query str) | `ApiKeyAuth` | `XboxBrowseResponse` | |
3009
+ | xbox | `xbox.browse` | `xbox-browse` | `GET /xbox/browse` | `cursor` (query str)<br>`sort` (query Literal['relevance', 'release_date_desc', 'most_popular', 'price_asc', 'price_desc', 'most_wishlisted', 'discount_desc', 'title_asc', 'title_desc'])<br>`genre` (query list[Literal['Action & adventure', 'Card & board', 'Casino', 'Classics', 'Companion', 'Educational', 'Family & kids', 'Fighting', 'Multi-Player Online Battle Arena', 'Music', 'Other', 'Platformer', 'Puzzle & trivia', 'Racing & flying', 'Role playing', 'Shooter', 'Simulation', 'Sports', 'Strategy', 'Tools', 'Word']])<br>`price` (query list[Literal['OnSale', '0', '0.01To5', '5To10', '10To20', '20To40', '40To60', '60To']])<br>`platform` (query list[Literal['XboxSeriesX\x7cS', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']])<br>`subscription` (query list[Literal['CFQ7TTC0KHS0', 'CFQ7TTC0P85B', 'CFQ7TTC0K5DJ', 'CFQ7TTC0K6L8', 'CFQ7TTC0KGQ8', 'CFQ7TTC0K5DH', 'CFQ7TTC0QH5H']])<br>`age_rating` (query list[Literal['ESRB:EC', 'ESRB:E', 'ESRB:E10', 'ESRB:T', 'ESRB:M', 'ESRB:AO', 'ESRB:RPEveryone', 'ESRB:RPMature', 'ESRB:RPTeen', 'ESRB:UR']])<br>`multiplayer` (query list[Literal['CrossPlatformMultiplayer', 'CrossPlatformCoop', 'SinglePlayer', 'OnlineMultiplayerWithGold', 'CoopSupportOnline', 'CoopSupportLocal', 'LocalMultiplayer']])<br>`technical_features` (query list[Literal['CapabilityXboxEnhanced', 'ConsoleGen9Optimized', 'ConsoleCrossGen', 'Capability4k', 'CapabilityHDR', '60fps', '120fps', 'RayTracing']])<br>`handheld_compatibility` (query list[Literal['VERIFIED', 'PLAYABLE', 'UNSUPPORTED', 'UNKNOWN']])<br>`supported_language` (query list[Literal['ar-SA', 'zh-CN', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-NL', 'en-GB', 'en-US', 'fi-FI', 'fr-FR', 'de-DE', 'el-GR', 'he-IL', 'hu-HU', 'it-IT', 'ja-JP', 'ko-KR', 'nb-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'es-MX', 'es-ES', 'sv-SE', 'tr-TR']])<br>`accessibility` (query list[Literal['AccessibilityOnLaunch', 'AdjustableDifficulty', 'OnDemandTutorials', 'Pausable', 'ProgressSavingOptions', 'MonoSound', 'CustomVolumeControls', 'NarratedGameMenus', 'StereoSound', 'SpatialAudio', 'SteadyCamera', 'ContrastOptions', 'ColorOptions', 'SubtitleOptions', 'AdjustableTextSize', 'AdjustableInputSensitivity', 'BasicInputRemapping', 'TtsSttCommunications', 'InputRemapping', 'PlayableWithButtonsOnly', 'FullKeyboardSupport', 'PlayableWithMouseOnly', 'PlayableWithTouchOnly', 'NoButtonHolds', 'PlayableWithoutMotionControls', 'NoQuickTimeEvents', 'PlayableWithoutTouchControls', 'SingleStickGameplay', 'StickInversion']])<br>`locale` (query str) | `ApiKeyAuth` | `XboxBrowseResponse` | |
3009
3010
  | xbox | `xbox.collection` | `xbox-collection` | `GET /xbox/collection` | `id` (query Literal['TopFreeGames', 'TopPaidGames', 'OptimizedSeriesXS', 'XboxPlayAnywhere'] required)<br>`cursor` (query str)<br>`locale` (query str) | `ApiKeyAuth` | `XboxCollectionResponse` | |
3010
3011
  | xbox | `xbox.game` | `xbox-game` | `GET /xbox/game` | `product_id` (query str required)<br>`locale` (query str) | `ApiKeyAuth` | `XboxGameResponse` | |
3011
3012
  | xbox | `xbox.reviews` | `xbox-reviews` | `GET /xbox/reviews` | `product_id` (query str required)<br>`item_count` (query int)<br>`order_by` (query Literal['MostHelpful', 'MostRecent'])<br>`star_filter` (query int)<br>`locale` (query str) | `ApiKeyAuth` | `XboxReviewsResponse` | |
3012
- | xbox | `xbox.search` | `xbox-search` | `GET /xbox/search` | `query` (query str required)<br>`category` (query Literal['games', 'addons', 'hardware'])<br>`cursor` (query str)<br>`sort` (query Literal['relevance', 'release_date_desc', 'most_popular', 'price_asc', 'price_desc', 'most_wishlisted', 'discount_desc', 'title_asc', 'title_desc'])<br>`genre` (query list[Literal['Action & adventure', 'Card & board', 'Casino', 'Classics', 'Companion', 'Educational', 'Family & kids', 'Fighting', 'Multi-Player Online Battle Arena', 'Music', 'Other', 'Platformer', 'Puzzle & trivia', 'Racing & flying', 'Role playing', 'Shooter', 'Simulation', 'Sports', 'Strategy', 'Tools', 'Word']])<br>`price` (query list[Literal['OnSale', '0', '0.01To5', '5To10', '10To20', '20To40', '40To60', '60To']])<br>`platform` (query list[Literal['XboxSeriesX\|S', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']])<br>`subscription` (query list[Literal['CFQ7TTC0KHS0', 'CFQ7TTC0P85B', 'CFQ7TTC0K5DJ', 'CFQ7TTC0K6L8', 'CFQ7TTC0KGQ8', 'CFQ7TTC0K5DH', 'CFQ7TTC0QH5H']])<br>`age_rating` (query list[Literal['ESRB:EC', 'ESRB:E', 'ESRB:E10', 'ESRB:T', 'ESRB:M', 'ESRB:AO', 'ESRB:RPEveryone', 'ESRB:RPMature', 'ESRB:RPTeen', 'ESRB:UR']])<br>`multiplayer` (query list[Literal['CrossPlatformMultiplayer', 'CrossPlatformCoop', 'SinglePlayer', 'OnlineMultiplayerWithGold', 'CoopSupportOnline', 'CoopSupportLocal', 'LocalMultiplayer']])<br>`technical_features` (query list[Literal['CapabilityXboxEnhanced', 'ConsoleGen9Optimized', 'ConsoleCrossGen', 'Capability4k', 'CapabilityHDR', '60fps', '120fps', 'RayTracing']])<br>`handheld_compatibility` (query list[Literal['VERIFIED', 'PLAYABLE', 'UNSUPPORTED', 'UNKNOWN']])<br>`supported_language` (query list[Literal['ar-SA', 'zh-CN', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-NL', 'en-GB', 'en-US', 'fi-FI', 'fr-FR', 'de-DE', 'el-GR', 'he-IL', 'hu-HU', 'it-IT', 'ja-JP', 'ko-KR', 'nb-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'es-MX', 'es-ES', 'sv-SE', 'tr-TR']])<br>`accessibility` (query list[Literal['AccessibilityOnLaunch', 'AdjustableDifficulty', 'OnDemandTutorials', 'Pausable', 'ProgressSavingOptions', 'MonoSound', 'CustomVolumeControls', 'NarratedGameMenus', 'StereoSound', 'SpatialAudio', 'SteadyCamera', 'ContrastOptions', 'ColorOptions', 'SubtitleOptions', 'AdjustableTextSize', 'AdjustableInputSensitivity', 'BasicInputRemapping', 'TtsSttCommunications', 'InputRemapping', 'PlayableWithButtonsOnly', 'FullKeyboardSupport', 'PlayableWithMouseOnly', 'PlayableWithTouchOnly', 'NoButtonHolds', 'PlayableWithoutMotionControls', 'NoQuickTimeEvents', 'PlayableWithoutTouchControls', 'SingleStickGameplay', 'StickInversion']])<br>`locale` (query str) | `ApiKeyAuth` | `XboxSearchResponse` | |
3013
+ | xbox | `xbox.search` | `xbox-search` | `GET /xbox/search` | `query` (query str required)<br>`category` (query Literal['games', 'addons', 'hardware'])<br>`cursor` (query str)<br>`sort` (query Literal['relevance', 'release_date_desc', 'most_popular', 'price_asc', 'price_desc', 'most_wishlisted', 'discount_desc', 'title_asc', 'title_desc'])<br>`genre` (query list[Literal['Action & adventure', 'Card & board', 'Casino', 'Classics', 'Companion', 'Educational', 'Family & kids', 'Fighting', 'Multi-Player Online Battle Arena', 'Music', 'Other', 'Platformer', 'Puzzle & trivia', 'Racing & flying', 'Role playing', 'Shooter', 'Simulation', 'Sports', 'Strategy', 'Tools', 'Word']])<br>`price` (query list[Literal['OnSale', '0', '0.01To5', '5To10', '10To20', '20To40', '40To60', '60To']])<br>`platform` (query list[Literal['XboxSeriesX\x7cS', 'XboxOne', 'PC', 'Handheld', 'CloudGaming', 'XboxPlayAnywhere']])<br>`subscription` (query list[Literal['CFQ7TTC0KHS0', 'CFQ7TTC0P85B', 'CFQ7TTC0K5DJ', 'CFQ7TTC0K6L8', 'CFQ7TTC0KGQ8', 'CFQ7TTC0K5DH', 'CFQ7TTC0QH5H']])<br>`age_rating` (query list[Literal['ESRB:EC', 'ESRB:E', 'ESRB:E10', 'ESRB:T', 'ESRB:M', 'ESRB:AO', 'ESRB:RPEveryone', 'ESRB:RPMature', 'ESRB:RPTeen', 'ESRB:UR']])<br>`multiplayer` (query list[Literal['CrossPlatformMultiplayer', 'CrossPlatformCoop', 'SinglePlayer', 'OnlineMultiplayerWithGold', 'CoopSupportOnline', 'CoopSupportLocal', 'LocalMultiplayer']])<br>`technical_features` (query list[Literal['CapabilityXboxEnhanced', 'ConsoleGen9Optimized', 'ConsoleCrossGen', 'Capability4k', 'CapabilityHDR', '60fps', '120fps', 'RayTracing']])<br>`handheld_compatibility` (query list[Literal['VERIFIED', 'PLAYABLE', 'UNSUPPORTED', 'UNKNOWN']])<br>`supported_language` (query list[Literal['ar-SA', 'zh-CN', 'zh-TW', 'cs-CZ', 'da-DK', 'nl-NL', 'en-GB', 'en-US', 'fi-FI', 'fr-FR', 'de-DE', 'el-GR', 'he-IL', 'hu-HU', 'it-IT', 'ja-JP', 'ko-KR', 'nb-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'es-MX', 'es-ES', 'sv-SE', 'tr-TR']])<br>`accessibility` (query list[Literal['AccessibilityOnLaunch', 'AdjustableDifficulty', 'OnDemandTutorials', 'Pausable', 'ProgressSavingOptions', 'MonoSound', 'CustomVolumeControls', 'NarratedGameMenus', 'StereoSound', 'SpatialAudio', 'SteadyCamera', 'ContrastOptions', 'ColorOptions', 'SubtitleOptions', 'AdjustableTextSize', 'AdjustableInputSensitivity', 'BasicInputRemapping', 'TtsSttCommunications', 'InputRemapping', 'PlayableWithButtonsOnly', 'FullKeyboardSupport', 'PlayableWithMouseOnly', 'PlayableWithTouchOnly', 'NoButtonHolds', 'PlayableWithoutMotionControls', 'NoQuickTimeEvents', 'PlayableWithoutTouchControls', 'SingleStickGameplay', 'StickInversion']])<br>`locale` (query str) | `ApiKeyAuth` | `XboxSearchResponse` | |
3013
3014
  | xda | `xda.article` | `xda-article` | `GET /xda/article` | `url` (query str required) | `ApiKeyAuth` | `XdaArticleResponse` | |
3014
3015
  | xda | `xda.author` | `xda-author` | `GET /xda/author` | `url` (query str required) | `ApiKeyAuth` | `XdaAuthorResponse` | |
3015
3016
  | xda | `xda.headlines` | `xda-headlines` | `GET /xda/headlines` | `section` (query Literal['news', 'features', 'reviews', 'buying-guides', 'tutorials', 'editorials', 'editor-columns', 'deals', 'commerce', 'evergreen', 'performance', 'beats', 'awards', 'hardware', 'processor', 'gpu', 'storage', 'monitors', 'input-devices', 'laptops', 'devices', 'single-board-computers', 'gaming-handhelds', 'prebuilt-pc', 'networking', 'smart-home', 'home', 'other-hardware', 'headset', 'cpu-cooler', 'printer', 'home-internet', 'other-computing-devices', 'phone-reviews', '3d-printing', 'esp32', 'home-lab', 'self-hosting', 'software', 'software-and-services', 'apps', 'ai-tools', 'claude', 'notebooklm', 'productivity', 'os', 'windows', 'windows-tutorials', 'linux-hub', 'linux-tutorials', 'macos', 'macos-tutorials', 'chromeos-tutorials', 'microsoft-edge', 'opera', 'spotify', 'bing', 'gaming', 'gaming-news', 'gaming-reviews', 'entertainment', 'entertainment-segment'] required) | `ApiKeyAuth` | `XdaHeadlinesResponse` | |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "crawlora"
7
- version = "1.42.0.dev1"
7
+ version = "1.42.0.dev3"
8
8
  description = "Official Python SDK for the Crawlora web-scraping API: typed grouped and dynamic operation calls for every public endpoint, with retries, pagination, hooks, and an async client."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -268,7 +268,7 @@ class CrawloraClientTest(unittest.TestCase):
268
268
 
269
269
  def test_operation_metadata_count(self) -> None:
270
270
  self.assertEqual(len(OPERATIONS), OPERATION_COUNT)
271
- self.assertEqual(OPERATION_COUNT, 3159)
271
+ self.assertEqual(OPERATION_COUNT, 3160)
272
272
 
273
273
  def test_deprecated_endpoints_are_not_generated(self) -> None:
274
274
  self.assertFalse(hasattr(CrawloraClient(api_key="api_test", base_url=self.base_url).google, "lens"))
@@ -285,6 +285,7 @@ class CrawloraClientTest(unittest.TestCase):
285
285
  self.assertIn("'q': Required[str]", stub)
286
286
  self.assertIn("'count': NotRequired[int]", stub)
287
287
  self.assertIn("WebEmailVerifyBody = ModelContactVerifyRequest", stub)
288
+ self.assertIn("'XboxSeriesX\\x7cS'", stub)
288
289
  self.assertIn("'review_count': NotRequired[int | None]", stub)
289
290
  self.assertIn("def search(self, **params: Unpack[BingSearchParams]) -> BingSearchResponse: ...", stub)
290
291
  self.assertIn("OperationId = Literal[", stub)
@@ -299,7 +300,7 @@ class CrawloraClientTest(unittest.TestCase):
299
300
  recipes_doc = root.joinpath("docs", "recipes.md").read_text()
300
301
 
301
302
  for expected in [
302
- "Total operations: `3159`",
303
+ "Total operations: `3160`",
303
304
  "`bing-search`",
304
305
  "`GET /bing/search`",
305
306
  "`bing.search`",
File without changes
File without changes
File without changes