Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)