class Playlist(ValidatedImmutableObject): """ :param uri: playlist URI :type uri: string :param name: playlist name :type name: string :param tracks: playlist's tracks :type tracks: list of :class:`Track` elements :param last_modified: playlist's modification time in milliseconds since Unix epoch :type last_modified: int """ #: The playlist URI. Read-only. uri = fields.URI() #: The playlist name. Read-only. name = fields.String() #: The playlist's tracks. Read-only. tracks = fields.Collection(type=Track, container=tuple) #: The playlist modification time in milliseconds since Unix epoch. #: Read-only. #: #: Integer, or :class:`None` if unknown. last_modified = fields.Integer(min=0) # TODO: def insert(self, pos, track): ... ? @property def length(self): """The number of tracks in the playlist. Read-only.""" return len(self.tracks)
class Album(ValidatedImmutableObject): """ :param uri: album URI :type uri: string :param name: album name :type name: string :param artists: album artists :type artists: list of :class:`Artist` :param num_tracks: number of tracks in album :type num_tracks: integer or :class:`None` if unknown :param num_discs: number of discs in album :type num_discs: integer or :class:`None` if unknown :param date: album release date (YYYY or YYYY-MM-DD) :type date: string :param musicbrainz_id: MusicBrainz ID :type musicbrainz_id: string :param images: album image URIs :type images: list of strings """ #: The album URI. Read-only. uri = fields.URI() #: The album name. Read-only. name = fields.String() #: A set of album artists. Read-only. artists = fields.Collection(type=Artist, container=frozenset) #: The number of tracks in the album. Read-only. num_tracks = fields.Integer(min=0) #: The number of discs in the album. Read-only. num_discs = fields.Integer(min=0) #: The album release date. Read-only. date = fields.Date() #: The MusicBrainz ID of the album. Read-only. musicbrainz_id = fields.Identifier() #: The album image URIs. Read-only. images = fields.Collection(type=basestring, container=frozenset)
class HistoryState(ValidatedImmutableObject): """ State of the history controller. Internally used for save/load state. :param history: the track history :type history: list of :class:`HistoryTrack` """ # The tracks. Read-only. history = fields.Collection(type=HistoryTrack, container=tuple)
class SearchResult(ValidatedImmutableObject): """ :param uri: search result URI :type uri: string :param tracks: matching tracks :type tracks: list of :class:`Track` elements :param artists: matching artists :type artists: list of :class:`Artist` elements :param albums: matching albums :type albums: list of :class:`Album` elements """ # The search result URI. Read-only. uri = fields.URI() # The tracks matching the search query. Read-only. tracks = fields.Collection(type=Track, container=tuple) # The artists matching the search query. Read-only. artists = fields.Collection(type=Artist, container=tuple) # The albums matching the search query. Read-only. albums = fields.Collection(type=Album, container=tuple)
class TracklistState(ValidatedImmutableObject): """ State of the tracklist controller. Internally used for save/load state. :param repeat: the repeat mode :type repeat: bool :param consume: the consume mode :type consume: bool :param random: the random mode :type random: bool :param single: the single mode :type single: bool :param next_tlid: the id for the next added track :type next_tlid: int :param tl_tracks: the list of tracks :type tl_tracks: list of :class:`TlTrack` """ # The repeat mode. Read-only. repeat = fields.Boolean() # The consume mode. Read-only. consume = fields.Boolean() # The random mode. Read-only. random = fields.Boolean() # The single mode. Read-only. single = fields.Boolean() # The id of the track to play. Read-only. next_tlid = fields.Integer(min=0) # The list of tracks. Read-only. tl_tracks = fields.Collection(type=TlTrack, container=tuple)
class Track(ValidatedImmutableObject): """ :param uri: track URI :type uri: string :param name: track name :type name: string :param artists: track artists :type artists: list of :class:`Artist` :param album: track album :type album: :class:`Album` :param composers: track composers :type composers: string :param performers: track performers :type performers: string :param genre: track genre :type genre: string :param track_no: track number in album :type track_no: integer or :class:`None` if unknown :param disc_no: disc number in album :type disc_no: integer or :class:`None` if unknown :param date: track release date (YYYY or YYYY-MM-DD) :type date: string :param length: track length in milliseconds :type length: integer or :class:`None` if there is no duration :param bitrate: bitrate in kbit/s :type bitrate: integer :param comment: track comment :type comment: string :param musicbrainz_id: MusicBrainz ID :type musicbrainz_id: string :param last_modified: Represents last modification time :type last_modified: integer or :class:`None` if unknown """ #: The track URI. Read-only. uri = fields.URI() #: The track name. Read-only. name = fields.String() #: A set of track artists. Read-only. artists = fields.Collection(type=Artist, container=frozenset) #: The track :class:`Album`. Read-only. album = fields.Field(type=Album) #: A set of track composers. Read-only. composers = fields.Collection(type=Artist, container=frozenset) #: A set of track performers`. Read-only. performers = fields.Collection(type=Artist, container=frozenset) #: The track genre. Read-only. genre = fields.String() #: The track number in the album. Read-only. track_no = fields.Integer(min=0) #: The disc number in the album. Read-only. disc_no = fields.Integer(min=0) #: The track release date. Read-only. date = fields.Date() #: The track length in milliseconds. Read-only. length = fields.Integer(min=0) #: The track's bitrate in kbit/s. Read-only. bitrate = fields.Integer(min=0) #: The track comment. Read-only. comment = fields.String() #: The MusicBrainz ID of the track. Read-only. musicbrainz_id = fields.Identifier() #: Integer representing when the track was last modified. Exact meaning #: depends on source of track. For local files this is the modification #: time in milliseconds since Unix epoch. For other backends it could be an #: equivalent timestamp or simply a version counter. last_modified = fields.Integer(min=0)