Skip to content

Commit de61140

Browse files
committed
feat: add track availability to TrackFields fragment
Add media.rights.sub.available to the shared TrackFields fragment so consumers can determine whether a track is streamable. Inline all fields in get_track.graphql to avoid ariadne-codegen type inheritance conflict.
1 parent f337b31 commit de61140

25 files changed

Lines changed: 731 additions & 250 deletions

deezer_python_gql/generated/__init__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@
9494
TrackFieldsContributorsEdges,
9595
TrackFieldsContributorsEdgesNodeArtist,
9696
TrackFieldsDiskInfo,
97+
TrackFieldsMedia,
98+
TrackFieldsMediaRights,
99+
TrackFieldsMediaRightsSub,
97100
)
98101
from .get_album import (
99102
GetAlbum,
@@ -448,6 +451,12 @@
448451
from .get_track import (
449452
GetTrack,
450453
GetTrackTrack,
454+
GetTrackTrackAlbum,
455+
GetTrackTrackAlbumCover,
456+
GetTrackTrackContributors,
457+
GetTrackTrackContributorsEdges,
458+
GetTrackTrackContributorsEdgesNodeArtist,
459+
GetTrackTrackDiskInfo,
451460
GetTrackTrackLyrics,
452461
GetTrackTrackLyricsSynchronizedLines,
453462
GetTrackTrackMedia,
@@ -975,6 +984,12 @@
975984
"GetTrackMixTrackMixTracks",
976985
"GetTrackMixTrackMixTracksTrack",
977986
"GetTrackTrack",
987+
"GetTrackTrackAlbum",
988+
"GetTrackTrackAlbumCover",
989+
"GetTrackTrackContributors",
990+
"GetTrackTrackContributorsEdges",
991+
"GetTrackTrackContributorsEdgesNodeArtist",
992+
"GetTrackTrackDiskInfo",
978993
"GetTrackTrackLyrics",
979994
"GetTrackTrackLyricsSynchronizedLines",
980995
"GetTrackTrackMedia",
@@ -1127,6 +1142,9 @@
11271142
"TrackFieldsContributorsEdges",
11281143
"TrackFieldsContributorsEdgesNodeArtist",
11291144
"TrackFieldsDiskInfo",
1145+
"TrackFieldsMedia",
1146+
"TrackFieldsMediaRights",
1147+
"TrackFieldsMediaRightsSub",
11301148
"UnbookmarkPodcastEpisode",
11311149
"UnbookmarkPodcastEpisodeUnbookmarkPodcastEpisode",
11321150
"UnbookmarkPodcastEpisodeUnbookmarkPodcastEpisodeEpisode",

deezer_python_gql/generated/client.py

Lines changed: 150 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,13 @@ async def get_album(
657657
}
658658
}
659659
}
660+
media {
661+
rights {
662+
sub {
663+
available
664+
}
665+
}
666+
}
660667
}
661668
""")
662669
variables: dict[str, object] = {
@@ -796,6 +803,13 @@ async def get_artist(
796803
}
797804
}
798805
}
806+
media {
807+
rights {
808+
sub {
809+
available
810+
}
811+
}
812+
}
799813
}
800814
""")
801815
variables: dict[str, object] = {
@@ -856,6 +870,13 @@ async def get_artist_mix(
856870
}
857871
}
858872
}
873+
media {
874+
rights {
875+
sub {
876+
available
877+
}
878+
}
879+
}
859880
}
860881
""")
861882
variables: dict[str, object] = {"artistIds": artist_ids, "limit": limit}
@@ -1203,6 +1224,13 @@ async def get_charts(
12031224
}
12041225
}
12051226
}
1227+
media {
1228+
rights {
1229+
sub {
1230+
available
1231+
}
1232+
}
1233+
}
12061234
}
12071235
""")
12081236
variables: dict[str, object] = {
@@ -1539,6 +1567,13 @@ async def get_favorite_tracks(
15391567
}
15401568
}
15411569
}
1570+
media {
1571+
rights {
1572+
sub {
1573+
available
1574+
}
1575+
}
1576+
}
15421577
}
15431578
""")
15441579
variables: dict[str, object] = {"first": first, "after": after}
@@ -1602,6 +1637,13 @@ async def get_flow(self, **kwargs: Any) -> Optional[GetFlowMe]:
16021637
}
16031638
}
16041639
}
1640+
media {
1641+
rights {
1642+
sub {
1643+
available
1644+
}
1645+
}
1646+
}
16051647
}
16061648
""")
16071649
variables: dict[str, object] = {}
@@ -1677,6 +1719,13 @@ async def get_flow_batch(self, **kwargs: Any) -> Optional[GetFlowBatchMe]:
16771719
}
16781720
}
16791721
}
1722+
media {
1723+
rights {
1724+
sub {
1725+
available
1726+
}
1727+
}
1728+
}
16801729
}
16811730
""")
16821731
variables: dict[str, object] = {}
@@ -1739,6 +1788,13 @@ async def get_flow_config_tracks(
17391788
}
17401789
}
17411790
}
1791+
media {
1792+
rights {
1793+
sub {
1794+
available
1795+
}
1796+
}
1797+
}
17421798
}
17431799
""")
17441800
variables: dict[str, object] = {"flowConfigId": flow_config_id}
@@ -2016,6 +2072,13 @@ async def get_music_together_affinity(
20162072
}
20172073
}
20182074
}
2075+
media {
2076+
rights {
2077+
sub {
2078+
available
2079+
}
2080+
}
2081+
}
20192082
}
20202083
""")
20212084
variables: dict[str, object] = {
@@ -2170,6 +2233,13 @@ async def get_music_together_group(
21702233
}
21712234
}
21722235
}
2236+
media {
2237+
rights {
2238+
sub {
2239+
available
2240+
}
2241+
}
2242+
}
21732243
}
21742244
""")
21752245
variables: dict[str, object] = {
@@ -2308,6 +2378,13 @@ async def get_personal_tracks(
23082378
}
23092379
}
23102380
}
2381+
media {
2382+
rights {
2383+
sub {
2384+
available
2385+
}
2386+
}
2387+
}
23112388
}
23122389
""")
23132390
variables: dict[str, object] = {"first": first, "after": after}
@@ -2401,6 +2478,13 @@ async def get_playlist(
24012478
}
24022479
}
24032480
}
2481+
media {
2482+
rights {
2483+
sub {
2484+
available
2485+
}
2486+
}
2487+
}
24042488
}
24052489
""")
24062490
variables: dict[str, object] = {
@@ -2963,6 +3047,13 @@ async def get_recommendations(
29633047
}
29643048
}
29653049
}
3050+
media {
3051+
rights {
3052+
sub {
3053+
available
3054+
}
3055+
}
3056+
}
29663057
}
29673058
""")
29683059
variables: dict[str, object] = {
@@ -3075,6 +3166,13 @@ async def get_similar_tracks(
30753166
}
30763167
}
30773168
}
3169+
media {
3170+
rights {
3171+
sub {
3172+
available
3173+
}
3174+
}
3175+
}
30783176
}
30793177
""")
30803178
variables: dict[str, object] = {"trackId": track_id, "nb": nb}
@@ -3154,6 +3252,13 @@ async def get_smart_tracklist(
31543252
}
31553253
}
31563254
}
3255+
media {
3256+
rights {
3257+
sub {
3258+
available
3259+
}
3260+
}
3261+
}
31573262
}
31583263
""")
31593264
variables: dict[str, object] = {
@@ -3174,7 +3279,37 @@ async def get_track(self, track_id: str, **kwargs: Any) -> Optional[GetTrackTrac
31743279
query = gql("""
31753280
query GetTrack($trackId: String!) {
31763281
track(trackId: $trackId) {
3177-
...TrackFields
3282+
id
3283+
title
3284+
ISRC
3285+
diskInfo {
3286+
diskNumber
3287+
trackNumber
3288+
}
3289+
duration
3290+
isExplicit
3291+
isFavorite
3292+
popularity
3293+
album {
3294+
id
3295+
displayTitle
3296+
cover {
3297+
id
3298+
urls(pictureRequest: {width: 264, height: 264})
3299+
}
3300+
}
3301+
contributors(first: 10, roles: [MAIN, FEATURED]) {
3302+
edges {
3303+
roles
3304+
node {
3305+
__typename
3306+
... on Artist {
3307+
id
3308+
name
3309+
}
3310+
}
3311+
}
3312+
}
31783313
isAtmos
31793314
releaseDate
31803315
media {
@@ -3212,39 +3347,6 @@ async def get_track(self, track_id: str, **kwargs: Any) -> Optional[GetTrackTrac
32123347
}
32133348
}
32143349
}
3215-
3216-
fragment TrackFields on Track {
3217-
id
3218-
title
3219-
ISRC
3220-
diskInfo {
3221-
diskNumber
3222-
trackNumber
3223-
}
3224-
duration
3225-
isExplicit
3226-
isFavorite
3227-
popularity
3228-
album {
3229-
id
3230-
displayTitle
3231-
cover {
3232-
id
3233-
urls(pictureRequest: {width: 264, height: 264})
3234-
}
3235-
}
3236-
contributors(first: 10, roles: [MAIN, FEATURED]) {
3237-
edges {
3238-
roles
3239-
node {
3240-
... on Artist {
3241-
id
3242-
name
3243-
}
3244-
}
3245-
}
3246-
}
3247-
}
32483350
""")
32493351
variables: dict[str, object] = {"trackId": track_id}
32503352
response = await self.execute(
@@ -3306,6 +3408,13 @@ async def get_track_mix(
33063408
}
33073409
}
33083410
}
3411+
media {
3412+
rights {
3413+
sub {
3414+
available
3415+
}
3416+
}
3417+
}
33093418
}
33103419
""")
33113420
variables: dict[str, object] = {
@@ -3443,6 +3552,13 @@ async def get_user_charts(
34433552
}
34443553
}
34453554
}
3555+
media {
3556+
rights {
3557+
sub {
3558+
available
3559+
}
3560+
}
3561+
}
34463562
}
34473563
""")
34483564
variables: dict[str, object] = {

deezer_python_gql/generated/fragments.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ class TrackFields(BaseModel):
224224
popularity: Optional[float]
225225
album: Optional["TrackFieldsAlbum"]
226226
contributors: "TrackFieldsContributors"
227+
media: Optional["TrackFieldsMedia"]
227228

228229

229230
class TrackFieldsDiskInfo(BaseModel):
@@ -259,6 +260,18 @@ class TrackFieldsContributorsEdgesNodeArtist(BaseModel):
259260
name: str
260261

261262

263+
class TrackFieldsMedia(BaseModel):
264+
rights: "TrackFieldsMediaRights"
265+
266+
267+
class TrackFieldsMediaRights(BaseModel):
268+
sub: Optional["TrackFieldsMediaRightsSub"]
269+
270+
271+
class TrackFieldsMediaRightsSub(BaseModel):
272+
available: bool
273+
274+
262275
AlbumFields.model_rebuild()
263276
ArtistFields.model_rebuild()
264277
AudiobookChapterFields.model_rebuild()

0 commit comments

Comments
 (0)