deezer-python-gql 0.11.0__tar.gz → 0.13.0__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.
- {deezer_python_gql-0.11.0/deezer_python_gql.egg-info → deezer_python_gql-0.13.0}/PKG-INFO +1 -1
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/base_client.py +27 -7
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/__init__.py +28 -8
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/client.py +79 -163
- deezer_python_gql-0.13.0/deezer_python_gql/generated/search.py +263 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0/deezer_python_gql.egg-info}/PKG-INFO +1 -1
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/pyproject.toml +1 -1
- deezer_python_gql-0.11.0/deezer_python_gql/generated/search.py +0 -183
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/LICENSE +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/MANIFEST.in +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/README.md +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/__init__.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/add_album_to_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/add_artist_to_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/add_audiobook_to_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/add_playlist_to_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/add_podcast_to_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/add_track_to_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/add_tracks_to_playlist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/base_client.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/base_model.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/bookmark_podcast_episode.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/create_playlist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/delete_playlist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/enums.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/fragments.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_album.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_artist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_artist_mix.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_audiobook.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_audiobook_chapter.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_charts.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_favorite_albums.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_favorite_artists.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_favorite_audiobooks.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_favorite_playlists.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_favorite_podcasts.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_favorite_tracks.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_flow.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_flow_batch.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_flow_config_tracks.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_flow_configs.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_livestream.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_made_for_me.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_me.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_music_together_affinity.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_music_together_group.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_music_together_groups.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_personal_tracks.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_playlist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_podcast.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_podcast_episode.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_podcast_episode_bookmarks.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_podcast_episodes_by_ids.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_recently_played.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_recommendations.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_similar_tracks.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_smart_tracklist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_track.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_track_mix.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_user_charts.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_user_playlists.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/input_types.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/mark_as_not_played_podcast_episode.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/mark_as_played_podcast_episode.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/music_together_create_group.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/music_together_generate_group_name.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/music_together_join_group.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/music_together_leave_group.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/music_together_refresh_suggested_tracklist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/music_together_update_group_settings.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/remove_album_from_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/remove_artist_from_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/remove_audiobook_from_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/remove_playlist_from_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/remove_podcast_from_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/remove_track_from_favorite.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/remove_tracks_from_playlist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/search_flows.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/unbookmark_podcast_episode.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/update_playlist.py +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/py.typed +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/SOURCES.txt +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/dependency_links.txt +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/not-zip-safe +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/requires.txt +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/top_level.txt +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/setup.cfg +0 -0
- {deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/tests/test_client.py +0 -0
|
@@ -47,16 +47,24 @@ class GraphQLClientGraphQLError(GraphQLClientError):
|
|
|
47
47
|
class GraphQLClientGraphQLMultiError(GraphQLClientError):
|
|
48
48
|
"""Raised when the GraphQL response contains errors."""
|
|
49
49
|
|
|
50
|
-
def __init__(
|
|
50
|
+
def __init__(
|
|
51
|
+
self,
|
|
52
|
+
errors: list[GraphQLClientGraphQLError],
|
|
53
|
+
data: Any = None,
|
|
54
|
+
operation_name: str | None = None,
|
|
55
|
+
) -> None:
|
|
51
56
|
self.errors = errors
|
|
52
57
|
self.data = data
|
|
53
|
-
|
|
58
|
+
self.operation_name = operation_name
|
|
59
|
+
msg = f"{operation_name}: {errors}" if operation_name else str(errors)
|
|
60
|
+
super().__init__(msg)
|
|
54
61
|
|
|
55
62
|
@classmethod
|
|
56
63
|
def from_errors_dicts(
|
|
57
64
|
cls,
|
|
58
65
|
errors_dicts: list[dict[str, Any]],
|
|
59
66
|
data: Any = None,
|
|
67
|
+
operation_name: str | None = None,
|
|
60
68
|
) -> GraphQLClientGraphQLMultiError:
|
|
61
69
|
"""Create from raw error dicts in a GraphQL response."""
|
|
62
70
|
errors = [
|
|
@@ -67,7 +75,7 @@ class GraphQLClientGraphQLMultiError(GraphQLClientError):
|
|
|
67
75
|
)
|
|
68
76
|
for e in errors_dicts
|
|
69
77
|
]
|
|
70
|
-
return cls(errors=errors, data=data)
|
|
78
|
+
return cls(errors=errors, data=data, operation_name=operation_name)
|
|
71
79
|
|
|
72
80
|
|
|
73
81
|
class DeezerBaseClient:
|
|
@@ -101,6 +109,8 @@ class DeezerBaseClient:
|
|
|
101
109
|
self._owns_http_client = http_client is None
|
|
102
110
|
self._jwt: str | None = None
|
|
103
111
|
self._jwt_expires_at: float = 0
|
|
112
|
+
self._last_operation_name: str | None = None
|
|
113
|
+
self._last_variables: dict[str, Any] | None = None
|
|
104
114
|
|
|
105
115
|
def _get_http_client(self) -> httpx.AsyncClient:
|
|
106
116
|
"""Return the HTTP client, creating an internal one if needed."""
|
|
@@ -144,6 +154,8 @@ class DeezerBaseClient:
|
|
|
144
154
|
:param kwargs: Additional keyword arguments passed to httpx.
|
|
145
155
|
"""
|
|
146
156
|
logger.debug("GQL execute: %s (variables=%s)", operation_name or "<unnamed>", variables)
|
|
157
|
+
self._last_operation_name = operation_name
|
|
158
|
+
self._last_variables = variables
|
|
147
159
|
jwt = await self._ensure_jwt()
|
|
148
160
|
|
|
149
161
|
headers: dict[str, str] = kwargs.pop("headers", None) or {}
|
|
@@ -202,17 +214,24 @@ class DeezerBaseClient:
|
|
|
202
214
|
errors = response_json.get("errors")
|
|
203
215
|
|
|
204
216
|
if errors:
|
|
217
|
+
op = self._last_operation_name or "<unknown>"
|
|
218
|
+
variables = self._last_variables
|
|
205
219
|
if data:
|
|
206
220
|
# Partial success — some items failed (e.g. deleted albums in favorites).
|
|
207
221
|
# Log the errors but return the valid data.
|
|
222
|
+
error_details = [
|
|
223
|
+
f"{e.get('message', 'Unknown error')} (path={e.get('path')})" for e in errors
|
|
224
|
+
]
|
|
208
225
|
logger.warning(
|
|
209
|
-
"GraphQL response contained %d error(s): %s",
|
|
226
|
+
"GraphQL response for %s (variables=%s) contained %d error(s): %s",
|
|
227
|
+
op,
|
|
228
|
+
variables,
|
|
210
229
|
len(errors),
|
|
211
|
-
|
|
230
|
+
error_details,
|
|
212
231
|
)
|
|
213
232
|
else:
|
|
214
233
|
raise GraphQLClientGraphQLMultiError.from_errors_dicts(
|
|
215
|
-
errors_dicts=errors, data=data
|
|
234
|
+
errors_dicts=errors, data=data, operation_name=op
|
|
216
235
|
)
|
|
217
236
|
|
|
218
237
|
# The Deezer API omits __typename for single-member union types
|
|
@@ -304,7 +323,8 @@ class DeezerBaseClient:
|
|
|
304
323
|
]
|
|
305
324
|
query = "{ " + " ".join(parts) + " }"
|
|
306
325
|
|
|
307
|
-
resp = await self.execute(query)
|
|
326
|
+
resp = await self.execute(query, operation_name="CheckAudiobookIds")
|
|
327
|
+
self._last_variables = {"album_ids": album_ids}
|
|
308
328
|
data = self.get_data(resp)
|
|
309
329
|
|
|
310
330
|
audiobook_ids: set[str] = set()
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/__init__.py
RENAMED
|
@@ -564,30 +564,40 @@ from .search import (
|
|
|
564
564
|
SearchSearchResultsAlbums,
|
|
565
565
|
SearchSearchResultsAlbumsEdges,
|
|
566
566
|
SearchSearchResultsAlbumsEdgesNode,
|
|
567
|
+
SearchSearchResultsAlbumsEdgesNodeContributors,
|
|
568
|
+
SearchSearchResultsAlbumsEdgesNodeContributorsEdges,
|
|
569
|
+
SearchSearchResultsAlbumsEdgesNodeContributorsEdgesNodeArtist,
|
|
570
|
+
SearchSearchResultsAlbumsEdgesNodeCover,
|
|
567
571
|
SearchSearchResultsAlbumsPageInfo,
|
|
568
572
|
SearchSearchResultsArtists,
|
|
569
573
|
SearchSearchResultsArtistsEdges,
|
|
570
574
|
SearchSearchResultsArtistsEdgesNode,
|
|
575
|
+
SearchSearchResultsArtistsEdgesNodePicture,
|
|
571
576
|
SearchSearchResultsArtistsPageInfo,
|
|
572
577
|
SearchSearchResultsLivestreams,
|
|
573
578
|
SearchSearchResultsLivestreamsEdges,
|
|
574
579
|
SearchSearchResultsLivestreamsEdgesNode,
|
|
580
|
+
SearchSearchResultsLivestreamsEdgesNodeCover,
|
|
575
581
|
SearchSearchResultsLivestreamsPageInfo,
|
|
576
582
|
SearchSearchResultsPlaylists,
|
|
577
583
|
SearchSearchResultsPlaylistsEdges,
|
|
578
584
|
SearchSearchResultsPlaylistsEdgesNode,
|
|
585
|
+
SearchSearchResultsPlaylistsEdgesNodeOwner,
|
|
586
|
+
SearchSearchResultsPlaylistsEdgesNodePicture,
|
|
579
587
|
SearchSearchResultsPlaylistsPageInfo,
|
|
580
|
-
SearchSearchResultsPodcastEpisodes,
|
|
581
|
-
SearchSearchResultsPodcastEpisodesEdges,
|
|
582
|
-
SearchSearchResultsPodcastEpisodesEdgesNode,
|
|
583
|
-
SearchSearchResultsPodcastEpisodesPageInfo,
|
|
584
588
|
SearchSearchResultsPodcasts,
|
|
585
589
|
SearchSearchResultsPodcastsEdges,
|
|
586
590
|
SearchSearchResultsPodcastsEdgesNode,
|
|
591
|
+
SearchSearchResultsPodcastsEdgesNodeCover,
|
|
587
592
|
SearchSearchResultsPodcastsPageInfo,
|
|
588
593
|
SearchSearchResultsTracks,
|
|
589
594
|
SearchSearchResultsTracksEdges,
|
|
590
595
|
SearchSearchResultsTracksEdgesNode,
|
|
596
|
+
SearchSearchResultsTracksEdgesNodeAlbum,
|
|
597
|
+
SearchSearchResultsTracksEdgesNodeAlbumCover,
|
|
598
|
+
SearchSearchResultsTracksEdgesNodeContributors,
|
|
599
|
+
SearchSearchResultsTracksEdgesNodeContributorsEdges,
|
|
600
|
+
SearchSearchResultsTracksEdgesNodeContributorsEdgesNodeArtist,
|
|
591
601
|
SearchSearchResultsTracksPageInfo,
|
|
592
602
|
)
|
|
593
603
|
from .search_flows import (
|
|
@@ -1060,30 +1070,40 @@ __all__ = [
|
|
|
1060
1070
|
"SearchSearchResultsAlbums",
|
|
1061
1071
|
"SearchSearchResultsAlbumsEdges",
|
|
1062
1072
|
"SearchSearchResultsAlbumsEdgesNode",
|
|
1073
|
+
"SearchSearchResultsAlbumsEdgesNodeContributors",
|
|
1074
|
+
"SearchSearchResultsAlbumsEdgesNodeContributorsEdges",
|
|
1075
|
+
"SearchSearchResultsAlbumsEdgesNodeContributorsEdgesNodeArtist",
|
|
1076
|
+
"SearchSearchResultsAlbumsEdgesNodeCover",
|
|
1063
1077
|
"SearchSearchResultsAlbumsPageInfo",
|
|
1064
1078
|
"SearchSearchResultsArtists",
|
|
1065
1079
|
"SearchSearchResultsArtistsEdges",
|
|
1066
1080
|
"SearchSearchResultsArtistsEdgesNode",
|
|
1081
|
+
"SearchSearchResultsArtistsEdgesNodePicture",
|
|
1067
1082
|
"SearchSearchResultsArtistsPageInfo",
|
|
1068
1083
|
"SearchSearchResultsLivestreams",
|
|
1069
1084
|
"SearchSearchResultsLivestreamsEdges",
|
|
1070
1085
|
"SearchSearchResultsLivestreamsEdgesNode",
|
|
1086
|
+
"SearchSearchResultsLivestreamsEdgesNodeCover",
|
|
1071
1087
|
"SearchSearchResultsLivestreamsPageInfo",
|
|
1072
1088
|
"SearchSearchResultsPlaylists",
|
|
1073
1089
|
"SearchSearchResultsPlaylistsEdges",
|
|
1074
1090
|
"SearchSearchResultsPlaylistsEdgesNode",
|
|
1091
|
+
"SearchSearchResultsPlaylistsEdgesNodeOwner",
|
|
1092
|
+
"SearchSearchResultsPlaylistsEdgesNodePicture",
|
|
1075
1093
|
"SearchSearchResultsPlaylistsPageInfo",
|
|
1076
|
-
"SearchSearchResultsPodcastEpisodes",
|
|
1077
|
-
"SearchSearchResultsPodcastEpisodesEdges",
|
|
1078
|
-
"SearchSearchResultsPodcastEpisodesEdgesNode",
|
|
1079
|
-
"SearchSearchResultsPodcastEpisodesPageInfo",
|
|
1080
1094
|
"SearchSearchResultsPodcasts",
|
|
1081
1095
|
"SearchSearchResultsPodcastsEdges",
|
|
1082
1096
|
"SearchSearchResultsPodcastsEdgesNode",
|
|
1097
|
+
"SearchSearchResultsPodcastsEdgesNodeCover",
|
|
1083
1098
|
"SearchSearchResultsPodcastsPageInfo",
|
|
1084
1099
|
"SearchSearchResultsTracks",
|
|
1085
1100
|
"SearchSearchResultsTracksEdges",
|
|
1086
1101
|
"SearchSearchResultsTracksEdgesNode",
|
|
1102
|
+
"SearchSearchResultsTracksEdgesNodeAlbum",
|
|
1103
|
+
"SearchSearchResultsTracksEdgesNodeAlbumCover",
|
|
1104
|
+
"SearchSearchResultsTracksEdgesNodeContributors",
|
|
1105
|
+
"SearchSearchResultsTracksEdgesNodeContributorsEdges",
|
|
1106
|
+
"SearchSearchResultsTracksEdgesNodeContributorsEdgesNodeArtist",
|
|
1087
1107
|
"SearchSearchResultsTracksPageInfo",
|
|
1088
1108
|
"TrackContributorRoles",
|
|
1089
1109
|
"TrackFields",
|
|
@@ -3821,18 +3821,41 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3821
3821
|
playlists_first: Union[Optional[int], UnsetType] = UNSET,
|
|
3822
3822
|
livestreams_first: Union[Optional[int], UnsetType] = UNSET,
|
|
3823
3823
|
podcasts_first: Union[Optional[int], UnsetType] = UNSET,
|
|
3824
|
-
podcast_episodes_first: Union[Optional[int], UnsetType] = UNSET,
|
|
3825
3824
|
**kwargs: Any,
|
|
3826
3825
|
) -> Optional[SearchSearch]:
|
|
3827
3826
|
_query = gql("""
|
|
3828
|
-
query Search($query: String!, $tracksFirst: Int = 20, $albumsFirst: Int = 20, $artistsFirst: Int = 20, $playlistsFirst: Int = 10, $livestreamsFirst: Int = 0, $podcastsFirst: Int = 0
|
|
3827
|
+
query Search($query: String!, $tracksFirst: Int = 20, $albumsFirst: Int = 20, $artistsFirst: Int = 20, $playlistsFirst: Int = 10, $livestreamsFirst: Int = 0, $podcastsFirst: Int = 0) {
|
|
3829
3828
|
search(query: $query) {
|
|
3830
3829
|
results {
|
|
3831
3830
|
tracks(first: $tracksFirst) {
|
|
3832
3831
|
edges {
|
|
3833
3832
|
cursor
|
|
3834
3833
|
node {
|
|
3835
|
-
|
|
3834
|
+
id
|
|
3835
|
+
title
|
|
3836
|
+
duration
|
|
3837
|
+
isExplicit
|
|
3838
|
+
isFavorite
|
|
3839
|
+
album {
|
|
3840
|
+
id
|
|
3841
|
+
displayTitle
|
|
3842
|
+
cover {
|
|
3843
|
+
id
|
|
3844
|
+
urls(pictureRequest: {width: 264, height: 264})
|
|
3845
|
+
}
|
|
3846
|
+
}
|
|
3847
|
+
contributors(first: 3, roles: [MAIN, FEATURED]) {
|
|
3848
|
+
edges {
|
|
3849
|
+
roles
|
|
3850
|
+
node {
|
|
3851
|
+
__typename
|
|
3852
|
+
... on Artist {
|
|
3853
|
+
id
|
|
3854
|
+
name
|
|
3855
|
+
}
|
|
3856
|
+
}
|
|
3857
|
+
}
|
|
3858
|
+
}
|
|
3836
3859
|
}
|
|
3837
3860
|
}
|
|
3838
3861
|
pageInfo {
|
|
@@ -3843,7 +3866,27 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3843
3866
|
edges {
|
|
3844
3867
|
cursor
|
|
3845
3868
|
node {
|
|
3846
|
-
|
|
3869
|
+
id
|
|
3870
|
+
displayTitle
|
|
3871
|
+
type
|
|
3872
|
+
cover {
|
|
3873
|
+
id
|
|
3874
|
+
urls(pictureRequest: {width: 264, height: 264})
|
|
3875
|
+
}
|
|
3876
|
+
contributors(first: 3, roles: [MAIN]) {
|
|
3877
|
+
edges {
|
|
3878
|
+
node {
|
|
3879
|
+
__typename
|
|
3880
|
+
... on Artist {
|
|
3881
|
+
id
|
|
3882
|
+
name
|
|
3883
|
+
}
|
|
3884
|
+
}
|
|
3885
|
+
}
|
|
3886
|
+
}
|
|
3887
|
+
releaseDate
|
|
3888
|
+
isExplicit
|
|
3889
|
+
isFavorite
|
|
3847
3890
|
}
|
|
3848
3891
|
}
|
|
3849
3892
|
pageInfo {
|
|
@@ -3854,7 +3897,13 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3854
3897
|
edges {
|
|
3855
3898
|
cursor
|
|
3856
3899
|
node {
|
|
3857
|
-
|
|
3900
|
+
id
|
|
3901
|
+
name
|
|
3902
|
+
isFavorite
|
|
3903
|
+
picture {
|
|
3904
|
+
id
|
|
3905
|
+
urls(pictureRequest: {width: 264, height: 264})
|
|
3906
|
+
}
|
|
3858
3907
|
}
|
|
3859
3908
|
}
|
|
3860
3909
|
pageInfo {
|
|
@@ -3865,7 +3914,18 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3865
3914
|
edges {
|
|
3866
3915
|
cursor
|
|
3867
3916
|
node {
|
|
3868
|
-
|
|
3917
|
+
id
|
|
3918
|
+
title
|
|
3919
|
+
picture {
|
|
3920
|
+
id
|
|
3921
|
+
urls(pictureRequest: {width: 264, height: 264})
|
|
3922
|
+
}
|
|
3923
|
+
estimatedTracksCount
|
|
3924
|
+
isFavorite
|
|
3925
|
+
owner {
|
|
3926
|
+
id
|
|
3927
|
+
name
|
|
3928
|
+
}
|
|
3869
3929
|
}
|
|
3870
3930
|
}
|
|
3871
3931
|
pageInfo {
|
|
@@ -3876,7 +3936,12 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3876
3936
|
edges {
|
|
3877
3937
|
cursor
|
|
3878
3938
|
node {
|
|
3879
|
-
|
|
3939
|
+
id
|
|
3940
|
+
name
|
|
3941
|
+
cover {
|
|
3942
|
+
id
|
|
3943
|
+
urls(pictureRequest: {width: 264, height: 264})
|
|
3944
|
+
}
|
|
3880
3945
|
}
|
|
3881
3946
|
}
|
|
3882
3947
|
pageInfo {
|
|
@@ -3887,18 +3952,13 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3887
3952
|
edges {
|
|
3888
3953
|
cursor
|
|
3889
3954
|
node {
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
podcastEpisodes(first: $podcastEpisodesFirst) {
|
|
3898
|
-
edges {
|
|
3899
|
-
cursor
|
|
3900
|
-
node {
|
|
3901
|
-
...PodcastEpisodeFields
|
|
3955
|
+
id
|
|
3956
|
+
displayTitle
|
|
3957
|
+
cover {
|
|
3958
|
+
id
|
|
3959
|
+
urls(pictureRequest: {width: 264, height: 264})
|
|
3960
|
+
}
|
|
3961
|
+
isFavorite
|
|
3902
3962
|
}
|
|
3903
3963
|
}
|
|
3904
3964
|
pageInfo {
|
|
@@ -3909,153 +3969,10 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
3909
3969
|
}
|
|
3910
3970
|
}
|
|
3911
3971
|
|
|
3912
|
-
fragment AlbumFields on Album {
|
|
3913
|
-
id
|
|
3914
|
-
displayTitle
|
|
3915
|
-
type
|
|
3916
|
-
cover {
|
|
3917
|
-
id
|
|
3918
|
-
urls(pictureRequest: {width: 264, height: 264})
|
|
3919
|
-
}
|
|
3920
|
-
contributors(first: 5, roles: [MAIN]) {
|
|
3921
|
-
edges {
|
|
3922
|
-
node {
|
|
3923
|
-
... on Artist {
|
|
3924
|
-
id
|
|
3925
|
-
name
|
|
3926
|
-
}
|
|
3927
|
-
}
|
|
3928
|
-
}
|
|
3929
|
-
}
|
|
3930
|
-
releaseDate
|
|
3931
|
-
isExplicit
|
|
3932
|
-
isFavorite
|
|
3933
|
-
fansCount
|
|
3934
|
-
label
|
|
3935
|
-
copyright
|
|
3936
|
-
}
|
|
3937
|
-
|
|
3938
|
-
fragment ArtistFields on Artist {
|
|
3939
|
-
id
|
|
3940
|
-
name
|
|
3941
|
-
picture {
|
|
3942
|
-
id
|
|
3943
|
-
urls(pictureRequest: {width: 264, height: 264})
|
|
3944
|
-
}
|
|
3945
|
-
fansCount
|
|
3946
|
-
isFavorite
|
|
3947
|
-
bio {
|
|
3948
|
-
summary
|
|
3949
|
-
full
|
|
3950
|
-
}
|
|
3951
|
-
}
|
|
3952
|
-
|
|
3953
|
-
fragment LivestreamFields on Livestream {
|
|
3954
|
-
id
|
|
3955
|
-
name
|
|
3956
|
-
language
|
|
3957
|
-
description
|
|
3958
|
-
isOnStream
|
|
3959
|
-
country
|
|
3960
|
-
cover {
|
|
3961
|
-
id
|
|
3962
|
-
urls(pictureRequest: {width: 264, height: 264})
|
|
3963
|
-
}
|
|
3964
|
-
media {
|
|
3965
|
-
url
|
|
3966
|
-
codec {
|
|
3967
|
-
type
|
|
3968
|
-
bitrate
|
|
3969
|
-
}
|
|
3970
|
-
}
|
|
3971
|
-
}
|
|
3972
|
-
|
|
3973
3972
|
fragment PageInfoFields on PageInfo {
|
|
3974
3973
|
hasNextPage
|
|
3975
3974
|
endCursor
|
|
3976
3975
|
}
|
|
3977
|
-
|
|
3978
|
-
fragment PlaylistFields on Playlist {
|
|
3979
|
-
id
|
|
3980
|
-
title
|
|
3981
|
-
picture {
|
|
3982
|
-
id
|
|
3983
|
-
urls(pictureRequest: {width: 264, height: 264})
|
|
3984
|
-
}
|
|
3985
|
-
estimatedTracksCount
|
|
3986
|
-
fansCount
|
|
3987
|
-
isFavorite
|
|
3988
|
-
description
|
|
3989
|
-
owner {
|
|
3990
|
-
id
|
|
3991
|
-
name
|
|
3992
|
-
}
|
|
3993
|
-
}
|
|
3994
|
-
|
|
3995
|
-
fragment PodcastEpisodeFields on PodcastEpisode {
|
|
3996
|
-
id
|
|
3997
|
-
title
|
|
3998
|
-
description
|
|
3999
|
-
duration
|
|
4000
|
-
cover {
|
|
4001
|
-
id
|
|
4002
|
-
urls(pictureRequest: {width: 264, height: 264})
|
|
4003
|
-
}
|
|
4004
|
-
publicationDate
|
|
4005
|
-
media {
|
|
4006
|
-
url
|
|
4007
|
-
codec {
|
|
4008
|
-
type
|
|
4009
|
-
bitrate
|
|
4010
|
-
}
|
|
4011
|
-
}
|
|
4012
|
-
}
|
|
4013
|
-
|
|
4014
|
-
fragment PodcastFields on Podcast {
|
|
4015
|
-
id
|
|
4016
|
-
displayTitle
|
|
4017
|
-
cover {
|
|
4018
|
-
id
|
|
4019
|
-
urls(pictureRequest: {width: 264, height: 264})
|
|
4020
|
-
}
|
|
4021
|
-
description
|
|
4022
|
-
isExplicit
|
|
4023
|
-
isFavorite
|
|
4024
|
-
type
|
|
4025
|
-
}
|
|
4026
|
-
|
|
4027
|
-
fragment TrackFields on Track {
|
|
4028
|
-
id
|
|
4029
|
-
title
|
|
4030
|
-
ISRC
|
|
4031
|
-
diskInfo {
|
|
4032
|
-
diskNumber
|
|
4033
|
-
trackNumber
|
|
4034
|
-
}
|
|
4035
|
-
duration
|
|
4036
|
-
isExplicit
|
|
4037
|
-
isFavorite
|
|
4038
|
-
popularity
|
|
4039
|
-
album {
|
|
4040
|
-
id
|
|
4041
|
-
displayTitle
|
|
4042
|
-
cover {
|
|
4043
|
-
id
|
|
4044
|
-
urls(pictureRequest: {width: 264, height: 264})
|
|
4045
|
-
}
|
|
4046
|
-
}
|
|
4047
|
-
contributors(first: 10, roles: [MAIN, FEATURED]) {
|
|
4048
|
-
edges {
|
|
4049
|
-
roles
|
|
4050
|
-
node {
|
|
4051
|
-
... on Artist {
|
|
4052
|
-
id
|
|
4053
|
-
name
|
|
4054
|
-
}
|
|
4055
|
-
}
|
|
4056
|
-
}
|
|
4057
|
-
}
|
|
4058
|
-
}
|
|
4059
3976
|
""")
|
|
4060
3977
|
variables: dict[str, object] = {
|
|
4061
3978
|
"query": query,
|
|
@@ -4065,7 +3982,6 @@ class DeezerGQLClient(DeezerBaseClient):
|
|
|
4065
3982
|
"playlistsFirst": playlists_first,
|
|
4066
3983
|
"livestreamsFirst": livestreams_first,
|
|
4067
3984
|
"podcastsFirst": podcasts_first,
|
|
4068
|
-
"podcastEpisodesFirst": podcast_episodes_first,
|
|
4069
3985
|
}
|
|
4070
3986
|
response = await self.execute(
|
|
4071
3987
|
query=_query, operation_name="Search", variables=variables, **kwargs
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# Generated by ariadne-codegen
|
|
2
|
+
# Source: queries
|
|
3
|
+
|
|
4
|
+
from typing import Any, Literal, Optional, Union
|
|
5
|
+
|
|
6
|
+
from pydantic import Field
|
|
7
|
+
|
|
8
|
+
from .base_model import BaseModel
|
|
9
|
+
from .enums import AlbumType, TrackContributorRoles
|
|
10
|
+
from .fragments import PageInfoFields
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Search(BaseModel):
|
|
14
|
+
search: Optional["SearchSearch"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class SearchSearch(BaseModel):
|
|
18
|
+
results: "SearchSearchResults"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class SearchSearchResults(BaseModel):
|
|
22
|
+
tracks: "SearchSearchResultsTracks"
|
|
23
|
+
albums: "SearchSearchResultsAlbums"
|
|
24
|
+
artists: "SearchSearchResultsArtists"
|
|
25
|
+
playlists: "SearchSearchResultsPlaylists"
|
|
26
|
+
livestreams: "SearchSearchResultsLivestreams"
|
|
27
|
+
podcasts: "SearchSearchResultsPodcasts"
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class SearchSearchResultsTracks(BaseModel):
|
|
31
|
+
edges: list["SearchSearchResultsTracksEdges"]
|
|
32
|
+
page_info: "SearchSearchResultsTracksPageInfo" = Field(alias="pageInfo")
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class SearchSearchResultsTracksEdges(BaseModel):
|
|
36
|
+
cursor: str
|
|
37
|
+
node: Optional["SearchSearchResultsTracksEdgesNode"]
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class SearchSearchResultsTracksEdgesNode(BaseModel):
|
|
41
|
+
id: str
|
|
42
|
+
title: str
|
|
43
|
+
duration: int
|
|
44
|
+
is_explicit: bool = Field(alias="isExplicit")
|
|
45
|
+
is_favorite: Optional[bool] = Field(alias="isFavorite")
|
|
46
|
+
album: Optional["SearchSearchResultsTracksEdgesNodeAlbum"]
|
|
47
|
+
contributors: "SearchSearchResultsTracksEdgesNodeContributors"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class SearchSearchResultsTracksEdgesNodeAlbum(BaseModel):
|
|
51
|
+
id: str
|
|
52
|
+
display_title: str = Field(alias="displayTitle")
|
|
53
|
+
cover: Optional["SearchSearchResultsTracksEdgesNodeAlbumCover"]
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class SearchSearchResultsTracksEdgesNodeAlbumCover(BaseModel):
|
|
57
|
+
id: str
|
|
58
|
+
urls: list[str]
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class SearchSearchResultsTracksEdgesNodeContributors(BaseModel):
|
|
62
|
+
edges: list["SearchSearchResultsTracksEdgesNodeContributorsEdges"]
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class SearchSearchResultsTracksEdgesNodeContributorsEdges(BaseModel):
|
|
66
|
+
roles: list[TrackContributorRoles]
|
|
67
|
+
node: Union["SearchSearchResultsTracksEdgesNodeContributorsEdgesNodeArtist",] = (
|
|
68
|
+
Field(discriminator="typename__")
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class SearchSearchResultsTracksEdgesNodeContributorsEdgesNodeArtist(BaseModel):
|
|
73
|
+
typename__: Literal["Artist"] = Field(alias="__typename")
|
|
74
|
+
id: str
|
|
75
|
+
name: str
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class SearchSearchResultsTracksPageInfo(PageInfoFields):
|
|
79
|
+
pass
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class SearchSearchResultsAlbums(BaseModel):
|
|
83
|
+
edges: list["SearchSearchResultsAlbumsEdges"]
|
|
84
|
+
page_info: "SearchSearchResultsAlbumsPageInfo" = Field(alias="pageInfo")
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class SearchSearchResultsAlbumsEdges(BaseModel):
|
|
88
|
+
cursor: str
|
|
89
|
+
node: Optional["SearchSearchResultsAlbumsEdgesNode"]
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class SearchSearchResultsAlbumsEdgesNode(BaseModel):
|
|
93
|
+
id: str
|
|
94
|
+
display_title: str = Field(alias="displayTitle")
|
|
95
|
+
type_: AlbumType = Field(alias="type")
|
|
96
|
+
cover: Optional["SearchSearchResultsAlbumsEdgesNodeCover"]
|
|
97
|
+
contributors: "SearchSearchResultsAlbumsEdgesNodeContributors"
|
|
98
|
+
release_date: Optional[Any] = Field(alias="releaseDate")
|
|
99
|
+
is_explicit: Optional[bool] = Field(alias="isExplicit")
|
|
100
|
+
is_favorite: Optional[bool] = Field(alias="isFavorite")
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class SearchSearchResultsAlbumsEdgesNodeCover(BaseModel):
|
|
104
|
+
id: str
|
|
105
|
+
urls: list[str]
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class SearchSearchResultsAlbumsEdgesNodeContributors(BaseModel):
|
|
109
|
+
edges: list["SearchSearchResultsAlbumsEdgesNodeContributorsEdges"]
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class SearchSearchResultsAlbumsEdgesNodeContributorsEdges(BaseModel):
|
|
113
|
+
node: Union["SearchSearchResultsAlbumsEdgesNodeContributorsEdgesNodeArtist",] = (
|
|
114
|
+
Field(discriminator="typename__")
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
class SearchSearchResultsAlbumsEdgesNodeContributorsEdgesNodeArtist(BaseModel):
|
|
119
|
+
typename__: Literal["Artist"] = Field(alias="__typename")
|
|
120
|
+
id: str
|
|
121
|
+
name: str
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class SearchSearchResultsAlbumsPageInfo(PageInfoFields):
|
|
125
|
+
pass
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class SearchSearchResultsArtists(BaseModel):
|
|
129
|
+
edges: list["SearchSearchResultsArtistsEdges"]
|
|
130
|
+
page_info: "SearchSearchResultsArtistsPageInfo" = Field(alias="pageInfo")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
class SearchSearchResultsArtistsEdges(BaseModel):
|
|
134
|
+
cursor: str
|
|
135
|
+
node: Optional["SearchSearchResultsArtistsEdgesNode"]
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class SearchSearchResultsArtistsEdgesNode(BaseModel):
|
|
139
|
+
id: str
|
|
140
|
+
name: str
|
|
141
|
+
is_favorite: Optional[bool] = Field(alias="isFavorite")
|
|
142
|
+
picture: Optional["SearchSearchResultsArtistsEdgesNodePicture"]
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
class SearchSearchResultsArtistsEdgesNodePicture(BaseModel):
|
|
146
|
+
id: str
|
|
147
|
+
urls: list[str]
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
class SearchSearchResultsArtistsPageInfo(PageInfoFields):
|
|
151
|
+
pass
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class SearchSearchResultsPlaylists(BaseModel):
|
|
155
|
+
edges: list["SearchSearchResultsPlaylistsEdges"]
|
|
156
|
+
page_info: "SearchSearchResultsPlaylistsPageInfo" = Field(alias="pageInfo")
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class SearchSearchResultsPlaylistsEdges(BaseModel):
|
|
160
|
+
cursor: str
|
|
161
|
+
node: Optional["SearchSearchResultsPlaylistsEdgesNode"]
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class SearchSearchResultsPlaylistsEdgesNode(BaseModel):
|
|
165
|
+
id: str
|
|
166
|
+
title: str
|
|
167
|
+
picture: Optional["SearchSearchResultsPlaylistsEdgesNodePicture"]
|
|
168
|
+
estimated_tracks_count: int = Field(alias="estimatedTracksCount")
|
|
169
|
+
is_favorite: Optional[bool] = Field(alias="isFavorite")
|
|
170
|
+
owner: Optional["SearchSearchResultsPlaylistsEdgesNodeOwner"]
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class SearchSearchResultsPlaylistsEdgesNodePicture(BaseModel):
|
|
174
|
+
id: str
|
|
175
|
+
urls: list[str]
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
class SearchSearchResultsPlaylistsEdgesNodeOwner(BaseModel):
|
|
179
|
+
id: str
|
|
180
|
+
name: str
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
class SearchSearchResultsPlaylistsPageInfo(PageInfoFields):
|
|
184
|
+
pass
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class SearchSearchResultsLivestreams(BaseModel):
|
|
188
|
+
edges: list["SearchSearchResultsLivestreamsEdges"]
|
|
189
|
+
page_info: "SearchSearchResultsLivestreamsPageInfo" = Field(alias="pageInfo")
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
class SearchSearchResultsLivestreamsEdges(BaseModel):
|
|
193
|
+
cursor: str
|
|
194
|
+
node: Optional["SearchSearchResultsLivestreamsEdgesNode"]
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
class SearchSearchResultsLivestreamsEdgesNode(BaseModel):
|
|
198
|
+
id: str
|
|
199
|
+
name: str
|
|
200
|
+
cover: Optional["SearchSearchResultsLivestreamsEdgesNodeCover"]
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class SearchSearchResultsLivestreamsEdgesNodeCover(BaseModel):
|
|
204
|
+
id: str
|
|
205
|
+
urls: list[str]
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
class SearchSearchResultsLivestreamsPageInfo(PageInfoFields):
|
|
209
|
+
pass
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
class SearchSearchResultsPodcasts(BaseModel):
|
|
213
|
+
edges: list["SearchSearchResultsPodcastsEdges"]
|
|
214
|
+
page_info: "SearchSearchResultsPodcastsPageInfo" = Field(alias="pageInfo")
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
class SearchSearchResultsPodcastsEdges(BaseModel):
|
|
218
|
+
cursor: str
|
|
219
|
+
node: Optional["SearchSearchResultsPodcastsEdgesNode"]
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
class SearchSearchResultsPodcastsEdgesNode(BaseModel):
|
|
223
|
+
id: str
|
|
224
|
+
display_title: str = Field(alias="displayTitle")
|
|
225
|
+
cover: Optional["SearchSearchResultsPodcastsEdgesNodeCover"]
|
|
226
|
+
is_favorite: bool = Field(alias="isFavorite")
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
class SearchSearchResultsPodcastsEdgesNodeCover(BaseModel):
|
|
230
|
+
id: str
|
|
231
|
+
urls: list[str]
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class SearchSearchResultsPodcastsPageInfo(PageInfoFields):
|
|
235
|
+
pass
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
Search.model_rebuild()
|
|
239
|
+
SearchSearch.model_rebuild()
|
|
240
|
+
SearchSearchResults.model_rebuild()
|
|
241
|
+
SearchSearchResultsTracks.model_rebuild()
|
|
242
|
+
SearchSearchResultsTracksEdges.model_rebuild()
|
|
243
|
+
SearchSearchResultsTracksEdgesNode.model_rebuild()
|
|
244
|
+
SearchSearchResultsTracksEdgesNodeAlbum.model_rebuild()
|
|
245
|
+
SearchSearchResultsTracksEdgesNodeContributors.model_rebuild()
|
|
246
|
+
SearchSearchResultsTracksEdgesNodeContributorsEdges.model_rebuild()
|
|
247
|
+
SearchSearchResultsAlbums.model_rebuild()
|
|
248
|
+
SearchSearchResultsAlbumsEdges.model_rebuild()
|
|
249
|
+
SearchSearchResultsAlbumsEdgesNode.model_rebuild()
|
|
250
|
+
SearchSearchResultsAlbumsEdgesNodeContributors.model_rebuild()
|
|
251
|
+
SearchSearchResultsAlbumsEdgesNodeContributorsEdges.model_rebuild()
|
|
252
|
+
SearchSearchResultsArtists.model_rebuild()
|
|
253
|
+
SearchSearchResultsArtistsEdges.model_rebuild()
|
|
254
|
+
SearchSearchResultsArtistsEdgesNode.model_rebuild()
|
|
255
|
+
SearchSearchResultsPlaylists.model_rebuild()
|
|
256
|
+
SearchSearchResultsPlaylistsEdges.model_rebuild()
|
|
257
|
+
SearchSearchResultsPlaylistsEdgesNode.model_rebuild()
|
|
258
|
+
SearchSearchResultsLivestreams.model_rebuild()
|
|
259
|
+
SearchSearchResultsLivestreamsEdges.model_rebuild()
|
|
260
|
+
SearchSearchResultsLivestreamsEdgesNode.model_rebuild()
|
|
261
|
+
SearchSearchResultsPodcasts.model_rebuild()
|
|
262
|
+
SearchSearchResultsPodcastsEdges.model_rebuild()
|
|
263
|
+
SearchSearchResultsPodcastsEdgesNode.model_rebuild()
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
# Generated by ariadne-codegen
|
|
2
|
-
# Source: queries
|
|
3
|
-
|
|
4
|
-
from typing import Optional
|
|
5
|
-
|
|
6
|
-
from pydantic import Field
|
|
7
|
-
|
|
8
|
-
from .base_model import BaseModel
|
|
9
|
-
from .fragments import (
|
|
10
|
-
AlbumFields,
|
|
11
|
-
ArtistFields,
|
|
12
|
-
LivestreamFields,
|
|
13
|
-
PageInfoFields,
|
|
14
|
-
PlaylistFields,
|
|
15
|
-
PodcastEpisodeFields,
|
|
16
|
-
PodcastFields,
|
|
17
|
-
TrackFields,
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class Search(BaseModel):
|
|
22
|
-
search: Optional["SearchSearch"]
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class SearchSearch(BaseModel):
|
|
26
|
-
results: "SearchSearchResults"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class SearchSearchResults(BaseModel):
|
|
30
|
-
tracks: "SearchSearchResultsTracks"
|
|
31
|
-
albums: "SearchSearchResultsAlbums"
|
|
32
|
-
artists: "SearchSearchResultsArtists"
|
|
33
|
-
playlists: "SearchSearchResultsPlaylists"
|
|
34
|
-
livestreams: "SearchSearchResultsLivestreams"
|
|
35
|
-
podcasts: "SearchSearchResultsPodcasts"
|
|
36
|
-
podcast_episodes: "SearchSearchResultsPodcastEpisodes" = Field(
|
|
37
|
-
alias="podcastEpisodes"
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class SearchSearchResultsTracks(BaseModel):
|
|
42
|
-
edges: list["SearchSearchResultsTracksEdges"]
|
|
43
|
-
page_info: "SearchSearchResultsTracksPageInfo" = Field(alias="pageInfo")
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class SearchSearchResultsTracksEdges(BaseModel):
|
|
47
|
-
cursor: str
|
|
48
|
-
node: Optional["SearchSearchResultsTracksEdgesNode"]
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
class SearchSearchResultsTracksEdgesNode(TrackFields):
|
|
52
|
-
pass
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
class SearchSearchResultsTracksPageInfo(PageInfoFields):
|
|
56
|
-
pass
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class SearchSearchResultsAlbums(BaseModel):
|
|
60
|
-
edges: list["SearchSearchResultsAlbumsEdges"]
|
|
61
|
-
page_info: "SearchSearchResultsAlbumsPageInfo" = Field(alias="pageInfo")
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
class SearchSearchResultsAlbumsEdges(BaseModel):
|
|
65
|
-
cursor: str
|
|
66
|
-
node: Optional["SearchSearchResultsAlbumsEdgesNode"]
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
class SearchSearchResultsAlbumsEdgesNode(AlbumFields):
|
|
70
|
-
pass
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class SearchSearchResultsAlbumsPageInfo(PageInfoFields):
|
|
74
|
-
pass
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
class SearchSearchResultsArtists(BaseModel):
|
|
78
|
-
edges: list["SearchSearchResultsArtistsEdges"]
|
|
79
|
-
page_info: "SearchSearchResultsArtistsPageInfo" = Field(alias="pageInfo")
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
class SearchSearchResultsArtistsEdges(BaseModel):
|
|
83
|
-
cursor: str
|
|
84
|
-
node: Optional["SearchSearchResultsArtistsEdgesNode"]
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
class SearchSearchResultsArtistsEdgesNode(ArtistFields):
|
|
88
|
-
pass
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
class SearchSearchResultsArtistsPageInfo(PageInfoFields):
|
|
92
|
-
pass
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
class SearchSearchResultsPlaylists(BaseModel):
|
|
96
|
-
edges: list["SearchSearchResultsPlaylistsEdges"]
|
|
97
|
-
page_info: "SearchSearchResultsPlaylistsPageInfo" = Field(alias="pageInfo")
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
class SearchSearchResultsPlaylistsEdges(BaseModel):
|
|
101
|
-
cursor: str
|
|
102
|
-
node: Optional["SearchSearchResultsPlaylistsEdgesNode"]
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
class SearchSearchResultsPlaylistsEdgesNode(PlaylistFields):
|
|
106
|
-
pass
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
class SearchSearchResultsPlaylistsPageInfo(PageInfoFields):
|
|
110
|
-
pass
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
class SearchSearchResultsLivestreams(BaseModel):
|
|
114
|
-
edges: list["SearchSearchResultsLivestreamsEdges"]
|
|
115
|
-
page_info: "SearchSearchResultsLivestreamsPageInfo" = Field(alias="pageInfo")
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
class SearchSearchResultsLivestreamsEdges(BaseModel):
|
|
119
|
-
cursor: str
|
|
120
|
-
node: Optional["SearchSearchResultsLivestreamsEdgesNode"]
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
class SearchSearchResultsLivestreamsEdgesNode(LivestreamFields):
|
|
124
|
-
pass
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
class SearchSearchResultsLivestreamsPageInfo(PageInfoFields):
|
|
128
|
-
pass
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
class SearchSearchResultsPodcasts(BaseModel):
|
|
132
|
-
edges: list["SearchSearchResultsPodcastsEdges"]
|
|
133
|
-
page_info: "SearchSearchResultsPodcastsPageInfo" = Field(alias="pageInfo")
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
class SearchSearchResultsPodcastsEdges(BaseModel):
|
|
137
|
-
cursor: str
|
|
138
|
-
node: Optional["SearchSearchResultsPodcastsEdgesNode"]
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
class SearchSearchResultsPodcastsEdgesNode(PodcastFields):
|
|
142
|
-
pass
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
class SearchSearchResultsPodcastsPageInfo(PageInfoFields):
|
|
146
|
-
pass
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
class SearchSearchResultsPodcastEpisodes(BaseModel):
|
|
150
|
-
edges: list["SearchSearchResultsPodcastEpisodesEdges"]
|
|
151
|
-
page_info: "SearchSearchResultsPodcastEpisodesPageInfo" = Field(alias="pageInfo")
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
class SearchSearchResultsPodcastEpisodesEdges(BaseModel):
|
|
155
|
-
cursor: str
|
|
156
|
-
node: Optional["SearchSearchResultsPodcastEpisodesEdgesNode"]
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
class SearchSearchResultsPodcastEpisodesEdgesNode(PodcastEpisodeFields):
|
|
160
|
-
pass
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
class SearchSearchResultsPodcastEpisodesPageInfo(PageInfoFields):
|
|
164
|
-
pass
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
Search.model_rebuild()
|
|
168
|
-
SearchSearch.model_rebuild()
|
|
169
|
-
SearchSearchResults.model_rebuild()
|
|
170
|
-
SearchSearchResultsTracks.model_rebuild()
|
|
171
|
-
SearchSearchResultsTracksEdges.model_rebuild()
|
|
172
|
-
SearchSearchResultsAlbums.model_rebuild()
|
|
173
|
-
SearchSearchResultsAlbumsEdges.model_rebuild()
|
|
174
|
-
SearchSearchResultsArtists.model_rebuild()
|
|
175
|
-
SearchSearchResultsArtistsEdges.model_rebuild()
|
|
176
|
-
SearchSearchResultsPlaylists.model_rebuild()
|
|
177
|
-
SearchSearchResultsPlaylistsEdges.model_rebuild()
|
|
178
|
-
SearchSearchResultsLivestreams.model_rebuild()
|
|
179
|
-
SearchSearchResultsLivestreamsEdges.model_rebuild()
|
|
180
|
-
SearchSearchResultsPodcasts.model_rebuild()
|
|
181
|
-
SearchSearchResultsPodcastsEdges.model_rebuild()
|
|
182
|
-
SearchSearchResultsPodcastEpisodes.model_rebuild()
|
|
183
|
-
SearchSearchResultsPodcastEpisodesEdges.model_rebuild()
|
|
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
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/base_client.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/base_model.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/create_playlist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/delete_playlist.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/fragments.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_album.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_artist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_artist_mix.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_audiobook.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_charts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_flow.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_flow_batch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_livestream.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_made_for_me.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_playlist.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_podcast.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_track.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_track_mix.py
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/get_user_charts.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/input_types.py
RENAMED
|
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
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/search_flows.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql/generated/update_playlist.py
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/requires.txt
RENAMED
|
File without changes
|
{deezer_python_gql-0.11.0 → deezer_python_gql-0.13.0}/deezer_python_gql.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|