crawlora 1.29.0.dev1__tar.gz → 1.30.0.dev1__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.29.0.dev1/crawlora.egg-info → crawlora-1.30.0.dev1}/PKG-INFO +1 -1
  2. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/client.py +1 -1
  3. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/client.pyi +87 -0
  4. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/operations.py +64 -1
  5. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1/crawlora.egg-info}/PKG-INFO +1 -1
  6. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/docs/operations.md +5 -4
  7. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/pyproject.toml +1 -1
  8. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/tests/test_client.py +2 -2
  9. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/LICENSE +0 -0
  10. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/MANIFEST.in +0 -0
  11. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/README.md +0 -0
  12. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/__init__.py +0 -0
  13. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/_pagination.py +0 -0
  14. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/_transport_sync.py +0 -0
  15. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/async_client.py +0 -0
  16. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora/py.typed +0 -0
  17. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora.egg-info/SOURCES.txt +0 -0
  18. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora.egg-info/dependency_links.txt +0 -0
  19. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora.egg-info/requires.txt +0 -0
  20. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/crawlora.egg-info/top_level.txt +0 -0
  21. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/docs/recipes.md +0 -0
  22. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/examples/async_search.py +0 -0
  23. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/examples/bing_search.py +0 -0
  24. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/examples/paginate.py +0 -0
  25. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/examples/youtube_transcript.py +0 -0
  26. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/setup.cfg +0 -0
  27. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/tests/test_async_httpx.py +0 -0
  28. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/tests/test_examples.py +0 -0
  29. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/tests/test_v14_features.py +0 -0
  30. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/tests/test_v15_features.py +0 -0
  31. {crawlora-1.29.0.dev1 → crawlora-1.30.0.dev1}/tests/test_w2_features.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crawlora
3
- Version: 1.29.0.dev1
3
+ Version: 1.30.0.dev1
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.29.0-sdk.1"
23
+ VERSION = "1.30.0-sdk.1"
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)
@@ -17862,7 +17862,9 @@ ModelTmdbMediaRef = TypedDict('ModelTmdbMediaRef', {
17862
17862
 
17863
17863
  ModelTmdbMovieListResponse = TypedDict('ModelTmdbMovieListResponse', {
17864
17864
  'category': NotRequired[str],
17865
+ 'has_next_page': NotRequired[bool],
17865
17866
  'movies': NotRequired[list[ModelTmdbMediaRef]],
17867
+ 'page': NotRequired[int],
17866
17868
  'source_url': NotRequired[str],
17867
17869
  }, total=False)
17868
17870
 
@@ -17907,6 +17909,8 @@ ModelTmdbRating = TypedDict('ModelTmdbRating', {
17907
17909
  }, total=False)
17908
17910
 
17909
17911
  ModelTmdbSearchResponse = TypedDict('ModelTmdbSearchResponse', {
17912
+ 'has_next_page': NotRequired[bool],
17913
+ 'page': NotRequired[int],
17910
17914
  'query': NotRequired[str],
17911
17915
  'results': NotRequired[list[ModelTmdbSearchResult]],
17912
17916
  'source_url': NotRequired[str],
@@ -17924,6 +17928,8 @@ ModelTmdbSearchResult = TypedDict('ModelTmdbSearchResult', {
17924
17928
 
17925
17929
  ModelTmdbTvlistResponse = TypedDict('ModelTmdbTvlistResponse', {
17926
17930
  'category': NotRequired[str],
17931
+ 'has_next_page': NotRequired[bool],
17932
+ 'page': NotRequired[int],
17927
17933
  'shows': NotRequired[list[ModelTmdbMediaRef]],
17928
17934
  'source_url': NotRequired[str],
17929
17935
  }, total=False)
@@ -20638,6 +20644,27 @@ ModelZillowSearchResponse = TypedDict('ModelZillowSearchResponse', {
20638
20644
  'results': NotRequired[list[ModelZillowPropertyItem]],
20639
20645
  }, total=False)
20640
20646
 
20647
+ ModelTmdbPersonListResponse = TypedDict('ModelTmdbPersonListResponse', {
20648
+ 'has_next_page': NotRequired[bool],
20649
+ 'page': NotRequired[int],
20650
+ 'people': NotRequired[list[ModelTmdbPersonRef]],
20651
+ 'source_url': NotRequired[str],
20652
+ }, total=False)
20653
+
20654
+ ModelTmdbPersonRef = TypedDict('ModelTmdbPersonRef', {
20655
+ 'id': NotRequired[str],
20656
+ 'known_for': NotRequired[str],
20657
+ 'name': NotRequired[str],
20658
+ 'profile_url': NotRequired[str],
20659
+ 'uri': NotRequired[str],
20660
+ }, total=False)
20661
+
20662
+ ModelTmdbPersonListResponseDoc = TypedDict('ModelTmdbPersonListResponseDoc', {
20663
+ 'code': NotRequired[int],
20664
+ 'data': NotRequired[ModelTmdbPersonListResponse],
20665
+ 'msg': NotRequired[str],
20666
+ }, total=False)
20667
+
20641
20668
  AirbnbHostResponse = ModelAirbnbHostResponse
20642
20669
  AirbnbHostParams = TypedDict('AirbnbHostParams', {
20643
20670
  '_response_type': NotRequired[ResponseType],
@@ -29078,6 +29105,18 @@ TmdbMovieListParams = TypedDict('TmdbMovieListParams', {
29078
29105
  '_timeout': NotRequired[float],
29079
29106
  '_headers': NotRequired[Mapping[str, str]],
29080
29107
  'category': NotRequired[Literal['popular', 'top_rated', 'now_playing', 'upcoming']],
29108
+ 'page': NotRequired[int],
29109
+ 'sort_by': NotRequired[Literal['popularity.desc', 'popularity.asc', 'vote_average.desc', 'vote_average.asc', 'primary_release_date.desc', 'primary_release_date.asc', 'title.asc', 'title.desc']],
29110
+ 'with_genres': NotRequired[str],
29111
+ 'original_language': NotRequired[str],
29112
+ 'date_from': NotRequired[str],
29113
+ 'date_to': NotRequired[str],
29114
+ 'min_rating': NotRequired[float],
29115
+ 'max_rating': NotRequired[float],
29116
+ 'min_votes': NotRequired[int],
29117
+ 'min_runtime': NotRequired[int],
29118
+ 'max_runtime': NotRequired[int],
29119
+ 'include_adult': NotRequired[bool],
29081
29120
  'limit': NotRequired[int],
29082
29121
  }, total=False)
29083
29122
 
@@ -29089,6 +29128,15 @@ TmdbMovieParams = TypedDict('TmdbMovieParams', {
29089
29128
  'id': Required[str],
29090
29129
  }, total=False)
29091
29130
 
29131
+ TmdbPersonListResponse = ModelTmdbPersonListResponseDoc
29132
+ TmdbPersonListParams = TypedDict('TmdbPersonListParams', {
29133
+ '_response_type': NotRequired[ResponseType],
29134
+ '_timeout': NotRequired[float],
29135
+ '_headers': NotRequired[Mapping[str, str]],
29136
+ 'page': NotRequired[int],
29137
+ 'limit': NotRequired[int],
29138
+ }, total=False)
29139
+
29092
29140
  TmdbPersonResponse = ModelTmdbPersonResponseDoc
29093
29141
  TmdbPersonParams = TypedDict('TmdbPersonParams', {
29094
29142
  '_response_type': NotRequired[ResponseType],
@@ -29105,6 +29153,7 @@ TmdbSearchParams = TypedDict('TmdbSearchParams', {
29105
29153
  '_headers': NotRequired[Mapping[str, str]],
29106
29154
  'query': Required[str],
29107
29155
  'type': NotRequired[Literal['movie', 'tv', 'person']],
29156
+ 'page': NotRequired[int],
29108
29157
  'limit': NotRequired[int],
29109
29158
  }, total=False)
29110
29159
 
@@ -29114,6 +29163,18 @@ TmdbTvListParams = TypedDict('TmdbTvListParams', {
29114
29163
  '_timeout': NotRequired[float],
29115
29164
  '_headers': NotRequired[Mapping[str, str]],
29116
29165
  'category': NotRequired[Literal['popular', 'top_rated', 'airing_today', 'on_the_air']],
29166
+ 'page': NotRequired[int],
29167
+ 'sort_by': NotRequired[Literal['popularity.desc', 'popularity.asc', 'vote_average.desc', 'vote_average.asc', 'first_air_date.desc', 'first_air_date.asc', 'name.asc', 'name.desc']],
29168
+ 'with_genres': NotRequired[str],
29169
+ 'original_language': NotRequired[str],
29170
+ 'date_from': NotRequired[str],
29171
+ 'date_to': NotRequired[str],
29172
+ 'min_rating': NotRequired[float],
29173
+ 'max_rating': NotRequired[float],
29174
+ 'min_votes': NotRequired[int],
29175
+ 'min_runtime': NotRequired[int],
29176
+ 'max_runtime': NotRequired[int],
29177
+ 'include_adult': NotRequired[bool],
29117
29178
  'limit': NotRequired[int],
29118
29179
  }, total=False)
29119
29180
 
@@ -30935,6 +30996,7 @@ class TiktokGroup:
30935
30996
  class TmdbGroup:
30936
30997
  def movie_list(self, **params: Unpack[TmdbMovieListParams]) -> TmdbMovieListResponse: ...
30937
30998
  def movie(self, **params: Unpack[TmdbMovieParams]) -> TmdbMovieResponse: ...
30999
+ def person_list(self, **params: Unpack[TmdbPersonListParams]) -> TmdbPersonListResponse: ...
30938
31000
  def person(self, **params: Unpack[TmdbPersonParams]) -> TmdbPersonResponse: ...
30939
31001
  def search(self, **params: Unpack[TmdbSearchParams]) -> TmdbSearchResponse: ...
30940
31002
  def tv_list(self, **params: Unpack[TmdbTvListParams]) -> TmdbTvListResponse: ...
@@ -31838,6 +31900,7 @@ OperationId = Literal[
31838
31900
  'tiktok-trending',
31839
31901
  'tmdb-movie-list',
31840
31902
  'tmdb-movie',
31903
+ 'tmdb-person-list',
31841
31904
  'tmdb-person',
31842
31905
  'tmdb-search',
31843
31906
  'tmdb-tv-list',
@@ -41491,6 +41554,18 @@ class CrawloraClient:
41491
41554
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
41492
41555
  ) -> TmdbMovieResponse: ...
41493
41556
  @overload
41557
+ def operation(
41558
+ self,
41559
+ operation_id: Literal['tmdb-person-list'],
41560
+ params: TmdbPersonListParams = ...,
41561
+ *,
41562
+ response_type: ResponseType = ...,
41563
+ timeout: float | None = ...,
41564
+ headers: Mapping[str, str] | None = ...,
41565
+ retries: int | None = ...,
41566
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
41567
+ ) -> TmdbPersonListResponse: ...
41568
+ @overload
41494
41569
  def operation(
41495
41570
  self,
41496
41571
  operation_id: Literal['tmdb-person'],
@@ -52075,6 +52150,18 @@ class CrawloraClient:
52075
52150
  retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
52076
52151
  ) -> TmdbMovieResponse: ...
52077
52152
  @overload
52153
+ def request(
52154
+ self,
52155
+ operation_id: Literal['tmdb-person-list'],
52156
+ params: TmdbPersonListParams = ...,
52157
+ *,
52158
+ response_type: ResponseType = ...,
52159
+ timeout: float | None = ...,
52160
+ headers: Mapping[str, str] | None = ...,
52161
+ retries: int | None = ...,
52162
+ retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
52163
+ ) -> TmdbPersonListResponse: ...
52164
+ @overload
52078
52165
  def request(
52079
52166
  self,
52080
52167
  operation_id: Literal['tmdb-person'],
@@ -14563,6 +14563,7 @@ OPERATIONS = {'airbnb-host': {'bodyParam': None,
14563
14563
  'formParams': [],
14564
14564
  'id': 'tmdb-movie-list',
14565
14565
  'method': 'GET',
14566
+ 'paginatable': True,
14566
14567
  'path': '/tmdb/movie/list',
14567
14568
  'pathParams': [],
14568
14569
  'produces': ['application/json'],
@@ -14570,6 +14571,28 @@ OPERATIONS = {'airbnb-host': {'bodyParam': None,
14570
14571
  'in': 'query',
14571
14572
  'name': 'category',
14572
14573
  'type': 'string'},
14574
+ {'in': 'query', 'name': 'page', 'type': 'integer'},
14575
+ {'enum': ['popularity.desc',
14576
+ 'popularity.asc',
14577
+ 'vote_average.desc',
14578
+ 'vote_average.asc',
14579
+ 'primary_release_date.desc',
14580
+ 'primary_release_date.asc',
14581
+ 'title.asc',
14582
+ 'title.desc'],
14583
+ 'in': 'query',
14584
+ 'name': 'sort_by',
14585
+ 'type': 'string'},
14586
+ {'in': 'query', 'name': 'with_genres', 'type': 'string'},
14587
+ {'in': 'query', 'name': 'original_language', 'type': 'string'},
14588
+ {'in': 'query', 'name': 'date_from', 'type': 'string'},
14589
+ {'in': 'query', 'name': 'date_to', 'type': 'string'},
14590
+ {'in': 'query', 'name': 'min_rating', 'type': 'number'},
14591
+ {'in': 'query', 'name': 'max_rating', 'type': 'number'},
14592
+ {'in': 'query', 'name': 'min_votes', 'type': 'integer'},
14593
+ {'in': 'query', 'name': 'min_runtime', 'type': 'integer'},
14594
+ {'in': 'query', 'name': 'max_runtime', 'type': 'integer'},
14595
+ {'in': 'query', 'name': 'include_adult', 'type': 'boolean'},
14573
14596
  {'in': 'query', 'name': 'limit', 'type': 'integer'}],
14574
14597
  'security': ['ApiKeyAuth']},
14575
14598
  'tmdb-person': {'bodyParam': None,
@@ -14583,17 +14606,32 @@ OPERATIONS = {'airbnb-host': {'bodyParam': None,
14583
14606
  'produces': ['application/json'],
14584
14607
  'queryParams': [{'in': 'query', 'name': 'limit', 'type': 'integer'}],
14585
14608
  'security': ['ApiKeyAuth']},
14609
+ 'tmdb-person-list': {'bodyParam': None,
14610
+ 'bodyRequired': False,
14611
+ 'consumes': ['application/json'],
14612
+ 'formParams': [],
14613
+ 'id': 'tmdb-person-list',
14614
+ 'method': 'GET',
14615
+ 'paginatable': True,
14616
+ 'path': '/tmdb/person/list',
14617
+ 'pathParams': [],
14618
+ 'produces': ['application/json'],
14619
+ 'queryParams': [{'in': 'query', 'name': 'page', 'type': 'integer'},
14620
+ {'in': 'query', 'name': 'limit', 'type': 'integer'}],
14621
+ 'security': ['ApiKeyAuth']},
14586
14622
  'tmdb-search': {'bodyParam': None,
14587
14623
  'bodyRequired': False,
14588
14624
  'consumes': ['application/json'],
14589
14625
  'formParams': [],
14590
14626
  'id': 'tmdb-search',
14591
14627
  'method': 'GET',
14628
+ 'paginatable': True,
14592
14629
  'path': '/tmdb/search',
14593
14630
  'pathParams': [],
14594
14631
  'produces': ['application/json'],
14595
14632
  'queryParams': [{'in': 'query', 'name': 'query', 'required': True, 'type': 'string'},
14596
14633
  {'enum': ['movie', 'tv', 'person'], 'in': 'query', 'name': 'type', 'type': 'string'},
14634
+ {'in': 'query', 'name': 'page', 'type': 'integer'},
14597
14635
  {'in': 'query', 'name': 'limit', 'type': 'integer'}],
14598
14636
  'security': ['ApiKeyAuth']},
14599
14637
  'tmdb-tv': {'bodyParam': None,
@@ -14613,6 +14651,7 @@ OPERATIONS = {'airbnb-host': {'bodyParam': None,
14613
14651
  'formParams': [],
14614
14652
  'id': 'tmdb-tv-list',
14615
14653
  'method': 'GET',
14654
+ 'paginatable': True,
14616
14655
  'path': '/tmdb/tv/list',
14617
14656
  'pathParams': [],
14618
14657
  'produces': ['application/json'],
@@ -14620,6 +14659,28 @@ OPERATIONS = {'airbnb-host': {'bodyParam': None,
14620
14659
  'in': 'query',
14621
14660
  'name': 'category',
14622
14661
  'type': 'string'},
14662
+ {'in': 'query', 'name': 'page', 'type': 'integer'},
14663
+ {'enum': ['popularity.desc',
14664
+ 'popularity.asc',
14665
+ 'vote_average.desc',
14666
+ 'vote_average.asc',
14667
+ 'first_air_date.desc',
14668
+ 'first_air_date.asc',
14669
+ 'name.asc',
14670
+ 'name.desc'],
14671
+ 'in': 'query',
14672
+ 'name': 'sort_by',
14673
+ 'type': 'string'},
14674
+ {'in': 'query', 'name': 'with_genres', 'type': 'string'},
14675
+ {'in': 'query', 'name': 'original_language', 'type': 'string'},
14676
+ {'in': 'query', 'name': 'date_from', 'type': 'string'},
14677
+ {'in': 'query', 'name': 'date_to', 'type': 'string'},
14678
+ {'in': 'query', 'name': 'min_rating', 'type': 'number'},
14679
+ {'in': 'query', 'name': 'max_rating', 'type': 'number'},
14680
+ {'in': 'query', 'name': 'min_votes', 'type': 'integer'},
14681
+ {'in': 'query', 'name': 'min_runtime', 'type': 'integer'},
14682
+ {'in': 'query', 'name': 'max_runtime', 'type': 'integer'},
14683
+ {'in': 'query', 'name': 'include_adult', 'type': 'boolean'},
14623
14684
  {'in': 'query', 'name': 'limit', 'type': 'integer'}],
14624
14685
  'security': ['ApiKeyAuth']},
14625
14686
  'tripadvisor-autocomplete': {'bodyParam': None,
@@ -16663,6 +16724,7 @@ GROUPS = {'airbnb': {'host': 'airbnb-host',
16663
16724
  'tmdb': {'movie': 'tmdb-movie',
16664
16725
  'movie_list': 'tmdb-movie-list',
16665
16726
  'person': 'tmdb-person',
16727
+ 'person_list': 'tmdb-person-list',
16666
16728
  'search': 'tmdb-search',
16667
16729
  'tv': 'tmdb-tv',
16668
16730
  'tv_list': 'tmdb-tv-list'},
@@ -16758,7 +16820,7 @@ GROUPS = {'airbnb': {'host': 'airbnb-host',
16758
16820
  'video': 'youtube-video'},
16759
16821
  'zillow': {'autocomplete': 'zillow-autocomplete', 'property': 'zillow-property', 'search': 'zillow-search'}}
16760
16822
 
16761
- OPERATION_COUNT = 881
16823
+ OPERATION_COUNT = 882
16762
16824
 
16763
16825
  class OperationId:
16764
16826
  AIRBNB_HOST = 'airbnb-host'
@@ -17542,6 +17604,7 @@ class OperationId:
17542
17604
  TMDB_MOVIE = 'tmdb-movie'
17543
17605
  TMDB_MOVIE_LIST = 'tmdb-movie-list'
17544
17606
  TMDB_PERSON = 'tmdb-person'
17607
+ TMDB_PERSON_LIST = 'tmdb-person-list'
17545
17608
  TMDB_SEARCH = 'tmdb-search'
17546
17609
  TMDB_TV = 'tmdb-tv'
17547
17610
  TMDB_TV_LIST = 'tmdb-tv-list'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crawlora
3
- Version: 1.29.0.dev1
3
+ Version: 1.30.0.dev1
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: `881`
5
+ Total operations: `882`
6
6
 
7
7
  | Group | SDK method | Operation ID | HTTP | Params | Auth | Response | Notes |
8
8
  | --- | --- | --- | --- | --- | --- | --- | --- |
@@ -789,11 +789,12 @@ Total operations: `881`
789
789
  | tiktok | `tiktok.top_ads_spotlight` | `tiktok-top-ads-spotlight` | `GET /tiktok/top-ads/spotlight` | `page` (query int)<br>`limit` (query int) | `ApiKeyAuth` | `TiktokTopAdsSpotlightResponse` | |
790
790
  | tiktok | `tiktok.top_ads_suggestions` | `tiktok-top-ads-suggestions` | `GET /tiktok/top-ads/suggestions` | `count` (query int)<br>`scenario` (query int) | `ApiKeyAuth` | `TiktokTopAdsSuggestionsResponse` | |
791
791
  | tiktok | `tiktok.trending` | `tiktok-trending` | `GET /tiktok/trending` | none | `ApiKeyAuth` | `TiktokTrendingResponse` | |
792
- | tmdb | `tmdb.movie_list` | `tmdb-movie-list` | `GET /tmdb/movie/list` | `category` (query Literal['popular', 'top_rated', 'now_playing', 'upcoming'])<br>`limit` (query int) | `ApiKeyAuth` | `TmdbMovieListResponse` | |
792
+ | tmdb | `tmdb.movie_list` | `tmdb-movie-list` | `GET /tmdb/movie/list` | `category` (query Literal['popular', 'top_rated', 'now_playing', 'upcoming'])<br>`page` (query int)<br>`sort_by` (query Literal['popularity.desc', 'popularity.asc', 'vote_average.desc', 'vote_average.asc', 'primary_release_date.desc', 'primary_release_date.asc', 'title.asc', 'title.desc'])<br>`with_genres` (query str)<br>`original_language` (query str)<br>`date_from` (query str)<br>`date_to` (query str)<br>`min_rating` (query float)<br>`max_rating` (query float)<br>`min_votes` (query int)<br>`min_runtime` (query int)<br>`max_runtime` (query int)<br>`include_adult` (query bool)<br>`limit` (query int) | `ApiKeyAuth` | `TmdbMovieListResponse` | |
793
793
  | tmdb | `tmdb.movie` | `tmdb-movie` | `GET /tmdb/movie/{id}` | `id` (path str required) | `ApiKeyAuth` | `TmdbMovieResponse` | |
794
+ | tmdb | `tmdb.person_list` | `tmdb-person-list` | `GET /tmdb/person/list` | `page` (query int)<br>`limit` (query int) | `ApiKeyAuth` | `TmdbPersonListResponse` | |
794
795
  | tmdb | `tmdb.person` | `tmdb-person` | `GET /tmdb/person/{id}` | `id` (path str required)<br>`limit` (query int) | `ApiKeyAuth` | `TmdbPersonResponse` | |
795
- | tmdb | `tmdb.search` | `tmdb-search` | `GET /tmdb/search` | `query` (query str required)<br>`type` (query Literal['movie', 'tv', 'person'])<br>`limit` (query int) | `ApiKeyAuth` | `TmdbSearchResponse` | |
796
- | tmdb | `tmdb.tv_list` | `tmdb-tv-list` | `GET /tmdb/tv/list` | `category` (query Literal['popular', 'top_rated', 'airing_today', 'on_the_air'])<br>`limit` (query int) | `ApiKeyAuth` | `TmdbTvListResponse` | |
796
+ | tmdb | `tmdb.search` | `tmdb-search` | `GET /tmdb/search` | `query` (query str required)<br>`type` (query Literal['movie', 'tv', 'person'])<br>`page` (query int)<br>`limit` (query int) | `ApiKeyAuth` | `TmdbSearchResponse` | |
797
+ | tmdb | `tmdb.tv_list` | `tmdb-tv-list` | `GET /tmdb/tv/list` | `category` (query Literal['popular', 'top_rated', 'airing_today', 'on_the_air'])<br>`page` (query int)<br>`sort_by` (query Literal['popularity.desc', 'popularity.asc', 'vote_average.desc', 'vote_average.asc', 'first_air_date.desc', 'first_air_date.asc', 'name.asc', 'name.desc'])<br>`with_genres` (query str)<br>`original_language` (query str)<br>`date_from` (query str)<br>`date_to` (query str)<br>`min_rating` (query float)<br>`max_rating` (query float)<br>`min_votes` (query int)<br>`min_runtime` (query int)<br>`max_runtime` (query int)<br>`include_adult` (query bool)<br>`limit` (query int) | `ApiKeyAuth` | `TmdbTvListResponse` | |
797
798
  | tmdb | `tmdb.tv` | `tmdb-tv` | `GET /tmdb/tv/{id}` | `id` (path str required) | `ApiKeyAuth` | `TmdbTvResponse` | |
798
799
  | trip_advisor | `trip_advisor.tripadvisor_autocomplete` | `tripadvisor-autocomplete` | `GET /tripadvisor/autocomplete` | `q` (query str required)<br>`limit` (query int)<br>`locale` (query str)<br>`scope_geo_id` (query int)<br>`type` (query str)<br>`search_session_id` (query str)<br>`typeahead_id` (query str)<br>`route_uid` (query str) | `ApiKeyAuth` | `TripAdvisorTripadvisorAutocompleteResponse` | |
799
800
  | trip_advisor | `trip_advisor.tripadvisor_enums` | `tripadvisor-enums` | `GET /tripadvisor/enums` | none | `ApiKeyAuth` | `TripAdvisorTripadvisorEnumsResponse` | |
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "crawlora"
7
- version = "1.29.0.dev1"
7
+ version = "1.30.0.dev1"
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, 881)
270
+ self.assertEqual(OPERATION_COUNT, 882)
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"))
@@ -297,7 +297,7 @@ class CrawloraClientTest(unittest.TestCase):
297
297
  recipes_doc = root.joinpath("docs", "recipes.md").read_text()
298
298
 
299
299
  for expected in [
300
- "Total operations: `881`",
300
+ "Total operations: `882`",
301
301
  "`bing-search`",
302
302
  "`GET /bing/search`",
303
303
  "`bing.search`",
File without changes
File without changes
File without changes