crawlora 1.6.0.dev2__tar.gz → 1.6.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.6.0.dev2/crawlora.egg-info → crawlora-1.6.0.dev3}/PKG-INFO +1 -1
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/client.py +1 -1
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/client.pyi +125 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/operations.py +38 -2
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3/crawlora.egg-info}/PKG-INFO +1 -1
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/docs/operations.md +3 -1
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/pyproject.toml +1 -1
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/tests/test_client.py +2 -2
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/LICENSE +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/MANIFEST.in +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/README.md +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/__init__.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/_pagination.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/_transport_sync.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/async_client.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora/py.typed +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora.egg-info/SOURCES.txt +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora.egg-info/dependency_links.txt +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora.egg-info/requires.txt +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/crawlora.egg-info/top_level.txt +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/docs/recipes.md +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/examples/async_search.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/examples/bing_search.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/examples/paginate.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/examples/youtube_transcript.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/setup.cfg +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/tests/test_async_httpx.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/tests/test_examples.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/tests/test_v14_features.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.0.dev3}/tests/test_v15_features.py +0 -0
- {crawlora-1.6.0.dev2 → crawlora-1.6.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.6.0.
|
|
3
|
+
Version: 1.6.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.6.0-sdk.
|
|
23
|
+
VERSION = "1.6.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)
|
|
@@ -2666,6 +2666,21 @@ ModelGoogleMapSearchOption = TypedDict('ModelGoogleMapSearchOption', {
|
|
|
2666
2666
|
'language': NotRequired[str],
|
|
2667
2667
|
}, total=False)
|
|
2668
2668
|
|
|
2669
|
+
ModelGoogleNewsResponse = TypedDict('ModelGoogleNewsResponse', {
|
|
2670
|
+
'pagination': NotRequired[ModelGoogleVerticalPagination],
|
|
2671
|
+
'results': NotRequired[list[ModelGoogleNewsResult]],
|
|
2672
|
+
}, total=False)
|
|
2673
|
+
|
|
2674
|
+
ModelGoogleNewsResult = TypedDict('ModelGoogleNewsResult', {
|
|
2675
|
+
'age': NotRequired[str],
|
|
2676
|
+
'description': NotRequired[str],
|
|
2677
|
+
'position': NotRequired[int],
|
|
2678
|
+
'source': NotRequired[str],
|
|
2679
|
+
'thumbnail': NotRequired[str],
|
|
2680
|
+
'title': NotRequired[str],
|
|
2681
|
+
'url': NotRequired[str],
|
|
2682
|
+
}, total=False)
|
|
2683
|
+
|
|
2669
2684
|
ModelGooglePeopleAlsoAskItem = TypedDict('ModelGooglePeopleAlsoAskItem', {
|
|
2670
2685
|
'answer': NotRequired[str],
|
|
2671
2686
|
'date': NotRequired[str],
|
|
@@ -2728,6 +2743,28 @@ ModelGoogleSuggestionResult = TypedDict('ModelGoogleSuggestionResult', {
|
|
|
2728
2743
|
'query': NotRequired[str],
|
|
2729
2744
|
}, total=False)
|
|
2730
2745
|
|
|
2746
|
+
ModelGoogleVerticalPagination = TypedDict('ModelGoogleVerticalPagination', {
|
|
2747
|
+
'next_page': NotRequired[int],
|
|
2748
|
+
'page': NotRequired[int],
|
|
2749
|
+
'previous_page': NotRequired[int],
|
|
2750
|
+
}, total=False)
|
|
2751
|
+
|
|
2752
|
+
ModelGoogleVideoResult = TypedDict('ModelGoogleVideoResult', {
|
|
2753
|
+
'age': NotRequired[str],
|
|
2754
|
+
'description': NotRequired[str],
|
|
2755
|
+
'duration': NotRequired[str],
|
|
2756
|
+
'platform': NotRequired[str],
|
|
2757
|
+
'position': NotRequired[int],
|
|
2758
|
+
'thumbnail': NotRequired[str],
|
|
2759
|
+
'title': NotRequired[str],
|
|
2760
|
+
'url': NotRequired[str],
|
|
2761
|
+
}, total=False)
|
|
2762
|
+
|
|
2763
|
+
ModelGoogleVideosResponse = TypedDict('ModelGoogleVideosResponse', {
|
|
2764
|
+
'pagination': NotRequired[ModelGoogleVerticalPagination],
|
|
2765
|
+
'results': NotRequired[list[ModelGoogleVideoResult]],
|
|
2766
|
+
}, total=False)
|
|
2767
|
+
|
|
2731
2768
|
ModelGoogleMapPlaceResponseDoc = TypedDict('ModelGoogleMapPlaceResponseDoc', {
|
|
2732
2769
|
'code': NotRequired[int],
|
|
2733
2770
|
'data': NotRequired[ModelGooglePlace],
|
|
@@ -2740,6 +2777,12 @@ ModelGoogleMapSearchResponseDoc = TypedDict('ModelGoogleMapSearchResponseDoc', {
|
|
|
2740
2777
|
'msg': NotRequired[str],
|
|
2741
2778
|
}, total=False)
|
|
2742
2779
|
|
|
2780
|
+
ModelGoogleNewsResponseDoc = TypedDict('ModelGoogleNewsResponseDoc', {
|
|
2781
|
+
'code': NotRequired[int],
|
|
2782
|
+
'data': NotRequired[ModelGoogleNewsResponse],
|
|
2783
|
+
'msg': NotRequired[str],
|
|
2784
|
+
}, total=False)
|
|
2785
|
+
|
|
2743
2786
|
ModelGoogleSearchResponseDoc = TypedDict('ModelGoogleSearchResponseDoc', {
|
|
2744
2787
|
'code': NotRequired[int],
|
|
2745
2788
|
'data': NotRequired[ModelGoogleSearchResp],
|
|
@@ -2752,6 +2795,12 @@ ModelGoogleSuggestResponseDoc = TypedDict('ModelGoogleSuggestResponseDoc', {
|
|
|
2752
2795
|
'msg': NotRequired[str],
|
|
2753
2796
|
}, total=False)
|
|
2754
2797
|
|
|
2798
|
+
ModelGoogleVideosResponseDoc = TypedDict('ModelGoogleVideosResponseDoc', {
|
|
2799
|
+
'code': NotRequired[int],
|
|
2800
|
+
'data': NotRequired[ModelGoogleVideosResponse],
|
|
2801
|
+
'msg': NotRequired[str],
|
|
2802
|
+
}, total=False)
|
|
2803
|
+
|
|
2755
2804
|
ModelGoogleplayApp = TypedDict('ModelGoogleplayApp', {
|
|
2756
2805
|
'ad_supported': NotRequired[bool],
|
|
2757
2806
|
'android_max_version': NotRequired[str],
|
|
@@ -9814,6 +9863,18 @@ GoogleMapSearchParams = TypedDict('GoogleMapSearchParams', {
|
|
|
9814
9863
|
'mapSearchOption': Required[GoogleMapSearchBody],
|
|
9815
9864
|
}, total=False)
|
|
9816
9865
|
|
|
9866
|
+
GoogleNewsResponse = ModelGoogleNewsResponseDoc
|
|
9867
|
+
GoogleNewsParams = TypedDict('GoogleNewsParams', {
|
|
9868
|
+
'_response_type': NotRequired[ResponseType],
|
|
9869
|
+
'_timeout': NotRequired[float],
|
|
9870
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
9871
|
+
'q': Required[str],
|
|
9872
|
+
'page': NotRequired[int],
|
|
9873
|
+
'count': NotRequired[int],
|
|
9874
|
+
'country': NotRequired[str],
|
|
9875
|
+
'lang': NotRequired[str],
|
|
9876
|
+
}, total=False)
|
|
9877
|
+
|
|
9817
9878
|
GoogleSearchBody = ModelGoogleSearchOption
|
|
9818
9879
|
GoogleSearchResponse = ModelGoogleSearchResponseDoc
|
|
9819
9880
|
GoogleSearchParams = TypedDict('GoogleSearchParams', {
|
|
@@ -9934,6 +9995,18 @@ GoogleTrendsTrendingDetailParams = TypedDict('GoogleTrendsTrendingDetailParams',
|
|
|
9934
9995
|
'request': Required[GoogleTrendsTrendingDetailBody],
|
|
9935
9996
|
}, total=False)
|
|
9936
9997
|
|
|
9998
|
+
GoogleVideosResponse = ModelGoogleVideosResponseDoc
|
|
9999
|
+
GoogleVideosParams = TypedDict('GoogleVideosParams', {
|
|
10000
|
+
'_response_type': NotRequired[ResponseType],
|
|
10001
|
+
'_timeout': NotRequired[float],
|
|
10002
|
+
'_headers': NotRequired[Mapping[str, str]],
|
|
10003
|
+
'q': Required[str],
|
|
10004
|
+
'page': NotRequired[int],
|
|
10005
|
+
'count': NotRequired[int],
|
|
10006
|
+
'country': NotRequired[str],
|
|
10007
|
+
'lang': NotRequired[str],
|
|
10008
|
+
}, total=False)
|
|
10009
|
+
|
|
9937
10010
|
GooglePlayAppResponse = ModelGoogleplayAppDetailsResponse
|
|
9938
10011
|
GooglePlayAppParams = TypedDict('GooglePlayAppParams', {
|
|
9939
10012
|
'_response_type': NotRequired[ResponseType],
|
|
@@ -12317,6 +12390,7 @@ class GoogleGroup:
|
|
|
12317
12390
|
def jobs(self, **params: Unpack[GoogleJobsParams]) -> GoogleJobsResponse: ...
|
|
12318
12391
|
def map_place(self, **params: Unpack[GoogleMapPlaceParams]) -> GoogleMapPlaceResponse: ...
|
|
12319
12392
|
def map_search(self, **params: Unpack[GoogleMapSearchParams]) -> GoogleMapSearchResponse: ...
|
|
12393
|
+
def news(self, **params: Unpack[GoogleNewsParams]) -> GoogleNewsResponse: ...
|
|
12320
12394
|
def search(self, **params: Unpack[GoogleSearchParams]) -> GoogleSearchResponse: ...
|
|
12321
12395
|
def suggest(self, **params: Unpack[GoogleSuggestParams]) -> GoogleSuggestResponse: ...
|
|
12322
12396
|
def trends_categories(self, **params: Unpack[GoogleTrendsCategoriesParams]) -> GoogleTrendsCategoriesResponse: ...
|
|
@@ -12330,6 +12404,7 @@ class GoogleGroup:
|
|
|
12330
12404
|
def trends_locations(self, **params: Unpack[GoogleTrendsLocationsParams]) -> GoogleTrendsLocationsResponse: ...
|
|
12331
12405
|
def trends_trending(self, **params: Unpack[GoogleTrendsTrendingParams]) -> GoogleTrendsTrendingResponse: ...
|
|
12332
12406
|
def trends_trending_detail(self, **params: Unpack[GoogleTrendsTrendingDetailParams]) -> GoogleTrendsTrendingDetailResponse: ...
|
|
12407
|
+
def videos(self, **params: Unpack[GoogleVideosParams]) -> GoogleVideosResponse: ...
|
|
12333
12408
|
|
|
12334
12409
|
class GooglePlayGroup:
|
|
12335
12410
|
def app(self, **params: Unpack[GooglePlayAppParams]) -> GooglePlayAppResponse: ...
|
|
@@ -12697,6 +12772,7 @@ OperationId = Literal[
|
|
|
12697
12772
|
'google-jobs',
|
|
12698
12773
|
'google-map-place',
|
|
12699
12774
|
'google-map-search',
|
|
12775
|
+
'google-news',
|
|
12700
12776
|
'google-search',
|
|
12701
12777
|
'google-suggest',
|
|
12702
12778
|
'google-trends-categories',
|
|
@@ -12710,6 +12786,7 @@ OperationId = Literal[
|
|
|
12710
12786
|
'google-trends-locations',
|
|
12711
12787
|
'google-trends-trending',
|
|
12712
12788
|
'google-trends-trending-detail',
|
|
12789
|
+
'google-videos',
|
|
12713
12790
|
'googleplay-app',
|
|
12714
12791
|
'googleplay-categories',
|
|
12715
12792
|
'googleplay-datasafety',
|
|
@@ -14240,6 +14317,18 @@ class CrawloraClient:
|
|
|
14240
14317
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
14241
14318
|
) -> GoogleMapSearchResponse: ...
|
|
14242
14319
|
@overload
|
|
14320
|
+
def operation(
|
|
14321
|
+
self,
|
|
14322
|
+
operation_id: Literal['google-news'],
|
|
14323
|
+
params: GoogleNewsParams,
|
|
14324
|
+
*,
|
|
14325
|
+
response_type: ResponseType = ...,
|
|
14326
|
+
timeout: float | None = ...,
|
|
14327
|
+
headers: Mapping[str, str] | None = ...,
|
|
14328
|
+
retries: int | None = ...,
|
|
14329
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
14330
|
+
) -> GoogleNewsResponse: ...
|
|
14331
|
+
@overload
|
|
14243
14332
|
def operation(
|
|
14244
14333
|
self,
|
|
14245
14334
|
operation_id: Literal['google-search'],
|
|
@@ -14396,6 +14485,18 @@ class CrawloraClient:
|
|
|
14396
14485
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
14397
14486
|
) -> GoogleTrendsTrendingDetailResponse: ...
|
|
14398
14487
|
@overload
|
|
14488
|
+
def operation(
|
|
14489
|
+
self,
|
|
14490
|
+
operation_id: Literal['google-videos'],
|
|
14491
|
+
params: GoogleVideosParams,
|
|
14492
|
+
*,
|
|
14493
|
+
response_type: ResponseType = ...,
|
|
14494
|
+
timeout: float | None = ...,
|
|
14495
|
+
headers: Mapping[str, str] | None = ...,
|
|
14496
|
+
retries: int | None = ...,
|
|
14497
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
14498
|
+
) -> GoogleVideosResponse: ...
|
|
14499
|
+
@overload
|
|
14399
14500
|
def operation(
|
|
14400
14501
|
self,
|
|
14401
14502
|
operation_id: Literal['googleplay-app'],
|
|
@@ -18284,6 +18385,18 @@ class CrawloraClient:
|
|
|
18284
18385
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
18285
18386
|
) -> GoogleMapSearchResponse: ...
|
|
18286
18387
|
@overload
|
|
18388
|
+
def request(
|
|
18389
|
+
self,
|
|
18390
|
+
operation_id: Literal['google-news'],
|
|
18391
|
+
params: GoogleNewsParams,
|
|
18392
|
+
*,
|
|
18393
|
+
response_type: ResponseType = ...,
|
|
18394
|
+
timeout: float | None = ...,
|
|
18395
|
+
headers: Mapping[str, str] | None = ...,
|
|
18396
|
+
retries: int | None = ...,
|
|
18397
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
18398
|
+
) -> GoogleNewsResponse: ...
|
|
18399
|
+
@overload
|
|
18287
18400
|
def request(
|
|
18288
18401
|
self,
|
|
18289
18402
|
operation_id: Literal['google-search'],
|
|
@@ -18440,6 +18553,18 @@ class CrawloraClient:
|
|
|
18440
18553
|
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
18441
18554
|
) -> GoogleTrendsTrendingDetailResponse: ...
|
|
18442
18555
|
@overload
|
|
18556
|
+
def request(
|
|
18557
|
+
self,
|
|
18558
|
+
operation_id: Literal['google-videos'],
|
|
18559
|
+
params: GoogleVideosParams,
|
|
18560
|
+
*,
|
|
18561
|
+
response_type: ResponseType = ...,
|
|
18562
|
+
timeout: float | None = ...,
|
|
18563
|
+
headers: Mapping[str, str] | None = ...,
|
|
18564
|
+
retries: int | None = ...,
|
|
18565
|
+
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
|
|
18566
|
+
) -> GoogleVideosResponse: ...
|
|
18567
|
+
@overload
|
|
18443
18568
|
def request(
|
|
18444
18569
|
self,
|
|
18445
18570
|
operation_id: Literal['googleplay-app'],
|
|
@@ -2640,6 +2640,22 @@ OPERATIONS = {'airbnb-room': {'bodyParam': None,
|
|
|
2640
2640
|
'produces': ['application/json'],
|
|
2641
2641
|
'queryParams': [],
|
|
2642
2642
|
'security': ['ApiKeyAuth']},
|
|
2643
|
+
'google-news': {'bodyParam': None,
|
|
2644
|
+
'bodyRequired': False,
|
|
2645
|
+
'consumes': ['application/json'],
|
|
2646
|
+
'formParams': [],
|
|
2647
|
+
'id': 'google-news',
|
|
2648
|
+
'method': 'GET',
|
|
2649
|
+
'paginatable': True,
|
|
2650
|
+
'path': '/google/news',
|
|
2651
|
+
'pathParams': [],
|
|
2652
|
+
'produces': ['application/json'],
|
|
2653
|
+
'queryParams': [{'in': 'query', 'name': 'q', 'required': True, 'type': 'string'},
|
|
2654
|
+
{'in': 'query', 'name': 'page', 'type': 'integer'},
|
|
2655
|
+
{'in': 'query', 'name': 'count', 'type': 'integer'},
|
|
2656
|
+
{'in': 'query', 'name': 'country', 'type': 'string'},
|
|
2657
|
+
{'in': 'query', 'name': 'lang', 'type': 'string'}],
|
|
2658
|
+
'security': ['ApiKeyAuth']},
|
|
2643
2659
|
'google-search': {'bodyParam': 'searchOption',
|
|
2644
2660
|
'bodyRequired': True,
|
|
2645
2661
|
'consumes': ['application/json'],
|
|
@@ -3086,6 +3102,22 @@ OPERATIONS = {'airbnb-room': {'bodyParam': None,
|
|
|
3086
3102
|
'produces': ['application/json'],
|
|
3087
3103
|
'queryParams': [],
|
|
3088
3104
|
'security': ['ApiKeyAuth']},
|
|
3105
|
+
'google-videos': {'bodyParam': None,
|
|
3106
|
+
'bodyRequired': False,
|
|
3107
|
+
'consumes': ['application/json'],
|
|
3108
|
+
'formParams': [],
|
|
3109
|
+
'id': 'google-videos',
|
|
3110
|
+
'method': 'GET',
|
|
3111
|
+
'paginatable': True,
|
|
3112
|
+
'path': '/google/videos',
|
|
3113
|
+
'pathParams': [],
|
|
3114
|
+
'produces': ['application/json'],
|
|
3115
|
+
'queryParams': [{'in': 'query', 'name': 'q', 'required': True, 'type': 'string'},
|
|
3116
|
+
{'in': 'query', 'name': 'page', 'type': 'integer'},
|
|
3117
|
+
{'in': 'query', 'name': 'count', 'type': 'integer'},
|
|
3118
|
+
{'in': 'query', 'name': 'country', 'type': 'string'},
|
|
3119
|
+
{'in': 'query', 'name': 'lang', 'type': 'string'}],
|
|
3120
|
+
'security': ['ApiKeyAuth']},
|
|
3089
3121
|
'googleplay-app': {'bodyParam': None,
|
|
3090
3122
|
'bodyRequired': False,
|
|
3091
3123
|
'consumes': ['application/json'],
|
|
@@ -6335,6 +6367,7 @@ GROUPS = {'airbnb': {'room': 'airbnb-room',
|
|
|
6335
6367
|
'jobs': 'google-jobs',
|
|
6336
6368
|
'map_place': 'google-map-place',
|
|
6337
6369
|
'map_search': 'google-map-search',
|
|
6370
|
+
'news': 'google-news',
|
|
6338
6371
|
'search': 'google-search',
|
|
6339
6372
|
'suggest': 'google-suggest',
|
|
6340
6373
|
'trends_categories': 'google-trends-categories',
|
|
@@ -6347,7 +6380,8 @@ GROUPS = {'airbnb': {'room': 'airbnb-room',
|
|
|
6347
6380
|
'trends_explore_top_queries': 'google-trends-explore-top-queries',
|
|
6348
6381
|
'trends_locations': 'google-trends-locations',
|
|
6349
6382
|
'trends_trending': 'google-trends-trending',
|
|
6350
|
-
'trends_trending_detail': 'google-trends-trending-detail'
|
|
6383
|
+
'trends_trending_detail': 'google-trends-trending-detail',
|
|
6384
|
+
'videos': 'google-videos'},
|
|
6351
6385
|
'google_play': {'app': 'googleplay-app',
|
|
6352
6386
|
'categories': 'googleplay-categories',
|
|
6353
6387
|
'datasafety': 'googleplay-datasafety',
|
|
@@ -6565,7 +6599,7 @@ GROUPS = {'airbnb': {'room': 'airbnb-room',
|
|
|
6565
6599
|
'video': 'youtube-video'},
|
|
6566
6600
|
'zillow': {'autocomplete': 'zillow-autocomplete', 'property': 'zillow-property', 'search': 'zillow-search'}}
|
|
6567
6601
|
|
|
6568
|
-
OPERATION_COUNT =
|
|
6602
|
+
OPERATION_COUNT = 338
|
|
6569
6603
|
|
|
6570
6604
|
class OperationId:
|
|
6571
6605
|
AIRBNB_ROOM = 'airbnb-room'
|
|
@@ -6667,6 +6701,7 @@ class OperationId:
|
|
|
6667
6701
|
GOOGLE_JOBS = 'google-jobs'
|
|
6668
6702
|
GOOGLE_MAP_PLACE = 'google-map-place'
|
|
6669
6703
|
GOOGLE_MAP_SEARCH = 'google-map-search'
|
|
6704
|
+
GOOGLE_NEWS = 'google-news'
|
|
6670
6705
|
GOOGLE_PLAY_APP = 'googleplay-app'
|
|
6671
6706
|
GOOGLE_PLAY_CATEGORIES = 'googleplay-categories'
|
|
6672
6707
|
GOOGLE_PLAY_DATASAFETY = 'googleplay-datasafety'
|
|
@@ -6690,6 +6725,7 @@ class OperationId:
|
|
|
6690
6725
|
GOOGLE_TRENDS_LOCATIONS = 'google-trends-locations'
|
|
6691
6726
|
GOOGLE_TRENDS_TRENDING = 'google-trends-trending'
|
|
6692
6727
|
GOOGLE_TRENDS_TRENDING_DETAIL = 'google-trends-trending-detail'
|
|
6728
|
+
GOOGLE_VIDEOS = 'google-videos'
|
|
6693
6729
|
INSTAGRAM_POST = 'instagram-post'
|
|
6694
6730
|
INSTAGRAM_PROFILE = 'instagram-profile'
|
|
6695
6731
|
INSTAGRAM_REELS = 'instagram-reels'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crawlora
|
|
3
|
-
Version: 1.6.0.
|
|
3
|
+
Version: 1.6.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: `338`
|
|
6
6
|
|
|
7
7
|
| Group | SDK method | Operation ID | HTTP | Params | Auth | Response | Notes |
|
|
8
8
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
@@ -105,6 +105,7 @@ Total operations: `336`
|
|
|
105
105
|
| google | `google.jobs` | `google-jobs` | `POST /google/jobs` | `option` (body str required) | `ApiKeyAuth` | `GoogleJobsResponse` | |
|
|
106
106
|
| google | `google.map_place` | `google-map-place` | `GET /google/map/place/{place_id}` | `place_id` (path str required) | `ApiKeyAuth` | `GoogleMapPlaceResponse` | |
|
|
107
107
|
| google | `google.map_search` | `google-map-search` | `POST /google/map/search` | `mapSearchOption` (body str required) | `ApiKeyAuth` | `GoogleMapSearchResponse` | |
|
|
108
|
+
| google | `google.news` | `google-news` | `GET /google/news` | `q` (query str required)<br>`page` (query int)<br>`count` (query int)<br>`country` (query str)<br>`lang` (query str) | `ApiKeyAuth` | `GoogleNewsResponse` | |
|
|
108
109
|
| google | `google.search` | `google-search` | `POST /google/search` | `searchOption` (body str required) | `ApiKeyAuth` | `GoogleSearchResponse` | |
|
|
109
110
|
| google | `google.suggest` | `google-suggest` | `GET /google/suggest` | `q` (query str required)<br>`count` (query int)<br>`country` (query str)<br>`lang` (query str) | `ApiKeyAuth` | `GoogleSuggestResponse` | |
|
|
110
111
|
| google | `google.trends_categories` | `google-trends-categories` | `GET /google/trends/categories` | none | `ApiKeyAuth` | `GoogleTrendsCategoriesResponse` | |
|
|
@@ -118,6 +119,7 @@ Total operations: `336`
|
|
|
118
119
|
| google | `google.trends_locations` | `google-trends-locations` | `GET /google/trends/locations` | none | `ApiKeyAuth` | `GoogleTrendsLocationsResponse` | |
|
|
119
120
|
| google | `google.trends_trending` | `google-trends-trending` | `GET /google/trends/trending` | `geo` (query Literal['AF', 'AX', 'AL', 'DZ', 'AS', 'AD', 'AO', 'AI', 'AQ', 'AG', 'AR', 'AM', 'AW', 'AU', 'AT', 'AZ', 'BS', 'BH', 'BD', 'BB', 'BY', 'BE', 'BZ', 'BJ', 'BM', 'BT', 'BO', 'BA', 'BW', 'BV', 'BR', 'IO', 'VG', 'BN', 'BG', 'BF', 'BI', 'KH', 'CM', 'CA', 'CV', 'BQ', 'KY', 'CF', 'TD', 'CL', 'CN', 'CX', 'CC', 'CO', 'KM', 'CG', 'CD', 'CK', 'CR', 'CI', 'HR', 'CU', 'CW', 'CY', 'CZ', 'DK', 'DJ', 'DM', 'DO', 'EC', 'EG', 'SV', 'GQ', 'ER', 'EE', 'SZ', 'ET', 'FK', 'FO', 'FJ', 'FI', 'FR', 'GF', 'PF', 'TF', 'GA', 'GM', 'GE', 'DE', 'GH', 'GI', 'GR', 'GL', 'GD', 'GP', 'GU', 'GT', 'GG', 'GN', 'GW', 'GY', 'HT', 'HM', 'HN', 'HK', 'HU', 'IS', 'IN', 'ID', 'IR', 'IQ', 'IE', 'IM', 'IL', 'IT', 'JM', 'JP', 'JE', 'JO', 'KZ', 'KE', 'KI', 'XK', 'KW', 'KG', 'LA', 'LV', 'LB', 'LS', 'LR', 'LY', 'LI', 'LT', 'LU', 'MO', 'MG', 'MW', 'MY', 'MV', 'ML', 'MT', 'MH', 'MQ', 'MR', 'MU', 'YT', 'MX', 'FM', 'MD', 'MC', 'MN', 'ME', 'MS', 'MA', 'MZ', 'MM', 'NA', 'NR', 'NP', 'NL', 'NC', 'NZ', 'NI', 'NE', 'NG', 'NU', 'NF', 'KP', 'MK', 'MP', 'NO', 'OM', 'PK', 'PW', 'PS', 'PA', 'PG', 'PY', 'PE', 'PH', 'PN', 'PL', 'PT', 'PR', 'QA', 'RE', 'RO', 'RU', 'RW', 'WS', 'SM', 'ST', 'SA', 'SN', 'RS', 'SC', 'SL', 'SG', 'SX', 'SK', 'SI', 'SB', 'SO', 'ZA', 'GS', 'KR', 'SS', 'ES', 'LK', 'BL', 'SH', 'KN', 'LC', 'MF', 'PM', 'VC', 'SD', 'SR', 'SJ', 'SE', 'CH', 'SY', 'TW', 'TJ', 'TZ', 'TH', 'TL', 'TG', 'TK', 'TO', 'TT', 'TN', 'TR', 'TM', 'TC', 'TV', 'UM', 'VI', 'UG', 'UA', 'AE', 'GB', 'US', 'UY', 'UZ', 'VU', 'VA', 'VE', 'VN', 'WF', 'EH', 'YE', 'ZM', 'ZW'])<br>`hl` (query str)<br>`tz` (query int)<br>`window` (query Literal['4h', '24h', '48h', '7d'])<br>`time_range` (query Literal['4h', '24h', '48h', '7d'])<br>`category` (query Literal['0', '3', '47', '44', '22', '12', '5', '7', '71', '8', '45', '65', '11', '13', '958', '19', '16', '299', '14', '66', '29', '533', '174', '18', '20', '67'])<br>`status` (query Literal['all', 'active', 'ended'])<br>`sort_by` (query Literal['relevance', 'title', 'recency', 'search_volume'])<br>`limit` (query int) | `ApiKeyAuth` | `GoogleTrendsTrendingResponse` | |
|
|
120
121
|
| google | `google.trends_trending_detail` | `google-trends-trending-detail` | `POST /google/trends/trending/detail` | `request` (body str required) | `ApiKeyAuth` | `GoogleTrendsTrendingDetailResponse` | |
|
|
122
|
+
| google | `google.videos` | `google-videos` | `GET /google/videos` | `q` (query str required)<br>`page` (query int)<br>`count` (query int)<br>`country` (query str)<br>`lang` (query str) | `ApiKeyAuth` | `GoogleVideosResponse` | |
|
|
121
123
|
| google_play | `google_play.app` | `googleplay-app` | `GET /googleplay/app` | `app_id` (query str required)<br>`country` (query str)<br>`lang` (query str) | `ApiKeyAuth` | `GooglePlayAppResponse` | |
|
|
122
124
|
| google_play | `google_play.categories` | `googleplay-categories` | `GET /googleplay/categories` | `country` (query str)<br>`lang` (query str) | `ApiKeyAuth` | `GooglePlayCategoriesResponse` | |
|
|
123
125
|
| google_play | `google_play.datasafety` | `googleplay-datasafety` | `GET /googleplay/datasafety` | `app_id` (query str required)<br>`lang` (query str) | `ApiKeyAuth` | `GooglePlayDatasafetyResponse` | |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "crawlora"
|
|
7
|
-
version = "1.6.0.
|
|
7
|
+
version = "1.6.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"
|
|
@@ -267,7 +267,7 @@ class CrawloraClientTest(unittest.TestCase):
|
|
|
267
267
|
self.assertIs(raised.exception.__cause__, cause)
|
|
268
268
|
|
|
269
269
|
def test_operation_metadata_count(self):
|
|
270
|
-
self.assertEqual(OPERATION_COUNT,
|
|
270
|
+
self.assertEqual(OPERATION_COUNT, 338)
|
|
271
271
|
|
|
272
272
|
def test_deprecated_endpoints_are_not_generated(self):
|
|
273
273
|
self.assertFalse(hasattr(CrawloraClient(api_key="api_test", base_url=self.base_url).google, "lens"))
|
|
@@ -296,7 +296,7 @@ class CrawloraClientTest(unittest.TestCase):
|
|
|
296
296
|
recipes_doc = root.joinpath("docs", "recipes.md").read_text()
|
|
297
297
|
|
|
298
298
|
for expected in [
|
|
299
|
-
"Total operations: `
|
|
299
|
+
"Total operations: `338`",
|
|
300
300
|
"`bing-search`",
|
|
301
301
|
"`GET /bing/search`",
|
|
302
302
|
"`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
|