From d01e2197a69869da00bd217b75de5de6a027dbef Mon Sep 17 00:00:00 2001 From: Steve Soltys Date: Thu, 3 Dec 2020 02:09:51 -0500 Subject: [PATCH] Add songs --- .../model/album/AlbumRelationships.kt | 3 ++ .../applemusic/model/track/Track.kt | 23 +++++++++ .../model/track/TrackRelationship.kt | 11 ++++ .../model/track/musicvideo/MusicVideo.kt | 10 ++++ .../applemusic/model/track/song/Song.kt | 13 +++++ .../model/track/song/SongAttributes.kt | 51 +++++++++++++++++++ .../model/track/song/SongRelationships.kt | 14 +++++ 7 files changed, 125 insertions(+) create mode 100644 src/main/kotlin/com/stevesoltys/applemusic/model/track/Track.kt create mode 100644 src/main/kotlin/com/stevesoltys/applemusic/model/track/TrackRelationship.kt create mode 100644 src/main/kotlin/com/stevesoltys/applemusic/model/track/musicvideo/MusicVideo.kt create mode 100644 src/main/kotlin/com/stevesoltys/applemusic/model/track/song/Song.kt create mode 100644 src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongAttributes.kt create mode 100644 src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongRelationships.kt diff --git a/src/main/kotlin/com/stevesoltys/applemusic/model/album/AlbumRelationships.kt b/src/main/kotlin/com/stevesoltys/applemusic/model/album/AlbumRelationships.kt index ec4ac56..a11bc56 100644 --- a/src/main/kotlin/com/stevesoltys/applemusic/model/album/AlbumRelationships.kt +++ b/src/main/kotlin/com/stevesoltys/applemusic/model/album/AlbumRelationships.kt @@ -1,6 +1,7 @@ package com.stevesoltys.applemusic.model.album import com.stevesoltys.applemusic.model.artist.ArtistRelationship +import com.stevesoltys.applemusic.model.track.TrackRelationship /** * @author Steve Soltys @@ -8,4 +9,6 @@ import com.stevesoltys.applemusic.model.artist.ArtistRelationship class AlbumRelationships { var artists: ArtistRelationship? = null + + val tracks: TrackRelationship? = null } \ No newline at end of file diff --git a/src/main/kotlin/com/stevesoltys/applemusic/model/track/Track.kt b/src/main/kotlin/com/stevesoltys/applemusic/model/track/Track.kt new file mode 100644 index 0000000..d54abf7 --- /dev/null +++ b/src/main/kotlin/com/stevesoltys/applemusic/model/track/Track.kt @@ -0,0 +1,23 @@ +package com.stevesoltys.applemusic.model.track + +import com.fasterxml.jackson.annotation.JsonSubTypes +import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.stevesoltys.applemusic.model.Resource +import com.stevesoltys.applemusic.model.track.musicvideo.MusicVideo +import com.stevesoltys.applemusic.model.track.song.Song + +/** + * @author Steve Soltys + */ +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.PROPERTY, + property = "type" +) +@JsonSubTypes( + value = [ + JsonSubTypes.Type(value = Song::class, name = "songs"), + JsonSubTypes.Type(value = MusicVideo::class, name = "musicVideos") + ] +) +abstract class Track : Resource() \ No newline at end of file diff --git a/src/main/kotlin/com/stevesoltys/applemusic/model/track/TrackRelationship.kt b/src/main/kotlin/com/stevesoltys/applemusic/model/track/TrackRelationship.kt new file mode 100644 index 0000000..eda84c0 --- /dev/null +++ b/src/main/kotlin/com/stevesoltys/applemusic/model/track/TrackRelationship.kt @@ -0,0 +1,11 @@ +package com.stevesoltys.applemusic.model.track + +import com.stevesoltys.applemusic.model.Relationship + +/** + * @author Steve Soltys + */ +class TrackRelationship : Relationship() { + + var data: Array? = null +} \ No newline at end of file diff --git a/src/main/kotlin/com/stevesoltys/applemusic/model/track/musicvideo/MusicVideo.kt b/src/main/kotlin/com/stevesoltys/applemusic/model/track/musicvideo/MusicVideo.kt new file mode 100644 index 0000000..45006da --- /dev/null +++ b/src/main/kotlin/com/stevesoltys/applemusic/model/track/musicvideo/MusicVideo.kt @@ -0,0 +1,10 @@ +package com.stevesoltys.applemusic.model.track.musicvideo + +import com.stevesoltys.applemusic.model.track.Track + +/** + * TODO + * + * @author Steve Soltys + */ +class MusicVideo : Track() \ No newline at end of file diff --git a/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/Song.kt b/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/Song.kt new file mode 100644 index 0000000..eb5b514 --- /dev/null +++ b/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/Song.kt @@ -0,0 +1,13 @@ +package com.stevesoltys.applemusic.model.track.song + +import com.stevesoltys.applemusic.model.track.Track + +/** + * @author Steve Soltys + */ +class Song : Track() { + + var relationships: SongRelationships? = null + + var attributes: SongAttributes? = null +} \ No newline at end of file diff --git a/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongAttributes.kt b/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongAttributes.kt new file mode 100644 index 0000000..9a89c3b --- /dev/null +++ b/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongAttributes.kt @@ -0,0 +1,51 @@ +package com.stevesoltys.applemusic.model.track.song + +import com.fasterxml.jackson.annotation.JsonProperty +import com.stevesoltys.applemusic.model.Artwork +import com.stevesoltys.applemusic.model.EditorialNotes + +/** + * @author Steve Soltys + */ +class SongAttributes { + + var albumName: String? = null + + var artistName: String? = null + + var artwork: Artwork? = null + + var composerName: String? = null + + var contentRating: String? = null + + var discNumber: Int? = null + + var durationInMillis: Long? = null + + var editorialNotes: EditorialNotes? = null + + var genreNames: Array? = null + + var isrc: String? = null + + var movementCount: Int? = null + + var movementName: String? = null + + var movementNumber: Int? = null + + var name: String? = null + + // TODO: Play parameters + + // TODO: Previews + + var releaseDate: String? = null + + var trackNumber: Int? = null + + var url: String? = null + + var workName: String? = null +} \ No newline at end of file diff --git a/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongRelationships.kt b/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongRelationships.kt new file mode 100644 index 0000000..31065a3 --- /dev/null +++ b/src/main/kotlin/com/stevesoltys/applemusic/model/track/song/SongRelationships.kt @@ -0,0 +1,14 @@ +package com.stevesoltys.applemusic.model.track.song + +import com.stevesoltys.applemusic.model.album.AlbumRelationship +import com.stevesoltys.applemusic.model.artist.ArtistRelationship + +/** + * @author Steve Soltys + */ +class SongRelationships { + + var artists: ArtistRelationship? = null + + var albums: AlbumRelationship? = null +} \ No newline at end of file