Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## v1.30.0-sdk.1

- Added paginated TMDB Popular People and expanded TMDB movie, TV, and search operations with pagination and browse filters.

## v1.29.0-sdk.1

- Regenerated from the public API contract (849 to 881 operations), adding
Expand Down
2 changes: 1 addition & 1 deletion crawlora/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from .operations import GROUPS, OPERATIONS

DEFAULT_BASE_URL = "https://api.crawlora.net/api/v1"
VERSION = "1.29.0-sdk.1"
VERSION = "1.30.0-sdk.1"
DEFAULT_USER_AGENT = f"crawlora-python-sdk/{VERSION}"
DEFAULT_MAX_RETRY_DELAY = 30.0
DEFAULT_RETRY_STATUSES = (408, 409, 425, 429)
Expand Down
87 changes: 87 additions & 0 deletions crawlora/client.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -17862,7 +17862,9 @@ ModelTmdbMediaRef = TypedDict('ModelTmdbMediaRef', {

ModelTmdbMovieListResponse = TypedDict('ModelTmdbMovieListResponse', {
'category': NotRequired[str],
'has_next_page': NotRequired[bool],
'movies': NotRequired[list[ModelTmdbMediaRef]],
'page': NotRequired[int],
'source_url': NotRequired[str],
}, total=False)

Expand Down Expand Up @@ -17907,6 +17909,8 @@ ModelTmdbRating = TypedDict('ModelTmdbRating', {
}, total=False)

ModelTmdbSearchResponse = TypedDict('ModelTmdbSearchResponse', {
'has_next_page': NotRequired[bool],
'page': NotRequired[int],
'query': NotRequired[str],
'results': NotRequired[list[ModelTmdbSearchResult]],
'source_url': NotRequired[str],
Expand All @@ -17924,6 +17928,8 @@ ModelTmdbSearchResult = TypedDict('ModelTmdbSearchResult', {

ModelTmdbTvlistResponse = TypedDict('ModelTmdbTvlistResponse', {
'category': NotRequired[str],
'has_next_page': NotRequired[bool],
'page': NotRequired[int],
'shows': NotRequired[list[ModelTmdbMediaRef]],
'source_url': NotRequired[str],
}, total=False)
Expand Down Expand Up @@ -20638,6 +20644,27 @@ ModelZillowSearchResponse = TypedDict('ModelZillowSearchResponse', {
'results': NotRequired[list[ModelZillowPropertyItem]],
}, total=False)

ModelTmdbPersonListResponse = TypedDict('ModelTmdbPersonListResponse', {
'has_next_page': NotRequired[bool],
'page': NotRequired[int],
'people': NotRequired[list[ModelTmdbPersonRef]],
'source_url': NotRequired[str],
}, total=False)

ModelTmdbPersonRef = TypedDict('ModelTmdbPersonRef', {
'id': NotRequired[str],
'known_for': NotRequired[str],
'name': NotRequired[str],
'profile_url': NotRequired[str],
'uri': NotRequired[str],
}, total=False)

ModelTmdbPersonListResponseDoc = TypedDict('ModelTmdbPersonListResponseDoc', {
'code': NotRequired[int],
'data': NotRequired[ModelTmdbPersonListResponse],
'msg': NotRequired[str],
}, total=False)

AirbnbHostResponse = ModelAirbnbHostResponse
AirbnbHostParams = TypedDict('AirbnbHostParams', {
'_response_type': NotRequired[ResponseType],
Expand Down Expand Up @@ -29078,6 +29105,18 @@ TmdbMovieListParams = TypedDict('TmdbMovieListParams', {
'_timeout': NotRequired[float],
'_headers': NotRequired[Mapping[str, str]],
'category': NotRequired[Literal['popular', 'top_rated', 'now_playing', 'upcoming']],
'page': NotRequired[int],
'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']],
'with_genres': NotRequired[str],
'original_language': NotRequired[str],
'date_from': NotRequired[str],
'date_to': NotRequired[str],
'min_rating': NotRequired[float],
'max_rating': NotRequired[float],
'min_votes': NotRequired[int],
'min_runtime': NotRequired[int],
'max_runtime': NotRequired[int],
'include_adult': NotRequired[bool],
'limit': NotRequired[int],
}, total=False)

Expand All @@ -29089,6 +29128,15 @@ TmdbMovieParams = TypedDict('TmdbMovieParams', {
'id': Required[str],
}, total=False)

TmdbPersonListResponse = ModelTmdbPersonListResponseDoc
TmdbPersonListParams = TypedDict('TmdbPersonListParams', {
'_response_type': NotRequired[ResponseType],
'_timeout': NotRequired[float],
'_headers': NotRequired[Mapping[str, str]],
'page': NotRequired[int],
'limit': NotRequired[int],
}, total=False)

TmdbPersonResponse = ModelTmdbPersonResponseDoc
TmdbPersonParams = TypedDict('TmdbPersonParams', {
'_response_type': NotRequired[ResponseType],
Expand All @@ -29105,6 +29153,7 @@ TmdbSearchParams = TypedDict('TmdbSearchParams', {
'_headers': NotRequired[Mapping[str, str]],
'query': Required[str],
'type': NotRequired[Literal['movie', 'tv', 'person']],
'page': NotRequired[int],
'limit': NotRequired[int],
}, total=False)

Expand All @@ -29114,6 +29163,18 @@ TmdbTvListParams = TypedDict('TmdbTvListParams', {
'_timeout': NotRequired[float],
'_headers': NotRequired[Mapping[str, str]],
'category': NotRequired[Literal['popular', 'top_rated', 'airing_today', 'on_the_air']],
'page': NotRequired[int],
'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']],
'with_genres': NotRequired[str],
'original_language': NotRequired[str],
'date_from': NotRequired[str],
'date_to': NotRequired[str],
'min_rating': NotRequired[float],
'max_rating': NotRequired[float],
'min_votes': NotRequired[int],
'min_runtime': NotRequired[int],
'max_runtime': NotRequired[int],
'include_adult': NotRequired[bool],
'limit': NotRequired[int],
}, total=False)

Expand Down Expand Up @@ -30935,6 +30996,7 @@ class TiktokGroup:
class TmdbGroup:
def movie_list(self, **params: Unpack[TmdbMovieListParams]) -> TmdbMovieListResponse: ...
def movie(self, **params: Unpack[TmdbMovieParams]) -> TmdbMovieResponse: ...
def person_list(self, **params: Unpack[TmdbPersonListParams]) -> TmdbPersonListResponse: ...
def person(self, **params: Unpack[TmdbPersonParams]) -> TmdbPersonResponse: ...
def search(self, **params: Unpack[TmdbSearchParams]) -> TmdbSearchResponse: ...
def tv_list(self, **params: Unpack[TmdbTvListParams]) -> TmdbTvListResponse: ...
Expand Down Expand Up @@ -31838,6 +31900,7 @@ OperationId = Literal[
'tiktok-trending',
'tmdb-movie-list',
'tmdb-movie',
'tmdb-person-list',
'tmdb-person',
'tmdb-search',
'tmdb-tv-list',
Expand Down Expand Up @@ -41491,6 +41554,18 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TmdbMovieResponse: ...
@overload
def operation(
self,
operation_id: Literal['tmdb-person-list'],
params: TmdbPersonListParams = ...,
*,
response_type: ResponseType = ...,
timeout: float | None = ...,
headers: Mapping[str, str] | None = ...,
retries: int | None = ...,
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TmdbPersonListResponse: ...
@overload
def operation(
self,
operation_id: Literal['tmdb-person'],
Expand Down Expand Up @@ -52075,6 +52150,18 @@ class CrawloraClient:
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TmdbMovieResponse: ...
@overload
def request(
self,
operation_id: Literal['tmdb-person-list'],
params: TmdbPersonListParams = ...,
*,
response_type: ResponseType = ...,
timeout: float | None = ...,
headers: Mapping[str, str] | None = ...,
retries: int | None = ...,
retry_predicate: Callable[[int, BaseException | None], bool] | None = ...,
) -> TmdbPersonListResponse: ...
@overload
def request(
self,
operation_id: Literal['tmdb-person'],
Expand Down
65 changes: 64 additions & 1 deletion crawlora/operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -14563,13 +14563,36 @@
'formParams': [],
'id': 'tmdb-movie-list',
'method': 'GET',
'paginatable': True,
'path': '/tmdb/movie/list',
'pathParams': [],
'produces': ['application/json'],
'queryParams': [{'enum': ['popular', 'top_rated', 'now_playing', 'upcoming'],
'in': 'query',
'name': 'category',
'type': 'string'},
{'in': 'query', 'name': 'page', 'type': 'integer'},
{'enum': ['popularity.desc',
'popularity.asc',
'vote_average.desc',
'vote_average.asc',
'primary_release_date.desc',
'primary_release_date.asc',
'title.asc',
'title.desc'],
'in': 'query',
'name': 'sort_by',
'type': 'string'},
{'in': 'query', 'name': 'with_genres', 'type': 'string'},
{'in': 'query', 'name': 'original_language', 'type': 'string'},
{'in': 'query', 'name': 'date_from', 'type': 'string'},
{'in': 'query', 'name': 'date_to', 'type': 'string'},
{'in': 'query', 'name': 'min_rating', 'type': 'number'},
{'in': 'query', 'name': 'max_rating', 'type': 'number'},
{'in': 'query', 'name': 'min_votes', 'type': 'integer'},
{'in': 'query', 'name': 'min_runtime', 'type': 'integer'},
{'in': 'query', 'name': 'max_runtime', 'type': 'integer'},
{'in': 'query', 'name': 'include_adult', 'type': 'boolean'},
{'in': 'query', 'name': 'limit', 'type': 'integer'}],
'security': ['ApiKeyAuth']},
'tmdb-person': {'bodyParam': None,
Expand All @@ -14583,17 +14606,32 @@
'produces': ['application/json'],
'queryParams': [{'in': 'query', 'name': 'limit', 'type': 'integer'}],
'security': ['ApiKeyAuth']},
'tmdb-person-list': {'bodyParam': None,
'bodyRequired': False,
'consumes': ['application/json'],
'formParams': [],
'id': 'tmdb-person-list',
'method': 'GET',
'paginatable': True,
'path': '/tmdb/person/list',
'pathParams': [],
'produces': ['application/json'],
'queryParams': [{'in': 'query', 'name': 'page', 'type': 'integer'},
{'in': 'query', 'name': 'limit', 'type': 'integer'}],
'security': ['ApiKeyAuth']},
'tmdb-search': {'bodyParam': None,
'bodyRequired': False,
'consumes': ['application/json'],
'formParams': [],
'id': 'tmdb-search',
'method': 'GET',
'paginatable': True,
'path': '/tmdb/search',
'pathParams': [],
'produces': ['application/json'],
'queryParams': [{'in': 'query', 'name': 'query', 'required': True, 'type': 'string'},
{'enum': ['movie', 'tv', 'person'], 'in': 'query', 'name': 'type', 'type': 'string'},
{'in': 'query', 'name': 'page', 'type': 'integer'},
{'in': 'query', 'name': 'limit', 'type': 'integer'}],
'security': ['ApiKeyAuth']},
'tmdb-tv': {'bodyParam': None,
Expand All @@ -14613,13 +14651,36 @@
'formParams': [],
'id': 'tmdb-tv-list',
'method': 'GET',
'paginatable': True,
'path': '/tmdb/tv/list',
'pathParams': [],
'produces': ['application/json'],
'queryParams': [{'enum': ['popular', 'top_rated', 'airing_today', 'on_the_air'],
'in': 'query',
'name': 'category',
'type': 'string'},
{'in': 'query', 'name': 'page', 'type': 'integer'},
{'enum': ['popularity.desc',
'popularity.asc',
'vote_average.desc',
'vote_average.asc',
'first_air_date.desc',
'first_air_date.asc',
'name.asc',
'name.desc'],
'in': 'query',
'name': 'sort_by',
'type': 'string'},
{'in': 'query', 'name': 'with_genres', 'type': 'string'},
{'in': 'query', 'name': 'original_language', 'type': 'string'},
{'in': 'query', 'name': 'date_from', 'type': 'string'},
{'in': 'query', 'name': 'date_to', 'type': 'string'},
{'in': 'query', 'name': 'min_rating', 'type': 'number'},
{'in': 'query', 'name': 'max_rating', 'type': 'number'},
{'in': 'query', 'name': 'min_votes', 'type': 'integer'},
{'in': 'query', 'name': 'min_runtime', 'type': 'integer'},
{'in': 'query', 'name': 'max_runtime', 'type': 'integer'},
{'in': 'query', 'name': 'include_adult', 'type': 'boolean'},
{'in': 'query', 'name': 'limit', 'type': 'integer'}],
'security': ['ApiKeyAuth']},
'tripadvisor-autocomplete': {'bodyParam': None,
Expand Down Expand Up @@ -16663,6 +16724,7 @@
'tmdb': {'movie': 'tmdb-movie',
'movie_list': 'tmdb-movie-list',
'person': 'tmdb-person',
'person_list': 'tmdb-person-list',
'search': 'tmdb-search',
'tv': 'tmdb-tv',
'tv_list': 'tmdb-tv-list'},
Expand Down Expand Up @@ -16758,7 +16820,7 @@
'video': 'youtube-video'},
'zillow': {'autocomplete': 'zillow-autocomplete', 'property': 'zillow-property', 'search': 'zillow-search'}}

OPERATION_COUNT = 881
OPERATION_COUNT = 882

class OperationId:
AIRBNB_HOST = 'airbnb-host'
Expand Down Expand Up @@ -17542,6 +17604,7 @@ class OperationId:
TMDB_MOVIE = 'tmdb-movie'
TMDB_MOVIE_LIST = 'tmdb-movie-list'
TMDB_PERSON = 'tmdb-person'
TMDB_PERSON_LIST = 'tmdb-person-list'
TMDB_SEARCH = 'tmdb-search'
TMDB_TV = 'tmdb-tv'
TMDB_TV_LIST = 'tmdb-tv-list'
Expand Down
9 changes: 5 additions & 4 deletions docs/operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Generated from `openapi/public.json`. Deprecated, admin, and internal operations are excluded from this SDK contract.

Total operations: `881`
Total operations: `882`

| Group | SDK method | Operation ID | HTTP | Params | Auth | Response | Notes |
| --- | --- | --- | --- | --- | --- | --- | --- |
Expand Down Expand Up @@ -789,11 +789,12 @@ Total operations: `881`
| tiktok | `tiktok.top_ads_spotlight` | `tiktok-top-ads-spotlight` | `GET /tiktok/top-ads/spotlight` | `page` (query int)<br>`limit` (query int) | `ApiKeyAuth` | `TiktokTopAdsSpotlightResponse` | |
| tiktok | `tiktok.top_ads_suggestions` | `tiktok-top-ads-suggestions` | `GET /tiktok/top-ads/suggestions` | `count` (query int)<br>`scenario` (query int) | `ApiKeyAuth` | `TiktokTopAdsSuggestionsResponse` | |
| tiktok | `tiktok.trending` | `tiktok-trending` | `GET /tiktok/trending` | none | `ApiKeyAuth` | `TiktokTrendingResponse` | |
| 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` | |
| 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` | |
| tmdb | `tmdb.movie` | `tmdb-movie` | `GET /tmdb/movie/{id}` | `id` (path str required) | `ApiKeyAuth` | `TmdbMovieResponse` | |
| tmdb | `tmdb.person_list` | `tmdb-person-list` | `GET /tmdb/person/list` | `page` (query int)<br>`limit` (query int) | `ApiKeyAuth` | `TmdbPersonListResponse` | |
| tmdb | `tmdb.person` | `tmdb-person` | `GET /tmdb/person/{id}` | `id` (path str required)<br>`limit` (query int) | `ApiKeyAuth` | `TmdbPersonResponse` | |
| 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` | |
| 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` | |
| 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` | |
| 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` | |
| tmdb | `tmdb.tv` | `tmdb-tv` | `GET /tmdb/tv/{id}` | `id` (path str required) | `ApiKeyAuth` | `TmdbTvResponse` | |
| 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` | |
| trip_advisor | `trip_advisor.tripadvisor_enums` | `tripadvisor-enums` | `GET /tripadvisor/enums` | none | `ApiKeyAuth` | `TripAdvisorTripadvisorEnumsResponse` | |
Expand Down
Loading
Loading