spotify-apimatic-sdk 1.0.0__py3-none-any.whl
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.
- spotify_apimatic_sdk-1.0.0.dist-info/METADATA +150 -0
- spotify_apimatic_sdk-1.0.0.dist-info/RECORD +186 -0
- spotify_apimatic_sdk-1.0.0.dist-info/WHEEL +5 -0
- spotify_apimatic_sdk-1.0.0.dist-info/licenses/LICENSE +30 -0
- spotify_apimatic_sdk-1.0.0.dist-info/top_level.txt +1 -0
- spotifywebapi/__init__.py +12 -0
- spotifywebapi/api_helper.py +19 -0
- spotifywebapi/configuration.py +318 -0
- spotifywebapi/controllers/__init__.py +20 -0
- spotifywebapi/controllers/albums_controller.py +498 -0
- spotifywebapi/controllers/artists_controller.py +327 -0
- spotifywebapi/controllers/audiobooks_controller.py +441 -0
- spotifywebapi/controllers/base_controller.py +67 -0
- spotifywebapi/controllers/categories_controller.py +161 -0
- spotifywebapi/controllers/chapters_controller.py +157 -0
- spotifywebapi/controllers/episodes_controller.py +390 -0
- spotifywebapi/controllers/genres_controller.py +84 -0
- spotifywebapi/controllers/markets_controller.py +82 -0
- spotifywebapi/controllers/o_auth_authorization_controller.py +156 -0
- spotifywebapi/controllers/player_controller.py +807 -0
- spotifywebapi/controllers/playlists_controller.py +851 -0
- spotifywebapi/controllers/search_controller.py +123 -0
- spotifywebapi/controllers/shows_controller.py +439 -0
- spotifywebapi/controllers/tracks_controller.py +821 -0
- spotifywebapi/controllers/users_controller.py +649 -0
- spotifywebapi/exceptions/__init__.py +11 -0
- spotifywebapi/exceptions/api_exception.py +36 -0
- spotifywebapi/exceptions/bad_request_exception.py +56 -0
- spotifywebapi/exceptions/forbidden_exception.py +56 -0
- spotifywebapi/exceptions/not_found_exception.py +56 -0
- spotifywebapi/exceptions/o_auth_provider_exception.py +73 -0
- spotifywebapi/exceptions/too_many_requests_exception.py +56 -0
- spotifywebapi/exceptions/unauthorized_exception.py +56 -0
- spotifywebapi/http/__init__.py +11 -0
- spotifywebapi/http/api_response.py +67 -0
- spotifywebapi/http/auth/__init__.py +5 -0
- spotifywebapi/http/auth/o_auth_2.py +336 -0
- spotifywebapi/http/http_call_back.py +20 -0
- spotifywebapi/http/http_client_provider.py +23 -0
- spotifywebapi/http/http_method_enum.py +25 -0
- spotifywebapi/http/http_request.py +55 -0
- spotifywebapi/http/http_response.py +45 -0
- spotifywebapi/http/proxy_settings.py +50 -0
- spotifywebapi/models/__init__.py +142 -0
- spotifywebapi/models/album_base.py +264 -0
- spotifywebapi/models/album_group_enum.py +51 -0
- spotifywebapi/models/album_object.py +375 -0
- spotifywebapi/models/album_restriction_object.py +109 -0
- spotifywebapi/models/album_type_enum.py +62 -0
- spotifywebapi/models/artist_discography_album_object.py +298 -0
- spotifywebapi/models/artist_object.py +335 -0
- spotifywebapi/models/audio_analysis_object.py +266 -0
- spotifywebapi/models/audio_features_object.py +518 -0
- spotifywebapi/models/audiobook_base.py +353 -0
- spotifywebapi/models/audiobook_object.py +369 -0
- spotifywebapi/models/author_object.py +85 -0
- spotifywebapi/models/categories.py +162 -0
- spotifywebapi/models/category_object.py +117 -0
- spotifywebapi/models/chapter_base.py +392 -0
- spotifywebapi/models/chapter_object.py +408 -0
- spotifywebapi/models/chapter_restriction_object.py +113 -0
- spotifywebapi/models/context_object.py +181 -0
- spotifywebapi/models/copyright_object.py +130 -0
- spotifywebapi/models/currently_playing_context_object.py +314 -0
- spotifywebapi/models/currently_playing_object.py +241 -0
- spotifywebapi/models/cursor_object.py +108 -0
- spotifywebapi/models/cursor_paged_artists.py +75 -0
- spotifywebapi/models/cursor_paging_object.py +183 -0
- spotifywebapi/models/cursor_paging_play_history_object.py +214 -0
- spotifywebapi/models/cursor_paging_simplified_artist_object.py +213 -0
- spotifywebapi/models/device_object.py +278 -0
- spotifywebapi/models/disallows_object.py +314 -0
- spotifywebapi/models/episode_base.py +394 -0
- spotifywebapi/models/episode_object.py +665 -0
- spotifywebapi/models/episode_restriction_object.py +112 -0
- spotifywebapi/models/error_object.py +85 -0
- spotifywebapi/models/explicit_content_settings_object.py +110 -0
- spotifywebapi/models/external_id_object.py +156 -0
- spotifywebapi/models/external_url_object.py +107 -0
- spotifywebapi/models/followers_object.py +134 -0
- spotifywebapi/models/image_object.py +168 -0
- spotifywebapi/models/include_external_enum.py +45 -0
- spotifywebapi/models/item_type_1_enum.py +56 -0
- spotifywebapi/models/item_type_2_enum.py +45 -0
- spotifywebapi/models/item_type_3_enum.py +45 -0
- spotifywebapi/models/item_type_enum.py +58 -0
- spotifywebapi/models/linked_track_object.py +205 -0
- spotifywebapi/models/many_albums.py +76 -0
- spotifywebapi/models/many_artists.py +76 -0
- spotifywebapi/models/many_audio_features.py +77 -0
- spotifywebapi/models/many_audiobooks.py +77 -0
- spotifywebapi/models/many_chapters.py +77 -0
- spotifywebapi/models/many_devices.py +76 -0
- spotifywebapi/models/many_episodes.py +77 -0
- spotifywebapi/models/many_genres.py +69 -0
- spotifywebapi/models/many_simplified_shows.py +74 -0
- spotifywebapi/models/many_tracks.py +76 -0
- spotifywebapi/models/markets.py +85 -0
- spotifywebapi/models/me_albums_request.py +90 -0
- spotifywebapi/models/me_episodes_request.py +73 -0
- spotifywebapi/models/me_episodes_request_1.py +89 -0
- spotifywebapi/models/me_following_request.py +74 -0
- spotifywebapi/models/me_following_request_1.py +90 -0
- spotifywebapi/models/me_player_play_request.py +165 -0
- spotifywebapi/models/me_player_request.py +103 -0
- spotifywebapi/models/me_shows_request.py +89 -0
- spotifywebapi/models/me_tracks_request.py +74 -0
- spotifywebapi/models/me_tracks_request_1.py +90 -0
- spotifywebapi/models/meta.py +227 -0
- spotifywebapi/models/mode_enum.py +52 -0
- spotifywebapi/models/narrator_object.py +85 -0
- spotifywebapi/models/o_auth_provider_error_enum.py +67 -0
- spotifywebapi/models/o_auth_scope_enum.py +98 -0
- spotifywebapi/models/o_auth_token.py +113 -0
- spotifywebapi/models/paged_albums.py +75 -0
- spotifywebapi/models/paged_categories.py +74 -0
- spotifywebapi/models/paging_artist_discography_album_object.py +163 -0
- spotifywebapi/models/paging_artist_object.py +162 -0
- spotifywebapi/models/paging_featured_playlist_object.py +113 -0
- spotifywebapi/models/paging_object.py +142 -0
- spotifywebapi/models/paging_playlist_object.py +163 -0
- spotifywebapi/models/paging_playlist_track_object.py +163 -0
- spotifywebapi/models/paging_saved_album_object.py +163 -0
- spotifywebapi/models/paging_saved_audiobook_object.py +163 -0
- spotifywebapi/models/paging_saved_episode_object.py +163 -0
- spotifywebapi/models/paging_saved_show_object.py +163 -0
- spotifywebapi/models/paging_saved_track_object.py +163 -0
- spotifywebapi/models/paging_simplified_album_object.py +163 -0
- spotifywebapi/models/paging_simplified_audiobook_object.py +162 -0
- spotifywebapi/models/paging_simplified_chapter_object.py +162 -0
- spotifywebapi/models/paging_simplified_episode_object.py +162 -0
- spotifywebapi/models/paging_simplified_show_object.py +160 -0
- spotifywebapi/models/paging_simplified_track_object.py +163 -0
- spotifywebapi/models/paging_track_object.py +162 -0
- spotifywebapi/models/play_history_object.py +141 -0
- spotifywebapi/models/playlist_object.py +425 -0
- spotifywebapi/models/playlist_owner_object.py +238 -0
- spotifywebapi/models/playlist_snapshot_id.py +85 -0
- spotifywebapi/models/playlist_track_object.py +171 -0
- spotifywebapi/models/playlist_tracks_ref_object.py +109 -0
- spotifywebapi/models/playlist_user_object.py +231 -0
- spotifywebapi/models/playlists_followers_request.py +86 -0
- spotifywebapi/models/playlists_request.py +160 -0
- spotifywebapi/models/playlists_tracks_request.py +121 -0
- spotifywebapi/models/playlists_tracks_request_1.py +188 -0
- spotifywebapi/models/playlists_tracks_request_2.py +109 -0
- spotifywebapi/models/private_user_object.py +379 -0
- spotifywebapi/models/public_user_object.py +268 -0
- spotifywebapi/models/queue_object.py +118 -0
- spotifywebapi/models/reason_enum.py +65 -0
- spotifywebapi/models/recommendation_seed_object.py +208 -0
- spotifywebapi/models/recommendations_object.py +96 -0
- spotifywebapi/models/release_date_precision_enum.py +62 -0
- spotifywebapi/models/resume_point_object.py +131 -0
- spotifywebapi/models/saved_album_object.py +118 -0
- spotifywebapi/models/saved_audiobook_object.py +118 -0
- spotifywebapi/models/saved_episode_object.py +116 -0
- spotifywebapi/models/saved_show_object.py +116 -0
- spotifywebapi/models/saved_track_object.py +118 -0
- spotifywebapi/models/search_items.py +256 -0
- spotifywebapi/models/section_object.py +362 -0
- spotifywebapi/models/segment_object.py +307 -0
- spotifywebapi/models/show_base.py +550 -0
- spotifywebapi/models/show_object.py +319 -0
- spotifywebapi/models/simplified_album_object.py +468 -0
- spotifywebapi/models/simplified_artist_object.py +228 -0
- spotifywebapi/models/simplified_playlist_object.py +398 -0
- spotifywebapi/models/simplified_track_object.py +494 -0
- spotifywebapi/models/time_interval_object.py +132 -0
- spotifywebapi/models/track.py +697 -0
- spotifywebapi/models/track_1.py +85 -0
- spotifywebapi/models/track_object.py +605 -0
- spotifywebapi/models/track_restriction_object.py +112 -0
- spotifywebapi/models/type_2_enum.py +56 -0
- spotifywebapi/models/type_3_enum.py +56 -0
- spotifywebapi/models/type_4_enum.py +56 -0
- spotifywebapi/models/type_5_enum.py +56 -0
- spotifywebapi/models/type_6_enum.py +56 -0
- spotifywebapi/models/type_8_enum.py +42 -0
- spotifywebapi/models/type_9_enum.py +42 -0
- spotifywebapi/models/type_enum.py +56 -0
- spotifywebapi/models/users_playlists_request.py +154 -0
- spotifywebapi/spotifywebapi_client.py +198 -0
- spotifywebapi/utilities/__init__.py +6 -0
- spotifywebapi/utilities/file_wrapper.py +45 -0
- spotifywebapi/utilities/union_type_lookup.py +113 -0
|
@@ -0,0 +1,665 @@
|
|
|
1
|
+
"""spotifywebapi.
|
|
2
|
+
|
|
3
|
+
This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
# ruff: noqa: E501
|
|
7
|
+
from spotifywebapi.api_helper import APIHelper
|
|
8
|
+
from spotifywebapi.models.episode_restriction_object import (
|
|
9
|
+
EpisodeRestrictionObject,
|
|
10
|
+
)
|
|
11
|
+
from spotifywebapi.models.external_url_object import (
|
|
12
|
+
ExternalUrlObject,
|
|
13
|
+
)
|
|
14
|
+
from spotifywebapi.models.image_object import (
|
|
15
|
+
ImageObject,
|
|
16
|
+
)
|
|
17
|
+
from spotifywebapi.models.release_date_precision_enum import (
|
|
18
|
+
ReleaseDatePrecisionEnum,
|
|
19
|
+
)
|
|
20
|
+
from spotifywebapi.models.resume_point_object import (
|
|
21
|
+
ResumePointObject,
|
|
22
|
+
)
|
|
23
|
+
from spotifywebapi.models.show_base import ShowBase
|
|
24
|
+
from spotifywebapi.models.type_5_enum import (
|
|
25
|
+
Type5Enum,
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class EpisodeObject(object):
|
|
30
|
+
"""Implementation of the 'EpisodeObject' model.
|
|
31
|
+
|
|
32
|
+
Attributes:
|
|
33
|
+
audio_preview_url (str): A URL to a 30 second preview (MP3 format) of the
|
|
34
|
+
episode. `null` if not available.
|
|
35
|
+
description (str): A description of the episode. HTML tags are stripped away
|
|
36
|
+
from this field, use `html_description` field in case HTML tags are
|
|
37
|
+
needed.
|
|
38
|
+
html_description (str): A description of the episode. This field may contain
|
|
39
|
+
HTML tags.
|
|
40
|
+
duration_ms (int): The episode length in milliseconds.
|
|
41
|
+
explicit (bool): Whether or not the episode has explicit content (true = yes
|
|
42
|
+
it does; false = no it does not OR unknown).
|
|
43
|
+
external_urls (ExternalUrlObject): External URLs for this episode.
|
|
44
|
+
href (str): A link to the Web API endpoint providing full details of the
|
|
45
|
+
episode.
|
|
46
|
+
id (str): The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids)
|
|
47
|
+
for the episode.
|
|
48
|
+
images (List[ImageObject]): The cover art for the episode in various sizes,
|
|
49
|
+
widest first.
|
|
50
|
+
is_externally_hosted (bool): True if the episode is hosted outside of
|
|
51
|
+
Spotify's CDN.
|
|
52
|
+
is_playable (bool): True if the episode is playable in the given market.
|
|
53
|
+
Otherwise false.
|
|
54
|
+
language (str): The language used in the episode, identified by a [ISO
|
|
55
|
+
639](https://en.wikipedia.org/wiki/ISO_639) code. This field is
|
|
56
|
+
deprecated and might be removed in the future. Please use the `languages`
|
|
57
|
+
field instead.
|
|
58
|
+
languages (List[str]): A list of the languages used in the episode,
|
|
59
|
+
identified by their [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639)
|
|
60
|
+
code.
|
|
61
|
+
name (str): The name of the episode.
|
|
62
|
+
release_date (str): The date the episode was first released, for example
|
|
63
|
+
`"1981-12-15"`. Depending on the precision, it might be shown as `"1981"`
|
|
64
|
+
or `"1981-12"`.
|
|
65
|
+
release_date_precision (ReleaseDatePrecisionEnum): The precision with which
|
|
66
|
+
`release_date` value is known.
|
|
67
|
+
resume_point (ResumePointObject): The user's most recent position in the
|
|
68
|
+
episode. Set if the supplied access token is a user token and has the
|
|
69
|
+
scope 'user-read-playback-position'.
|
|
70
|
+
mtype (Type5Enum): The object type.
|
|
71
|
+
uri (str): The [Spotify
|
|
72
|
+
URI](/documentation/web-api/concepts/spotify-uris-ids) for the episode.
|
|
73
|
+
restrictions (EpisodeRestrictionObject): Included in the response when a
|
|
74
|
+
content restriction is applied.
|
|
75
|
+
show (ShowBase): The show on which the episode belongs.
|
|
76
|
+
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
# Create a mapping from Model property names to API property names
|
|
80
|
+
_names = {
|
|
81
|
+
"audio_preview_url": "audio_preview_url",
|
|
82
|
+
"description": "description",
|
|
83
|
+
"html_description": "html_description",
|
|
84
|
+
"duration_ms": "duration_ms",
|
|
85
|
+
"explicit": "explicit",
|
|
86
|
+
"external_urls": "external_urls",
|
|
87
|
+
"href": "href",
|
|
88
|
+
"id": "id",
|
|
89
|
+
"images": "images",
|
|
90
|
+
"is_externally_hosted": "is_externally_hosted",
|
|
91
|
+
"is_playable": "is_playable",
|
|
92
|
+
"languages": "languages",
|
|
93
|
+
"name": "name",
|
|
94
|
+
"release_date": "release_date",
|
|
95
|
+
"release_date_precision": "release_date_precision",
|
|
96
|
+
"mtype": "type",
|
|
97
|
+
"uri": "uri",
|
|
98
|
+
"show": "show",
|
|
99
|
+
"language": "language",
|
|
100
|
+
"resume_point": "resume_point",
|
|
101
|
+
"restrictions": "restrictions",
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
_optionals = [
|
|
105
|
+
"language",
|
|
106
|
+
"resume_point",
|
|
107
|
+
"restrictions",
|
|
108
|
+
]
|
|
109
|
+
|
|
110
|
+
_nullables = [
|
|
111
|
+
"audio_preview_url",
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
def __init__(
|
|
115
|
+
self,
|
|
116
|
+
audio_preview_url=None,
|
|
117
|
+
description=None,
|
|
118
|
+
html_description=None,
|
|
119
|
+
duration_ms=None,
|
|
120
|
+
explicit=None,
|
|
121
|
+
external_urls=None,
|
|
122
|
+
href=None,
|
|
123
|
+
id=None,
|
|
124
|
+
images=None,
|
|
125
|
+
is_externally_hosted=None,
|
|
126
|
+
is_playable=None,
|
|
127
|
+
languages=None,
|
|
128
|
+
name=None,
|
|
129
|
+
release_date=None,
|
|
130
|
+
release_date_precision=None,
|
|
131
|
+
mtype=None,
|
|
132
|
+
uri=None,
|
|
133
|
+
show=None,
|
|
134
|
+
language=APIHelper.SKIP,
|
|
135
|
+
resume_point=APIHelper.SKIP,
|
|
136
|
+
restrictions=APIHelper.SKIP):
|
|
137
|
+
"""Initialize a EpisodeObject instance."""
|
|
138
|
+
# Initialize members of the class
|
|
139
|
+
self.audio_preview_url = audio_preview_url
|
|
140
|
+
self.description = description
|
|
141
|
+
self.html_description = html_description
|
|
142
|
+
self.duration_ms = duration_ms
|
|
143
|
+
self.explicit = explicit
|
|
144
|
+
self.external_urls = external_urls
|
|
145
|
+
self.href = href
|
|
146
|
+
self.id = id
|
|
147
|
+
self.images = images
|
|
148
|
+
self.is_externally_hosted = is_externally_hosted
|
|
149
|
+
self.is_playable = is_playable
|
|
150
|
+
if language is not APIHelper.SKIP:
|
|
151
|
+
self.language = language
|
|
152
|
+
self.languages = languages
|
|
153
|
+
self.name = name
|
|
154
|
+
self.release_date = release_date
|
|
155
|
+
self.release_date_precision = release_date_precision
|
|
156
|
+
if resume_point is not APIHelper.SKIP:
|
|
157
|
+
self.resume_point = resume_point
|
|
158
|
+
self.mtype = mtype
|
|
159
|
+
self.uri = uri
|
|
160
|
+
if restrictions is not APIHelper.SKIP:
|
|
161
|
+
self.restrictions = restrictions
|
|
162
|
+
self.show = show
|
|
163
|
+
|
|
164
|
+
@classmethod
|
|
165
|
+
def from_dictionary(cls,
|
|
166
|
+
dictionary):
|
|
167
|
+
"""Create an instance of this model from a dictionary
|
|
168
|
+
|
|
169
|
+
Args:
|
|
170
|
+
dictionary (dictionary): A dictionary representation of the object
|
|
171
|
+
as obtained from the deserialization of the server's response. The
|
|
172
|
+
keys MUST match property names in the API description.
|
|
173
|
+
|
|
174
|
+
Returns:
|
|
175
|
+
object: An instance of this structure class.
|
|
176
|
+
|
|
177
|
+
"""
|
|
178
|
+
if not isinstance(dictionary, dict) or dictionary is None:
|
|
179
|
+
return None
|
|
180
|
+
|
|
181
|
+
# Extract variables from the dictionary
|
|
182
|
+
audio_preview_url =\
|
|
183
|
+
dictionary.get("audio_preview_url")\
|
|
184
|
+
if dictionary.get("audio_preview_url")\
|
|
185
|
+
else None
|
|
186
|
+
description =\
|
|
187
|
+
dictionary.get("description")\
|
|
188
|
+
if dictionary.get("description")\
|
|
189
|
+
else None
|
|
190
|
+
html_description =\
|
|
191
|
+
dictionary.get("html_description")\
|
|
192
|
+
if dictionary.get("html_description")\
|
|
193
|
+
else None
|
|
194
|
+
duration_ms =\
|
|
195
|
+
dictionary.get("duration_ms")\
|
|
196
|
+
if dictionary.get("duration_ms")\
|
|
197
|
+
else None
|
|
198
|
+
explicit =\
|
|
199
|
+
dictionary.get("explicit")\
|
|
200
|
+
if "explicit" in dictionary.keys()\
|
|
201
|
+
else None
|
|
202
|
+
external_urls =\
|
|
203
|
+
ExternalUrlObject.from_dictionary(
|
|
204
|
+
dictionary.get("external_urls"))\
|
|
205
|
+
if dictionary.get("external_urls") else None
|
|
206
|
+
href =\
|
|
207
|
+
dictionary.get("href")\
|
|
208
|
+
if dictionary.get("href")\
|
|
209
|
+
else None
|
|
210
|
+
id =\
|
|
211
|
+
dictionary.get("id")\
|
|
212
|
+
if dictionary.get("id")\
|
|
213
|
+
else None
|
|
214
|
+
images = None
|
|
215
|
+
if dictionary.get("images") is not None:
|
|
216
|
+
images = [
|
|
217
|
+
ImageObject.from_dictionary(x)
|
|
218
|
+
for x in dictionary.get("images")
|
|
219
|
+
]
|
|
220
|
+
is_externally_hosted =\
|
|
221
|
+
dictionary.get("is_externally_hosted")\
|
|
222
|
+
if "is_externally_hosted" in dictionary.keys()\
|
|
223
|
+
else None
|
|
224
|
+
is_playable =\
|
|
225
|
+
dictionary.get("is_playable")\
|
|
226
|
+
if "is_playable" in dictionary.keys()\
|
|
227
|
+
else None
|
|
228
|
+
languages =\
|
|
229
|
+
dictionary.get("languages")\
|
|
230
|
+
if dictionary.get("languages")\
|
|
231
|
+
else None
|
|
232
|
+
name =\
|
|
233
|
+
dictionary.get("name")\
|
|
234
|
+
if dictionary.get("name")\
|
|
235
|
+
else None
|
|
236
|
+
release_date =\
|
|
237
|
+
dictionary.get("release_date")\
|
|
238
|
+
if dictionary.get("release_date")\
|
|
239
|
+
else None
|
|
240
|
+
release_date_precision =\
|
|
241
|
+
dictionary.get("release_date_precision")\
|
|
242
|
+
if dictionary.get("release_date_precision")\
|
|
243
|
+
else None
|
|
244
|
+
mtype =\
|
|
245
|
+
dictionary.get("type")\
|
|
246
|
+
if dictionary.get("type")\
|
|
247
|
+
else None
|
|
248
|
+
uri =\
|
|
249
|
+
dictionary.get("uri")\
|
|
250
|
+
if dictionary.get("uri")\
|
|
251
|
+
else None
|
|
252
|
+
show =\
|
|
253
|
+
ShowBase.from_dictionary(
|
|
254
|
+
dictionary.get("show"))\
|
|
255
|
+
if dictionary.get("show") else None
|
|
256
|
+
language =\
|
|
257
|
+
dictionary.get("language")\
|
|
258
|
+
if dictionary.get("language")\
|
|
259
|
+
else APIHelper.SKIP
|
|
260
|
+
resume_point =\
|
|
261
|
+
ResumePointObject.from_dictionary(
|
|
262
|
+
dictionary.get("resume_point"))\
|
|
263
|
+
if "resume_point" in dictionary.keys()\
|
|
264
|
+
else APIHelper.SKIP
|
|
265
|
+
restrictions =\
|
|
266
|
+
EpisodeRestrictionObject.from_dictionary(
|
|
267
|
+
dictionary.get("restrictions"))\
|
|
268
|
+
if "restrictions" in dictionary.keys()\
|
|
269
|
+
else APIHelper.SKIP
|
|
270
|
+
|
|
271
|
+
# Return an object of this model
|
|
272
|
+
return cls(audio_preview_url,
|
|
273
|
+
description,
|
|
274
|
+
html_description,
|
|
275
|
+
duration_ms,
|
|
276
|
+
explicit,
|
|
277
|
+
external_urls,
|
|
278
|
+
href,
|
|
279
|
+
id,
|
|
280
|
+
images,
|
|
281
|
+
is_externally_hosted,
|
|
282
|
+
is_playable,
|
|
283
|
+
languages,
|
|
284
|
+
name,
|
|
285
|
+
release_date,
|
|
286
|
+
release_date_precision,
|
|
287
|
+
mtype,
|
|
288
|
+
uri,
|
|
289
|
+
show,
|
|
290
|
+
language,
|
|
291
|
+
resume_point,
|
|
292
|
+
restrictions)
|
|
293
|
+
|
|
294
|
+
@classmethod
|
|
295
|
+
def validate(cls, dictionary):
|
|
296
|
+
"""Validate dictionary against class required properties
|
|
297
|
+
|
|
298
|
+
Args:
|
|
299
|
+
dictionary (dictionary): A dictionary representation of the object
|
|
300
|
+
as obtained from the deserialization of the server's response. The
|
|
301
|
+
keys MUST match property names in the API description.
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
boolean : if dictionary is valid contains required properties.
|
|
305
|
+
|
|
306
|
+
"""
|
|
307
|
+
if isinstance(dictionary, cls):
|
|
308
|
+
return APIHelper.is_valid_type(
|
|
309
|
+
value=dictionary.audio_preview_url,
|
|
310
|
+
type_callable=lambda value:
|
|
311
|
+
isinstance(
|
|
312
|
+
value,
|
|
313
|
+
str,
|
|
314
|
+
),
|
|
315
|
+
is_value_nullable=True) \
|
|
316
|
+
and APIHelper.is_valid_type(
|
|
317
|
+
value=dictionary.description,
|
|
318
|
+
type_callable=lambda value:
|
|
319
|
+
isinstance(
|
|
320
|
+
value,
|
|
321
|
+
str,
|
|
322
|
+
)) \
|
|
323
|
+
and APIHelper.is_valid_type(
|
|
324
|
+
value=dictionary.html_description,
|
|
325
|
+
type_callable=lambda value:
|
|
326
|
+
isinstance(
|
|
327
|
+
value,
|
|
328
|
+
str,
|
|
329
|
+
)) \
|
|
330
|
+
and APIHelper.is_valid_type(
|
|
331
|
+
value=dictionary.duration_ms,
|
|
332
|
+
type_callable=lambda value:
|
|
333
|
+
isinstance(
|
|
334
|
+
value,
|
|
335
|
+
int,
|
|
336
|
+
)) \
|
|
337
|
+
and APIHelper.is_valid_type(
|
|
338
|
+
value=dictionary.explicit,
|
|
339
|
+
type_callable=lambda value:
|
|
340
|
+
isinstance(
|
|
341
|
+
value,
|
|
342
|
+
bool,
|
|
343
|
+
)) \
|
|
344
|
+
and APIHelper.is_valid_type(
|
|
345
|
+
value=dictionary.external_urls,
|
|
346
|
+
type_callable=lambda value:
|
|
347
|
+
ExternalUrlObject.validate(value),
|
|
348
|
+
is_model_dict=True) \
|
|
349
|
+
and APIHelper.is_valid_type(
|
|
350
|
+
value=dictionary.href,
|
|
351
|
+
type_callable=lambda value:
|
|
352
|
+
isinstance(
|
|
353
|
+
value,
|
|
354
|
+
str,
|
|
355
|
+
)) \
|
|
356
|
+
and APIHelper.is_valid_type(
|
|
357
|
+
value=dictionary.id,
|
|
358
|
+
type_callable=lambda value:
|
|
359
|
+
isinstance(
|
|
360
|
+
value,
|
|
361
|
+
str,
|
|
362
|
+
)) \
|
|
363
|
+
and APIHelper.is_valid_type(
|
|
364
|
+
value=dictionary.images,
|
|
365
|
+
type_callable=lambda value:
|
|
366
|
+
ImageObject.validate(value),
|
|
367
|
+
is_model_dict=True,
|
|
368
|
+
is_inner_model_dict=True) \
|
|
369
|
+
and APIHelper.is_valid_type(
|
|
370
|
+
value=dictionary.is_externally_hosted,
|
|
371
|
+
type_callable=lambda value:
|
|
372
|
+
isinstance(
|
|
373
|
+
value,
|
|
374
|
+
bool,
|
|
375
|
+
)) \
|
|
376
|
+
and APIHelper.is_valid_type(
|
|
377
|
+
value=dictionary.is_playable,
|
|
378
|
+
type_callable=lambda value:
|
|
379
|
+
isinstance(
|
|
380
|
+
value,
|
|
381
|
+
bool,
|
|
382
|
+
)) \
|
|
383
|
+
and APIHelper.is_valid_type(
|
|
384
|
+
value=dictionary.languages,
|
|
385
|
+
type_callable=lambda value:
|
|
386
|
+
isinstance(
|
|
387
|
+
value,
|
|
388
|
+
str,
|
|
389
|
+
)) \
|
|
390
|
+
and APIHelper.is_valid_type(
|
|
391
|
+
value=dictionary.name,
|
|
392
|
+
type_callable=lambda value:
|
|
393
|
+
isinstance(
|
|
394
|
+
value,
|
|
395
|
+
str,
|
|
396
|
+
)) \
|
|
397
|
+
and APIHelper.is_valid_type(
|
|
398
|
+
value=dictionary.release_date,
|
|
399
|
+
type_callable=lambda value:
|
|
400
|
+
isinstance(
|
|
401
|
+
value,
|
|
402
|
+
str,
|
|
403
|
+
)) \
|
|
404
|
+
and APIHelper.is_valid_type(
|
|
405
|
+
value=dictionary.release_date_precision,
|
|
406
|
+
type_callable=lambda value:
|
|
407
|
+
ReleaseDatePrecisionEnum.validate(value)) \
|
|
408
|
+
and APIHelper.is_valid_type(
|
|
409
|
+
value=dictionary.mtype,
|
|
410
|
+
type_callable=lambda value:
|
|
411
|
+
Type5Enum.validate(value)) \
|
|
412
|
+
and APIHelper.is_valid_type(
|
|
413
|
+
value=dictionary.uri,
|
|
414
|
+
type_callable=lambda value:
|
|
415
|
+
isinstance(
|
|
416
|
+
value,
|
|
417
|
+
str,
|
|
418
|
+
)) \
|
|
419
|
+
and APIHelper.is_valid_type(
|
|
420
|
+
value=dictionary.show,
|
|
421
|
+
type_callable=lambda value:
|
|
422
|
+
ShowBase.validate(value),
|
|
423
|
+
is_model_dict=True)
|
|
424
|
+
|
|
425
|
+
if not isinstance(dictionary, dict):
|
|
426
|
+
return False
|
|
427
|
+
|
|
428
|
+
return APIHelper.is_valid_type(
|
|
429
|
+
value=dictionary.get("audio_preview_url"),
|
|
430
|
+
type_callable=lambda value:
|
|
431
|
+
isinstance(
|
|
432
|
+
value,
|
|
433
|
+
str,
|
|
434
|
+
),
|
|
435
|
+
is_value_nullable=True) \
|
|
436
|
+
and APIHelper.is_valid_type(
|
|
437
|
+
value=dictionary.get("description"),
|
|
438
|
+
type_callable=lambda value:
|
|
439
|
+
isinstance(
|
|
440
|
+
value,
|
|
441
|
+
str,
|
|
442
|
+
)) \
|
|
443
|
+
and APIHelper.is_valid_type(
|
|
444
|
+
value=dictionary.get("html_description"),
|
|
445
|
+
type_callable=lambda value:
|
|
446
|
+
isinstance(
|
|
447
|
+
value,
|
|
448
|
+
str,
|
|
449
|
+
)) \
|
|
450
|
+
and APIHelper.is_valid_type(
|
|
451
|
+
value=dictionary.get("duration_ms"),
|
|
452
|
+
type_callable=lambda value:
|
|
453
|
+
isinstance(
|
|
454
|
+
value,
|
|
455
|
+
int,
|
|
456
|
+
)) \
|
|
457
|
+
and APIHelper.is_valid_type(
|
|
458
|
+
value=dictionary.get("explicit"),
|
|
459
|
+
type_callable=lambda value:
|
|
460
|
+
isinstance(
|
|
461
|
+
value,
|
|
462
|
+
bool,
|
|
463
|
+
)) \
|
|
464
|
+
and APIHelper.is_valid_type(
|
|
465
|
+
value=dictionary.get("external_urls"),
|
|
466
|
+
type_callable=lambda value:
|
|
467
|
+
ExternalUrlObject.validate(value),
|
|
468
|
+
is_model_dict=True) \
|
|
469
|
+
and APIHelper.is_valid_type(
|
|
470
|
+
value=dictionary.get("href"),
|
|
471
|
+
type_callable=lambda value:
|
|
472
|
+
isinstance(
|
|
473
|
+
value,
|
|
474
|
+
str,
|
|
475
|
+
)) \
|
|
476
|
+
and APIHelper.is_valid_type(
|
|
477
|
+
value=dictionary.get("id"),
|
|
478
|
+
type_callable=lambda value:
|
|
479
|
+
isinstance(
|
|
480
|
+
value,
|
|
481
|
+
str,
|
|
482
|
+
)) \
|
|
483
|
+
and APIHelper.is_valid_type(
|
|
484
|
+
value=dictionary.get("images"),
|
|
485
|
+
type_callable=lambda value:
|
|
486
|
+
ImageObject.validate(value),
|
|
487
|
+
is_model_dict=True,
|
|
488
|
+
is_inner_model_dict=True) \
|
|
489
|
+
and APIHelper.is_valid_type(
|
|
490
|
+
value=dictionary.get("is_externally_hosted"),
|
|
491
|
+
type_callable=lambda value:
|
|
492
|
+
isinstance(
|
|
493
|
+
value,
|
|
494
|
+
bool,
|
|
495
|
+
)) \
|
|
496
|
+
and APIHelper.is_valid_type(
|
|
497
|
+
value=dictionary.get("is_playable"),
|
|
498
|
+
type_callable=lambda value:
|
|
499
|
+
isinstance(
|
|
500
|
+
value,
|
|
501
|
+
bool,
|
|
502
|
+
)) \
|
|
503
|
+
and APIHelper.is_valid_type(
|
|
504
|
+
value=dictionary.get("languages"),
|
|
505
|
+
type_callable=lambda value:
|
|
506
|
+
isinstance(
|
|
507
|
+
value,
|
|
508
|
+
str,
|
|
509
|
+
)) \
|
|
510
|
+
and APIHelper.is_valid_type(
|
|
511
|
+
value=dictionary.get("name"),
|
|
512
|
+
type_callable=lambda value:
|
|
513
|
+
isinstance(
|
|
514
|
+
value,
|
|
515
|
+
str,
|
|
516
|
+
)) \
|
|
517
|
+
and APIHelper.is_valid_type(
|
|
518
|
+
value=dictionary.get("release_date"),
|
|
519
|
+
type_callable=lambda value:
|
|
520
|
+
isinstance(
|
|
521
|
+
value,
|
|
522
|
+
str,
|
|
523
|
+
)) \
|
|
524
|
+
and APIHelper.is_valid_type(
|
|
525
|
+
value=dictionary.get("release_date_precision"),
|
|
526
|
+
type_callable=lambda value:
|
|
527
|
+
ReleaseDatePrecisionEnum.validate(value)) \
|
|
528
|
+
and APIHelper.is_valid_type(
|
|
529
|
+
value=dictionary.get("type"),
|
|
530
|
+
type_callable=lambda value:
|
|
531
|
+
Type5Enum.validate(value)) \
|
|
532
|
+
and APIHelper.is_valid_type(
|
|
533
|
+
value=dictionary.get("uri"),
|
|
534
|
+
type_callable=lambda value:
|
|
535
|
+
isinstance(
|
|
536
|
+
value,
|
|
537
|
+
str,
|
|
538
|
+
)) \
|
|
539
|
+
and APIHelper.is_valid_type(
|
|
540
|
+
value=dictionary.get("show"),
|
|
541
|
+
type_callable=lambda value:
|
|
542
|
+
ShowBase.validate(value),
|
|
543
|
+
is_model_dict=True)
|
|
544
|
+
|
|
545
|
+
def __repr__(self):
|
|
546
|
+
"""Return a unambiguous string representation."""
|
|
547
|
+
_audio_preview_url=self.audio_preview_url
|
|
548
|
+
_description=self.description
|
|
549
|
+
_html_description=self.html_description
|
|
550
|
+
_duration_ms=self.duration_ms
|
|
551
|
+
_explicit=self.explicit
|
|
552
|
+
_external_urls=self.external_urls
|
|
553
|
+
_href=self.href
|
|
554
|
+
_id=self.id
|
|
555
|
+
_images=self.images
|
|
556
|
+
_is_externally_hosted=self.is_externally_hosted
|
|
557
|
+
_is_playable=self.is_playable
|
|
558
|
+
_language=(
|
|
559
|
+
self.language
|
|
560
|
+
if hasattr(self, "language")
|
|
561
|
+
else None
|
|
562
|
+
)
|
|
563
|
+
_languages=self.languages
|
|
564
|
+
_name=self.name
|
|
565
|
+
_release_date=self.release_date
|
|
566
|
+
_release_date_precision=self.release_date_precision
|
|
567
|
+
_resume_point=(
|
|
568
|
+
self.resume_point
|
|
569
|
+
if hasattr(self, "resume_point")
|
|
570
|
+
else None
|
|
571
|
+
)
|
|
572
|
+
_mtype=self.mtype
|
|
573
|
+
_uri=self.uri
|
|
574
|
+
_restrictions=(
|
|
575
|
+
self.restrictions
|
|
576
|
+
if hasattr(self, "restrictions")
|
|
577
|
+
else None
|
|
578
|
+
)
|
|
579
|
+
_show=self.show
|
|
580
|
+
return (
|
|
581
|
+
f"{self.__class__.__name__}("
|
|
582
|
+
f"audio_preview_url={_audio_preview_url!r}, "
|
|
583
|
+
f"description={_description!r}, "
|
|
584
|
+
f"html_description={_html_description!r}, "
|
|
585
|
+
f"duration_ms={_duration_ms!r}, "
|
|
586
|
+
f"explicit={_explicit!r}, "
|
|
587
|
+
f"external_urls={_external_urls!r}, "
|
|
588
|
+
f"href={_href!r}, "
|
|
589
|
+
f"id={_id!r}, "
|
|
590
|
+
f"images={_images!r}, "
|
|
591
|
+
f"is_externally_hosted={_is_externally_hosted!r}, "
|
|
592
|
+
f"is_playable={_is_playable!r}, "
|
|
593
|
+
f"language={_language!r}, "
|
|
594
|
+
f"languages={_languages!r}, "
|
|
595
|
+
f"name={_name!r}, "
|
|
596
|
+
f"release_date={_release_date!r}, "
|
|
597
|
+
f"release_date_precision={_release_date_precision!r}, "
|
|
598
|
+
f"resume_point={_resume_point!r}, "
|
|
599
|
+
f"mtype={_mtype!r}, "
|
|
600
|
+
f"uri={_uri!r}, "
|
|
601
|
+
f"restrictions={_restrictions!r}, "
|
|
602
|
+
f"show={_show!r}, "
|
|
603
|
+
f")"
|
|
604
|
+
)
|
|
605
|
+
|
|
606
|
+
def __str__(self):
|
|
607
|
+
"""Return a human-readable string representation."""
|
|
608
|
+
_audio_preview_url=self.audio_preview_url
|
|
609
|
+
_description=self.description
|
|
610
|
+
_html_description=self.html_description
|
|
611
|
+
_duration_ms=self.duration_ms
|
|
612
|
+
_explicit=self.explicit
|
|
613
|
+
_external_urls=self.external_urls
|
|
614
|
+
_href=self.href
|
|
615
|
+
_id=self.id
|
|
616
|
+
_images=self.images
|
|
617
|
+
_is_externally_hosted=self.is_externally_hosted
|
|
618
|
+
_is_playable=self.is_playable
|
|
619
|
+
_language=(
|
|
620
|
+
self.language
|
|
621
|
+
if hasattr(self, "language")
|
|
622
|
+
else None
|
|
623
|
+
)
|
|
624
|
+
_languages=self.languages
|
|
625
|
+
_name=self.name
|
|
626
|
+
_release_date=self.release_date
|
|
627
|
+
_release_date_precision=self.release_date_precision
|
|
628
|
+
_resume_point=(
|
|
629
|
+
self.resume_point
|
|
630
|
+
if hasattr(self, "resume_point")
|
|
631
|
+
else None
|
|
632
|
+
)
|
|
633
|
+
_mtype=self.mtype
|
|
634
|
+
_uri=self.uri
|
|
635
|
+
_restrictions=(
|
|
636
|
+
self.restrictions
|
|
637
|
+
if hasattr(self, "restrictions")
|
|
638
|
+
else None
|
|
639
|
+
)
|
|
640
|
+
_show=self.show
|
|
641
|
+
return (
|
|
642
|
+
f"{self.__class__.__name__}("
|
|
643
|
+
f"audio_preview_url={_audio_preview_url!s}, "
|
|
644
|
+
f"description={_description!s}, "
|
|
645
|
+
f"html_description={_html_description!s}, "
|
|
646
|
+
f"duration_ms={_duration_ms!s}, "
|
|
647
|
+
f"explicit={_explicit!s}, "
|
|
648
|
+
f"external_urls={_external_urls!s}, "
|
|
649
|
+
f"href={_href!s}, "
|
|
650
|
+
f"id={_id!s}, "
|
|
651
|
+
f"images={_images!s}, "
|
|
652
|
+
f"is_externally_hosted={_is_externally_hosted!s}, "
|
|
653
|
+
f"is_playable={_is_playable!s}, "
|
|
654
|
+
f"language={_language!s}, "
|
|
655
|
+
f"languages={_languages!s}, "
|
|
656
|
+
f"name={_name!s}, "
|
|
657
|
+
f"release_date={_release_date!s}, "
|
|
658
|
+
f"release_date_precision={_release_date_precision!s}, "
|
|
659
|
+
f"resume_point={_resume_point!s}, "
|
|
660
|
+
f"mtype={_mtype!s}, "
|
|
661
|
+
f"uri={_uri!s}, "
|
|
662
|
+
f"restrictions={_restrictions!s}, "
|
|
663
|
+
f"show={_show!s}, "
|
|
664
|
+
f")"
|
|
665
|
+
)
|