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.
- {crawlora-1.42.0.dev1/crawlora.egg-info → crawlora-1.42.0.dev3}/PKG-INFO +1 -1
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/client.py +1 -1
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/client.pyi +51 -2
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/operations.py +15 -2
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3/crawlora.egg-info}/PKG-INFO +1 -1
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/docs/operations.md +5 -4
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/pyproject.toml +1 -1
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_client.py +3 -2
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/LICENSE +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/MANIFEST.in +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/README.md +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/__init__.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/_pagination.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/_transport_sync.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/async_client.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora/py.typed +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/SOURCES.txt +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/dependency_links.txt +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/requires.txt +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/crawlora.egg-info/top_level.txt +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/docs/recipes.md +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/async_search.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/bing_search.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/paginate.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/examples/youtube_transcript.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/setup.cfg +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_async_httpx.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_examples.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_v14_features.py +0 -0
- {crawlora-1.42.0.dev1 → crawlora-1.42.0.dev3}/tests/test_v15_features.py +0 -0
- {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.
|
|
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.
|
|
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
|
|
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
|
|
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 =
|
|
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.
|
|
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: `
|
|
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` |
|
|
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
|
|
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
|
|
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.
|
|
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,
|
|
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: `
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|