-
Notifications
You must be signed in to change notification settings - Fork 106
/
tracks.py
114 lines (102 loc) · 3.89 KB
/
tracks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from flask_restx import fields
from .users import user_model, user_model_full
from .common import favorite, ns, repost
track_artwork = ns.model('track_artwork', {
"150x150": fields.String,
"480x480": fields.String,
"1000x1000": fields.String,
})
track_segment = ns.model('track_segment', {
"duration": fields.Float(required=True),
"multihash": fields.String(required=True)
})
track_element = ns.model('track_element', {
"parent_track_id": fields.String(required=True)
})
remix_parent = ns.model('remix_parent', {
"tracks": fields.List(fields.Nested(track_element))
})
full_remix = ns.model('full_remix', {
"parent_track_id": fields.String(required=True),
"user": fields.Nested(user_model_full, required=True),
"has_remix_author_reposted": fields.Boolean(required=True),
"has_remix_author_saved": fields.Boolean(required=True)
})
full_remix_parent = ns.model('full_remix_parent', {
"tracks": fields.List(fields.Nested(full_remix))
})
stem_parent = ns.model('stem_parent', {
"category": fields.String(required=True),
"parent_track_id": fields.Integer(required=True)
})
download = ns.model('download_metadata', {
"cid": fields.String,
"is_downloadable": fields.Boolean(required=True),
"requires_follow": fields.Boolean(required=True),
})
field_visibility = ns.model('field_visibility', {
"mood": fields.Boolean,
"tags": fields.Boolean,
"genre": fields.Boolean,
"share": fields.Boolean,
"play_count": fields.Boolean,
"remixes": fields.Boolean
})
track = ns.model('Track', {
"artwork": fields.Nested(track_artwork, allow_null=True),
"description": fields.String,
"genre": fields.String,
"id": fields.String(required=True),
"mood": fields.String,
"release_date": fields.String,
"remix_of": fields.Nested(remix_parent),
"repost_count": fields.Integer(required=True),
"favorite_count": fields.Integer(required=True),
"tags": fields.String,
"title": fields.String(required=True),
"user": fields.Nested(user_model, required=True),
# Total track duration, rounded to the nearest second
"duration": fields.Integer(required=True),
# Whether or not the track is downloadable, see `download`
# on `track_full` for more details
"downloadable": fields.Boolean,
"play_count": fields.Integer(required=True)
})
track_full = ns.clone('track_full', track, {
"blocknumber": fields.Integer(required=True),
"create_date": fields.String,
"cover_art_sizes": fields.String,
"created_at": fields.String,
"credits_splits": fields.String,
"download": fields.Nested(download),
"isrc": fields.String,
"license": fields.String,
"iswc": fields.String,
"field_visibility": fields.Nested(field_visibility),
"followee_reposts": fields.List(fields.Nested(repost), required=True),
"has_current_user_reposted": fields.Boolean(required=True),
"is_unlisted": fields.Boolean(required=True),
"has_current_user_saved": fields.Boolean(required=True),
"followee_favorites": fields.List(fields.Nested(favorite), required=True),
"route_id": fields.String(required=True),
"stem_of": fields.Nested(stem_parent),
"track_segments": fields.List(fields.Nested(track_segment)),
"updated_at": fields.String,
"user_id": fields.String(required=True),
"user": fields.Nested(user_model_full, required=True),
"is_delete": fields.Boolean,
"cover_art": fields.String,
"remix_of": fields.Nested(full_remix_parent),
})
stem_full = ns.model('stem_full', {
"id": fields.String(required=True),
"parent_id": fields.String(required=True),
"category": fields.String(required=True),
"cid": fields.String(required=True),
"user_id": fields.String(required=True),
"blocknumber": fields.Integer(required=True)
})
remixes_response = ns.model('remixes_response', {
"count": fields.Integer(required=True),
"tracks": fields.List(fields.Nested(track_full))
})