PK!:55google_music_proto/__about__.py__all__ = [ '__author__', '__author_email__', '__copyright__', '__license__', '__summary__', '__title__', '__url__', '__version__', '__version_info__' ] __title__ = 'google-music-proto' __summary__ = 'Sans-I/O wrapper of Google Music API calls.' __url__ = 'https://github.com/thebigmunch/google-music-proto' __version__ = '2.1.2' __version_info__ = tuple(int(i) for i in __version__.split('.') if i.isdigit()) __author__ = 'thebigmunch' __author_email__ = 'mail@thebigmunch.me' __license__ = 'MIT' __copyright__ = f'2018 {__author__} <{__author_email__}>' PK!vƹgoogle_music_proto/__init__.pyfrom . import mobileclient, musicmanager, oauth from .__about__ import * __all__ = [ *__about__.__all__, 'mobileclient', 'musicmanager', 'oauth' ] PK!ܒ+google_music_proto/mobileclient/__init__.py"""Call, schema, and type definitions for wrapping the Google Music mobile client API.""" from . import calls, constants, models, schemas, types __all__ = ['calls', 'constants', 'models', 'schemas', 'types'] PK!Iqq(google_music_proto/mobileclient/calls.pyimport calendar import time import uuid from attr import attrib, attrs from .models import ( MobileClientBatchCall, MobileClientCall, MobileClientFeedCall, MobileClientFetchCall, MobileClientStreamCall ) from .types import QueryResultType, TrackRating # TODO: Batch call schemas. # TODO: Calls: add songs to playlist, reorder playlist songs, plentries. # TODO: Situations are now returned through a protobuf call? @attrs(slots=True) class ActivityRecordRealtime(MobileClientBatchCall): """Record track play and rate events. Use :meth:`play` to build track play event dicts. Use :meth:`rate` to build track rate events dicts. Parameters: events (list or dict): A list of event dicts or a single event dict. Attributes: endpoint: ``activity/recordrealtime`` method: ``POST`` """ endpoint = 'activity/recordrealtime' method = 'POST' batch_key = 'events' # TODO: termination? @staticmethod def play(track_id, track_duration, *, play_time=None, stream_auth_id=None): """Build a track play event. Parameters: track_id (str): A track ID. track_duration (int or str): The duration of the track. play_time (int, Optional): The amount of time user played the track in seconds. Default: ``track_duration`` stream_auth_id (str, Optional): The stream auth ID from a stream call's headers. Returns: dict: An event dict. """ event_id = str(uuid.uuid1()) timestamp = int(time.time()) play_time = track_duration if play_time is None else play_time * 1000 if track_id.startswith('T'): track = {'metajamCompactKey': track_id} else: track = {'lockerId': track_id} return { 'createdTimestampMillis': timestamp, 'details': { 'play': { 'context': {}, 'isExplicitTrackStart': True, 'playTimeMillis': play_time, 'streamAuthId': stream_auth_id or '', 'termination': 1, 'trackDurationMillis': track_duration, 'woodstockPlayDetails': { 'isWoodstockPlay': False } } }, 'eventId': event_id, 'trackId': track } @staticmethod def rate(track_id, rating): """Build a track rate event. Parameters: track_id (str): A track ID. rating (int): 0 (not rated), 1 (thumbs down), or 5 (thumbs up). Returns: dict: An event dict. """ event_id = str(uuid.uuid1()) timestamp = int(time.time()) if track_id.startswith('T'): track = {'metajamCompactKey': track_id} else: track = {'lockerId': track_id} return { 'createdTimestampMillis': timestamp, 'details': { 'rating': { 'context': {}, 'rating': TrackRating(rating).name } }, 'eventId': event_id, 'trackId': track } @attrs(slots=True) class BrowseStationCategories(MobileClientCall): """Get a listing of station categories from the browse stations tab. Attributes: endpoint: ``browse/stationcategories`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.BrowseStationCategoriesSchema` """ endpoint = 'browse/stationcategories' method = 'GET' @attrs(slots=True) class BrowseStations(MobileClientCall): """Get a listing of stations by category from browse tab. Parameters: station_category_id (str): A station category ID as found in :class:`BrowseStationCategories` response. Attributes: endpoint: ``browse/stations`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.BrowseStationsSchema` """ endpoint = 'browse/stations' method = 'GET' station_category_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__() self._url += f"/{self.station_category_id}" @attrs(slots=True) class BrowseTopChart(MobileClientCall): """Get a listing of the default top charts. Attributes: endpoint: ``browse/topchart`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.BrowseTopChartSchema` """ endpoint = 'browse/topchart' method = 'GET' @attrs(slots=True) class BrowseTopChartForGenre(MobileClientCall): """Get a listing of top charts for a top chart genre. Parameters: genre_id (str): A top chart genre ID as found in :class:`BrowseTopChartGenres` response. Attributes: endpoint: ``browse/topchartforgenres`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.BrowseTopChartSchema` """ endpoint = 'browse/topchartforgenre' method = 'GET' genre_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__() self._url += f'/{self.genre_id}' @attrs(slots=True) class BrowseTopChartGenres(MobileClientCall): """Get a listing of genres from the browse top charts tab. Attributes: endpoint: ``browse/topchartgenres`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.BrowseTopChartGenresSchema` """ endpoint = 'browse/topchartgenres' method = 'GET' @attrs(slots=True) class Config(MobileClientCall): """Get a listing of mobile client configuration settings. Attributes: endpoint: ``config`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.ConfigListSchema` """ endpoint = 'config' method = 'GET' @attrs(slots=True) class DeviceManagementInfo(MobileClientCall): """Get a listing of devices registered to a Google Music account. Attributes: endpoint: ``devicemanagementinfo`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.UserClientIDListSchema` """ endpoint = 'devicemanagementinfo' method = 'GET' @attrs(slots=True) class DeviceManagementInfoDelete(DeviceManagementInfo): """Delete a registered device. Parameters: device_id (str): A device ID as found in :class:`DeviceManagementInfo` response. Attributes: endpoint: ``devicemanagementinfo`` method: ``DELETE`` """ method = 'DELETE' device_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__() self._params.update({ 'delete-id': self.device_id }) @attrs(slots=True) class EphemeralTop(MobileClientFeedCall): """Get a listing of 'Thumbs Up' store tracks. Note: 'Thumbs Up' library tracks are handled client-side. Use the :class:`TrackFeed` call to find library tracks with a ``'rating'`` of 5. Note: The track list is paged. Getting all tracks will require looping through all pages. Parameters: max_results (int, Optional): The maximum number of results on returned page. Default: ``1000`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``ephemeral/top`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.EphemeralTopSchema` """ endpoint = 'ephemeral/top' max_results = attrib(default=1000) start_token = attrib(default=None) updated_min = attrib(default=None) @attrs(slots=True) class ExploreGenres(MobileClientCall): """Get a listing of track genres. Parameters: parent_genre_id (str): A genre ID. If given, a listing of this genre's sub-genres is returned. Attributes: endpoint: ``explore/genres`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.GenreListSchema` """ endpoint = 'explore/genres' method = 'GET' parent_genre_id = attrib(default=None) def __attrs_post_init__(self): super().__attrs_post_init__() if self.parent_genre_id is not None: self._params.update({'parent-genre-id': self.parent_genre_id}) # TODO: 'tabs' param? # ExploreTabsSchema @attrs(slots=True) class ExploreTabs(MobileClientCall): endpoint = 'explore/tabs' method = 'GET' genre_id = attrib(default=None) num_items = attrib(default=100) def __attrs_post_init__(self): super().__attrs_post_init__() self._params.update({ 'num-items': self.num_items }) if self.genre_id is not None: self._params.update(genre=self.genre_id) @attrs(slots=True) class FetchAlbum(MobileClientFetchCall): """Get information about an album. Parameters: album_id (str): The album ID to look up. include_description (bool): Include description of the album in the response. include_tracks (bool): Include tracks from the album in the response. Default: ``True`` Attributes: endpoint: ``fetchalbum`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.AlbumSchema` """ endpoint = 'fetchalbum' album_id = attrib() include_description = attrib(default=True) include_tracks = attrib(default=True) def __attrs_post_init__(self): super().__attrs_post_init__(self.album_id) include_tracks = self.include_tracks if self.include_tracks else None self._params.update({ 'include-description': self.include_description, 'include-tracks': include_tracks }) @attrs(slots=True) class FetchArtist(MobileClientFetchCall): """Get information about an artist. Parameters: artist_id (str): The artist ID to look up. include_albums (bool): Include albums from the artist in the response. Default: ``True`` num_related_artists (int): The maximum number of related artists to include in the response. num_top_tracks (int): The maximum number of top tracks to include in the response. Attributes: endpoint: ``fetchartist`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.ArtistSchema` """ endpoint = 'fetchartist' artist_id = attrib() include_albums = attrib(default=True) num_related_artists = attrib(default=5) num_top_tracks = attrib(default=5) def __attrs_post_init__(self): super().__attrs_post_init__(self.artist_id) self._params.update({ 'include-albums': self.include_albums, 'num-related_artists': self.num_related_artists, 'num-top-tracks': self.num_top_tracks }) @attrs(slots=True) class FetchTrack(MobileClientFetchCall): """Get information about a track. Parameters: track_id (str): A track ID to look up. Attributes: endpoint: ``fetchtrack`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.StoreTrackSchema` """ endpoint = 'fetchtrack' track_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.track_id) @attrs(slots=True) class IsPlaylistShared(MobileClientCall): """Check if a playlist is shared. Parameters: playlist_id (str): A playlist ID. Attributes: endpoint: ``isplaylistshared`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.IsPlaylistSharedSchema` """ endpoint = 'isplaylistshared' method = 'GET' playlist_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__() self._params.update(id=self.playlist_id) @attrs(slots=True) class ListenNowGetDismissedItems(MobileClientCall): """Get a listing of items dismissed from Listen Now tab. Attributes: endpoint: ``listennow/get_dismissed_items`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.ListenNowDismissedItemsSchema` """ endpoint = 'listennow/get_dismissed_items' method = 'GET' @attrs(slots=True) class ListenNowGetListenNowItems(MobileClientCall): """Get a listing of Listen Now items. Note: This does not include situations; use :class:`ListenNowSituations` to get situations. Attributes: endpoint: ``listennow/getlistennowitems`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.ListenNowItemListSchema` """ endpoint = 'listennow/getlistennowitems' method = 'GET' @attrs(slots=True) class ListenNowSituations(MobileClientCall): """Get a listing of Listen Now situations. Parameters: tz_offset (int): A time zone offset from UTC in seconds. Attributes: endpoint: ``listennow/situations`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.ListenNowSituationListSchema` """ endpoint = 'listennow/situations' method = 'POST' tz_offset = attrib(default=None) def __attrs_post_init__(self): super().__attrs_post_init__() if self.tz_offset is None: self.tz_offset = calendar.timegm(time.localtime()) - calendar.timegm(time.gmtime()) self._data.update({ 'requestSignals': {'timeZoneOffsetSecs': self.tz_offset} }) @attrs(slots=True) class PlaylistBatch(MobileClientBatchCall): """Create, delete, and edit playlists. Use :meth:`create` to build playlist creation mutation dicts. Use :meth:`delete` to build playlist delete mutation dicts. Use :meth:`edit` to build playlist edit mutation dicts. Parameters: mutations (list or dict): A list of mutation dicts or a single mutation dict. Attributes: endpoint: ``playlistbatch`` method: ``POST`` """ endpoint = 'playlistbatch' @staticmethod def create(name, description, share_state): """Build a playlist create event. Parameters: name (str): Name to give the playlist. description (str): Description to give the playlist. make_public (bool): If ``True`` and account has a subscription, make playlist public. Default: ``False`` Returns: dict: A mutation dict. """ timestamp = int(time.time() * 1000000) return { 'create': { 'creationTimestamp': timestamp, 'deleted': False, 'description': description, 'lastModifiedTimestamp': timestamp, 'name': name, 'shareState': share_state, 'type': 'USER_GENERATED' } } @staticmethod def delete(playlist_id): """Build a playlist delete event. Parameters: playlist_id (str): A playlist ID. Returns: dict: A mutation dict. """ return {'delete': playlist_id} @staticmethod def edit(playlist_id, name, description, share_state): """Build a playlist edit event. Parameters: playlist_id (str): A playlist ID. name (str): Name to give the playlist. description (str): Description to give the playlist. make_public (bool): If ``True`` and account has a subscription, make playlist public. Returns: dict: A mutation dict. """ return { 'update': { 'description': description, 'id': playlist_id, 'name': name, 'shareState': share_state } } @attrs(slots=True) class PlaylistEntriesBatch(MobileClientBatchCall): """Create, delete, and edit playlist entries. Use :meth:`create` to build playlist entry creation mutation dicts. Use :meth:`delete` to build playlist entry delete mutation dicts. Use :meth:`update` to build playlist entry update mutation dicts. Parameters: mutations (list or dict): A list of mutation dicts or a single mutation dict. Attributes: endpoint: ``plentriesbatch`` method: ``POST`` """ endpoint = 'plentriesbatch' @staticmethod def create(track_id, playlist_id, *, playlist_entry_id=None, preceding_entry_id=None, following_entry_id=None): """Build a playlist entry create event. Note: Parameters: track_id (str): A track ID. playlist_id (str): A playlist ID. playlist_entry_id (str, Optional): A playlist entry ID to assign to the created entry. Default: Automatically generated. preceding_entry_id (str, Optional): The playlist entry ID that should precede the added track. following_entry_id (str, Optional): The playlist entry ID that should follow the added track. Returns: dict: A mutation dict. """ mutation = { 'create': { 'clientId': playlist_entry_id or str(uuid.uuid1()), 'creationTimestamp': '-1', 'deleted': False, 'lastModifiedTimestamp': '0', 'playlistId': playlist_id, 'source': 2 if track_id.startswith('T') else 1, 'trackId': track_id } } if preceding_entry_id is not None: mutation['create']['precedingEntryId'] = preceding_entry_id if following_entry_id is not None: mutation['create']['followingEntryId'] = following_entry_id return mutation @staticmethod def delete(playlist_entry_id): """Build a playlist entry delete event. Parameters: playlist_entry_id (str): A playlist entryID. Returns: dict: A mutation dict. """ return {'delete': playlist_entry_id} @staticmethod def update(playlist_entry, *, preceding_entry_id=None, following_entry_id=None): """Build a playlist entry update event. Parameters: playlist_id (str): A playlist ID. Returns: dict: A mutation dict. """ keys = { 'clientId', 'deleted', 'id', 'lastModifiedTimestamp', 'playlistId', 'source', 'trackId' } entry = {k: v for k, v in playlist_entry.items() if k in keys} entry['creationTimestamp'] = -1 if preceding_entry_id is not None: entry['precedingEntryId'] = preceding_entry_id if following_entry_id is not None: entry['followingEntryId'] = following_entry_id mutation = {'update': entry} return mutation @attrs(slots=True) class PlaylistEntriesShared(MobileClientCall): """Get a listing of shared playlist entries. Note: The shared playlist entries list is paged. Getting all shared playlist entries will require looping through all pages. Parameters: max_results (int, Optional): The maximum number of results on returned page. Default: ``250`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``plentries/shared`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.SharedPlaylistEntryListSchema` """ endpoint = 'plentries/shared' method = 'POST' share_tokens = attrib() max_results = attrib(default=250) start_token = attrib(default=None) updated_min = attrib(default=0) def __attrs_post_init__(self): super().__attrs_post_init__() if not isinstance(self.share_tokens, list): self.share_tokens = [self.share_tokens] self._data = {'entries': []} # TODO: includeDeleted. for share_token in self.share_tokens: self._data['entries'].append( { 'maxResults': self.max_results, 'shareToken': share_token, 'startToken': self.start_token, 'updatedMin': self.updated_min } ) @attrs(slots=True) class PlaylistEntryFeed(MobileClientFeedCall): """Get a listing of user playlist entries. Note: The playlist entry list is paged. Getting all playlist entries will require looping through all pages. Parameters: max_results (int, Optional): The maximum number of results on returned page. Default: ``250`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``plentryfeed`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.PlaylistEntryListSchema` """ endpoint = 'plentryfeed' max_results = attrib(default=250) start_token = attrib(default=None) updated_min = attrib(default=-1) @attrs(slots=True) class PlaylistFeed(MobileClientFeedCall): """Get a listing of library playlists. Note: The playlist list is paged. Getting all playlists will require looping through all pages. Parameters: max_results (int, Optional): The maximum number of results on returned page. Default: ``250`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``playlistfeed`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.PlaylistListSchema` """ endpoint = 'playlistfeed' max_results = attrib(default=250) start_token = attrib(default=None) updated_min = attrib(default=-1) # TODO: Explore params @attrs(slots=True) class Playlists(MobileClientCall): """Get a listing of library playlists. Attributes: endpoint: ``playlists`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.PlaylistListSchema` """ method = 'GET' endpoint = 'playlists' @attrs(slots=True) class PlaylistsCreate(Playlists): """Create a playlist. Parameters: name (str): Name to give the playlist. description (str): Description to give the playlist. public (bool): If ``True`` and account has a subscription, make playlist public. Default: ``False`` Attributes: endpoint: ``playlists`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.PlaylistSchema` """ method = 'POST' name = attrib() description = attrib() public = attrib(default=False) def __attrs_post_init__(self): super().__attrs_post_init__() timestamp = int(time.time() * 1000000) self._data.update({ 'creationTimestamp': timestamp, 'deleted': False, 'description': self.description, 'lastModifiedTimestamp': timestamp, 'name': self.name, 'shareState': 'PUBLIC' if self.public else 'PRIVATE', 'type': 'USER_GENERATED' }) @attrs(slots=True) class PlaylistsDelete(Playlists): """Delete a playlist. Parameters: playlist_id (str): A playlist ID. Attributes: endpoint: ``playlists`` method: ``DELETE`` """ method = 'DELETE' playlist_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__() self._url += f'/{self.playlist_id}' @attrs(slots=True) class PlaylistsUpdate(Playlists): """Edit a playlist. Attributes: endpoint: ``playlists`` method: ``PUT`` schema: :class:`~google_music_proto.mobileclient.schemas.PlaylistSchema` """ method = 'PUT' playlist_id = attrib() name = attrib() description = attrib() public = attrib(default=False) def __attrs_post_init__(self): super().__attrs_post_init__() self._url += f'/{self.playlist_id}' timestamp = int(time.time() * 1000000) self._data.update({ 'creationTimestamp': timestamp, 'deleted': False, 'description': self.description, 'lastModifiedTimestamp': timestamp, 'name': self.name, 'shareState': 'PUBLIC' if self.public else 'PRIVATE', 'type': 'USER_GENERATED' }) @attrs(slots=True) class PodcastBrowse(MobileClientCall): """Get a listing of podcasts from Podcasts browse tab. Parameters: podcast_genre_id (str, Optional): A podcast genre ID as found in :class:`PodcastBrowseHierarchy`. Default: ``'JZCpodcasttopchartall'`` Attributes: endpoint: ``podcast/browse`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.PodcastBrowseSchema` """ endpoint = 'podcast/browse' method = 'GET' podcast_genre_id = attrib(default='JZCpodcasttopchartall') def __attrs_post_init__(self): super().__attrs_post_init__() self._params.update(id=self.podcast_genre_id) @attrs(slots=True) class PodcastBrowseHierarchy(MobileClientCall): """Get a listing of genres from Podcasts browse tab dropdown. Attributes: endpoint: ``podcast/browsehierarchy`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.PodcastBrowseHierarchySchema` """ endpoint = 'podcast/browsehierarchy' method = 'GET' @attrs(slots=True) class PodcastEpisode(MobileClientCall): """Retrieve list of episodes from user-subscribed podcast series. Note: The podcast episode list is paged. Getting all podcast episodes will require looping through all pages. Parameters: device_id (str): A mobile device ID. max_results (int, Optional): The maximum number of results on returned page. Default: ``250`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``podcastepisode`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.PodcastEpisodeListSchema` """ endpoint = 'podcastepisode' method = 'GET' device_id = attrib(default=None) max_results = attrib(default=250) start_token = attrib(default=None) updated_min = attrib(default=-1) def __attrs_post_init__(self): super().__attrs_post_init__() if self.device_id: self._headers.update({ 'X-Device-ID': self.device_id }) self._params.update({ 'max-results': self.max_results, 'start-token': self.start_token, 'updated-min': self.updated_min }) @attrs(slots=True) class PodcastEpisodeStreamURL(MobileClientStreamCall): """Get a URL to stream a podcast episode. Parameters: podcast_episode_id (str): A podcast episode ID. device_id (str): A mobile device ID. quality (str, Optional): Stream quality is one of ``'hi'`` (320Kbps), ``'med'`` (160Kbps), or ``'low'`` (128Kbps). Default: ``'hi'`` """ endpoint = 'fplay' podcast_episode_id = attrib() quality = attrib(default='hi') device_id = attrib(default=None) def __attrs_post_init__(self): super().__attrs_post_init__(self.podcast_episode_id, quality=self.quality, device_id=self.device_id) self._params['mjck'] = self.podcast_episode_id @attrs(slots=True) class PodcastFetchEpisode(MobileClientFetchCall): """Get information about a podcast episode. Parameters: podcast_episode_id (str): A podcast episode ID to look up. Attributes: endpoint: ``podcast/fetchepisode`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.PodcastEpisodeSchema` """ endpoint = 'podcast/fetchepisode' podcast_episode_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.podcast_episode_id) @attrs(slots=True) class PodcastFetchSeries(MobileClientFetchCall): """Get information about a podcast series. Parameters: podcast_series_id (str): A podcast series ID to look up. Attributes: endpoint: ``podcast/fetchseries`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.PodcastSeriesSchema` """ endpoint = 'podcast/fetchseries' podcast_series_id = attrib() max_episodes = attrib(default=50) def __attrs_post_init__(self): super().__attrs_post_init__(self.podcast_series_id) self._params.update(num=self.max_episodes) @attrs(slots=True) class PodcastSeries(MobileClientCall): """Retrieve list of user-subscribed podcast series. Note: The podcast series list is paged. Getting all podcast series will require looping through all pages. Parameters: device_id (str): A mobile device ID. max_results (int, Optional): The maximum number of results on returned page. Default: ``250`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``podcastseries`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.PodcastSeriesListSchema` """ endpoint = 'podcastseries' method = 'GET' device_id = attrib(default=None) max_results = attrib(default=250) start_token = attrib(default=None) updated_min = attrib(default=-1) def __attrs_post_init__(self): super().__attrs_post_init__() if self.device_id: self._headers.update({ 'X-Device-ID': self.device_id }) self._params.update({ 'max-results': self.max_results, 'start-token': self.start_token, 'updated-min': self.updated_min }) # TODO: Implement. @attrs(slots=True) class PodcastSeriesBatchMutate(MobileClientBatchCall): """ Attributes: endpoint: ``podcastseries/batchmutate`` method: ``POST`` """ endpoint = 'podcastseries/batchmutate' @staticmethod def add(): pass @staticmethod def delete(): pass # TODO: **kwargs with attrs. @attrs(slots=True, init=False) class Query(MobileClientCall): """Search Google Music. Parameters: query (str): Search text. max_results (int): Maximum number of results per type to retrieve. Google only acepts values up to 100. Setting to ``None`` allows up to 1000 results per type but won't return playlist results. Default: ``100`` kwargs (bool, Optional): Any of ``albums``, ``artists``, ``genres``, ``playlists``, ``podcasts``, ``situations``, ``songs``, ``stations``, ``videos`` set to ``True`` will include that result type in the response. Setting none of them will include all result types in the response. Attributes: endpoint: ``query`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.SearchResponseSchema` """ endpoint = 'query' method = 'GET' def __init__(self, query, *, max_results=100, **kwargs): super().__init__() if not kwargs: query_types = ','.join( type_.value for type_ in QueryResultType ) else: # Make type names singular for enum lookup. query_types = ','.join( QueryResultType[type_[:-1]].value for type_ in kwargs ) self._params.update({ 'ct': query_types, 'ic': True, # Setting to False or not including this returns old format which stopped including playlists. 'max-results': max_results, 'q': query }) @attrs(slots=True) class QuerySuggestion(MobileClientCall): """Get a search suggestion. Parameters: query (str): Search text. """ endpoint = 'querysuggestion' method = 'POST' query = attrib() def __attrs_post_init__(self): super().__attrs_post_init__() self._data.update({'query': self.query}) # TODO: Implement. @attrs(slots=True) class RadioEditStation(MobileClientBatchCall): endpoint = 'radio/editstation' @staticmethod def add(): pass @staticmethod def delete(station_id): return {'delete': station_id} @staticmethod def get(): pass @attrs(slots=True) class RadioStation(MobileClientFeedCall): """Generate a listing of stations. Note: The station list is paged. Getting all stations will require looping through all pages. Parameters: max_results (int, Optional): The maximum number of results on returned page. Default: ``250`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``radio/station`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.RadioListSchema` """ endpoint = 'radio/station' max_results = attrib(default=250) start_token = attrib(default=None) updated_min = attrib(default=-1) # TODO: rz=sc/dl param? # TODO: libraryContentOnly/recentlyPlayed with no stations? # TODO: Make sure all uses of this endpoint are covered. # TODO: Instant mixes/shuffle. @attrs(slots=True) class RadioStationFeed(MobileClientCall): """Generate stations and get tracks from station(s). Parameters: station_infos (list): A list of station dicts containing keys: ``'station_id'`` or ``'seed'``, ``'num_entries'``, ``'library_content_only'``, ``'recently_played'``. ``station_id`` is a station ID. ``'seed'`` is a dict containing a seed ID and seed type (``'seedType'``). A seed ID can be: ``artistId``, ``albumId``, ``genreId``, ``trackId`` (store track), ``trackLockerId`` (library track). See :data:`~google_music_proto.mobileclient.types.StationSeedType` for seed type values. ``num_entries`` is the maximum number of tracks to return from the station. ``library_content_only`` when True limits the station to library tracks. Default: ``False`` ``recently_played`` is a list of dicts in the form of {'id': '', 'type'} where ``id`` is a track ID and ``type`` is 0 for a library track and 1 for a store track. num_entries (int): The total number of tracks to return. Default: ``25`` num_stations (int): The number of stations to return when no station_infos is provided. Default: ``4`` Attributes: endpoint: ``radio/stationfeed`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.RadioFeedSchema` """ endpoint = 'radio/stationfeed' method = 'POST' station_infos = attrib(default=None) num_entries = attrib(default=25) num_stations = attrib(default=4) # Recently played is list of {'id': , 'type': }. # Type 0 is library, 1 is store. def __attrs_post_init__(self): super().__attrs_post_init__() self._data.update({ 'contentFilter': 1, 'stations': [] }) if self.station_infos is None: self._data.update( mixes={ 'numEntries': self.num_entries, 'numSeeds': self.num_stations } ) else: for station_info in self.station_infos: if ('station_id' in station_info) and (station_info['station_id'] == 'IFL'): del station_info['station_id'] station_info['seed'] = {'seedType': 6} if 'station_id' in station_info: self._data['stations'].append({ 'libraryContentOnly': station_info.get('libraryContentOnly', False), 'numEntries': station_info.get('num_entries', 25), 'radioId': station_info['station_id'], 'recentlyPlayed': station_info.get('recently_played', []) }) elif 'seed' in station_info: self._data['stations'].append({ 'libraryContentOnly': station_info.get('library_content_only', False), 'numEntries': station_info.get('num_entries', 25), 'seed': station_info['seed'], 'recentlyPlayed': station_info.get('recently_played', []) }) @attrs(slots=True) class RadioStationTrackStreamURL(MobileClientStreamCall): """Get a URL to stream a station track with a free account. Note: Subscribed accounts should use :class:`TrackStreamURL`. Unlike the other stream calls, this returns JSON with a 'url' key, not the location in headers. Parameters: track_id (str): A station track ID. wentry_id (str): The ``wentryid`` from a station track dict. session_token (str): The ``sessionToken`` from a :class:`RadioStationFeed` response. quality (str, Optional): Stream quality is one of ``'hi'`` (320Kbps), ``'med'`` (160Kbps), or ``'low'`` (128Kbps). Default: ``'hi'`` device_id (str): A mobile device ID. """ endpoint = 'wplay' track_id = attrib() wentry_id = attrib() session_token = attrib() quality = attrib(default='hi') device_id = attrib(default=None) def __attrs_post_init__(self): super().__attrs_post_init__(self.track_id, quality=self.quality, device_id=self.device_id) del self._headers['X-Device-ID'] # self._params['sesstok'] = self.session_token self._params['wentryid'] = self.wentry_id if self.track_id.startswith('T'): self._params['mjck'] = self.track_id else: self._params['songid'] = self.track_id @attrs(slots=True) class TrackBatch(MobileClientBatchCall): """Add, delete, and edit library tracks. Note: This previously supported editing most metadata. It now only supports changing ``rating``. However, changing the rating should be done with :class:`ActivityRecord` and :meth:`ActivityRecord.rate` instead. Use :meth:`add` to build track add mutation dicts. Use :meth:`delete` to build track delete mutation dicts. Use :meth:`edit` to build track edit mutation dicts. Parameters: mutations (list or dict): A list of mutation dicts or a single mutation dict. Attributes: endpoint: ``trackbatch`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.TrackBatchSchema` """ endpoint = 'trackbatch' @staticmethod def add(store_track): """Build a track add event. Parameters: store_track (dict): A store track dict. Returns: dict: A mutation dict. """ store_track['trackType'] = 8 return {'create': store_track} @staticmethod def delete(track_id): """Build a track add event. Parameters: track_id (str): A track ID. Returns: dict: A mutation dict. """ return {'delete': track_id} @staticmethod def edit(track): """Build a track edit event. Parameters: track (dict): A library track dict. Returns: dict: A mutation dict. """ return track @attrs(slots=True) class TrackFeed(MobileClientFeedCall): """Get a listing of library tracks. Note: The track list is paged. Getting all tracks will require looping through all pages. Parameters: max_results (int, Optional): The maximum number of results on returned page. Default: ``250`` start_token (str, Optional): The token of the page to return. Default: Not sent to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``trackfeed`` method: ``POST`` schema: :class:`~google_music_proto.mobileclient.schemas.TrackListSchema` """ endpoint = 'trackfeed' max_results = attrib(default=250) start_token = attrib(default=None) updated_min = attrib(default=-1) @attrs(slots=True) class Tracks(MobileClientCall): """Get a listing of library tracks. Note: The track list is paged. Getting all tracks will require looping through all pages. Parameters: max_results (int, Optional): The maximum number of results on returned page. Max allowed is ``49995``. Default: ``1000`` start_token (str, Optional): The token of the page to return. Default: ``None`` to get first page. updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. Attributes: endpoint: ``tracks`` method: ``GET`` schema: :class:`~google_music_proto.mobileclient.schemas.TrackListSchema` """ endpoint = 'tracks' method = 'GET' max_results = attrib(default=1000) start_token = attrib(default=None) updated_min = attrib(default=-1) def __attrs_post_init__(self): super().__attrs_post_init__() if self.start_token is not None: self._params.update({'start-token': self.start_token}) self._params.update({ 'max-results': self.max_results, 'updated-min': self.updated_min }) @attrs(slots=True) class TrackStreamURL(MobileClientStreamCall): """Get a URL to stream a track. Parameters: device_id (str): A mobile device ID. track_id (str): A library or store track ID. A Google Music subscription is required to stream store tracks. quality (str, Optional): Stream quality is one of ``'hi'`` (320Kbps), ``'med'`` (160Kbps), or ``'low'`` (128Kbps). Default: ``'hi'`` """ endpoint = 'mplay' track_id = attrib() quality = attrib(default='hi') device_id = attrib(default=None) def __attrs_post_init__(self): super().__attrs_post_init__(self.track_id, quality=self.quality, device_id=self.device_id) if self.track_id.startswith('T'): self._params['mjck'] = self.track_id else: self._params['songid'] = self.track_id PK!#H*,google_music_proto/mobileclient/constants.py__all__ = ['API_URL', 'API_VERSION', 'STREAM_URL'] # TODO: Document base API URL and streaming URLs. API_VERSION = 2.5 API_URL = f'https://mclients.googleapis.com/sj/v{API_VERSION}' STREAM_URL = 'https://mclients.googleapis.com/music' PK!JJ )google_music_proto/mobileclient/models.py__all__ = [ 'MobileClientBatchCall', 'MobileClientCall', 'MobileClientFeedCall', 'MobileClientFetchCall', 'MobileClientSchema', 'MobileClientStreamCall' ] import base64 import hmac import time from hashlib import sha1 from attr import attrib, attrs from marshmallow import Schema, ValidationError, pre_load from .constants import API_URL, STREAM_URL from ..models import Call, JSONCall @attrs(slots=True) class MobileClientCall(JSONCall): base_url = API_URL follow_redirects = True def __attrs_post_init__(self): super().__attrs_post_init__() self._params.update({ 'alt': 'json', 'dv': 0, 'hl': 'en_US', 'tier': 'fr' }) if self.endpoint: self._url = f'{self.base_url}/{self.endpoint}' @attrs(slots=True) class MobileClientBatchCall(MobileClientCall): method = 'POST' batch_key = 'mutations' events_or_mutations = attrib() def __attrs_post_init__(self): super().__attrs_post_init__() if not isinstance(self.events_or_mutations, list): self.events_or_mutations = [self.events_or_mutations] self._data.update({self.batch_key: self.events_or_mutations}) @attrs(slots=True) class MobileClientFeedCall(MobileClientCall): method = 'POST' max_results = attrib(default=None) start_token = attrib(default=None) updated_min = attrib(default=-1) def __attrs_post_init__(self): super().__attrs_post_init__() if self.max_results is not None: self._data.update({'max-results': self.max_results}) if self.start_token is not None: self._data.update({'start-token': self.start_token}) self._params.update({ 'updated-min': self.updated_min }) @attrs(slots=True) class MobileClientFetchCall(MobileClientCall): method = 'GET' def __attrs_post_init__(self, item_id): super().__attrs_post_init__() self._params.update({ 'nid': item_id }) @attrs(slots=True) class MobileClientStreamCall(Call): base_url = STREAM_URL method = 'GET' def __attrs_post_init__(self, item_id, quality='hi', device_id=None): self._params.update({ 'alt': 'json', 'dv': 0, 'locale': 'en_US', 'tier': 'fr' }) self._url = f'{self.base_url}/{self.endpoint}' if device_id: self._headers['X-Device-ID'] = device_id _s1 = base64.b64decode( b'VzeC4H4h+T2f0VI180nVX8x+Mb5HiTtGnKgH52Otj8ZCGDz9jRWyHb6QXK0JskSiOgzQfwTY5xgLLSdUSreaLVMsVVWfxfa8Rw==' ) _s2 = base64.b64decode( b'ZAPnhUkYwQ6y5DdQxWThbvhJHN8msQ1rqJw0ggKdufQjelrKuiGGJI30aswkgCWTDyHkTGK9ynlqTkJ5L4CiGGUabGeo8M6JTQ==' ) # bitwise and of _s1 and _s2 ascii, converted to string _key = ''.join([chr(c1 ^ c2) for (c1, c2) in zip(_s1, _s2)]).encode("ascii") _mac = hmac.new(_key, item_id.encode("utf-8"), sha1) _salt = str(int(time.time() * 1000)) _mac.update(_salt.encode("utf-8")) _sig = base64.urlsafe_b64encode(_mac.digest())[:-1] self._params.update({ 'audio_formats': 'mp3', 'net': 'mob', 'opt': quality, 'pt': 'e', 'sig': _sig, 'slt': _salt }) class MobileClientSchema(Schema): class Meta: strict = True @pre_load def check_for_unknown_fields(self, data): if not isinstance(data, dict): return new_fields = [ key for key in data.keys() if key not in self.fields ] if new_fields: raise ValidationError(f"Unknown fields found: {new_fields}") PK!R/g*google_music_proto/mobileclient/schemas.py# flake8: noqa __all__ = [ 'AlbumSchema', 'ArtRefSchema', 'ArtistSchema', 'AttributionSchema', 'BrowseStationCategoriesSchema', 'BrowseStationsSchema', 'BrowseTopChartGenresSchema', 'BrowseTopChartSchema', 'ColorStyleSchema', 'ConfigEntrySchema', 'ConfigListEntriesSchema', 'ConfigListSchema', 'DeviceManagementInfoSchema', 'DistilledContextWrapperSchema', 'EphemeralTopItemsSchema', 'EphemeralTopSchema', 'ExploreTabEntityGroupSchema', 'ExploreTabEntitySchema', 'ExploreTabSchema', 'ExploreTabsSchema', 'GenreListSchema', 'GenreRefSchema', 'GenreSchema', 'ImageColorStylesSchema', 'ImageRefSchema', 'IsPlaylistSharedSchema', 'ListenNowAlbumIDSchema', 'ListenNowAlbumSchema', 'ListenNowDismissedItemsSchema', 'ListenNowItemListSchema', 'ListenNowItemSchema', 'ListenNowRadioStationIDSchema', 'ListenNowRadioStationSchema', 'ListenNowSituationListSchema', 'PlaylistEntryItemsSchema', 'PlaylistEntryListSchema', 'PlaylistEntrySchema', 'PlaylistListItemsSchema', 'PlaylistListSchema', 'PlaylistSchema', 'PodcastBrowseHierarchySchema', 'PodcastBrowseSchema', 'PodcastEpisodeListItemsSchema', 'PodcastEpisodeListSchema', 'PodcastEpisodeSchema', 'PodcastGenreSchema', 'PodcastSeriesListItemsSchema', 'PodcastSeriesListSchema', 'PodcastSeriesSchema', 'PodcastSeriesUserPreferencesSchema', 'RadioFeedItemsSchema', 'RadioFeedSchema', 'RadioListItemsSchema', 'RadioListSchema', 'RadioSeedMetadataSchema', 'RadioSeedSchema', 'RadioStationSchema', 'SearchResponseSchema', 'SearchResultSchema', 'SearchResultVideoSchema', 'SearchSuggestedQuerySchema', 'SearchSuggestionSchema', 'SharedPlaylistEntryItemSchema', 'SharedPlaylistEntryListSchema', 'SharedPlaylistEntrySchema', 'SituationSchema', 'StationCategorySchema', 'StoreTrackSchema', 'TopChartHeaderSchema', 'TopChartSchema', 'TrackBatchItemSchema', 'TrackBatchSchema', 'TrackListItemsSchema', 'TrackListSchema', 'TrackSchema', 'UploadedTrackSchema', 'UserClientIDListItemsSchema', 'UserClientIDListSchema', 'VideoSchema', 'VideoThumbnailSchema' ] from marshmallow import fields from marshmallow.validate import Equal, OneOf, Range from .models import MobileClientSchema class AdTargetingSchema(MobileClientSchema): """ **Validates**:: {'keyword': ['keyword']} """ keyword = fields.List(fields.Str, required=True) class ArtRefSchema(MobileClientSchema): """ **Validates**:: { 'url': 'url' } """ url = fields.Str(required=True) class AttributionSchema(MobileClientSchema): """ **Validates**:: { 'kind': 'sj#attribution', 'license_title': 'license title', 'license_url': 'license url', 'source_title': 'source title', 'source_url': 'source url' } """ kind = fields.Str(required=True, validate=Equal('sj#attribution')) license_title = fields.Str() license_url = fields.Str() source_title = fields.Str() source_url = fields.Str() class ColorStyleSchema(MobileClientSchema): """ **Validates**:: { 'blue': 0, 'green': 0, 'red': 0 } """ blue = fields.Int(required=True, validate=Range(0, 255)) green = fields.Int(required=True, validate=Range(0, 255)) red = fields.Int(required=True, validate=Range(0, 255)) class DistilledContextWrapperSchema(MobileClientSchema): """ **Validates**:: { 'distilledContextToken': 'distilledContextToken' } """ distilledContextToken = fields.Str(required=True) class GenreRefSchema(MobileClientSchema): """ **Validates**:: { 'id': 'id', 'kind': 'sj#genreRef', 'title': 'title' } """ id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#genreRef')) title = fields.Str(required=True) class ImageColorStylesSchema(MobileClientSchema): """ **Validates**:: { 'accent': { 'blue': 0, 'green': 0, 'red': 0 }, 'primary': { 'blue': 0, 'green': 0, 'red': 0 }, 'scrim': { 'blue': 0, 'green': 0, 'red': 0 } } """ accent = fields.Nested(ColorStyleSchema, required=True) primary = fields.Nested(ColorStyleSchema, required=True) scrim = fields.Nested(ColorStyleSchema, required=True) class ImageRefSchema(MobileClientSchema): """ **Validates**:: { 'aspectRatio': 'aspectRatio', 'autogen': False, 'colorStyles': { 'accent': { 'blue': 0, 'green': 0, 'red': 0 }, 'primary': { 'blue': 0, 'green': 0, 'red': 0 }, 'scrim': { 'blue': 0, 'green': 0, 'red': 0 } }, 'kind': 'sj#imageRef', 'url': 'url' } """ aspectRatio = fields.Str() autogen = fields.Bool() colorStyles = fields.Nested(ImageColorStylesSchema) kind = fields.Str(required=True, validate=Equal('sj#imageRef')) url = fields.Str(required=True) class VideoThumbnailSchema(MobileClientSchema): """ **Validates**:: { 'height': 100, 'url': 'url', 'width': 100 } """ height = fields.Int(required=True) url = fields.Str(required=True) width = fields.Int(required=True) class VideoSchema(MobileClientSchema): """ **Validates**:: { 'id': 'id', 'kind': 'sj#video', 'thumbnails': [ { 'height': 100, 'url': 'url', 'width': 100 } ] } """ id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#video')) thumbnails = fields.Nested(VideoThumbnailSchema, many=True) class StoreTrackSchema(MobileClientSchema): """ **Validates**:: { 'album': 'album', 'albumArtRef': [IMAGE_REF], 'albumArtist': 'albumArtist', 'albumAvailableForPurchase': True, 'albumId': 'albumId', 'artist': 'artist', 'artistArtRef': [IMAGE_REF], 'artistId': ['artistId'], 'composer': 'composer', 'discNumber': 1, 'durationMillis': 'durationMillis', 'estimatedSize': 'estimatedSize', 'explicitType': 'explicitType', 'genre': 'genre', 'kind': 'sj#track', 'lastModifiedTimestamp': 'lastModifiedTimestamp', 'lastRatingChangeTimestamp': 'lastRatingChangeTimestamp', 'nid': 'nid', 'playCount': 42, 'primaryVideo': VIDEO, 'rating': '5', 'storeId': 'storeId', 'title': 'title', 'trackAvailableForPurchase': True, 'trackAvailableForSubscription': True, 'trackNumber': 1, 'trackType': 'trackType', 'year': 2000 } """ album = fields.Str(required=True) albumArtRef = fields.Nested(ImageRefSchema, many=True, required=True) albumArtist = fields.Str(required=True) albumAvailableForPurchase = fields.Bool(required=True) albumId = fields.Str(required=True) artist = fields.Str(required=True) artistArtRef = fields.Nested(ImageRefSchema, many=True) artistId = fields.List(fields.Str, required=True) composer = fields.Str(required=True) discNumber = fields.Int(required=True) durationMillis = fields.Str(required=True) estimatedSize = fields.Str(required=True) explicitType = fields.Str(required=True) genre = fields.Str() kind = fields.Str(required=True, validate=Equal('sj#track')) lastModifiedTimestamp = fields.Str() lastRatingChangeTimestamp = fields.Str() nid = fields.Str(required=True) playCount = fields.Int() primaryVideo = fields.Nested(VideoSchema) rating = fields.Str( validate=OneOf( ['0', '1', '5'], labels=('Not Rated', 'Thumbs Down', 'Thumbs Up'), error="rating is not one of {choices} ({labels})." ) ) storeId = fields.Str(required=True) title = fields.Str(required=True) trackAvailableForPurchase = fields.Bool(required=True) trackAvailableForSubscription = fields.Bool(required=True) trackNumber = fields.Int(required=True) trackType = fields.Str(required=True) year = fields.Int(required=True) class UploadedTrackSchema(MobileClientSchema): """ **Validates**:: { 'album': 'album', 'albumArtRef': [IMAGE_REF], 'albumArtist': 'albumArtist', 'albumId': 'albumId', 'artist': 'artist', 'artistArtRef': [IMAGE_REF], 'artistId': ['artistId'], 'beatsPerMinute': 142, 'clientId': 'clientId', 'comment': 'comment', 'composer': 'composer', 'creationTimestamp': 'creationTimestamp', 'deleted': False, 'discNumber': 1, 'durationMillis': 'durationMillis', 'estimatedSize': 'estimatedSize', 'explicitType': 'explicitType', 'genre': 'genre', 'id': 'id', 'kind': 'sj#track', 'lastModifiedTimestamp': 'lastModifiedTimestamp', 'lastRatingChangeTimestamp': 'lastRatingChangeTimestamp', 'nid': 'nid', 'playCount': 42, 'primaryVideo': VIDEO, 'rating': '5', 'recentTimestamp': 'recentTimestamp', 'storeId': 'storeId', 'title': 'title', 'totalDiscCount': 1, 'totalTrackCount': 1, 'trackNumber': 1, 'trackType': 'trackType', 'year': 2000 } """ album = fields.Str(required=True) albumArtRef = fields.Nested(ImageRefSchema, many=True) albumArtist = fields.Str() albumId = fields.Str() artist = fields.Str(required=True) artistArtRef = fields.Nested(ImageRefSchema, many=True) artistId = fields.List(fields.Str) beatsPerMinute = fields.Int() clientId = fields.Str(required=True) comment = fields.Str() composer = fields.Str() creationTimestamp = fields.Str(required=True) deleted = fields.Bool(required=True) discNumber = fields.Int() durationMillis = fields.Str(required=True) estimatedSize = fields.Str() explicitType = fields.Str() genre = fields.Str() id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#track')) lastModifiedTimestamp = fields.Str(required=True) lastRatingChangeTimestamp = fields.Str() nid = fields.Str() playCount = fields.Int() primaryVideo = fields.Nested(VideoSchema) rating = fields.Str( required=True, validate=OneOf( ['0', '1', '5'], labels=('Not Rated', 'Thumbs Down', 'Thumbs Up'), error="rating is not one of {choices} ({labels})." ) ) recentTimestamp = fields.Str(required=True) storeId = fields.Str() title = fields.Str(required=True) totalDiscCount = fields.Int() totalTrackCount = fields.Int() trackNumber = fields.Int() trackType = fields.Str() year = fields.Int() class TrackSchema(MobileClientSchema): """Combination of :class:`StoreTrackSchema` and :class:`UploadedTrackSchema`.""" album = fields.Str(required=True) albumArtRef = fields.Nested(ImageRefSchema, many=True) albumArtist = fields.Str() albumAvailableForPurchase = fields.Bool() albumId = fields.Str() artist = fields.Str(required=True) artistArtRef = fields.Nested(ImageRefSchema, many=True) artistId = fields.List(fields.Str) beatsPerMinute = fields.Integer() clientId = fields.Str() comment = fields.Str() composer = fields.Str() creationTimestamp = fields.Str() deleted = fields.Bool() discNumber = fields.Int() durationMillis = fields.Str(required=True) estimatedSize = fields.Str() explicitType = fields.Str() genre = fields.Str() id = fields.Str() kind = fields.Str(required=True, validate=Equal('sj#track')) lastModifiedTimestamp = fields.Str() lastRatingChangeTimestamp = fields.Str() nid = fields.Str() playCount = fields.Int() primaryVideo = fields.Nested(VideoSchema) rating = fields.Str( validate=OneOf( ['0', '1', '5'], labels=('Not Rated', 'Thumbs Down', 'Thumbs Up'), error="rating is not one of {choices} ({labels})." ) ) recentTimestamp = fields.Str() storeId = fields.Str() title = fields.Str(required=True) totalDiscCount = fields.Int() totalTrackCount = fields.Int() trackAvailableForPurchase = fields.Bool() trackAvailableForSubscription = fields.Bool() trackNumber = fields.Int() trackType = fields.Str() year = fields.Int() class GenreSchema(MobileClientSchema): """ **Validates**:: { 'children': ['child'], 'id': 'id', 'images': [ART_REF], 'kind': 'sj#musicGenre', 'name': 'name', 'parentId': 'parentId' } """ children = fields.List(fields.Str) id = fields.Str(required=True) images = fields.Nested(ArtRefSchema, many=True) kind = fields.Str(required=True, validate=Equal('sj#musicGenre')) name = fields.Str() parentId = fields.Str() class PlaylistSchema(MobileClientSchema): """ **Validates**:: { 'accessControlled': False, 'albumArtRef': [ART_REF], 'clientId': 'clientId', 'contentType': 'contentType', 'creationTimestamp': 'creationTimestamp', 'deleted': False, 'description': 'description', 'explicitType': 'explicitType', 'id': 'id', 'kind': 'sj#playlist', 'lastModifiedTimestamp': 'lastModifiedTimestamp', 'name': 'name', 'ownerName': 'ownerName', 'ownerProfilePhotoUrl': 'ownerProfilePhotoUrl', 'recentTimestamp': 'recentTimestamp', 'shareState': 'shareState', 'shareToken': 'shareToken', 'type': 'USER_GENERATED' } """ accessControlled = fields.Bool() albumArtRef = fields.Nested(ArtRefSchema, many=True) clientId = fields.Str() contentType = fields.Str() creationTimestamp = fields.Str(required=True) deleted = fields.Bool(required=False) description = fields.Str() explicitType = fields.Str() id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#playlist')) lastModifiedTimestamp = fields.Str(required=True) name = fields.Str(required=True) ownerName = fields.Str() ownerProfilePhotoUrl = fields.Str() recentTimestamp = fields.Str() shareState = fields.Str(validate=OneOf(['PRIVATE', 'PUBLIC'])) shareToken = fields.Str(required=True) type = fields.Str( validate=OneOf( ['MAGIC', 'SHARED', 'USER_GENERATED'], error="type is not one of {choices}." ) ) class AlbumSchema(MobileClientSchema): """ **Validates**:: { 'albumArtist': 'albumArtist', 'albumArtRef': 'albumArtRef', 'albumId': 'albumId', 'artist': 'artist', 'artistId': ['artistId'], 'contentType': 'contentType', 'description': 'description', 'description_attribution': ATTRIBUTION, 'explicitType': 'explicitType', 'kind': 'sj#album', 'name': 'name', 'tracks': [STORE_TRACK], 'year': 2000 } """ albumArtist = fields.Str() albumArtRef = fields.Str() albumId = fields.Str(required=True) artist = fields.Str() artistId = fields.List(fields.Str) contentType = fields.Str() description = fields.Str() description_attribution = fields.Nested(AttributionSchema) explicitType = fields.Str() kind = fields.Str(required=True, validate=Equal('sj#album')) name = fields.Str(required=True) tracks = fields.Nested(StoreTrackSchema, many=True) year = fields.Int() class ArtistSchema(MobileClientSchema): """ **Validates**:: { 'albums': [ALBUM], 'artistArtRef': 'artistArtRef', 'artistArtRefs': [IMAGE_REF], 'artistBio': 'artistBio', 'artistId': 'artistId', 'artist_bio_attribution': ATTRIBUTION, 'kind': 'sj#artist', 'name': 'name', 'related_artists': [], 'topTracks': [STORE_TRACK], 'total_albums': 1 } """ albums = fields.Nested(AlbumSchema, many=True) artistArtRef = fields.Str() artistArtRefs = fields.Nested(ImageRefSchema, many=True) artistBio = fields.Str() artistId = fields.Str() artist_bio_attribution = fields.Nested(AttributionSchema) kind = fields.Str(required=True, validate=Equal('sj#artist')) name = fields.Str(required=True) related_artists = fields.Nested('ArtistSchema', many=True) topTracks = fields.Nested(StoreTrackSchema, many=True) total_albums = fields.Int() class DeviceManagementInfoSchema(MobileClientSchema): """ **Validates**:: { 'friendlyName': 'friendlyName', 'id': 'id', 'kind': 'sj#devicemanagementinfo', 'lastAccessedTimeMs': 42, 'smartPhone': True, 'type': 'type' } """ friendlyName = fields.Str(required=True) id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#devicemanagementinfo')) lastAccessedTimeMs = fields.Int(required=True) smartPhone = fields.Bool() type = fields.Str(required=True) class ExploreTabEntitySchema(MobileClientSchema): """ **Validates**:: { 'album': ALBUM, 'genre': GENRE, 'kind': 'sj#exEntity', 'playlist': PLAYLIST, 'track': STORE_TRACK } """ album = fields.Nested(AlbumSchema) genre = fields.Nested(GenreSchema) kind = fields.Str(requried=True, validate=Equal('sj#exEntity')) playlist = fields.Nested(PlaylistSchema( only=['albumArtRef', 'description', 'kind', 'name', 'ownerName', 'shareToken', 'type']) ) track = fields.Nested(StoreTrackSchema) class ExploreTabEntityGroupSchema(MobileClientSchema): """ **Validates**:: { 'continuationToken': 'continuationToken', 'entities': [EXPLORE_TAB_ENTITY], 'group_type': 'group_type', 'kind': 'sj#exEntityGroup', 'start_position': 0, 'title': 'title' } """ continuation_token = fields.Str() description = fields.Str() entities = fields.Nested(ExploreTabEntitySchema, many=True) group_type = fields.Str(validate=OneOf(['KEY_ALBUMS', 'NEW_RELEASE', 'TOP_ALBUMS', 'TOP_PLAYLISTS', 'TOP_SONGS'])) kind = fields.Str(required=True, validate=Equal('sj#exEntityGroup')) start_position = fields.Int() title = fields.Str() class ExploreTabSchema(MobileClientSchema): """ **Validates**:: { 'groups': [EXPLORE_TAB_ENTITY_GROUP], 'kind': 'sj#exTab', 'tab_type': 'tab_type' } """ groups = fields.Nested(ExploreTabEntityGroupSchema, many=True) kind = fields.Str(required=True, validate=Equal('sj#exTab')) tab_type = fields.Str(validate=OneOf(['GENRES', 'NEW_RELEASES', 'RECOMMENDED', 'TOP_CHARTS'])) class PlaylistEntrySchema(MobileClientSchema): """ **Validates**:: { 'absolutePosition': 'absolutePosition', 'clientId': 'clientId', 'creationTimestamp': 'creationTimestamp', 'deleted': False, 'id': 'id', 'kind': 'sj#playlistEntry', 'lastModifiedTimestamp': 'lastModifiedTimestamp', 'playlistId': 'playlistId', 'track': STORE_TRACK, 'trackId': 'trackId' } """ absolutePosition = fields.Str(required=True) clientId = fields.Str(required=True) creationTimestamp = fields.Str(required=True) deleted = fields.Bool(required=True) id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#playlistEntry')) lastModifiedTimestamp = fields.Str(required=True) playlistId = fields.Str(required=True) track = fields.Nested(StoreTrackSchema) trackId = fields.Str(required=True) class PodcastEpisodeSchema(MobileClientSchema): """ **Validates**:: { 'art': [IMAGE_REF], 'author': 'author', 'deleted': False, 'description': 'description', 'durationMillis': 'durationMillis', 'episodeId': 'episodeId', 'explicitType': 'explicitType', 'fileSize': 'fileSize', 'playbackPositionMillis': 'playbackPositionMillis', 'publicationTimestampMillis': 'publicationTimestampMillis', 'seriesId': 'seriesId', 'seriesTitle': 'seriesTitle', 'title': 'title' } """ art = fields.Nested(ImageRefSchema, many=True) author = fields.Str() deleted = fields.Bool() description = fields.Str() durationMillis = fields.Str(required=True) episodeId = fields.Str(required=True) explicitType = fields.Str(required=True) fileSize = fields.Str(required=True) playbackPositionMillis = fields.Str() publicationTimestampMillis = fields.Str() seriesId = fields.Str(required=True) seriesTitle = fields.Str(required=True) title = fields.Str(required=True) class PodcastGenreSchema(MobileClientSchema): """ **Validates**:: { 'displayName': 'displayName', 'id': 'id', 'subgroups': [] } """ displayName = fields.Str(required=True) id = fields.Str(required=True) subgroups = fields.Nested('PodcastGenreSchema', many=True) class PodcastSeriesUserPreferencesSchema(MobileClientSchema): """ **Validates**:: { 'autoDownload': False, 'notifyOnNewEpisode': False, 'subscribed': True } """ autoDownload = fields.Bool() notifyOnNewEpisode = fields.Bool() subscribed = fields.Bool(required=True) class PodcastSeriesSchema(MobileClientSchema): """ **Validates**:: { 'art': [IMAGE_REF], 'author': 'author', 'continuationToken': 'continuationToken', 'copyright': 'copyright', 'description': 'description', 'episodes': [PODCAST_EPISODE], 'explicitType': 'explicitType', 'link': 'link', 'seriesId': 'seriesId', 'title': 'title', 'totalNumEpisodes': 42, 'userPreferences': PODCAST_SERIES_USER_PREFERENCES } """ art = fields.Nested(ImageRefSchema, many=True) author = fields.Str(required=True) continuationToken = fields.Str() copyright = fields.Str() description = fields.Str() episodes = fields.Nested(PodcastEpisodeSchema, many=True) explicitType = fields.Str(required=True) link = fields.Str() seriesId = fields.Str(required=True) title = fields.Str(required=True) totalNumEpisodes = fields.Int(required=True) userPreferences = fields.Nested(PodcastSeriesUserPreferencesSchema) class RadioSeedMetadataSchema(MobileClientSchema): """ **Validates**:: { 'artist': ARTIST, 'genre': GENRE, 'kind': 'sj#radioSeedMetadata', 'track': STORE_TRACK } """ artist = fields.Nested(ArtistSchema) genre = fields.Nested(GenreSchema) kind = fields.Str(required=True, validate=Equal('sj#radioSeedMetadata')) track = fields.Nested(TrackSchema) class RadioSeedSchema(MobileClientSchema): """ **Validates**:: { 'albumId': 'albumId', 'artistId': 'artistId', 'curatedStationId': 'curatedStationId', 'genreId': 'genreId', 'kind': 'sj#radioSeed', 'metadataSeed': RADIO_SEED_METADATA, 'seedType': 'seedType', 'trackId': 'trackId', 'trackLockerId': 'trackLockerId' } """ albumId = fields.Str() artistId = fields.Str() curatedStationId = fields.Str() genreId = fields.Str() kind = fields.Str(required=True, validate=Equal('sj#radioSeed')) metadataSeed = fields.Nested(RadioSeedMetadataSchema) seedType = fields.Str(required=True) trackId = fields.Str() trackLockerId = fields.Str() class RadioStationSchema(MobileClientSchema): """ **Validates**:: { 'byline': 'byline', 'clientId': 'clientId', 'compositeArtRefs': [IMAGE_REF], 'contentTypes': ['contentType'], 'deleted': False, 'description': 'description', 'enforcementResult': False, 'id': 'id', 'imageUrl': 'imageUrl', 'imageUrls': [IMAGE_REF], 'inLibrary': True, 'kind': 'sj#radioStation', 'lastModifiedTimestamp': 'lastModifiedTimestamp', 'name': 'name', 'recentTimestamp': 'recentTimestamp', 'seed': RADIO_SEED, 'sessionToken': 'sessionToken', 'skipEventHistory': [], 'stationSeeds': [RADIO_SEED], 'tracks': [STORE_TRACK] } """ adTargeting = fields.Nested(AdTargetingSchema) byline = fields.Str() clientId = fields.Str() compositeArtRefs = fields.Nested(ImageRefSchema, many=True) contentTypes = fields.List(fields.Str) deleted = fields.Bool() description = fields.Str() enforcementResult = fields.Bool() id = fields.Str() imageUrl = fields.Str() imageUrls = fields.Nested(ImageRefSchema, many=True) inLibrary = fields.Bool() kind = fields.Str(required=True, validate=Equal('sj#radioStation')) lastModifiedTimestamp = fields.Str() name = fields.Str() recentTimestamp = fields.Str() seed = fields.Nested(RadioSeedSchema) sessionToken = fields.Str() skipEventHistory = fields.List(fields.Dict) # TODO What's in this array? stationSeeds = fields.Nested(RadioSeedSchema, many=True) tracks = fields.Nested(TrackSchema, many=True) class SharedPlaylistEntrySchema(MobileClientSchema): """ **Validates**:: { 'absolutePosition': 'absolutePosition', 'creationTimestamp': 'creationTimestamp', 'deleted': False, 'id': 'id', 'kind': 'sj#playlistEntry', 'lastModifiedTimestamp': 'lastModifiedTimestamp', 'source': 'source', 'track': STORE_TRACK, 'trackId': 'trackId' } """ absolutePosition = fields.Str(required=True) creationTimestamp = fields.Str(required=True) deleted = fields.Bool(required=True) id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#playlistEntry')) lastModifiedTimestamp = fields.Str(required=True) source = fields.Str() track = fields.Nested(StoreTrackSchema) trackId = fields.Str(required=True) class SituationSchema(MobileClientSchema): """ **Validates**:: { 'description': 'description', 'id': 'id', 'imageUrl': 'imageUrl', 'situations': [], 'stations': [RADIO_STATION], 'title': 'title', 'wideImageUrl': 'wideImageUrl' } """ description = fields.Str(required=True) id = fields.Str(required=True) imageUrl = fields.Str() situations = fields.Nested('SituationSchema', many=True) stations = fields.Nested(RadioStationSchema, many=True) title = fields.Str(required=True) wideImageUrl = fields.Str() class StationCategorySchema(MobileClientSchema): """ **Validates**:: { 'display_name': 'display_name', 'id': 'id', 'kind': 'sj#stationCategory', 'subcategories': [] } """ display_name = fields.Str(required=True) id = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#stationCategory')) subcategories = fields.Nested('StationCategorySchema', many=True) class TopChartSchema(MobileClientSchema): """ **Validates**:: { 'albums': [ALBUM], 'kind': 'sj#topChart', 'tracks': [STORE_TRACK] } """ albums = fields.Nested(AlbumSchema, required=True, many=True) kind = fields.Str(required=True, validate=Equal('sj#topChart')) tracks = fields.Nested(StoreTrackSchema, required=True, many=True) class TopChartHeaderSchema(MobileClientSchema): """ **Validates**:: { 'header_image': IMAGE_REF, 'kind': 'sj#topChartHeader' } """ header_image = fields.Nested(ImageRefSchema, required=True) kind = fields.Str(required=True, validate=Equal('sj#topChartHeader')) class BrowseStationCategoriesSchema(MobileClientSchema): """ **Validates**:: { 'kind': 'sj#getStationCategoriesResponse', 'root': STATION_CATEGORY } """ kind = fields.Str(required=True, validate=Equal('sj#getStationCategoriesResponse')) root = fields.Nested(StationCategorySchema, required=True) class BrowseStationsSchema(MobileClientSchema): """ **Validates**:: { 'kind': 'sj#getStationsResponse', 'stations': [RADIO_STATION] } """ kind = fields.Str(required=True, validate=Equal('sj#getStationsResponse')) stations = fields.Nested(RadioStationSchema, required=True, many=True) class BrowseTopChartSchema(MobileClientSchema): """ **Validates**:: { 'chart': TOP_CHART, 'header': TOP_CHART_HEADER } """ chart = fields.Nested(TopChartSchema, required=True) header = fields.Nested(TopChartHeaderSchema, required=True) class BrowseTopChartGenresSchema(MobileClientSchema): """ **Validates**:: { 'genres': [GENRE_REF] } """ genres = fields.Nested(GenreRefSchema, required=True, many=True) class ConfigEntrySchema(MobileClientSchema): """ **Validates**:: { 'key': 'key', 'kind': 'sj#configEntry', 'value': 'value' } """ key = fields.Str(required=True) kind = fields.Str(required=True, validate=Equal('sj#configEntry')) value = fields.Str(required=True) class ConfigListEntriesSchema(MobileClientSchema): """ **Validates**:: { 'entries': [CONFIG_ENTRY] } """ entries = fields.Nested(ConfigEntrySchema, many=True) class ConfigListSchema(MobileClientSchema): """ **Validates**:: { 'data': CONFIG_LIST_ENTRIES, 'kind': 'sj#configList' } """ data = fields.Nested(ConfigListEntriesSchema) kind = fields.Str(required=True, validate=Equal('sj#configList')) class EphemeralTopItemsSchema(MobileClientSchema): """ **Validates**:: { 'items' = [STORE_TRACKS] } """ items = fields.Nested(StoreTrackSchema, many=True) class EphemeralTopSchema(MobileClientSchema): """ **Validates**:: { 'data': EPHEMERAL_TOP_ITEMS, 'kind': 'sj#trackList', 'nextPageToken': 'nextPageToken' } """ data = fields.Nested(EphemeralTopItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#trackList')) nextPageToken = fields.Str() class ExploreTabsSchema(MobileClientSchema): """ **Validates**:: { 'kind': 'sj#exGetTabsResponse', 'tabs': [EXPLORE_TAB] } """ kind = fields.Str(required=True, validate=Equal('sj#exGetTabsResponse')) tabs = fields.Nested(ExploreTabSchema, many=True) class GenreListSchema(MobileClientSchema): """ **Validates**:: { 'genres': [GENRE], 'kind': 'sj#exGetMusicGenresResponse' } """ genres = fields.Nested(GenreSchema, many=True) kind = fields.Str(required=True, validate=Equal('sj#exGetMusicGenresResponse')) class IsPlaylistSharedSchema(MobileClientSchema): """ **Validates**:: { 'is_shared': True } """ is_shared = fields.Bool(required=True) class ListenNowAlbumIDSchema(MobileClientSchema): """ **Validates**:: { 'artist': 'artist', 'metajamCompactKey': 'metajamCompactKey', 'title': 'title' } """ artist = fields.Str(required=True) metajamCompactKey = fields.Str(required=True) title = fields.Str(required=True) class ListenNowAlbumSchema(MobileClientSchema): """ **Validates**:: { 'artist_metajam_id': 'artist_metajam_id', 'artist_name': 'artist_name', 'artist_profile_image': ART_REF, 'description': 'description', 'description_attribution': ATTRIBUTION, 'explicitType': 'explicitType', 'id': LISTEN_NOW_ALBUM_ID, 'title': 'title' } """ artist_metajam_id = fields.Str(required=True) artist_name = fields.Str(required=True) artist_profile_image = fields.Nested(ArtRefSchema, required=True) description = fields.Str(required=True) description_attribution = fields.Nested(AttributionSchema) explicitType = fields.Str() id = fields.Nested(ListenNowAlbumIDSchema, required=True) title = fields.Str(required=True) class ListenNowDismissedItemSchema(MobileClientSchema): dismissalTimestamp = fields.Str(required=True) item_id = fields.Dict() # TODO: Find all version of this. Know to have 'type' field and can have an 'album_id' dict. kind = fields.Str(required=True, validate=Equal('sj#dismissedItem')) suggestion_reason = fields.Str(required=True) uuid = fields.UUID(required=True) class ListenNowDismissedItemsSchema(MobileClientSchema): """ **Validates**:: { 'kind': 'sj#listenNowDismissedItemList', 'minLastModifiedIgnored': True } """ kind = fields.Str(required=True, validate=Equal('sj#listenNowDismissedItemList')) minLastModifiedIgnored = fields.Bool() class ListenNowRadioStationIDSchema(MobileClientSchema): """ **Validates**:: { 'seeds': [RADIO_SEED] } """ seeds = fields.Nested(RadioSeedSchema, many=True) class ListenNowRadioStationSchema(MobileClientSchema): """ **Validates**:: { 'highlight_color': 'highlight_color', 'id': LISTEN_NOW_RADIO_STATION_ID, 'profile_image': ART_REF, 'title': 'title' } """ highlight_color = fields.Str() id = fields.Nested(ListenNowRadioStationIDSchema, required=True) profile_image = fields.Nested(ArtRefSchema) title = fields.Str(required=True) class ListenNowItemSchema(MobileClientSchema): """ **Validates**:: { 'album': LISTEN_NOW_ALBUM, 'compositeArtRefs': [IMAGE_REF], 'images': [IMAGE_REF], 'kind': 'sj#listennowitem', 'radio_station': LISTEN_NOW_RADIO_STATION, 'suggestion_reason': 'suggestion_reason', 'suggestion_text': 'suggestion_text', 'type': 'type' } """ album = fields.Nested(ListenNowAlbumSchema) compositeArtRefs = fields.Nested(ImageRefSchema, many=True) images = fields.Nested(ImageRefSchema, many=True) kind = fields.Str(required=True, validate=Equal('sj#listennowitem')) radio_station = fields.Nested(ListenNowRadioStationSchema) suggestion_reason = fields.Str(required=True) suggestion_text = fields.Str(required=True) type = fields.Str(required=True) class ListenNowItemListSchema(MobileClientSchema): """ **Validates**:: { 'kind': 'sj#listenNowItemList', 'listennow_items': [LISTEN_NOW_ITEM] } """ kind = fields.Str(required=True, validate=Equal('sj#listenNowItemList')) listennow_items = fields.Nested(ListenNowItemSchema, many=True) class ListenNowSituationListSchema(MobileClientSchema): """ **Validates**:: { 'distilledContextWrapper': DISTILLED_CONTEXT_WRAPPER, 'primaryHeader': 'primaryHeader', 'situations': [SITUATION], 'subHeader': 'subHeader' } """ distilledContextWrapper = fields.Nested(DistilledContextWrapperSchema) primaryHeader = fields.Str(required=True) situations = fields.Nested(SituationSchema, many=True) subHeader = fields.Str(required=True) class PlaylistEntryItemsSchema(MobileClientSchema): """ **Validates**:: { 'items': [PLAYLIST_ENTRY] } """ items = fields.Nested(PlaylistEntrySchema, many=True) class PlaylistEntryListSchema(MobileClientSchema): """ **Validates**:: { 'data': PLAYLIST_ENTRY_ITEMS, 'kind': 'sj#playlistEntryList', 'nextPageToken': 'nextPageToken' } """ data = fields.Nested(PlaylistEntryItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#playlistEntryList')) nextPageToken = fields.Str() class PlaylistListItemsSchema(MobileClientSchema): """ **Validates**:: { 'items': [PLAYLIST] } """ items = fields.Nested(PlaylistSchema, many=True) class PlaylistListSchema(MobileClientSchema): """ **Validates**:: { 'data': PLAYLIST_LIST_ITEMS, 'kind': 'sj#playlistList', 'nextPageToken': 'nextPageToken' } """ data = fields.Nested(PlaylistListItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#playlistList')) nextPageToken = fields.Str() class PodcastBrowseSchema(MobileClientSchema): """ **Validates**:: { 'series': [PODCAST_SERIES] } """ series = fields.Nested(PodcastSeriesSchema, required=True, many=True) class PodcastBrowseHierarchySchema(MobileClientSchema): """ **Validates**:: { 'groups': [PODCAST_GENRE] } """ groups = fields.Nested(PodcastGenreSchema, required=True, many=True) class PodcastEpisodeListItemsSchema(MobileClientSchema): """ **Validates**:: { 'items': [PODCAST_EPISODE] } """ items = fields.Nested(PodcastEpisodeSchema, many=True) class PodcastEpisodeListSchema(MobileClientSchema): """ **Validates**:: { 'data': PODCAST_EPISODE_LIST_ITEMS, 'kind': 'sj#podcastEpisodeList', 'nextPageToken': 'nextPageToken' } """ data = fields.Nested(PodcastEpisodeListItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#podcastEpisodeList')) nextPageToken = fields.Str() class PodcastSeriesListItemsSchema(MobileClientSchema): """ **Validates**:: { 'items': [PODCAST_SERIES] } """ items = fields.Nested(PodcastSeriesSchema, many=True) class PodcastSeriesListSchema(MobileClientSchema): """ **Validates**:: { 'data': PODCAST_SERIES_LIST_ITEMS, 'kind': 'sj#podcastSeriesList', 'nextPageToken': 'nextPageToken' } """ data = fields.Nested(PodcastSeriesListItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#podcastSeriesList')) nextPageToken = fields.Str() class RadioConstraintsSchema(MobileClientSchema): """ **Validates**:: { 'kind': 'sj#radioConstraints', 'prefetchLeadTimeMillis': 'prefetchLeadTimeMillis', 'prefetchesAllowed': 1, 'skipEnforcementPeriodMillis': 'skipEnforcementPeriodMillis', 'skipsAllowed': 6 } """ class RadioFeedItemsSchema(MobileClientSchema): """ **Validates**:: { 'currentTimestampMillis': 'currentTimestampMillis', 'radioConstraints': RADIO_CONSTRAINTS 'stations': [RADIO_STATION], } """ currentTimestampMillis = fields.Str(required=True) radioConstraints = fields.Nested(RadioConstraintsSchema) stations = fields.Nested(RadioStationSchema, many=True) class RadioFeedSchema(MobileClientSchema): """ **Validates**:: { 'data': RADIO_FEED_ITEMS, 'kind': 'sj#radioFeed' } """ data = fields.Nested(RadioFeedItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#radioFeed')) class RadioListItemsSchema(MobileClientSchema): """ **Validates**:: { 'items': [RADIO_STATION] } """ items = fields.Nested(RadioStationSchema, many=True) class RadioListSchema(MobileClientSchema): """ **Validates**:: { 'data': RADIO_LIST_ITEMS, 'kind': 'sj#radioList', 'nextPageToken': 'nextPageToken' } """ data = fields.Nested(RadioListItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#radioList')) nextPageToken = fields.Str() class SearchResultVideoSchema(VideoSchema): """ **Validates**:: SEARCH_RESULT_VIDEO = { 'id': 'id', 'kind': 'sj#video', 'thumbnails': [VIDEO_THUMBNAIL], 'title': 'title' } """ title = fields.Str(required=True) class SearchResultClusterInfoSchema(MobileClientSchema): """ **Validates**:: { 'category': 'category', 'id': 'id', 'type': 'type' } """ category = fields.Str(required=True) id = fields.Str(required=True) type = fields.Str(required=True) class SearchResultSchema(MobileClientSchema): """ **Validates**:: { 'album': ALBUM, 'artist': ARTIST, 'playlist': {k: v for k, v in PLAYLIST.items() if k not in ['creationTimestamp', 'id', 'lastModifiedTimestamp']}, 'score': 42, 'series': PODCAST_SERIES, 'situation': SITUATION, 'station': RADIO_STATION, 'track': STORE_TRACK, 'type': 'type', 'youtube_video': SEARCH_RESULT_VIDEO } """ album = fields.Nested(AlbumSchema) artist = fields.Nested(ArtistSchema) cluster = fields.Nested(SearchResultClusterInfoSchema, many=True) playlist = fields.Nested(PlaylistSchema(exclude=['creationTimestamp', 'id', 'lastModifiedTimestamp'])) score = fields.Float() series = fields.Nested(PodcastSeriesSchema) situation = fields.Nested(SituationSchema) station = fields.Nested(RadioStationSchema) track = fields.Nested(StoreTrackSchema) type = fields.Str(required=True) youtube_video = fields.Nested(SearchResultVideoSchema) class SearchResultClusterSchema(MobileClientSchema): """ **Validates**:: { 'cluster': {SEARCH_RESULT_CLUSTER_INFO}, 'entries': [SEARCH_RESULT], 'resultToken': 'resultToken' } """ cluster = fields.Nested(SearchResultClusterInfoSchema, required=True) displayName = fields.Str() entries = fields.Nested(SearchResultSchema, many=True) resultToken = fields.Str(required=True) class SearchResponseSchema(MobileClientSchema): """ **Validates**:: { 'clusterDetail': [SEARCH_RESULT_CLUSTER], 'kind': 'sj#searchresponse' } """ clusterDetail = fields.Nested(SearchResultClusterSchema, many=True) kind = fields.Str(required=True, validate=Equal('sj#searchresponse')) class SearchSuggestedQuerySchema(MobileClientSchema): """ **Validates**:: { 'suggestionCategory': 'suggestionCategory', 'suggestion_string': 'suggestion_string', 'type': 'type' } """ suggestionCategory = fields.Str(required=True) suggestion_string = fields.Str(required=True) type = fields.Str(required=True) class SearchSuggestionSchema(MobileClientSchema): """ **Validates**:: { 'suggested_queries': [SEARCH_SUGGESTED_QUERY] } """ suggested_queries = fields.Nested(SearchSuggestedQuerySchema, many=True) class SharedPlaylistEntryItemSchema(MobileClientSchema): """ **Validates**:: { 'playlistEntry': SHARED_PLAYLIST_ENTRY, 'responseCode': 'responseCode', 'shareToken': 'shareToken' } """ nextPageToken = fields.Str() playlistEntry = fields.Nested(SharedPlaylistEntrySchema) responseCode = fields.Str(required=True) shareToken = fields.Str(required=True) class SharedPlaylistEntryListSchema(MobileClientSchema): """ **Validates**:: { 'entries': [SHARED_PLAYLIST_ENTRY_ITEM], 'kind': 'sj#listSharedPlaylistEntriesResponse' } """ entries = fields.Nested(SharedPlaylistEntryItemSchema, many=True) kind = fields.Str(required=True, validate=Equal('sj#listSharedPlaylistEntriesResponse')) class TrackBatchItemSchema(MobileClientSchema): """ **Validates**:: { 'client_id': 'client_id', 'id': 'id', 'response_code': 'response_code' } """ client_id = fields.Str() id = fields.Str() response_code = fields.Str(required=True) class TrackBatchSchema(MobileClientSchema): """ **Validates**:: { 'mutate_response': [TRACK_BATCH_ITEMS] } """ mutate_response = fields.Nested(TrackBatchItemSchema, many=True) class TrackListItemsSchema(MobileClientSchema): """ **Validates**:: { 'items': [STORE_TRACK, UPLOADED_TRACK] } """ items = fields.Nested(TrackSchema, many=True) class TrackListSchema(MobileClientSchema): """ **Validates**:: { 'data': TRACK_LIST_ITEMS, 'kind': 'sj#trackList', 'nextPageToken': 'nextPageToken' } """ data = fields.Nested(TrackListItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#trackList')) nextPageToken = fields.Str() class UserClientIDListItemsSchema(MobileClientSchema): """ **Validates**:: { 'items': [DEVICE_MANAGEMENT_INFO] } """ items = fields.Nested(DeviceManagementInfoSchema, many=True) class UserClientIDListSchema(MobileClientSchema): """ **Validates**:: { 'data': USER_CLIENT_ID_LIST_ITEMS, 'kind': 'sj#userClientIdList' } """ data = fields.Nested(UserClientIDListItemsSchema) kind = fields.Str(required=True, validate=Equal('sj#userClientIdList')) PK!/y(google_music_proto/mobileclient/types.py__all__ = ['ListenNowItemType', 'QueryResultType', 'StationSeedType', 'TrackRating'] from enum import Enum, unique class _BaseEnum(Enum): def __repr__(self): return f'<{self.__class__.__name__}.{self.name}>' @unique class ListenNowItemType(_BaseEnum): """Listen Now item type.""" album = '1' station = '3' @unique class QueryResultType(_BaseEnum): """Search result types. :: search_result['type'] """ song = '1' artist = '2' album = '3' playlist = '4' genre = '5' station = '6' situation = '7' video = '8' podcast = '9' @unique class StationSeedType(_BaseEnum): """Station seed types. :: station['seed']['seedType'] """ library_track = '1' store_track = '2' artist_related = '3' album = '4' genre = '5' ifl = '6' artist_only = '7' playlist = '8' curated_station = '9' @unique class TrackRating(_BaseEnum): """Track ratings. :: song['rating'] """ NOT_RATED = '0' ONE_STAR = '1' FIVE_STARS = '5' PK!vu׽google_music_proto/models.pyimport json from attr import attrib, attrs @attrs(frozen=True, slots=True) class ParsedResponse: headers = attrib() body = attrib() @attrs(slots=True) class Call: follow_redirects = False _data = attrib(default=b'', init=False) _headers = attrib(factory=dict, init=False) _params = attrib(factory=dict, init=False) _url = attrib(default=None, init=False) @property def body(self): """Binary-encoded body of the HTTP request.""" return self._data @property def headers(self): """Headers to send with the HTTP request.""" return self._headers @property def params(self): """Dict of parameters to send in the query string of the HTTP request.""" return self._params @property def url(self): """URL for the HTTP request.""" return self._url @staticmethod def check_success(*args, **kwargs): return True def parse_response(self, response_headers, response_body): return ParsedResponse(headers=response_headers, body=response_body) @attrs(slots=True) class JSONCall(Call): _data = attrib(factory=dict, init=False) def __attrs_post_init__(self): self._headers['Content-Type'] = 'application/json' @property def body(self): """Binary-encoded body of the HTTP request.""" return json.dumps(self._data) if self._data else b'' def parse_response(self, response_headers, response_body): body = json.loads(response_body) if response_body else b'' return ParsedResponse(headers=response_headers, body=body) PK!z+google_music_proto/musicmanager/__init__.py"""Call, schema, and type definitions for wrapping the Google Music music manager API.""" from . import calls, constants, models __all__ = ['calls', 'constants', 'models'] PK!<;|%=%=(google_music_proto/musicmanager/calls.pyimport os import subprocess from base64 import b64encode import audio_metadata import pendulum from attr import attrib, attrs from .models import MusicManagerCall from .pb import download_pb2, locker_pb2, upload_pb2 from .utils import generate_client_id, get_album_art, transcode_to_mp3 from ..models import Call, JSONCall @attrs(slots=True) class ClientState(MusicManagerCall): """Get information about the state of a Google Music account. Note: This provides things like the quota for uploaded songs. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. """ endpoint = 'clientstate' method = 'POST' request_type = upload_pb2.ClientStateRequest uploader_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.uploader_id) @attrs(slots=True) class Export(Call): """Download a song from a Google Music library. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. song_id (str): A song ID. """ base_url = 'https://music.google.com/music/export' follow_redirects = True method = 'GET' uploader_id = attrib() song_id = attrib() def __attrs_post_init__(self): self._headers = {'X-Device-ID': self.uploader_id} self._params.update({'songid': self.song_id}) self._url = Export.base_url @attrs(slots=True) class ExportIDs(Call): """Get a listing of uploaded and purchased library tracks. Note: The track list is paged. Getting all tracks will require looping through all pages. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. continuation_token (str, Optional): The token of the page to return. Default: Not sent to get first page. export_type (int, Optional): The type of tracks to return: 1 for all tracks, 2 for promotional and purchased. Default: ``1`` updated_min (int, Optional): List changes since the given Unix epoch time in microseconds. """ base_url = 'https://music.google.com/music/exportids' method = 'POST' request_type = download_pb2.GetTracksToExportRequest response_type = download_pb2.GetTracksToExportResponse uploader_id = attrib() continuation_token = attrib(default=None) export_type = attrib(default=1) updated_min = attrib(default=-1) def __attrs_post_init__(self): self._data = self.request_type() self._data.client_id = self.uploader_id self._data.export_type = self.export_type self._data.updated_min = self.updated_min self._headers.update({ 'Content-Type': 'application/x-google-protobuf', 'X-Device-ID': self.uploader_id }) self._params.update({'version': 1}) if self.continuation_token is not None: self._data.continuation_token = self.continuation_token self._url = ExportIDs.base_url @property def body(self): """Binary-encoded body of the HTTP request.""" return self._data.SerializeToString() if self._data else b'' @staticmethod def check_success(response_body): return response_body.status == download_pb2.GetTracksToExportResponse.OK parse_response = MusicManagerCall.parse_response @attrs(slots=True) class GetJobs(MusicManagerCall): """Get a listing of pending upload jobs. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. """ endpoint = 'getjobs' method = 'POST' request_type = upload_pb2.GetJobsRequest uploader_id = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.uploader_id) @staticmethod def check_success(response): return response.get_tracks_success @attrs(slots=True) class Metadata(MusicManagerCall): """Send upload track metadata to Google Music. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. tracks (list): A list of tracks in the form of :class:`locker_pb2.Track`. Use :meth:`Metadata.get_track_info` to generate locker tracks from audio files. """ endpoint = 'metadata' method = 'POST' request_type = upload_pb2.UploadMetadataRequest uploader_id = attrib() tracks = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.uploader_id) self._data.track.extend(self.tracks) # do_not_rematch seems to be ignored. # Defaults to False. for track in self._data.track: track.do_not_rematch = False @staticmethod def get_track_info(song): """Create a locker track from an audio file. Parameters: song (os.PathLike or str or audio_metadata.Format): The path to an audio file or an instance of :class:`audio_metadata.Format`. Returns: locker_pb2.Track: A locker track of the given audio file. """ try: if isinstance(song, audio_metadata.Format): metadata = song else: metadata = audio_metadata.load(song) except audio_metadata.AudioMetadataException as e: raise ValueError(f'Could not read metadata from {song}.') from e # TODO: Some might not match (E.g. AAC, ALAC). extension = metadata.__class__.__name__ # Fake WAV format support. if extension == 'WAV': extension = 'FLAC' if not hasattr(locker_pb2.Track, extension): raise ValueError(f'{extension} is not a supported filetype.') # TODO: Can probably fill more fields. track = locker_pb2.Track() track.client_id = generate_client_id(metadata) track.original_content_type = getattr(locker_pb2.Track, extension) track.estimated_size = metadata.filesize try: track.last_modified_timestamp = int(os.path.getmtime(metadata.filepath)) except TypeError: track.last_modified_timestamp = int(pendulum.utcnow().timestamp()) track.play_count = 0 track.client_date_added = 0 track.recent_timestamp = 0 track.rating = locker_pb2.Track.NOT_RATED bitrate = round(metadata.streaminfo.bitrate / 1000) track.original_bit_rate = bitrate track.duration_millis = int(metadata.streaminfo.duration * 1000) # If 'artist'/'album'/'title' aren't provided, they render as "undefined" in the web interface. # Setting them to empty strings fixes this. if 'artist' in metadata.tags: track.artist = metadata.tags.artist[0] else: track.artist = '' if 'album' in metadata.tags: track.album = metadata.tags.album[0] else: track.album = '' if 'title' in metadata.tags: track.title = metadata.tags.title[0] else: try: track.title = os.path.basename(song.filepath) except TypeError: track.title = '' if 'albumartist' in metadata.tags: track.album_artist = metadata.tags.albumartist[0] if 'bpm' in metadata.tags: track.beats_per_minute = int(metadata.tags.bpm[0]) if 'composer' in metadata.tags: track.composer = metadata.tags.composer[0] if 'date' in metadata.tags: date = metadata.tags.date[0] year = pendulum.parse(date).year track.year = year if 'genre' in metadata.tags: track.genre = metadata.tags.genre[0] if 'discnumber' in metadata.tags: disc_split = metadata.tags.discnumber[0].split('/') track.track_number = int(disc_split[0]) if len(disc_split) == 2: track.total_disc_count = int(disc_split[1]) if 'disctotal' in metadata.tags: track.total_disc_count = int(metadata.tags.disctotal[0]) if 'tracknumber' in metadata.tags: track_split = metadata.tags.tracknumber[0].split('/') track.track_number = int(track_split[0]) if len(track_split) == 2: track.total_track_count = int(track_split[1]) if 'tracktotal' in metadata.tags: track.total_track_count = int(metadata.tags.tracktotal[0]) # The track protobuf message supports an additional metadata list field. # ALBUM_ART_HASH has been observed being sent in this field so far. # Append locker_pb2.AdditionalMetadata objects to additional_metadata. # AdditionalMetadata objects consist of two fields, 'tag_name' and 'value'. additional_metadata = [] if additional_metadata: track.track_extras.additional_metadata.extend(additional_metadata) return track @attrs(slots=True) class Sample(MusicManagerCall): """Send samples of audio files to Google Music. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. track_samples (list): A list of track samples in the form of :class:`upload_pb2.TrackSample`. Use :meth:`Sample.generate_sample` to generate a track sample from an audio file. """ endpoint = 'sample' method = 'POST' request_type = upload_pb2.UploadSampleRequest uploader_id = attrib() track_samples = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.uploader_id) self._data.track_sample.extend(self.track_samples) # TODO: album art documentation. # TODO: Improved album art API? @staticmethod def generate_sample(song, track, sample_request, *, external_art=None): """Generate a track sample from an audio file. Parameters: track (locker_pb2.Track): A locker track of the audio file as created by :meth:`Metadata.get_track_info`. sample_request (upload_pb2.SignedChallengeInfo): The ``'signed_challenge_info'`` portion for the audio file from the :class:`Metadata` response. external_art(bytes, optional): The binary data of an external album art image. If not provided, embedded album art will be used, if present. """ track_sample = upload_pb2.TrackSample() track_sample.track.CopyFrom(track) track_sample.signed_challenge_info.CopyFrom(sample_request) try: track_sample.sample = transcode_to_mp3( song, slice_start=sample_request.challenge_info.start_millis // 1000, slice_duration=sample_request.challenge_info.duration_millis // 1000, quality='128k' ) album_art = external_art or get_album_art(song) if album_art: album_art_image = upload_pb2.ImageUnion() album_art_image.user_album_art = album_art track_sample.user_album_art.CopyFrom(album_art_image) except (OSError, ValueError, subprocess.CalledProcessError): raise return track_sample # TODO: Album art. # TODO: contentType for title and external. # TODO: FLAC seems to be put as 'audio/mpeg'? # TODO: XingHeaderLength. # TODO: AlbumArtLength/AlbumArtStart. @attrs(slots=True) class ScottyAgentPost(JSONCall): """Request an upload URL for a track from Google Music. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. server_track_id (str): The server ID of the audio file to upload as given in the response of :class:`Metadata` or :class:`Sample`. track (locker_pb2.Track): A locker track of the audio file as created by :meth:`Metadata.get_track_info`. song (os.PathLike or str or audio_metadata.Format): The path to an audio file or an instance of :class:`audio_metadata.Format`. external_art(bytes, optional): The binary data of an external album art image. If not provided, embedded album art will be used, if present. total_song_count (int, Optional): Total number of songs to be uploaded in this session. Default: 1 total_uploaded_count (int, Optional): Number of songs uploaded in this session. Default: 0 """ base_url = 'https://uploadsj.clients.google.com/uploadsj/scottyagent' method = 'POST' uploader_id = attrib() server_track_id = attrib() track = attrib() song = attrib() external_art = attrib(default=None) total_song_count = attrib(default=1) total_uploaded_count = attrib(default=0) def __attrs_post_init__(self): super().__attrs_post_init__() inlined = { 'title': 'jumper-uploader-title-42', 'ClientId': self.track.client_id, 'ClientTotalSongCount': str(self.total_song_count), 'CurrentTotalUploadedCount': str(self.total_uploaded_count), 'CurrentUploadingTrackArtist': self.track.artist, 'CurrentUploadingTrack': self.track.title, 'ServerId': self.server_track_id, 'SyncNow': 'true', 'TrackBitRate': str(self.track.original_bit_rate), 'TrackDoNotRematch': 'false', 'UploaderId': self.uploader_id } if not isinstance(self.song, audio_metadata.Format): self.song = audio_metadata.load(self.song) album_art = self.external_art or get_album_art(self.song) if album_art: inlined['AlbumArt'] = b64encode(album_art).decode() self._data.update({ 'clientId': 'Jumper Uploader', 'createSessionRequest': { 'fields': [ { 'external': { 'filename': os.path.basename(self.song.filepath), 'name': os.path.abspath(self.song.filepath), 'put': {}, # Size seems to be sent when uploading MP3, but not FLAC. # In fact, uploading FLAC directly fails when this is given. # Leaving it out works for everything. # 'size': self.track.estimated_size } } ] }, 'protocolVersion': '0.8' }) for field, value in inlined.items(): self._data['createSessionRequest']['fields'].append( { 'inlined': { 'content': value, 'name': field } } ) self._url = ScottyAgentPost.base_url @attrs(slots=True) class ScottyAgentPut(Call): """Upload a file to a Google Music library. Parameters: upload_url (str): The upload URL given by :class:`ScottyAgentPost` response. audio_file (os.PathLike or str or bytes): An audio file as :class:`os.PathLike`, a file/bytes-like object, or binary data. content_type (str): The mime type to be sent in the ContentType header field. Default: ``'audio/mpeg'`` """ method = 'PUT' upload_url = attrib() audio_file = attrib() content_type = attrib(default='audio/mpeg') def __attrs_post_init__(self): if hasattr(self.audio_file, 'read'): self._data = self.audio_file.read() elif isinstance(self.audio_file, (os.PathLike, str)): with open(self.audio_file, 'rb') as f: self._data = f.read() elif isinstance(self.audio_file, bytes): self._data = self.audio_file else: raise ValueError("'audio_file' must be os.PathLike, filepath string, a file/bytes-like object, or binary data.") self._headers.update({'ContentType': self.content_type}) self._url = self.upload_url parse_response = JSONCall.parse_response @attrs(slots=True) class UpAuth(MusicManagerCall): """Authenticate device as a Music Manager uploader. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. uploader_name (str): The name given to the device in the Google Music device listing. """ endpoint = 'upauth' method = 'POST' request_type = upload_pb2.UpAuthRequest uploader_id = attrib() uploader_name = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.uploader_id) self._data.friendly_name = self.uploader_name @staticmethod def check_success(response): return response.HasField('auth_status') and response.auth_status == upload_pb2.UploadResponse.OK @attrs(slots=True) class UploadState(MusicManagerCall): """Notify Google Music of the state of an upload. Parameters: uploader_id (str): A unique ID given as a MAC address. Only one Music Manager client may use a given uploader ID. state (str): Can be one of ``'START'``, ``'PAUSED'``, ``'STOPPED'``. Will be uppercased if lowercase is given. """ endpoint = 'uploadstate' method = 'POST' request_type = upload_pb2.UpdateUploadStateRequest uploader_id = attrib() state = attrib() def __attrs_post_init__(self): super().__attrs_post_init__(self.uploader_id) state = self.state.upper() try: self._data.state = getattr(upload_pb2.UpdateUploadStateRequest, state) except AttributeError as e: raise ValueError from e PK!4 RKK,google_music_proto/musicmanager/constants.py__all__ = ['API_URL'] API_URL = 'https://android.clients.google.com/upsj' PK!_Nss)google_music_proto/musicmanager/models.pyfrom attr import attrs from google.protobuf.message import DecodeError from .constants import API_URL from .pb import upload_pb2 from ..models import Call, ParsedResponse @attrs(slots=True) class MusicManagerCall(Call): base_url = API_URL request_type = response_type = upload_pb2.UploadResponse def __attrs_post_init__(self, uploader_id): self._data = self.request_type() self._data.uploader_id = uploader_id self._headers.update({ 'Content-Type': 'application/x-google-protobuf' }) self._params.update({'version': 1}) if self.endpoint: self._url = f'{self.base_url}/{self.endpoint}' @property def body(self): """Binary-encoded body of the HTTP request.""" return self._data.SerializeToString() if self._data else b'' def parse_response(self, response_headers, response_body): try: res_body = self.response_type() res_body.ParseFromString(response_body) except DecodeError: raise # TODO: Better exception. if not self.check_success(res_body): raise Exception(f"{self.__class__.__name__} call failed: {res_body}") return ParsedResponse(headers=response_headers, body=res_body) PK!.google_music_proto/musicmanager/pb/__init__.pyPK!(v]/4/42google_music_proto/musicmanager/pb/download_pb2.py# Generated by the protocol buffer compiler. DO NOT EDIT! # source: download.proto import sys _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor.FileDescriptor( name='download.proto', package='wireless_android_skyjam', syntax='proto2', serialized_pb=_b('\n\x0e\x64ownload.proto\x12\x17wireless_android_skyjam\"\xf7\x01\n\x18GetTracksToExportRequest\x12\x11\n\tclient_id\x18\x02 \x02(\t\x12\x1a\n\x12\x63ontinuation_token\x18\x03 \x01(\t\x12Y\n\x0b\x65xport_type\x18\x04 \x01(\x0e\x32\x44.wireless_android_skyjam.GetTracksToExportRequest.TracksToExportType\x12\x13\n\x0bupdated_min\x18\x05 \x01(\x03\"<\n\x12TracksToExportType\x12\x07\n\x03\x41LL\x10\x01\x12\x1d\n\x19PURCHASED_AND_PROMOTIONAL\x10\x02\"\xbc\x01\n\x11\x44ownloadTrackInfo\x12\n\n\x02id\x18\x01 \x01(\t\x12\r\n\x05title\x18\x02 \x01(\t\x12\r\n\x05\x61lbum\x18\x03 \x01(\t\x12\x14\n\x0c\x61lbum_artist\x18\x04 \x01(\t\x12\x0e\n\x06\x61rtist\x18\x05 \x01(\t\x12\x14\n\x0ctrack_number\x18\x06 \x01(\x05\x12\x12\n\ntrack_size\x18\x07 \x01(\x03\x12\x13\n\x0b\x64isc_number\x18\x08 \x01(\x05\x12\x18\n\x10total_disc_count\x18\t \x01(\x05\"\x83\x03\n\x19GetTracksToExportResponse\x12W\n\x06status\x18\x01 \x02(\x0e\x32G.wireless_android_skyjam.GetTracksToExportResponse.TracksToExportStatus\x12G\n\x13\x64ownload_track_info\x18\x02 \x03(\x0b\x32*.wireless_android_skyjam.DownloadTrackInfo\x12\x1a\n\x12\x63ontinuation_token\x18\x03 \x01(\t\x12\x13\n\x0bupdated_min\x18\x04 \x01(\x03\"\x92\x01\n\x14TracksToExportStatus\x12\x06\n\x02OK\x10\x01\x12\x13\n\x0fTRANSIENT_ERROR\x10\x02\x12\x1b\n\x17MAX_NUM_CLIENTS_REACHED\x10\x03\x12!\n\x1dUNABLE_TO_AUTHENTICATE_CLIENT\x10\x04\x12\x1d\n\x19UNABLE_TO_REGISTER_CLIENT\x10\x05') ) _sym_db.RegisterFileDescriptor(DESCRIPTOR) _GETTRACKSTOEXPORTREQUEST_TRACKSTOEXPORTTYPE = _descriptor.EnumDescriptor( name='TracksToExportType', full_name='wireless_android_skyjam.GetTracksToExportRequest.TracksToExportType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='ALL', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='PURCHASED_AND_PROMOTIONAL', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=231, serialized_end=291, ) _sym_db.RegisterEnumDescriptor(_GETTRACKSTOEXPORTREQUEST_TRACKSTOEXPORTTYPE) _GETTRACKSTOEXPORTRESPONSE_TRACKSTOEXPORTSTATUS = _descriptor.EnumDescriptor( name='TracksToExportStatus', full_name='wireless_android_skyjam.GetTracksToExportResponse.TracksToExportStatus', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='TRANSIENT_ERROR', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='MAX_NUM_CLIENTS_REACHED', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='UNABLE_TO_AUTHENTICATE_CLIENT', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='UNABLE_TO_REGISTER_CLIENT', index=4, number=5, options=None, type=None), ], containing_type=None, options=None, serialized_start=726, serialized_end=872, ) _sym_db.RegisterEnumDescriptor(_GETTRACKSTOEXPORTRESPONSE_TRACKSTOEXPORTSTATUS) _GETTRACKSTOEXPORTREQUEST = _descriptor.Descriptor( name='GetTracksToExportRequest', full_name='wireless_android_skyjam.GetTracksToExportRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.GetTracksToExportRequest.client_id', index=0, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetTracksToExportRequest.continuation_token', index=1, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='export_type', full_name='wireless_android_skyjam.GetTracksToExportRequest.export_type', index=2, number=4, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='updated_min', full_name='wireless_android_skyjam.GetTracksToExportRequest.updated_min', index=3, number=5, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETTRACKSTOEXPORTREQUEST_TRACKSTOEXPORTTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=44, serialized_end=291, ) _DOWNLOADTRACKINFO = _descriptor.Descriptor( name='DownloadTrackInfo', full_name='wireless_android_skyjam.DownloadTrackInfo', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.DownloadTrackInfo.id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='title', full_name='wireless_android_skyjam.DownloadTrackInfo.title', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album', full_name='wireless_android_skyjam.DownloadTrackInfo.album', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_artist', full_name='wireless_android_skyjam.DownloadTrackInfo.album_artist', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='artist', full_name='wireless_android_skyjam.DownloadTrackInfo.artist', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_number', full_name='wireless_android_skyjam.DownloadTrackInfo.track_number', index=5, number=6, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_size', full_name='wireless_android_skyjam.DownloadTrackInfo.track_size', index=6, number=7, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='disc_number', full_name='wireless_android_skyjam.DownloadTrackInfo.disc_number', index=7, number=8, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='total_disc_count', full_name='wireless_android_skyjam.DownloadTrackInfo.total_disc_count', index=8, number=9, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=294, serialized_end=482, ) _GETTRACKSTOEXPORTRESPONSE = _descriptor.Descriptor( name='GetTracksToExportResponse', full_name='wireless_android_skyjam.GetTracksToExportResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='status', full_name='wireless_android_skyjam.GetTracksToExportResponse.status', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='download_track_info', full_name='wireless_android_skyjam.GetTracksToExportResponse.download_track_info', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetTracksToExportResponse.continuation_token', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='updated_min', full_name='wireless_android_skyjam.GetTracksToExportResponse.updated_min', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETTRACKSTOEXPORTRESPONSE_TRACKSTOEXPORTSTATUS, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=485, serialized_end=872, ) _GETTRACKSTOEXPORTREQUEST.fields_by_name['export_type'].enum_type = _GETTRACKSTOEXPORTREQUEST_TRACKSTOEXPORTTYPE _GETTRACKSTOEXPORTREQUEST_TRACKSTOEXPORTTYPE.containing_type = _GETTRACKSTOEXPORTREQUEST _GETTRACKSTOEXPORTRESPONSE.fields_by_name['status'].enum_type = _GETTRACKSTOEXPORTRESPONSE_TRACKSTOEXPORTSTATUS _GETTRACKSTOEXPORTRESPONSE.fields_by_name['download_track_info'].message_type = _DOWNLOADTRACKINFO _GETTRACKSTOEXPORTRESPONSE_TRACKSTOEXPORTSTATUS.containing_type = _GETTRACKSTOEXPORTRESPONSE DESCRIPTOR.message_types_by_name['GetTracksToExportRequest'] = _GETTRACKSTOEXPORTREQUEST DESCRIPTOR.message_types_by_name['DownloadTrackInfo'] = _DOWNLOADTRACKINFO DESCRIPTOR.message_types_by_name['GetTracksToExportResponse'] = _GETTRACKSTOEXPORTRESPONSE GetTracksToExportRequest = _reflection.GeneratedProtocolMessageType('GetTracksToExportRequest', (_message.Message,), dict( DESCRIPTOR = _GETTRACKSTOEXPORTREQUEST, __module__ = 'download_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetTracksToExportRequest) )) _sym_db.RegisterMessage(GetTracksToExportRequest) DownloadTrackInfo = _reflection.GeneratedProtocolMessageType('DownloadTrackInfo', (_message.Message,), dict( DESCRIPTOR = _DOWNLOADTRACKINFO, __module__ = 'download_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.DownloadTrackInfo) )) _sym_db.RegisterMessage(DownloadTrackInfo) GetTracksToExportResponse = _reflection.GeneratedProtocolMessageType('GetTracksToExportResponse', (_message.Message,), dict( DESCRIPTOR = _GETTRACKSTOEXPORTRESPONSE, __module__ = 'download_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetTracksToExportResponse) )) _sym_db.RegisterMessage(GetTracksToExportResponse) # @@protoc_insertion_point(module_scope) PK!7AKK0google_music_proto/musicmanager/pb/locker_pb2.py# Generated by the protocol buffer compiler. DO NOT EDIT! # source: locker.proto import sys _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from . import uits_pb2 as uits__pb2 DESCRIPTOR = _descriptor.FileDescriptor( name='locker.proto', package='wireless_android_skyjam', syntax='proto2', serialized_pb=_b('\n\x0clocker.proto\x12\x17wireless_android_skyjam\x1a\nuits.proto\"\x90\x02\n\x08\x41udioRef\x12\x36\n\x05store\x18\x01 \x02(\x0e\x32\'.wireless_android_skyjam.AudioRef.Store\x12\x0b\n\x03ref\x18\x02 \x02(\x0c\x12\x0b\n\x03url\x18\x04 \x01(\t\x12\x10\n\x08\x62it_rate\x18\x05 \x01(\x05\x12\x13\n\x0bsample_rate\x18\x06 \x01(\x05\x12\x14\n\x0c\x64ownloadable\x18\x07 \x01(\x08\x12\x17\n\x0f\x64uration_millis\x18\x08 \x01(\x03\x12\x19\n\x11rematch_timestamp\x18\t \x01(\x03\x12\x1e\n\x16invalid_due_to_wipeout\x18\n \x01(\x08\"!\n\x05Store\x12\r\n\tBLOBSTORE\x10\x01\x12\t\n\x05SM_V2\x10\x02\"\x81\x02\n\x08ImageRef\x12\x36\n\x05store\x18\x01 \x01(\x0e\x32\'.wireless_android_skyjam.ImageRef.Store\x12\r\n\x05width\x18\x02 \x01(\r\x12\x0e\n\x06height\x18\x03 \x01(\r\x12\x0b\n\x03url\x18\x06 \x01(\t\x12\x1e\n\x16invalid_due_to_wipeout\x18\x07 \x01(\x08\x12\x38\n\x06origin\x18\x08 \x01(\x0e\x32(.wireless_android_skyjam.ImageRef.Origin\"\x14\n\x05Store\x12\x0b\n\x07SHOEBOX\x10\x03\"!\n\x06Origin\x12\x0c\n\x08PERSONAL\x10\x01\x12\t\n\x05STORE\x10\x02\"1\n\x12UploadedUitsId3Tag\x12\r\n\x05owner\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"5\n\x12\x41\x64\x64itionalMetadata\x12\x10\n\x08tag_name\x18\x01 \x02(\t\x12\r\n\x05value\x18\x02 \x02(\x0c\"\x89\x01\n\x0bTrackExtras\x12H\n\x13\x61\x64\x64itional_metadata\x18\x02 \x03(\x0b\x32+.wireless_android_skyjam.AdditionalMetadata\x12\x12\n\ncandidates\x18\x03 \x03(\t\x12\x1c\n\x14original_sample_rate\x18\x04 \x01(\x05\"\xb1\x13\n\x05Track\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\x12\x1a\n\x12\x63reation_timestamp\x18\x03 \x01(\x03\x12\x1f\n\x17last_modified_timestamp\x18\x04 \x01(\x03\x12\x16\n\x07\x64\x65leted\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\r\n\x05title\x18\x06 \x01(\t\x12\x0e\n\x06\x61rtist\x18\x07 \x01(\t\x12\x13\n\x0b\x61rtist_hash\x18. \x01(\x03\x12\x10\n\x08\x63omposer\x18\x08 \x01(\t\x12\r\n\x05\x61lbum\x18\t \x01(\t\x12\x14\n\x0c\x61lbum_artist\x18\n \x01(\t\x12\x17\n\x0f\x63\x61nonical_album\x18\x38 \x01(\t\x12\x18\n\x10\x63\x61nonical_artist\x18\x39 \x01(\t\x12\x1d\n\x15\x63\x61nonical_genre_album\x18: \x01(\t\x12\x0c\n\x04year\x18\x0b \x01(\x05\x12\x0f\n\x07\x63omment\x18\x0c \x01(\t\x12\x14\n\x0ctrack_number\x18\r \x01(\x05\x12\r\n\x05genre\x18\x0e \x01(\t\x12\x17\n\x0f\x64uration_millis\x18\x0f \x01(\x03\x12\x18\n\x10\x62\x65\x61ts_per_minute\x18\x10 \x01(\x05\x12\x19\n\x11original_bit_rate\x18, \x01(\x05\x12\x34\n\taudio_ref\x18\x11 \x03(\x0b\x32!.wireless_android_skyjam.AudioRef\x12\x38\n\ralbum_art_ref\x18\x12 \x03(\x0b\x32!.wireless_android_skyjam.ImageRef\x12N\n\x13\x61vailability_status\x18\x13 \x01(\x0e\x32\x31.wireless_android_skyjam.Track.AvailabilityStatus\x12\x12\n\nplay_count\x18\x14 \x01(\x05\x12@\n\x0c\x63ontent_type\x18\x19 \x01(\x0e\x32*.wireless_android_skyjam.Track.ContentType\x12\x19\n\x11total_track_count\x18\x1a \x01(\x05\x12\x13\n\x0b\x64isc_number\x18\x1b \x01(\x05\x12\x18\n\x10total_disc_count\x18\x1c \x01(\x05\x12\x39\n\x08\x63hannels\x18\x1d \x01(\x0e\x32\'.wireless_android_skyjam.Track.Channels\x12<\n\ntrack_type\x18\x1e \x01(\x0e\x32(.wireless_android_skyjam.Track.TrackType\x12\x1e\n\x16use_single_server_copy\x18; \x01(\x08\x12\x35\n\x06rating\x18\x1f \x01(\x0e\x32%.wireless_android_skyjam.Track.Rating\x12\x16\n\x0e\x65stimated_size\x18 \x01(\x03\x12\x10\n\x08store_id\x18! \x01(\t\x12\x12\n\nmetajam_id\x18\" \x01(\t\x12 \n\x15metajam_id_confidence\x18+ \x01(\x01:\x01\x30\x12\x0c\n\x04uits\x18# \x01(\t\x12<\n\ruits_metadata\x18( \x01(\x0b\x32%.wireless_android_skyjam.UitsMetadata\x12\x13\n\x0b\x63ompilation\x18$ \x01(\x08\x12\x19\n\x11\x63lient_date_added\x18% \x01(\x03\x12\x18\n\x10recent_timestamp\x18& \x01(\x03\x12\x1d\n\x0e\x64o_not_rematch\x18\' \x01(\x08:\x05\x66\x61lse\x12\x1b\n\x13\x66rom_album_purchase\x18) \x01(\x08\x12\x18\n\x10\x61lbum_metajam_id\x18* \x01(\t\x12\x16\n\x0etransaction_id\x18- \x01(\t\x12\x13\n\x0b\x64\x65\x62ug_track\x18/ \x01(\x08\x12\x18\n\x10normalized_title\x18\x30 \x01(\t\x12\x19\n\x11normalized_artist\x18\x31 \x01(\t\x12\x18\n\x10normalized_album\x18\x32 \x01(\t\x12\x1f\n\x17normalized_album_artist\x18\x33 \x01(\t\x12\"\n\x1anormalized_canonical_album\x18\x36 \x01(\t\x12#\n\x1bnormalized_canonical_artist\x18\x37 \x01(\t\x12\x13\n\x0buploader_id\x18\x34 \x01(\t\x12\x17\n\x0f\x63lient_album_id\x18\x35 \x01(\t\x12\x18\n\x10label_owner_code\x18< \x01(\t\x12I\n\x15original_content_type\x18= \x01(\x0e\x32*.wireless_android_skyjam.Track.ContentType\x12\x42\n\ruploaded_uits\x18G \x03(\x0b\x32+.wireless_android_skyjam.UploadedUitsId3Tag\x12\x42\n\rexplicit_type\x18J \x01(\x0e\x32+.wireless_android_skyjam.Track.ExplicitType\x12:\n\x0ctrack_extras\x18K \x01(\x0b\x32$.wireless_android_skyjam.TrackExtras\"\x86\x01\n\x12\x41vailabilityStatus\x12\x0b\n\x07PENDING\x10\x01\x12\x0b\n\x07MATCHED\x10\x02\x12\x14\n\x10UPLOAD_REQUESTED\x10\x03\x12\r\n\tAVAILABLE\x10\x04\x12\x12\n\x0e\x46ORCE_REUPLOAD\x10\x05\x12\x1d\n\x19UPLOAD_PERMANENTLY_FAILED\x10\x06\"W\n\x0b\x43ontentType\x12\x07\n\x03MP3\x10\x01\x12\x07\n\x03M4A\x10\x02\x12\x07\n\x03\x41\x41\x43\x10\x03\x12\x08\n\x04\x46LAC\x10\x04\x12\x07\n\x03OGG\x10\x05\x12\x07\n\x03WMA\x10\x06\x12\x07\n\x03M4P\x10\x07\x12\x08\n\x04\x41LAC\x10\x08\" \n\x08\x43hannels\x12\x08\n\x04MONO\x10\x01\x12\n\n\x06STEREO\x10\x02\"\x8b\x01\n\tTrackType\x12\x11\n\rMATCHED_TRACK\x10\x01\x12\x13\n\x0fUNMATCHED_TRACK\x10\x02\x12\x0f\n\x0bLOCAL_TRACK\x10\x03\x12\x13\n\x0fPURCHASED_TRACK\x10\x04\x12\x1f\n\x1bMETADATA_ONLY_MATCHED_TRACK\x10\x05\x12\x0f\n\x0bPROMO_TRACK\x10\x06\"e\n\x06Rating\x12\r\n\tNOT_RATED\x10\x01\x12\x0c\n\x08ONE_STAR\x10\x02\x12\r\n\tTWO_STARS\x10\x03\x12\x0f\n\x0bTHREE_STARS\x10\x04\x12\x0e\n\nFOUR_STARS\x10\x05\x12\x0e\n\nFIVE_STARS\x10\x06\"3\n\x0c\x45xplicitType\x12\x0c\n\x08\x45XPLICIT\x10\x01\x12\t\n\x05\x43LEAN\x10\x02\x12\n\n\x06\x45\x44ITED\x10\x03\"7\n\x06Tracks\x12-\n\x05track\x18\x01 \x03(\x0b\x32\x1e.wireless_android_skyjam.Track\"\xe4\x02\n\x08Playlist\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\x12\x1a\n\x12\x63reation_timestamp\x18\x03 \x01(\x03\x12\x1f\n\x17last_modified_timestamp\x18\x04 \x01(\x03\x12\x16\n\x07\x64\x65leted\x18\x05 \x01(\x08:\x05\x66\x61lse\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x45\n\rplaylist_type\x18\x07 \x01(\x0e\x32..wireless_android_skyjam.Playlist.PlaylistType\x12;\n\x10playlist_art_ref\x18\x08 \x01(\x0b\x32!.wireless_android_skyjam.ImageRef\x12\x18\n\x10recent_timestamp\x18\t \x01(\x03\"8\n\x0cPlaylistType\x12\x12\n\x0eUSER_GENERATED\x10\x01\x12\t\n\x05MAGIC\x10\x02\x12\t\n\x05PROMO\x10\x03\"\xde\x03\n\rPlaylistEntry\x12\x13\n\x0bplaylist_id\x18\x01 \x01(\t\x12\x19\n\x11\x61\x62solute_position\x18\x02 \x01(\x03\x12\x1c\n\x14place_after_entry_id\x18\x03 \x01(\t\x12\x10\n\x08track_id\x18\x04 \x01(\t\x12\n\n\x02id\x18\x05 \x01(\t\x12\x11\n\tclient_id\x18\x06 \x01(\t\x12\x1a\n\x12\x63reation_timestamp\x18\x07 \x01(\x03\x12\x1f\n\x17last_modified_timestamp\x18\x08 \x01(\x03\x12\x16\n\x07\x64\x65leted\x18\t \x01(\x08:\x05\x66\x61lse\x12`\n\x19relative_position_id_type\x18\n \x01(\x0e\x32=.wireless_android_skyjam.PlaylistEntry.RelativePositionIdType\x12-\n\x05track\x18\x0f \x01(\x0b\x32\x1e.wireless_android_skyjam.Track\x12\x1d\n\x15place_before_entry_id\x18\x10 \x01(\t\x12\x17\n\x0fstring_position\x18\x11 \x01(\t\"0\n\x16RelativePositionIdType\x12\n\n\x06SERVER\x10\x01\x12\n\n\x06\x43LIENT\x10\x02\"\x80\x04\n\x16TrackSearchRestriction\x12Q\n\tattribute\x18\x01 \x02(\x0e\x32>.wireless_android_skyjam.TrackSearchRestriction.TrackAttribute\x12\r\n\x05value\x18\x02 \x02(\t\x12W\n\x0f\x63omparison_type\x18\x03 \x02(\x0e\x32>.wireless_android_skyjam.TrackSearchRestriction.ComparisonType\"\xa6\x01\n\x0eTrackAttribute\x12\t\n\x05TITLE\x10\x01\x12\n\n\x06\x41RTIST\x10\x02\x12\t\n\x05\x41LBUM\x10\x03\x12\x10\n\x0c\x41LBUM_ARTIST\x10\x04\x12\t\n\x05GENRE\x10\x05\x12\x17\n\x13\x41VAILABILITY_STATUS\x10\x06\x12\x0e\n\nTRACK_TYPE\x10\x07\x12\x08\n\x04YEAR\x10\x08\x12\x0c\n\x08STORE_ID\x10\t\x12\x14\n\x10\x41LBUM_METAJAM_ID\x10\n\"\x81\x01\n\x0e\x43omparisonType\x12\t\n\x05\x45QUAL\x10\x00\x12\r\n\tNOT_EQUAL\x10\x01\x12\x10\n\x0cGREATER_THAN\x10\x02\x12\x11\n\rGREATER_EQUAL\x10\x03\x12\r\n\tLESS_THAN\x10\x04\x12\x0e\n\nLESS_EQUAL\x10\x05\x12\x11\n\rPARTIAL_MATCH\x10\x06\"\xa2\x02\n\x19TrackSearchRestrictionSet\x12S\n\x04type\x18\x01 \x01(\x0e\x32\x45.wireless_android_skyjam.TrackSearchRestrictionSet.RestrictionSetType\x12\x44\n\x0brestriction\x18\x02 \x03(\x0b\x32/.wireless_android_skyjam.TrackSearchRestriction\x12\x43\n\x07sub_set\x18\x03 \x03(\x0b\x32\x32.wireless_android_skyjam.TrackSearchRestrictionSet\"%\n\x12RestrictionSetType\x12\x07\n\x03\x41ND\x10\x00\x12\x06\n\x02OR\x10\x01\"\x98\x02\n\x0eTrackSortOrder\x12I\n\tattribute\x18\x01 \x01(\x0e\x32\x36.wireless_android_skyjam.TrackSortOrder.TrackAttribute\x12\x18\n\ndescending\x18\x02 \x01(\x08:\x04true\"\xa0\x01\n\x0eTrackAttribute\x12\x16\n\x12LAST_MODIFIED_TIME\x10\x01\x12\n\n\x06\x41RTIST\x10\x02\x12\t\n\x05\x41LBUM\x10\x03\x12\t\n\x05TITLE\x10\x04\x12\x10\n\x0cTRACK_NUMBER\x10\x06\x12\x0e\n\nPLAY_COUNT\x10\t\x12\x13\n\x0f\x44URATION_MILLIS\x10\n\x12\n\n\x06RATING\x10\x0b\x12\x11\n\rCREATION_TIME\x10\x0c\"\xde\x03\n\x10GetTracksRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\x13\n\x0bupdated_min\x18\x02 \x01(\x03\x12\x17\n\x0finclude_deleted\x18\x03 \x01(\x08\x12\x13\n\x0bmax_results\x18\x04 \x01(\x05\x12\x1a\n\x12\x63ontinuation_token\x18\x05 \x01(\t\x12K\n\x12search_restriction\x18\x06 \x03(\x0b\x32/.wireless_android_skyjam.TrackSearchRestriction\x12;\n\nsort_order\x18\x07 \x03(\x0b\x32\'.wireless_android_skyjam.TrackSortOrder\x12K\n\x0frestriction_set\x18\x08 \x01(\x0b\x32\x32.wireless_android_skyjam.TrackSearchRestrictionSet\x12S\n\x10track_projection\x18\t \x01(\x0e\x32\x39.wireless_android_skyjam.GetTracksRequest.TrackProjection\".\n\x0fTrackProjection\x12\x08\n\x04\x46ULL\x10\x01\x12\x11\n\rFRONTEND_VIEW\x10\x02\"\x83\x02\n\x11GetTracksResponse\x12N\n\rresponse_code\x18\x01 \x02(\x0e\x32\x37.wireless_android_skyjam.GetTracksResponse.ResponseCode\x12-\n\x05track\x18\x02 \x03(\x0b\x32\x1e.wireless_android_skyjam.Track\x12\x1f\n\x17\x65stimated_total_results\x18\x03 \x01(\x03\x12\x1a\n\x12\x63ontinuation_token\x18\x04 \x01(\t\"2\n\x0cResponseCode\x12\x06\n\x02OK\x10\x01\x12\x10\n\x0cNOT_MODIFIED\x10\x02\x12\x08\n\x04GONE\x10\x03\"\xfc\x01\n\x19GetPlaylistEntriesRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\x13\n\x0bupdated_min\x18\x02 \x01(\x03\x12\x17\n\x0finclude_deleted\x18\x03 \x01(\x08\x12\x13\n\x0bmax_results\x18\x04 \x01(\x05\x12\x1a\n\x12\x63ontinuation_token\x18\x05 \x01(\t\x12\x1a\n\x12playlist_id_filter\x18\x06 \x01(\t\x12)\n\x1ainclude_all_track_metadata\x18\x07 \x01(\x08:\x05\x66\x61lse\x12(\n\x1aonly_show_available_tracks\x18\x08 \x01(\x08:\x04true\"\xa6\x02\n\x1aGetPlaylistEntriesResponse\x12W\n\rresponse_code\x18\x01 \x02(\x0e\x32@.wireless_android_skyjam.GetPlaylistEntriesResponse.ResponseCode\x12>\n\x0eplaylist_entry\x18\x02 \x03(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\x12\x1f\n\x17\x65stimated_total_results\x18\x03 \x01(\x03\x12\x1a\n\x12\x63ontinuation_token\x18\x04 \x01(\t\"2\n\x0cResponseCode\x12\x06\n\x02OK\x10\x01\x12\x10\n\x0cNOT_MODIFIED\x10\x02\x12\x08\n\x04GONE\x10\x03\"\xe0\x01\n\x11PlaylistSortOrder\x12O\n\tattribute\x18\x01 \x01(\x0e\x32<.wireless_android_skyjam.PlaylistSortOrder.PlaylistAttribute\x12\x19\n\ndescending\x18\x02 \x01(\x08:\x05\x66\x61lse\"_\n\x11PlaylistAttribute\x12\x16\n\x12LAST_MODIFIED_TIME\x10\x01\x12\t\n\x05TITLE\x10\x02\x12\x11\n\rCREATION_TIME\x10\x03\x12\x14\n\x10RECENT_TIMESTAMP\x10\x04\"\xc5\x01\n\x13GetPlaylistsRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\x13\n\x0bupdated_min\x18\x02 \x01(\x03\x12\x17\n\x0finclude_deleted\x18\x03 \x01(\x08\x12\x13\n\x0bmax_results\x18\x04 \x01(\x05\x12\x1a\n\x12\x63ontinuation_token\x18\x05 \x01(\t\x12>\n\nsort_order\x18\x06 \x01(\x0b\x32*.wireless_android_skyjam.PlaylistSortOrder\"\x8f\x02\n\x14GetPlaylistsResponse\x12Q\n\rresponse_code\x18\x01 \x02(\x0e\x32:.wireless_android_skyjam.GetPlaylistsResponse.ResponseCode\x12\x33\n\x08playlist\x18\x02 \x03(\x0b\x32!.wireless_android_skyjam.Playlist\x12\x1f\n\x17\x65stimated_total_results\x18\x03 \x01(\x03\x12\x1a\n\x12\x63ontinuation_token\x18\x04 \x01(\t\"2\n\x0cResponseCode\x12\x06\n\x02OK\x10\x01\x12\x10\n\x0cNOT_MODIFIED\x10\x02\x12\x08\n\x04GONE\x10\x03\"3\n\x12LookupTrackRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\";\n\x1aLookupPlaylistEntryRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\"6\n\x15LookupPlaylistRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tclient_id\x18\x02 \x01(\t\"\x9e\x03\n\x12\x42\x61tchLookupRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12:\n\x05track\x18\x02 \x03(\x0b\x32+.wireless_android_skyjam.LookupTrackRequest\x12@\n\x08playlist\x18\x03 \x03(\x0b\x32..wireless_android_skyjam.LookupPlaylistRequest\x12O\n\rmetadata_type\x18\x04 \x01(\x0e\x32\x38.wireless_android_skyjam.BatchLookupRequest.MetadataType\x12K\n\x0eplaylist_entry\x18\x05 \x03(\x0b\x32\x33.wireless_android_skyjam.LookupPlaylistEntryRequest\x12\x1e\n\x0finclude_deleted\x18\x06 \x01(\x08:\x05\x66\x61lse\";\n\x0cMetadataType\x12\t\n\x05TRACK\x10\x01\x12\x0c\n\x08PLAYLIST\x10\x02\x12\x12\n\x0ePLAYLIST_ENTRY\x10\x03\"\xb9\x01\n\x13\x42\x61tchLookupResponse\x12-\n\x05track\x18\x01 \x03(\x0b\x32\x1e.wireless_android_skyjam.Track\x12\x33\n\x08playlist\x18\x02 \x03(\x0b\x32!.wireless_android_skyjam.Playlist\x12>\n\x0eplaylist_entry\x18\x03 \x03(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\"\xea\x01\n\x12MutateTrackRequest\x12\x34\n\x0c\x63reate_track\x18\x01 \x01(\x0b\x32\x1e.wireless_android_skyjam.Track\x12\x34\n\x0cupdate_track\x18\x02 \x01(\x0b\x32\x1e.wireless_android_skyjam.Track\x12\x14\n\x0c\x64\x65lete_track\x18\x03 \x01(\t\x12\x16\n\x0epartial_update\x18\x04 \x01(\x08\x12\"\n\x14update_last_modified\x18\x05 \x01(\x08:\x04true\x12\x16\n\x0eundelete_track\x18\x06 \x01(\t\"\xe6\x03\n\x0eMutateResponse\x12Q\n\rresponse_code\x18\x01 \x01(\x0e\x32:.wireless_android_skyjam.MutateResponse.MutateResponseCode\x12\n\n\x02id\x18\x02 \x01(\t\x12\x10\n\x08\x63hild_id\x18\x03 \x03(\t\x12\x11\n\tclient_id\x18\x04 \x01(\t\x12W\n\x13\x61vailability_status\x18\x05 \x01(\x0e\x32:.wireless_android_skyjam.MutateResponse.AvailabilityStatus\x12\x15\n\rerror_message\x18\x06 \x01(\t\"W\n\x12MutateResponseCode\x12\x06\n\x02OK\x10\x01\x12\x0c\n\x08\x43ONFLICT\x10\x02\x12\x13\n\x0fINVALID_REQUEST\x10\x03\x12\x16\n\x12METADATA_TOO_LARGE\x10\x04\"\x86\x01\n\x12\x41vailabilityStatus\x12\x0b\n\x07PENDING\x10\x01\x12\x0b\n\x07MATCHED\x10\x02\x12\x14\n\x10UPLOAD_REQUESTED\x10\x03\x12\r\n\tAVAILABLE\x10\x04\x12\x12\n\x0e\x46ORCE_REUPLOAD\x10\x05\x12\x1d\n\x19UPLOAD_PERMANENTLY_FAILED\x10\x06\"\xe5\x01\n\x18\x42\x61tchMutateTracksRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\x43\n\x0etrack_mutation\x18\x02 \x03(\x0b\x32+.wireless_android_skyjam.MutateTrackRequest\x12\x1f\n\x11send_notification\x18\x03 \x01(\x08:\x04true\x12\'\n\x19\x64\x65tect_timestamp_conflict\x18\x04 \x01(\x08:\x04true\x12)\n\x1bnotify_fine_grained_updates\x18\x05 \x01(\x08:\x04true\"\xfd\x01\n\x19\x42\x61tchMutateTracksResponse\x12g\n\rresponse_code\x18\x01 \x03(\x0e\x32P.wireless_android_skyjam.BatchMutateTracksResponse.BatchMutateTracksResponseCode\x12@\n\x0fmutate_response\x18\x02 \x03(\x0b\x32\'.wireless_android_skyjam.MutateResponse\"5\n\x1d\x42\x61tchMutateTracksResponseCode\x12\x06\n\x02OK\x10\x01\x12\x0c\n\x08\x43ONFLICT\x10\x02\"\xbf\x02\n\x15MutatePlaylistRequest\x12:\n\x0f\x63reate_playlist\x18\x01 \x01(\x0b\x32!.wireless_android_skyjam.Playlist\x12:\n\x0fupdate_playlist\x18\x02 \x01(\x0b\x32!.wireless_android_skyjam.Playlist\x12\x17\n\x0f\x64\x65lete_playlist\x18\x03 \x01(\t\x12\x16\n\x0epartial_update\x18\x04 \x01(\x08\x12>\n\x0eplaylist_entry\x18\x05 \x03(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\x12\"\n\x14update_last_modified\x18\x06 \x01(\x08:\x04true\x12\x19\n\x11undelete_playlist\x18\x07 \x01(\t\"\xef\x01\n\x1b\x42\x61tchMutatePlaylistsRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12I\n\x11playlist_mutation\x18\x02 \x03(\x0b\x32..wireless_android_skyjam.MutatePlaylistRequest\x12\x1f\n\x11send_notification\x18\x03 \x01(\x08:\x04true\x12\'\n\x19\x64\x65tect_timestamp_conflict\x18\x04 \x01(\x08:\x04true\x12*\n\x1bnotify_fine_grained_updates\x18\x05 \x01(\x08:\x05\x66\x61lse\"\x89\x02\n\x1c\x42\x61tchMutatePlaylistsResponse\x12m\n\rresponse_code\x18\x01 \x03(\x0e\x32V.wireless_android_skyjam.BatchMutatePlaylistsResponse.BatchMutatePlaylistsResponseCode\x12@\n\x0fmutate_response\x18\x02 \x03(\x0b\x32\'.wireless_android_skyjam.MutateResponse\"8\n BatchMutatePlaylistsResponseCode\x12\x06\n\x02OK\x10\x01\x12\x0c\n\x08\x43ONFLICT\x10\x02\"\xb6\x02\n\x1aMutatePlaylistEntryRequest\x12\x45\n\x15\x63reate_playlist_entry\x18\x01 \x01(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\x12\x45\n\x15update_playlist_entry\x18\x02 \x01(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\x12\x45\n\x15\x64\x65lete_playlist_entry\x18\x03 \x01(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\x12\"\n\x14update_last_modified\x18\x04 \x01(\x08:\x04true\x12\x1f\n\x17undelete_playlist_entry\x18\x05 \x01(\t\"\x80\x02\n!BatchMutatePlaylistEntriesRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12T\n\x17playlist_entry_mutation\x18\x02 \x03(\x0b\x32\x33.wireless_android_skyjam.MutatePlaylistEntryRequest\x12\x1f\n\x11send_notification\x18\x03 \x01(\x08:\x04true\x12\'\n\x19\x64\x65tect_timestamp_conflict\x18\x04 \x01(\x08:\x04true\x12*\n\x1bnotify_fine_grained_updates\x18\x05 \x01(\x08:\x05\x66\x61lse\"\xa1\x02\n\"BatchMutatePlaylistEntriesResponse\x12y\n\rresponse_code\x18\x01 \x03(\x0e\x32\x62.wireless_android_skyjam.BatchMutatePlaylistEntriesResponse.BatchMutatePlaylistEntriesResponseCode\x12@\n\x0fmutate_response\x18\x02 \x03(\x0b\x32\'.wireless_android_skyjam.MutateResponse\">\n&BatchMutatePlaylistEntriesResponseCode\x12\x06\n\x02OK\x10\x01\x12\x0c\n\x08\x43ONFLICT\x10\x02\"\xa8\x01\n\x11MagicPlaylistSeed\x12\x46\n\tseed_type\x18\x01 \x02(\x0e\x32\x33.wireless_android_skyjam.MagicPlaylistSeed.SeedType\x12\x0c\n\x04seed\x18\x02 \x02(\t\"=\n\x08SeedType\x12\t\n\x05TRACK\x10\x00\x12\n\n\x06\x41RTIST\x10\x01\x12\t\n\x05\x41LBUM\x10\x02\x12\x0f\n\x0bOPAQUE_SEED\x10\x03\"\xe9\x01\n\x14MagicPlaylistRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\x15\n\rplaylist_name\x18\x02 \x01(\t\x12\x13\n\x0bplaylist_id\x18\x03 \x01(\t\x12\x38\n\x04seed\x18\x04 \x03(\x0b\x32*.wireless_android_skyjam.MagicPlaylistSeed\x12\x1b\n\x13num_recommendations\x18\x05 \x01(\x05\x12)\n\x1ainclude_all_track_metadata\x18\x06 \x01(\x08:\x05\x66\x61lse\x12\x12\n\nmodel_name\x18\x07 \x01(\t\"\x8c\x01\n\x15MagicPlaylistResponse\x12\x33\n\x08playlist\x18\x01 \x01(\x0b\x32!.wireless_android_skyjam.Playlist\x12>\n\x0eplaylist_entry\x18\x02 \x03(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\"\xf8\x01\n\x12\x46lushLockerRequest\x12\x0f\n\x07gaia_id\x18\x01 \x01(\x03\x12\x13\n\x0bgaia_cookie\x18\x02 \x01(\t\x12#\n\x15remove_audio_binaries\x18\x03 \x01(\x08:\x04true\x12#\n\x15remove_image_binaries\x18\x04 \x01(\x08:\x04true\x12\x1f\n\x11send_notification\x18\x05 \x01(\x08:\x04true\x12&\n\x17reset_subscription_type\x18\x06 \x01(\x08:\x05\x66\x61lse\x12)\n\x1bnotify_fine_grained_updates\x18\x08 \x01(\x08:\x04true\"\x8a\x01\n\x13\x46lushLockerResponse\x12\x16\n\x0etracks_removed\x18\x01 \x01(\x05\x12\x17\n\x0f\x65ntries_removed\x18\x02 \x01(\x05\x12\x19\n\x11playlists_removed\x18\x03 \x01(\x05\x12\'\n\x1fsuccess_reset_subscription_type\x18\x04 \x01(\x08\"6\n\x12LockerNotification\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\x0f\n\x07payload\x18\x02 \x01(\x0c\"\xee\x01\n\x05\x41lbum\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x61lbum_artist\x18\x02 \x01(\t\x12\x34\n\talbum_art\x18\x03 \x01(\x0b\x32!.wireless_android_skyjam.ImageRef\x12\x13\n\x0btrack_count\x18\x04 \x01(\x05\x12\x18\n\x10last_time_played\x18\x05 \x01(\x03\x12\x16\n\x0eis_compilation\x18\x06 \x01(\x08\x12\x18\n\x10\x61lbum_metajam_id\x18\x07 \x01(\t\x12\x1a\n\x12\x63reation_timestamp\x18\x08 \x01(\x03\x12\x0e\n\x06\x61rtist\x18\t \x01(\t\"\xbb\x01\n\x0e\x41lbumSortOrder\x12I\n\tattribute\x18\x01 \x01(\x0e\x32\x36.wireless_android_skyjam.AlbumSortOrder.AlbumAttribute\x12\x19\n\ndescending\x18\x02 \x01(\x08:\x05\x66\x61lse\"C\n\x0e\x41lbumAttribute\x12\x14\n\x10LAST_PLAYED_TIME\x10\x01\x12\x08\n\x04NAME\x10\x02\x12\x11\n\rCREATION_TIME\x10\x03\"u\n\x10GetAlbumsRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12;\n\nsort_order\x18\x02 \x01(\x0b\x32\'.wireless_android_skyjam.AlbumSortOrder\x12\x13\n\x0bmax_results\x18\x03 \x01(\x05\"B\n\x11GetAlbumsResponse\x12-\n\x05\x61lbum\x18\x01 \x03(\x0b\x32\x1e.wireless_android_skyjam.Album\"`\n\x06\x41rtist\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x19\n\x11total_track_count\x18\x02 \x01(\x05\x12-\n\x05\x61lbum\x18\x03 \x03(\x0b\x32\x1e.wireless_android_skyjam.Album\",\n\x0f\x41rtistSortOrder\x12\x19\n\ndescending\x18\x02 \x01(\x08:\x05\x66\x61lse\"w\n\x11GetArtistsRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12<\n\nsort_order\x18\x02 \x01(\x0b\x32(.wireless_android_skyjam.ArtistSortOrder\x12\x13\n\x0bmax_results\x18\x03 \x01(\x05\"E\n\x12GetArtistsResponse\x12/\n\x06\x61rtist\x18\x01 \x03(\x0b\x32\x1f.wireless_android_skyjam.Artist\"d\n\nMusicGenre\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x19\n\x11total_track_count\x18\x02 \x01(\x05\x12-\n\x05\x61lbum\x18\x03 \x03(\x0b\x32\x1e.wireless_android_skyjam.Album\"+\n\x0eGenreSortOrder\x12\x19\n\ndescending\x18\x02 \x01(\x08:\x05\x66\x61lse\"u\n\x10GetGenresRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12;\n\nsort_order\x18\x02 \x01(\x0b\x32\'.wireless_android_skyjam.GenreSortOrder\x12\x13\n\x0bmax_results\x18\x03 \x01(\x05\"G\n\x11GetGenresResponse\x12\x32\n\x05genre\x18\x01 \x03(\x0b\x32#.wireless_android_skyjam.MusicGenre\"\xfe\x02\n GetDynamicPlaylistEntriesRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12s\n\x15playlist_entries_type\x18\x04 \x02(\x0e\x32T.wireless_android_skyjam.GetDynamicPlaylistEntriesRequest.DynamicPlaylistEntriesType\x12\x13\n\x0bmax_results\x18\x02 \x01(\x05\x12\x1a\n\x12\x63ontinuation_token\x18\x03 \x01(\t\x12)\n\x1ainclude_all_track_metadata\x18\x05 \x01(\x08:\x05\x66\x61lse\"x\n\x1a\x44ynamicPlaylistEntriesType\x12\r\n\tPURCHASED\x10\x01\x12\r\n\tTHUMBS_UP\x10\x02\x12\x12\n\x0eRECENTLY_ADDED\x10\x03\x12\x0c\n\x08PROMOTED\x10\x04\x12\x1a\n\x16PROMOTED_AND_PURCHASED\x10\x05\"\xa2\x04\n!GetDynamicPlaylistEntriesResponse\x12^\n\rresponse_code\x18\x01 \x02(\x0e\x32G.wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.ResponseCode\x12>\n\x0eplaylist_entry\x18\x02 \x03(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\x12\x1f\n\x17\x65stimated_total_results\x18\x03 \x01(\x03\x12\x1a\n\x12\x63ontinuation_token\x18\x04 \x01(\t\x12t\n\x15playlist_entries_type\x18\x05 \x01(\x0e\x32U.wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.DynamicPlaylistEntriesType\"\x85\x01\n\x1a\x44ynamicPlaylistEntriesType\x12\r\n\tPURCHASED\x10\x01\x12\r\n\tTHUMBS_UP\x10\x02\x12\x12\n\x0eRECENTLY_ADDED\x10\x03\x12\x0c\n\x08PROMOTED\x10\x04\x12\x0b\n\x07UNKNOWN\x10\x05\x12\x1a\n\x16PROMOTED_AND_PURCHASED\x10\x06\"\"\n\x0cResponseCode\x12\x06\n\x02OK\x10\x01\x12\n\n\x06NOT_OK\x10\x02\"4\n!GetAggregationsByTrackTypeRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\"\x82\x02\n\x12TrackTypeAggregate\x12O\n\x10track_type_value\x18\x01 \x01(\x0e\x32\x35.wireless_android_skyjam.TrackTypeAggregate.TrackType\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\"\x8b\x01\n\tTrackType\x12\x11\n\rMATCHED_TRACK\x10\x01\x12\x13\n\x0fUNMATCHED_TRACK\x10\x02\x12\x0f\n\x0bLOCAL_TRACK\x10\x03\x12\x13\n\x0fPURCHASED_TRACK\x10\x04\x12\x1f\n\x1bMETADATA_ONLY_MATCHED_TRACK\x10\x05\x12\x0f\n\x0bPROMO_TRACK\x10\x06\"o\n\"GetAggregationsByTrackTypeResponse\x12I\n\x14track_type_aggregate\x18\x01 \x03(\x0b\x32+.wireless_android_skyjam.TrackTypeAggregate\"=\n*GetAggregationsByAvailabilityStatusRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\"\x9b\x02\n\x1b\x41vailabilityStatusAggregate\x12\x64\n\x13\x61vailability_status\x18\x01 \x01(\x0e\x32G.wireless_android_skyjam.AvailabilityStatusAggregate.AvailabilityStatus\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\"\x86\x01\n\x12\x41vailabilityStatus\x12\x0b\n\x07PENDING\x10\x01\x12\x0b\n\x07MATCHED\x10\x02\x12\x14\n\x10UPLOAD_REQUESTED\x10\x03\x12\r\n\tAVAILABLE\x10\x04\x12\x12\n\x0e\x46ORCE_REUPLOAD\x10\x05\x12\x1d\n\x19UPLOAD_PERMANENTLY_FAILED\x10\x06\"\x8a\x01\n+GetAggregationsByAvailabilityStatusResponse\x12[\n\x1d\x61vailability_status_aggregate\x18\x01 \x03(\x0b\x32\x34.wireless_android_skyjam.AvailabilityStatusAggregate\"7\n\x15\x41\x64\x64PromoTracksRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\r\n\x05genre\x18\x02 \x03(\t\"G\n\x16\x41\x64\x64PromoTracksResponse\x12-\n\x05track\x18\x01 \x03(\x0b\x32\x1e.wireless_android_skyjam.Track\"J\n\x1eGetPlaylistAggregationsRequest\x12\x0f\n\x07gaia_id\x18\x01 \x02(\x03\x12\x17\n\x0bmax_results\x18\x02 \x01(\x05:\x02\x31\x34\"\x9b\x01\n\x11PlaylistAggregate\x12\x13\n\x0bplaylist_id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x34\n\talbum_art\x18\x03 \x01(\x0b\x32!.wireless_android_skyjam.ImageRef\x12\x13\n\x0btrack_count\x18\x04 \x01(\x03\x12\x18\n\x10last_time_played\x18\x05 \x01(\x03\"i\n\x1fGetPlaylistAggregationsResponse\x12\x46\n\x12playlist_aggregate\x18\x01 \x03(\x0b\x32*.wireless_android_skyjam.PlaylistAggregate\"?\n\x1bRemoteControlCommandRequest\x12\x0f\n\x07gaia_id\x18\x01 \x01(\x03\x12\x0f\n\x07\x63ommand\x18\x02 \x01(\t\"\xcb\x01\n\x1cRemoteControlCommandResponse\x12Y\n\rresponse_code\x18\x01 \x01(\x0e\x32\x42.wireless_android_skyjam.RemoteControlCommandResponse.ResponseCode\"P\n\x0cResponseCode\x12\x06\n\x02OK\x10\x01\x12\x10\n\x0cNO_PUBLISHER\x10\x02\x12\x13\n\x0fINVALID_REQUEST\x10\x03\x12\x11\n\rPUBLISH_ERROR\x10\x04') , dependencies=[uits__pb2.DESCRIPTOR,]) _sym_db.RegisterFileDescriptor(DESCRIPTOR) _AUDIOREF_STORE = _descriptor.EnumDescriptor( name='Store', full_name='wireless_android_skyjam.AudioRef.Store', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='BLOBSTORE', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='SM_V2', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=293, serialized_end=326, ) _sym_db.RegisterEnumDescriptor(_AUDIOREF_STORE) _IMAGEREF_STORE = _descriptor.EnumDescriptor( name='Store', full_name='wireless_android_skyjam.ImageRef.Store', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='SHOEBOX', index=0, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=531, serialized_end=551, ) _sym_db.RegisterEnumDescriptor(_IMAGEREF_STORE) _IMAGEREF_ORIGIN = _descriptor.EnumDescriptor( name='Origin', full_name='wireless_android_skyjam.ImageRef.Origin', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='PERSONAL', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='STORE', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=553, serialized_end=586, ) _sym_db.RegisterEnumDescriptor(_IMAGEREF_ORIGIN) _TRACK_AVAILABILITYSTATUS = _descriptor.EnumDescriptor( name='AvailabilityStatus', full_name='wireless_android_skyjam.Track.AvailabilityStatus', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='PENDING', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='MATCHED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_REQUESTED', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='AVAILABLE', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='FORCE_REUPLOAD', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_PERMANENTLY_FAILED', index=5, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=2761, serialized_end=2895, ) _sym_db.RegisterEnumDescriptor(_TRACK_AVAILABILITYSTATUS) _TRACK_CONTENTTYPE = _descriptor.EnumDescriptor( name='ContentType', full_name='wireless_android_skyjam.Track.ContentType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='MP3', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='M4A', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='AAC', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='FLAC', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='OGG', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='WMA', index=5, number=6, options=None, type=None), _descriptor.EnumValueDescriptor( name='M4P', index=6, number=7, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALAC', index=7, number=8, options=None, type=None), ], containing_type=None, options=None, serialized_start=2897, serialized_end=2984, ) _sym_db.RegisterEnumDescriptor(_TRACK_CONTENTTYPE) _TRACK_CHANNELS = _descriptor.EnumDescriptor( name='Channels', full_name='wireless_android_skyjam.Track.Channels', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='MONO', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='STEREO', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=2986, serialized_end=3018, ) _sym_db.RegisterEnumDescriptor(_TRACK_CHANNELS) _TRACK_TRACKTYPE = _descriptor.EnumDescriptor( name='TrackType', full_name='wireless_android_skyjam.Track.TrackType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='MATCHED_TRACK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='UNMATCHED_TRACK', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='LOCAL_TRACK', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='PURCHASED_TRACK', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='METADATA_ONLY_MATCHED_TRACK', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='PROMO_TRACK', index=5, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=3021, serialized_end=3160, ) _sym_db.RegisterEnumDescriptor(_TRACK_TRACKTYPE) _TRACK_RATING = _descriptor.EnumDescriptor( name='Rating', full_name='wireless_android_skyjam.Track.Rating', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='NOT_RATED', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='ONE_STAR', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='TWO_STARS', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='THREE_STARS', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='FOUR_STARS', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='FIVE_STARS', index=5, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=3162, serialized_end=3263, ) _sym_db.RegisterEnumDescriptor(_TRACK_RATING) _TRACK_EXPLICITTYPE = _descriptor.EnumDescriptor( name='ExplicitType', full_name='wireless_android_skyjam.Track.ExplicitType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='EXPLICIT', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='CLEAN', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='EDITED', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=3265, serialized_end=3316, ) _sym_db.RegisterEnumDescriptor(_TRACK_EXPLICITTYPE) _PLAYLIST_PLAYLISTTYPE = _descriptor.EnumDescriptor( name='PlaylistType', full_name='wireless_android_skyjam.Playlist.PlaylistType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='USER_GENERATED', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='MAGIC', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='PROMO', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=3676, serialized_end=3732, ) _sym_db.RegisterEnumDescriptor(_PLAYLIST_PLAYLISTTYPE) _PLAYLISTENTRY_RELATIVEPOSITIONIDTYPE = _descriptor.EnumDescriptor( name='RelativePositionIdType', full_name='wireless_android_skyjam.PlaylistEntry.RelativePositionIdType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='SERVER', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='CLIENT', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=4165, serialized_end=4213, ) _sym_db.RegisterEnumDescriptor(_PLAYLISTENTRY_RELATIVEPOSITIONIDTYPE) _TRACKSEARCHRESTRICTION_TRACKATTRIBUTE = _descriptor.EnumDescriptor( name='TrackAttribute', full_name='wireless_android_skyjam.TrackSearchRestriction.TrackAttribute', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='TITLE', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='ARTIST', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALBUM', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALBUM_ARTIST', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='GENRE', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='AVAILABILITY_STATUS', index=5, number=6, options=None, type=None), _descriptor.EnumValueDescriptor( name='TRACK_TYPE', index=6, number=7, options=None, type=None), _descriptor.EnumValueDescriptor( name='YEAR', index=7, number=8, options=None, type=None), _descriptor.EnumValueDescriptor( name='STORE_ID', index=8, number=9, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALBUM_METAJAM_ID', index=9, number=10, options=None, type=None), ], containing_type=None, options=None, serialized_start=4430, serialized_end=4596, ) _sym_db.RegisterEnumDescriptor(_TRACKSEARCHRESTRICTION_TRACKATTRIBUTE) _TRACKSEARCHRESTRICTION_COMPARISONTYPE = _descriptor.EnumDescriptor( name='ComparisonType', full_name='wireless_android_skyjam.TrackSearchRestriction.ComparisonType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='EQUAL', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='NOT_EQUAL', index=1, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='GREATER_THAN', index=2, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='GREATER_EQUAL', index=3, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='LESS_THAN', index=4, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='LESS_EQUAL', index=5, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='PARTIAL_MATCH', index=6, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=4599, serialized_end=4728, ) _sym_db.RegisterEnumDescriptor(_TRACKSEARCHRESTRICTION_COMPARISONTYPE) _TRACKSEARCHRESTRICTIONSET_RESTRICTIONSETTYPE = _descriptor.EnumDescriptor( name='RestrictionSetType', full_name='wireless_android_skyjam.TrackSearchRestrictionSet.RestrictionSetType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='AND', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='OR', index=1, number=1, options=None, type=None), ], containing_type=None, options=None, serialized_start=4984, serialized_end=5021, ) _sym_db.RegisterEnumDescriptor(_TRACKSEARCHRESTRICTIONSET_RESTRICTIONSETTYPE) _TRACKSORTORDER_TRACKATTRIBUTE = _descriptor.EnumDescriptor( name='TrackAttribute', full_name='wireless_android_skyjam.TrackSortOrder.TrackAttribute', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='LAST_MODIFIED_TIME', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='ARTIST', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALBUM', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='TITLE', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='TRACK_NUMBER', index=4, number=6, options=None, type=None), _descriptor.EnumValueDescriptor( name='PLAY_COUNT', index=5, number=9, options=None, type=None), _descriptor.EnumValueDescriptor( name='DURATION_MILLIS', index=6, number=10, options=None, type=None), _descriptor.EnumValueDescriptor( name='RATING', index=7, number=11, options=None, type=None), _descriptor.EnumValueDescriptor( name='CREATION_TIME', index=8, number=12, options=None, type=None), ], containing_type=None, options=None, serialized_start=5144, serialized_end=5304, ) _sym_db.RegisterEnumDescriptor(_TRACKSORTORDER_TRACKATTRIBUTE) _GETTRACKSREQUEST_TRACKPROJECTION = _descriptor.EnumDescriptor( name='TrackProjection', full_name='wireless_android_skyjam.GetTracksRequest.TrackProjection', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='FULL', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='FRONTEND_VIEW', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=5739, serialized_end=5785, ) _sym_db.RegisterEnumDescriptor(_GETTRACKSREQUEST_TRACKPROJECTION) _GETTRACKSRESPONSE_RESPONSECODE = _descriptor.EnumDescriptor( name='ResponseCode', full_name='wireless_android_skyjam.GetTracksResponse.ResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='NOT_MODIFIED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='GONE', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=5997, serialized_end=6047, ) _sym_db.RegisterEnumDescriptor(_GETTRACKSRESPONSE_RESPONSECODE) _GETPLAYLISTENTRIESRESPONSE_RESPONSECODE = _descriptor.EnumDescriptor( name='ResponseCode', full_name='wireless_android_skyjam.GetPlaylistEntriesResponse.ResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='NOT_MODIFIED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='GONE', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=5997, serialized_end=6047, ) _sym_db.RegisterEnumDescriptor(_GETPLAYLISTENTRIESRESPONSE_RESPONSECODE) _PLAYLISTSORTORDER_PLAYLISTATTRIBUTE = _descriptor.EnumDescriptor( name='PlaylistAttribute', full_name='wireless_android_skyjam.PlaylistSortOrder.PlaylistAttribute', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='LAST_MODIFIED_TIME', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='TITLE', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='CREATION_TIME', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='RECENT_TIMESTAMP', index=3, number=4, options=None, type=None), ], containing_type=None, options=None, serialized_start=6731, serialized_end=6826, ) _sym_db.RegisterEnumDescriptor(_PLAYLISTSORTORDER_PLAYLISTATTRIBUTE) _GETPLAYLISTSRESPONSE_RESPONSECODE = _descriptor.EnumDescriptor( name='ResponseCode', full_name='wireless_android_skyjam.GetPlaylistsResponse.ResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='NOT_MODIFIED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='GONE', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=5997, serialized_end=6047, ) _sym_db.RegisterEnumDescriptor(_GETPLAYLISTSRESPONSE_RESPONSECODE) _BATCHLOOKUPREQUEST_METADATATYPE = _descriptor.EnumDescriptor( name='MetadataType', full_name='wireless_android_skyjam.BatchLookupRequest.MetadataType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='TRACK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='PLAYLIST', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='PLAYLIST_ENTRY', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=7828, serialized_end=7887, ) _sym_db.RegisterEnumDescriptor(_BATCHLOOKUPREQUEST_METADATATYPE) _MUTATERESPONSE_MUTATERESPONSECODE = _descriptor.EnumDescriptor( name='MutateResponseCode', full_name='wireless_android_skyjam.MutateResponse.MutateResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='CONFLICT', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='INVALID_REQUEST', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='METADATA_TOO_LARGE', index=3, number=4, options=None, type=None), ], containing_type=None, options=None, serialized_start=8577, serialized_end=8664, ) _sym_db.RegisterEnumDescriptor(_MUTATERESPONSE_MUTATERESPONSECODE) _MUTATERESPONSE_AVAILABILITYSTATUS = _descriptor.EnumDescriptor( name='AvailabilityStatus', full_name='wireless_android_skyjam.MutateResponse.AvailabilityStatus', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='PENDING', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='MATCHED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_REQUESTED', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='AVAILABLE', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='FORCE_REUPLOAD', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_PERMANENTLY_FAILED', index=5, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=2761, serialized_end=2895, ) _sym_db.RegisterEnumDescriptor(_MUTATERESPONSE_AVAILABILITYSTATUS) _BATCHMUTATETRACKSRESPONSE_BATCHMUTATETRACKSRESPONSECODE = _descriptor.EnumDescriptor( name='BatchMutateTracksResponseCode', full_name='wireless_android_skyjam.BatchMutateTracksResponse.BatchMutateTracksResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='CONFLICT', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=9236, serialized_end=9289, ) _sym_db.RegisterEnumDescriptor(_BATCHMUTATETRACKSRESPONSE_BATCHMUTATETRACKSRESPONSECODE) _BATCHMUTATEPLAYLISTSRESPONSE_BATCHMUTATEPLAYLISTSRESPONSECODE = _descriptor.EnumDescriptor( name='BatchMutatePlaylistsResponseCode', full_name='wireless_android_skyjam.BatchMutatePlaylistsResponse.BatchMutatePlaylistsResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='CONFLICT', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=10065, serialized_end=10121, ) _sym_db.RegisterEnumDescriptor(_BATCHMUTATEPLAYLISTSRESPONSE_BATCHMUTATEPLAYLISTSRESPONSECODE) _BATCHMUTATEPLAYLISTENTRIESRESPONSE_BATCHMUTATEPLAYLISTENTRIESRESPONSECODE = _descriptor.EnumDescriptor( name='BatchMutatePlaylistEntriesResponseCode', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesResponse.BatchMutatePlaylistEntriesResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='CONFLICT', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=10923, serialized_end=10985, ) _sym_db.RegisterEnumDescriptor(_BATCHMUTATEPLAYLISTENTRIESRESPONSE_BATCHMUTATEPLAYLISTENTRIESRESPONSECODE) _MAGICPLAYLISTSEED_SEEDTYPE = _descriptor.EnumDescriptor( name='SeedType', full_name='wireless_android_skyjam.MagicPlaylistSeed.SeedType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='TRACK', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='ARTIST', index=1, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALBUM', index=2, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='OPAQUE_SEED', index=3, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=11095, serialized_end=11156, ) _sym_db.RegisterEnumDescriptor(_MAGICPLAYLISTSEED_SEEDTYPE) _ALBUMSORTORDER_ALBUMATTRIBUTE = _descriptor.EnumDescriptor( name='AlbumAttribute', full_name='wireless_android_skyjam.AlbumSortOrder.AlbumAttribute', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='LAST_PLAYED_TIME', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='NAME', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='CREATION_TIME', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=12347, serialized_end=12414, ) _sym_db.RegisterEnumDescriptor(_ALBUMSORTORDER_ALBUMATTRIBUTE) _GETDYNAMICPLAYLISTENTRIESREQUEST_DYNAMICPLAYLISTENTRIESTYPE = _descriptor.EnumDescriptor( name='DynamicPlaylistEntriesType', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesRequest.DynamicPlaylistEntriesType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='PURCHASED', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='THUMBS_UP', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='RECENTLY_ADDED', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='PROMOTED', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='PROMOTED_AND_PURCHASED', index=4, number=5, options=None, type=None), ], containing_type=None, options=None, serialized_start=13541, serialized_end=13661, ) _sym_db.RegisterEnumDescriptor(_GETDYNAMICPLAYLISTENTRIESREQUEST_DYNAMICPLAYLISTENTRIESTYPE) _GETDYNAMICPLAYLISTENTRIESRESPONSE_DYNAMICPLAYLISTENTRIESTYPE = _descriptor.EnumDescriptor( name='DynamicPlaylistEntriesType', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.DynamicPlaylistEntriesType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='PURCHASED', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='THUMBS_UP', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='RECENTLY_ADDED', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='PROMOTED', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='UNKNOWN', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='PROMOTED_AND_PURCHASED', index=5, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=14041, serialized_end=14174, ) _sym_db.RegisterEnumDescriptor(_GETDYNAMICPLAYLISTENTRIESRESPONSE_DYNAMICPLAYLISTENTRIESTYPE) _GETDYNAMICPLAYLISTENTRIESRESPONSE_RESPONSECODE = _descriptor.EnumDescriptor( name='ResponseCode', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.ResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='NOT_OK', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=14176, serialized_end=14210, ) _sym_db.RegisterEnumDescriptor(_GETDYNAMICPLAYLISTENTRIESRESPONSE_RESPONSECODE) _TRACKTYPEAGGREGATE_TRACKTYPE = _descriptor.EnumDescriptor( name='TrackType', full_name='wireless_android_skyjam.TrackTypeAggregate.TrackType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='MATCHED_TRACK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='UNMATCHED_TRACK', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='LOCAL_TRACK', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='PURCHASED_TRACK', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='METADATA_ONLY_MATCHED_TRACK', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='PROMO_TRACK', index=5, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=3021, serialized_end=3160, ) _sym_db.RegisterEnumDescriptor(_TRACKTYPEAGGREGATE_TRACKTYPE) _AVAILABILITYSTATUSAGGREGATE_AVAILABILITYSTATUS = _descriptor.EnumDescriptor( name='AvailabilityStatus', full_name='wireless_android_skyjam.AvailabilityStatusAggregate.AvailabilityStatus', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='PENDING', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='MATCHED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_REQUESTED', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='AVAILABLE', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='FORCE_REUPLOAD', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_PERMANENTLY_FAILED', index=5, number=6, options=None, type=None), ], containing_type=None, options=None, serialized_start=2761, serialized_end=2895, ) _sym_db.RegisterEnumDescriptor(_AVAILABILITYSTATUSAGGREGATE_AVAILABILITYSTATUS) _REMOTECONTROLCOMMANDRESPONSE_RESPONSECODE = _descriptor.EnumDescriptor( name='ResponseCode', full_name='wireless_android_skyjam.RemoteControlCommandResponse.ResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='NO_PUBLISHER', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='INVALID_REQUEST', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='PUBLISH_ERROR', index=3, number=4, options=None, type=None), ], containing_type=None, options=None, serialized_start=15790, serialized_end=15870, ) _sym_db.RegisterEnumDescriptor(_REMOTECONTROLCOMMANDRESPONSE_RESPONSECODE) _AUDIOREF = _descriptor.Descriptor( name='AudioRef', full_name='wireless_android_skyjam.AudioRef', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='store', full_name='wireless_android_skyjam.AudioRef.store', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='ref', full_name='wireless_android_skyjam.AudioRef.ref', index=1, number=2, type=12, cpp_type=9, label=2, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='url', full_name='wireless_android_skyjam.AudioRef.url', index=2, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='bit_rate', full_name='wireless_android_skyjam.AudioRef.bit_rate', index=3, number=5, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sample_rate', full_name='wireless_android_skyjam.AudioRef.sample_rate', index=4, number=6, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='downloadable', full_name='wireless_android_skyjam.AudioRef.downloadable', index=5, number=7, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='duration_millis', full_name='wireless_android_skyjam.AudioRef.duration_millis', index=6, number=8, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='rematch_timestamp', full_name='wireless_android_skyjam.AudioRef.rematch_timestamp', index=7, number=9, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='invalid_due_to_wipeout', full_name='wireless_android_skyjam.AudioRef.invalid_due_to_wipeout', index=8, number=10, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _AUDIOREF_STORE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=54, serialized_end=326, ) _IMAGEREF = _descriptor.Descriptor( name='ImageRef', full_name='wireless_android_skyjam.ImageRef', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='store', full_name='wireless_android_skyjam.ImageRef.store', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=3, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='width', full_name='wireless_android_skyjam.ImageRef.width', index=1, number=2, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='height', full_name='wireless_android_skyjam.ImageRef.height', index=2, number=3, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='url', full_name='wireless_android_skyjam.ImageRef.url', index=3, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='invalid_due_to_wipeout', full_name='wireless_android_skyjam.ImageRef.invalid_due_to_wipeout', index=4, number=7, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='origin', full_name='wireless_android_skyjam.ImageRef.origin', index=5, number=8, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _IMAGEREF_STORE, _IMAGEREF_ORIGIN, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=329, serialized_end=586, ) _UPLOADEDUITSID3TAG = _descriptor.Descriptor( name='UploadedUitsId3Tag', full_name='wireless_android_skyjam.UploadedUitsId3Tag', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='owner', full_name='wireless_android_skyjam.UploadedUitsId3Tag.owner', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='data', full_name='wireless_android_skyjam.UploadedUitsId3Tag.data', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=588, serialized_end=637, ) _ADDITIONALMETADATA = _descriptor.Descriptor( name='AdditionalMetadata', full_name='wireless_android_skyjam.AdditionalMetadata', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='tag_name', full_name='wireless_android_skyjam.AdditionalMetadata.tag_name', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='value', full_name='wireless_android_skyjam.AdditionalMetadata.value', index=1, number=2, type=12, cpp_type=9, label=2, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=639, serialized_end=692, ) _TRACKEXTRAS = _descriptor.Descriptor( name='TrackExtras', full_name='wireless_android_skyjam.TrackExtras', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='additional_metadata', full_name='wireless_android_skyjam.TrackExtras.additional_metadata', index=0, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='candidates', full_name='wireless_android_skyjam.TrackExtras.candidates', index=1, number=3, type=9, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='original_sample_rate', full_name='wireless_android_skyjam.TrackExtras.original_sample_rate', index=2, number=4, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=695, serialized_end=832, ) _TRACK = _descriptor.Descriptor( name='Track', full_name='wireless_android_skyjam.Track', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.Track.id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.Track.client_id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='creation_timestamp', full_name='wireless_android_skyjam.Track.creation_timestamp', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='last_modified_timestamp', full_name='wireless_android_skyjam.Track.last_modified_timestamp', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='deleted', full_name='wireless_android_skyjam.Track.deleted', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='title', full_name='wireless_android_skyjam.Track.title', index=5, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='artist', full_name='wireless_android_skyjam.Track.artist', index=6, number=7, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='artist_hash', full_name='wireless_android_skyjam.Track.artist_hash', index=7, number=46, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='composer', full_name='wireless_android_skyjam.Track.composer', index=8, number=8, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album', full_name='wireless_android_skyjam.Track.album', index=9, number=9, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_artist', full_name='wireless_android_skyjam.Track.album_artist', index=10, number=10, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='canonical_album', full_name='wireless_android_skyjam.Track.canonical_album', index=11, number=56, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='canonical_artist', full_name='wireless_android_skyjam.Track.canonical_artist', index=12, number=57, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='canonical_genre_album', full_name='wireless_android_skyjam.Track.canonical_genre_album', index=13, number=58, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='year', full_name='wireless_android_skyjam.Track.year', index=14, number=11, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='comment', full_name='wireless_android_skyjam.Track.comment', index=15, number=12, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_number', full_name='wireless_android_skyjam.Track.track_number', index=16, number=13, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='genre', full_name='wireless_android_skyjam.Track.genre', index=17, number=14, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='duration_millis', full_name='wireless_android_skyjam.Track.duration_millis', index=18, number=15, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='beats_per_minute', full_name='wireless_android_skyjam.Track.beats_per_minute', index=19, number=16, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='original_bit_rate', full_name='wireless_android_skyjam.Track.original_bit_rate', index=20, number=44, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='audio_ref', full_name='wireless_android_skyjam.Track.audio_ref', index=21, number=17, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_art_ref', full_name='wireless_android_skyjam.Track.album_art_ref', index=22, number=18, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='availability_status', full_name='wireless_android_skyjam.Track.availability_status', index=23, number=19, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='play_count', full_name='wireless_android_skyjam.Track.play_count', index=24, number=20, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='content_type', full_name='wireless_android_skyjam.Track.content_type', index=25, number=25, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='total_track_count', full_name='wireless_android_skyjam.Track.total_track_count', index=26, number=26, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='disc_number', full_name='wireless_android_skyjam.Track.disc_number', index=27, number=27, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='total_disc_count', full_name='wireless_android_skyjam.Track.total_disc_count', index=28, number=28, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='channels', full_name='wireless_android_skyjam.Track.channels', index=29, number=29, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_type', full_name='wireless_android_skyjam.Track.track_type', index=30, number=30, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='use_single_server_copy', full_name='wireless_android_skyjam.Track.use_single_server_copy', index=31, number=59, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='rating', full_name='wireless_android_skyjam.Track.rating', index=32, number=31, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='estimated_size', full_name='wireless_android_skyjam.Track.estimated_size', index=33, number=32, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='store_id', full_name='wireless_android_skyjam.Track.store_id', index=34, number=33, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='metajam_id', full_name='wireless_android_skyjam.Track.metajam_id', index=35, number=34, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='metajam_id_confidence', full_name='wireless_android_skyjam.Track.metajam_id_confidence', index=36, number=43, type=1, cpp_type=5, label=1, has_default_value=True, default_value=float(0), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uits', full_name='wireless_android_skyjam.Track.uits', index=37, number=35, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uits_metadata', full_name='wireless_android_skyjam.Track.uits_metadata', index=38, number=40, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='compilation', full_name='wireless_android_skyjam.Track.compilation', index=39, number=36, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_date_added', full_name='wireless_android_skyjam.Track.client_date_added', index=40, number=37, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='recent_timestamp', full_name='wireless_android_skyjam.Track.recent_timestamp', index=41, number=38, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='do_not_rematch', full_name='wireless_android_skyjam.Track.do_not_rematch', index=42, number=39, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='from_album_purchase', full_name='wireless_android_skyjam.Track.from_album_purchase', index=43, number=41, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_metajam_id', full_name='wireless_android_skyjam.Track.album_metajam_id', index=44, number=42, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='transaction_id', full_name='wireless_android_skyjam.Track.transaction_id', index=45, number=45, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='debug_track', full_name='wireless_android_skyjam.Track.debug_track', index=46, number=47, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='normalized_title', full_name='wireless_android_skyjam.Track.normalized_title', index=47, number=48, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='normalized_artist', full_name='wireless_android_skyjam.Track.normalized_artist', index=48, number=49, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='normalized_album', full_name='wireless_android_skyjam.Track.normalized_album', index=49, number=50, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='normalized_album_artist', full_name='wireless_android_skyjam.Track.normalized_album_artist', index=50, number=51, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='normalized_canonical_album', full_name='wireless_android_skyjam.Track.normalized_canonical_album', index=51, number=54, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='normalized_canonical_artist', full_name='wireless_android_skyjam.Track.normalized_canonical_artist', index=52, number=55, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.Track.uploader_id', index=53, number=52, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_album_id', full_name='wireless_android_skyjam.Track.client_album_id', index=54, number=53, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='label_owner_code', full_name='wireless_android_skyjam.Track.label_owner_code', index=55, number=60, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='original_content_type', full_name='wireless_android_skyjam.Track.original_content_type', index=56, number=61, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uploaded_uits', full_name='wireless_android_skyjam.Track.uploaded_uits', index=57, number=71, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='explicit_type', full_name='wireless_android_skyjam.Track.explicit_type', index=58, number=74, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_extras', full_name='wireless_android_skyjam.Track.track_extras', index=59, number=75, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _TRACK_AVAILABILITYSTATUS, _TRACK_CONTENTTYPE, _TRACK_CHANNELS, _TRACK_TRACKTYPE, _TRACK_RATING, _TRACK_EXPLICITTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=835, serialized_end=3316, ) _TRACKS = _descriptor.Descriptor( name='Tracks', full_name='wireless_android_skyjam.Tracks', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.Tracks.track', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3318, serialized_end=3373, ) _PLAYLIST = _descriptor.Descriptor( name='Playlist', full_name='wireless_android_skyjam.Playlist', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.Playlist.id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.Playlist.client_id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='creation_timestamp', full_name='wireless_android_skyjam.Playlist.creation_timestamp', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='last_modified_timestamp', full_name='wireless_android_skyjam.Playlist.last_modified_timestamp', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='deleted', full_name='wireless_android_skyjam.Playlist.deleted', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='name', full_name='wireless_android_skyjam.Playlist.name', index=5, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_type', full_name='wireless_android_skyjam.Playlist.playlist_type', index=6, number=7, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_art_ref', full_name='wireless_android_skyjam.Playlist.playlist_art_ref', index=7, number=8, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='recent_timestamp', full_name='wireless_android_skyjam.Playlist.recent_timestamp', index=8, number=9, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _PLAYLIST_PLAYLISTTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3376, serialized_end=3732, ) _PLAYLISTENTRY = _descriptor.Descriptor( name='PlaylistEntry', full_name='wireless_android_skyjam.PlaylistEntry', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='playlist_id', full_name='wireless_android_skyjam.PlaylistEntry.playlist_id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='absolute_position', full_name='wireless_android_skyjam.PlaylistEntry.absolute_position', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='place_after_entry_id', full_name='wireless_android_skyjam.PlaylistEntry.place_after_entry_id', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_id', full_name='wireless_android_skyjam.PlaylistEntry.track_id', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.PlaylistEntry.id', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.PlaylistEntry.client_id', index=5, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='creation_timestamp', full_name='wireless_android_skyjam.PlaylistEntry.creation_timestamp', index=6, number=7, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='last_modified_timestamp', full_name='wireless_android_skyjam.PlaylistEntry.last_modified_timestamp', index=7, number=8, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='deleted', full_name='wireless_android_skyjam.PlaylistEntry.deleted', index=8, number=9, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='relative_position_id_type', full_name='wireless_android_skyjam.PlaylistEntry.relative_position_id_type', index=9, number=10, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.PlaylistEntry.track', index=10, number=15, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='place_before_entry_id', full_name='wireless_android_skyjam.PlaylistEntry.place_before_entry_id', index=11, number=16, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='string_position', full_name='wireless_android_skyjam.PlaylistEntry.string_position', index=12, number=17, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _PLAYLISTENTRY_RELATIVEPOSITIONIDTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3735, serialized_end=4213, ) _TRACKSEARCHRESTRICTION = _descriptor.Descriptor( name='TrackSearchRestriction', full_name='wireless_android_skyjam.TrackSearchRestriction', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='attribute', full_name='wireless_android_skyjam.TrackSearchRestriction.attribute', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='value', full_name='wireless_android_skyjam.TrackSearchRestriction.value', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='comparison_type', full_name='wireless_android_skyjam.TrackSearchRestriction.comparison_type', index=2, number=3, type=14, cpp_type=8, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _TRACKSEARCHRESTRICTION_TRACKATTRIBUTE, _TRACKSEARCHRESTRICTION_COMPARISONTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4216, serialized_end=4728, ) _TRACKSEARCHRESTRICTIONSET = _descriptor.Descriptor( name='TrackSearchRestrictionSet', full_name='wireless_android_skyjam.TrackSearchRestrictionSet', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='type', full_name='wireless_android_skyjam.TrackSearchRestrictionSet.type', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='restriction', full_name='wireless_android_skyjam.TrackSearchRestrictionSet.restriction', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sub_set', full_name='wireless_android_skyjam.TrackSearchRestrictionSet.sub_set', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _TRACKSEARCHRESTRICTIONSET_RESTRICTIONSETTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=4731, serialized_end=5021, ) _TRACKSORTORDER = _descriptor.Descriptor( name='TrackSortOrder', full_name='wireless_android_skyjam.TrackSortOrder', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='attribute', full_name='wireless_android_skyjam.TrackSortOrder.attribute', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='descending', full_name='wireless_android_skyjam.TrackSortOrder.descending', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _TRACKSORTORDER_TRACKATTRIBUTE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5024, serialized_end=5304, ) _GETTRACKSREQUEST = _descriptor.Descriptor( name='GetTracksRequest', full_name='wireless_android_skyjam.GetTracksRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetTracksRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='updated_min', full_name='wireless_android_skyjam.GetTracksRequest.updated_min', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='include_deleted', full_name='wireless_android_skyjam.GetTracksRequest.include_deleted', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetTracksRequest.max_results', index=3, number=4, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetTracksRequest.continuation_token', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='search_restriction', full_name='wireless_android_skyjam.GetTracksRequest.search_restriction', index=5, number=6, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sort_order', full_name='wireless_android_skyjam.GetTracksRequest.sort_order', index=6, number=7, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='restriction_set', full_name='wireless_android_skyjam.GetTracksRequest.restriction_set', index=7, number=8, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_projection', full_name='wireless_android_skyjam.GetTracksRequest.track_projection', index=8, number=9, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETTRACKSREQUEST_TRACKPROJECTION, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5307, serialized_end=5785, ) _GETTRACKSRESPONSE = _descriptor.Descriptor( name='GetTracksResponse', full_name='wireless_android_skyjam.GetTracksResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.GetTracksResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.GetTracksResponse.track', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='estimated_total_results', full_name='wireless_android_skyjam.GetTracksResponse.estimated_total_results', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetTracksResponse.continuation_token', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETTRACKSRESPONSE_RESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5788, serialized_end=6047, ) _GETPLAYLISTENTRIESREQUEST = _descriptor.Descriptor( name='GetPlaylistEntriesRequest', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='updated_min', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.updated_min', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='include_deleted', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.include_deleted', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.max_results', index=3, number=4, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.continuation_token', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_id_filter', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.playlist_id_filter', index=5, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='include_all_track_metadata', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.include_all_track_metadata', index=6, number=7, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='only_show_available_tracks', full_name='wireless_android_skyjam.GetPlaylistEntriesRequest.only_show_available_tracks', index=7, number=8, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6050, serialized_end=6302, ) _GETPLAYLISTENTRIESRESPONSE = _descriptor.Descriptor( name='GetPlaylistEntriesResponse', full_name='wireless_android_skyjam.GetPlaylistEntriesResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.GetPlaylistEntriesResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry', full_name='wireless_android_skyjam.GetPlaylistEntriesResponse.playlist_entry', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='estimated_total_results', full_name='wireless_android_skyjam.GetPlaylistEntriesResponse.estimated_total_results', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetPlaylistEntriesResponse.continuation_token', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETPLAYLISTENTRIESRESPONSE_RESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6305, serialized_end=6599, ) _PLAYLISTSORTORDER = _descriptor.Descriptor( name='PlaylistSortOrder', full_name='wireless_android_skyjam.PlaylistSortOrder', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='attribute', full_name='wireless_android_skyjam.PlaylistSortOrder.attribute', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='descending', full_name='wireless_android_skyjam.PlaylistSortOrder.descending', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _PLAYLISTSORTORDER_PLAYLISTATTRIBUTE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6602, serialized_end=6826, ) _GETPLAYLISTSREQUEST = _descriptor.Descriptor( name='GetPlaylistsRequest', full_name='wireless_android_skyjam.GetPlaylistsRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetPlaylistsRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='updated_min', full_name='wireless_android_skyjam.GetPlaylistsRequest.updated_min', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='include_deleted', full_name='wireless_android_skyjam.GetPlaylistsRequest.include_deleted', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetPlaylistsRequest.max_results', index=3, number=4, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetPlaylistsRequest.continuation_token', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sort_order', full_name='wireless_android_skyjam.GetPlaylistsRequest.sort_order', index=5, number=6, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6829, serialized_end=7026, ) _GETPLAYLISTSRESPONSE = _descriptor.Descriptor( name='GetPlaylistsResponse', full_name='wireless_android_skyjam.GetPlaylistsResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.GetPlaylistsResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist', full_name='wireless_android_skyjam.GetPlaylistsResponse.playlist', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='estimated_total_results', full_name='wireless_android_skyjam.GetPlaylistsResponse.estimated_total_results', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetPlaylistsResponse.continuation_token', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETPLAYLISTSRESPONSE_RESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7029, serialized_end=7300, ) _LOOKUPTRACKREQUEST = _descriptor.Descriptor( name='LookupTrackRequest', full_name='wireless_android_skyjam.LookupTrackRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.LookupTrackRequest.id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.LookupTrackRequest.client_id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7302, serialized_end=7353, ) _LOOKUPPLAYLISTENTRYREQUEST = _descriptor.Descriptor( name='LookupPlaylistEntryRequest', full_name='wireless_android_skyjam.LookupPlaylistEntryRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.LookupPlaylistEntryRequest.id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.LookupPlaylistEntryRequest.client_id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7355, serialized_end=7414, ) _LOOKUPPLAYLISTREQUEST = _descriptor.Descriptor( name='LookupPlaylistRequest', full_name='wireless_android_skyjam.LookupPlaylistRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.LookupPlaylistRequest.id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.LookupPlaylistRequest.client_id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7416, serialized_end=7470, ) _BATCHLOOKUPREQUEST = _descriptor.Descriptor( name='BatchLookupRequest', full_name='wireless_android_skyjam.BatchLookupRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.BatchLookupRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.BatchLookupRequest.track', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist', full_name='wireless_android_skyjam.BatchLookupRequest.playlist', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='metadata_type', full_name='wireless_android_skyjam.BatchLookupRequest.metadata_type', index=3, number=4, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry', full_name='wireless_android_skyjam.BatchLookupRequest.playlist_entry', index=4, number=5, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='include_deleted', full_name='wireless_android_skyjam.BatchLookupRequest.include_deleted', index=5, number=6, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _BATCHLOOKUPREQUEST_METADATATYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7473, serialized_end=7887, ) _BATCHLOOKUPRESPONSE = _descriptor.Descriptor( name='BatchLookupResponse', full_name='wireless_android_skyjam.BatchLookupResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.BatchLookupResponse.track', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist', full_name='wireless_android_skyjam.BatchLookupResponse.playlist', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry', full_name='wireless_android_skyjam.BatchLookupResponse.playlist_entry', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=7890, serialized_end=8075, ) _MUTATETRACKREQUEST = _descriptor.Descriptor( name='MutateTrackRequest', full_name='wireless_android_skyjam.MutateTrackRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='create_track', full_name='wireless_android_skyjam.MutateTrackRequest.create_track', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='update_track', full_name='wireless_android_skyjam.MutateTrackRequest.update_track', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='delete_track', full_name='wireless_android_skyjam.MutateTrackRequest.delete_track', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='partial_update', full_name='wireless_android_skyjam.MutateTrackRequest.partial_update', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='update_last_modified', full_name='wireless_android_skyjam.MutateTrackRequest.update_last_modified', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='undelete_track', full_name='wireless_android_skyjam.MutateTrackRequest.undelete_track', index=5, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=8078, serialized_end=8312, ) _MUTATERESPONSE = _descriptor.Descriptor( name='MutateResponse', full_name='wireless_android_skyjam.MutateResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.MutateResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.MutateResponse.id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='child_id', full_name='wireless_android_skyjam.MutateResponse.child_id', index=2, number=3, type=9, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.MutateResponse.client_id', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='availability_status', full_name='wireless_android_skyjam.MutateResponse.availability_status', index=4, number=5, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='error_message', full_name='wireless_android_skyjam.MutateResponse.error_message', index=5, number=6, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _MUTATERESPONSE_MUTATERESPONSECODE, _MUTATERESPONSE_AVAILABILITYSTATUS, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=8315, serialized_end=8801, ) _BATCHMUTATETRACKSREQUEST = _descriptor.Descriptor( name='BatchMutateTracksRequest', full_name='wireless_android_skyjam.BatchMutateTracksRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.BatchMutateTracksRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_mutation', full_name='wireless_android_skyjam.BatchMutateTracksRequest.track_mutation', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='send_notification', full_name='wireless_android_skyjam.BatchMutateTracksRequest.send_notification', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='detect_timestamp_conflict', full_name='wireless_android_skyjam.BatchMutateTracksRequest.detect_timestamp_conflict', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='notify_fine_grained_updates', full_name='wireless_android_skyjam.BatchMutateTracksRequest.notify_fine_grained_updates', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=8804, serialized_end=9033, ) _BATCHMUTATETRACKSRESPONSE = _descriptor.Descriptor( name='BatchMutateTracksResponse', full_name='wireless_android_skyjam.BatchMutateTracksResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.BatchMutateTracksResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='mutate_response', full_name='wireless_android_skyjam.BatchMutateTracksResponse.mutate_response', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _BATCHMUTATETRACKSRESPONSE_BATCHMUTATETRACKSRESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=9036, serialized_end=9289, ) _MUTATEPLAYLISTREQUEST = _descriptor.Descriptor( name='MutatePlaylistRequest', full_name='wireless_android_skyjam.MutatePlaylistRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='create_playlist', full_name='wireless_android_skyjam.MutatePlaylistRequest.create_playlist', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='update_playlist', full_name='wireless_android_skyjam.MutatePlaylistRequest.update_playlist', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='delete_playlist', full_name='wireless_android_skyjam.MutatePlaylistRequest.delete_playlist', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='partial_update', full_name='wireless_android_skyjam.MutatePlaylistRequest.partial_update', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry', full_name='wireless_android_skyjam.MutatePlaylistRequest.playlist_entry', index=4, number=5, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='update_last_modified', full_name='wireless_android_skyjam.MutatePlaylistRequest.update_last_modified', index=5, number=6, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='undelete_playlist', full_name='wireless_android_skyjam.MutatePlaylistRequest.undelete_playlist', index=6, number=7, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=9292, serialized_end=9611, ) _BATCHMUTATEPLAYLISTSREQUEST = _descriptor.Descriptor( name='BatchMutatePlaylistsRequest', full_name='wireless_android_skyjam.BatchMutatePlaylistsRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.BatchMutatePlaylistsRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_mutation', full_name='wireless_android_skyjam.BatchMutatePlaylistsRequest.playlist_mutation', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='send_notification', full_name='wireless_android_skyjam.BatchMutatePlaylistsRequest.send_notification', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='detect_timestamp_conflict', full_name='wireless_android_skyjam.BatchMutatePlaylistsRequest.detect_timestamp_conflict', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='notify_fine_grained_updates', full_name='wireless_android_skyjam.BatchMutatePlaylistsRequest.notify_fine_grained_updates', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=9614, serialized_end=9853, ) _BATCHMUTATEPLAYLISTSRESPONSE = _descriptor.Descriptor( name='BatchMutatePlaylistsResponse', full_name='wireless_android_skyjam.BatchMutatePlaylistsResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.BatchMutatePlaylistsResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='mutate_response', full_name='wireless_android_skyjam.BatchMutatePlaylistsResponse.mutate_response', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _BATCHMUTATEPLAYLISTSRESPONSE_BATCHMUTATEPLAYLISTSRESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=9856, serialized_end=10121, ) _MUTATEPLAYLISTENTRYREQUEST = _descriptor.Descriptor( name='MutatePlaylistEntryRequest', full_name='wireless_android_skyjam.MutatePlaylistEntryRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='create_playlist_entry', full_name='wireless_android_skyjam.MutatePlaylistEntryRequest.create_playlist_entry', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='update_playlist_entry', full_name='wireless_android_skyjam.MutatePlaylistEntryRequest.update_playlist_entry', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='delete_playlist_entry', full_name='wireless_android_skyjam.MutatePlaylistEntryRequest.delete_playlist_entry', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='update_last_modified', full_name='wireless_android_skyjam.MutatePlaylistEntryRequest.update_last_modified', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='undelete_playlist_entry', full_name='wireless_android_skyjam.MutatePlaylistEntryRequest.undelete_playlist_entry', index=4, number=5, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=10124, serialized_end=10434, ) _BATCHMUTATEPLAYLISTENTRIESREQUEST = _descriptor.Descriptor( name='BatchMutatePlaylistEntriesRequest', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry_mutation', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesRequest.playlist_entry_mutation', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='send_notification', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesRequest.send_notification', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='detect_timestamp_conflict', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesRequest.detect_timestamp_conflict', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='notify_fine_grained_updates', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesRequest.notify_fine_grained_updates', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=10437, serialized_end=10693, ) _BATCHMUTATEPLAYLISTENTRIESRESPONSE = _descriptor.Descriptor( name='BatchMutatePlaylistEntriesResponse', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='mutate_response', full_name='wireless_android_skyjam.BatchMutatePlaylistEntriesResponse.mutate_response', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _BATCHMUTATEPLAYLISTENTRIESRESPONSE_BATCHMUTATEPLAYLISTENTRIESRESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=10696, serialized_end=10985, ) _MAGICPLAYLISTSEED = _descriptor.Descriptor( name='MagicPlaylistSeed', full_name='wireless_android_skyjam.MagicPlaylistSeed', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='seed_type', full_name='wireless_android_skyjam.MagicPlaylistSeed.seed_type', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='seed', full_name='wireless_android_skyjam.MagicPlaylistSeed.seed', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _MAGICPLAYLISTSEED_SEEDTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=10988, serialized_end=11156, ) _MAGICPLAYLISTREQUEST = _descriptor.Descriptor( name='MagicPlaylistRequest', full_name='wireless_android_skyjam.MagicPlaylistRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.MagicPlaylistRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_name', full_name='wireless_android_skyjam.MagicPlaylistRequest.playlist_name', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_id', full_name='wireless_android_skyjam.MagicPlaylistRequest.playlist_id', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='seed', full_name='wireless_android_skyjam.MagicPlaylistRequest.seed', index=3, number=4, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='num_recommendations', full_name='wireless_android_skyjam.MagicPlaylistRequest.num_recommendations', index=4, number=5, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='include_all_track_metadata', full_name='wireless_android_skyjam.MagicPlaylistRequest.include_all_track_metadata', index=5, number=6, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='model_name', full_name='wireless_android_skyjam.MagicPlaylistRequest.model_name', index=6, number=7, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=11159, serialized_end=11392, ) _MAGICPLAYLISTRESPONSE = _descriptor.Descriptor( name='MagicPlaylistResponse', full_name='wireless_android_skyjam.MagicPlaylistResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='playlist', full_name='wireless_android_skyjam.MagicPlaylistResponse.playlist', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry', full_name='wireless_android_skyjam.MagicPlaylistResponse.playlist_entry', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=11395, serialized_end=11535, ) _FLUSHLOCKERREQUEST = _descriptor.Descriptor( name='FlushLockerRequest', full_name='wireless_android_skyjam.FlushLockerRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.FlushLockerRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='gaia_cookie', full_name='wireless_android_skyjam.FlushLockerRequest.gaia_cookie', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='remove_audio_binaries', full_name='wireless_android_skyjam.FlushLockerRequest.remove_audio_binaries', index=2, number=3, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='remove_image_binaries', full_name='wireless_android_skyjam.FlushLockerRequest.remove_image_binaries', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='send_notification', full_name='wireless_android_skyjam.FlushLockerRequest.send_notification', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='reset_subscription_type', full_name='wireless_android_skyjam.FlushLockerRequest.reset_subscription_type', index=5, number=6, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='notify_fine_grained_updates', full_name='wireless_android_skyjam.FlushLockerRequest.notify_fine_grained_updates', index=6, number=8, type=8, cpp_type=7, label=1, has_default_value=True, default_value=True, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=11538, serialized_end=11786, ) _FLUSHLOCKERRESPONSE = _descriptor.Descriptor( name='FlushLockerResponse', full_name='wireless_android_skyjam.FlushLockerResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='tracks_removed', full_name='wireless_android_skyjam.FlushLockerResponse.tracks_removed', index=0, number=1, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='entries_removed', full_name='wireless_android_skyjam.FlushLockerResponse.entries_removed', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlists_removed', full_name='wireless_android_skyjam.FlushLockerResponse.playlists_removed', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='success_reset_subscription_type', full_name='wireless_android_skyjam.FlushLockerResponse.success_reset_subscription_type', index=3, number=4, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=11789, serialized_end=11927, ) _LOCKERNOTIFICATION = _descriptor.Descriptor( name='LockerNotification', full_name='wireless_android_skyjam.LockerNotification', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.LockerNotification.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='payload', full_name='wireless_android_skyjam.LockerNotification.payload', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=11929, serialized_end=11983, ) _ALBUM = _descriptor.Descriptor( name='Album', full_name='wireless_android_skyjam.Album', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='name', full_name='wireless_android_skyjam.Album.name', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_artist', full_name='wireless_android_skyjam.Album.album_artist', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_art', full_name='wireless_android_skyjam.Album.album_art', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_count', full_name='wireless_android_skyjam.Album.track_count', index=3, number=4, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='last_time_played', full_name='wireless_android_skyjam.Album.last_time_played', index=4, number=5, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='is_compilation', full_name='wireless_android_skyjam.Album.is_compilation', index=5, number=6, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_metajam_id', full_name='wireless_android_skyjam.Album.album_metajam_id', index=6, number=7, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='creation_timestamp', full_name='wireless_android_skyjam.Album.creation_timestamp', index=7, number=8, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='artist', full_name='wireless_android_skyjam.Album.artist', index=8, number=9, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=11986, serialized_end=12224, ) _ALBUMSORTORDER = _descriptor.Descriptor( name='AlbumSortOrder', full_name='wireless_android_skyjam.AlbumSortOrder', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='attribute', full_name='wireless_android_skyjam.AlbumSortOrder.attribute', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='descending', full_name='wireless_android_skyjam.AlbumSortOrder.descending', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _ALBUMSORTORDER_ALBUMATTRIBUTE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12227, serialized_end=12414, ) _GETALBUMSREQUEST = _descriptor.Descriptor( name='GetAlbumsRequest', full_name='wireless_android_skyjam.GetAlbumsRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetAlbumsRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sort_order', full_name='wireless_android_skyjam.GetAlbumsRequest.sort_order', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetAlbumsRequest.max_results', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12416, serialized_end=12533, ) _GETALBUMSRESPONSE = _descriptor.Descriptor( name='GetAlbumsResponse', full_name='wireless_android_skyjam.GetAlbumsResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='album', full_name='wireless_android_skyjam.GetAlbumsResponse.album', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12535, serialized_end=12601, ) _ARTIST = _descriptor.Descriptor( name='Artist', full_name='wireless_android_skyjam.Artist', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='name', full_name='wireless_android_skyjam.Artist.name', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='total_track_count', full_name='wireless_android_skyjam.Artist.total_track_count', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album', full_name='wireless_android_skyjam.Artist.album', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12603, serialized_end=12699, ) _ARTISTSORTORDER = _descriptor.Descriptor( name='ArtistSortOrder', full_name='wireless_android_skyjam.ArtistSortOrder', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='descending', full_name='wireless_android_skyjam.ArtistSortOrder.descending', index=0, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12701, serialized_end=12745, ) _GETARTISTSREQUEST = _descriptor.Descriptor( name='GetArtistsRequest', full_name='wireless_android_skyjam.GetArtistsRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetArtistsRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sort_order', full_name='wireless_android_skyjam.GetArtistsRequest.sort_order', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetArtistsRequest.max_results', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12747, serialized_end=12866, ) _GETARTISTSRESPONSE = _descriptor.Descriptor( name='GetArtistsResponse', full_name='wireless_android_skyjam.GetArtistsResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='artist', full_name='wireless_android_skyjam.GetArtistsResponse.artist', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12868, serialized_end=12937, ) _MUSICGENRE = _descriptor.Descriptor( name='MusicGenre', full_name='wireless_android_skyjam.MusicGenre', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='name', full_name='wireless_android_skyjam.MusicGenre.name', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='total_track_count', full_name='wireless_android_skyjam.MusicGenre.total_track_count', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album', full_name='wireless_android_skyjam.MusicGenre.album', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=12939, serialized_end=13039, ) _GENRESORTORDER = _descriptor.Descriptor( name='GenreSortOrder', full_name='wireless_android_skyjam.GenreSortOrder', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='descending', full_name='wireless_android_skyjam.GenreSortOrder.descending', index=0, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=13041, serialized_end=13084, ) _GETGENRESREQUEST = _descriptor.Descriptor( name='GetGenresRequest', full_name='wireless_android_skyjam.GetGenresRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetGenresRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sort_order', full_name='wireless_android_skyjam.GetGenresRequest.sort_order', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetGenresRequest.max_results', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=13086, serialized_end=13203, ) _GETGENRESRESPONSE = _descriptor.Descriptor( name='GetGenresResponse', full_name='wireless_android_skyjam.GetGenresResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='genre', full_name='wireless_android_skyjam.GetGenresResponse.genre', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=13205, serialized_end=13276, ) _GETDYNAMICPLAYLISTENTRIESREQUEST = _descriptor.Descriptor( name='GetDynamicPlaylistEntriesRequest', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entries_type', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesRequest.playlist_entries_type', index=1, number=4, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesRequest.max_results', index=2, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesRequest.continuation_token', index=3, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='include_all_track_metadata', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesRequest.include_all_track_metadata', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETDYNAMICPLAYLISTENTRIESREQUEST_DYNAMICPLAYLISTENTRIESTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=13279, serialized_end=13661, ) _GETDYNAMICPLAYLISTENTRIESRESPONSE = _descriptor.Descriptor( name='GetDynamicPlaylistEntriesResponse', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.playlist_entry', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='estimated_total_results', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.estimated_total_results', index=2, number=3, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='continuation_token', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.continuation_token', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entries_type', full_name='wireless_android_skyjam.GetDynamicPlaylistEntriesResponse.playlist_entries_type', index=4, number=5, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _GETDYNAMICPLAYLISTENTRIESRESPONSE_DYNAMICPLAYLISTENTRIESTYPE, _GETDYNAMICPLAYLISTENTRIESRESPONSE_RESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=13664, serialized_end=14210, ) _GETAGGREGATIONSBYTRACKTYPEREQUEST = _descriptor.Descriptor( name='GetAggregationsByTrackTypeRequest', full_name='wireless_android_skyjam.GetAggregationsByTrackTypeRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetAggregationsByTrackTypeRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=14212, serialized_end=14264, ) _TRACKTYPEAGGREGATE = _descriptor.Descriptor( name='TrackTypeAggregate', full_name='wireless_android_skyjam.TrackTypeAggregate', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track_type_value', full_name='wireless_android_skyjam.TrackTypeAggregate.track_type_value', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='count', full_name='wireless_android_skyjam.TrackTypeAggregate.count', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _TRACKTYPEAGGREGATE_TRACKTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=14267, serialized_end=14525, ) _GETAGGREGATIONSBYTRACKTYPERESPONSE = _descriptor.Descriptor( name='GetAggregationsByTrackTypeResponse', full_name='wireless_android_skyjam.GetAggregationsByTrackTypeResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track_type_aggregate', full_name='wireless_android_skyjam.GetAggregationsByTrackTypeResponse.track_type_aggregate', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=14527, serialized_end=14638, ) _GETAGGREGATIONSBYAVAILABILITYSTATUSREQUEST = _descriptor.Descriptor( name='GetAggregationsByAvailabilityStatusRequest', full_name='wireless_android_skyjam.GetAggregationsByAvailabilityStatusRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetAggregationsByAvailabilityStatusRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=14640, serialized_end=14701, ) _AVAILABILITYSTATUSAGGREGATE = _descriptor.Descriptor( name='AvailabilityStatusAggregate', full_name='wireless_android_skyjam.AvailabilityStatusAggregate', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='availability_status', full_name='wireless_android_skyjam.AvailabilityStatusAggregate.availability_status', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='count', full_name='wireless_android_skyjam.AvailabilityStatusAggregate.count', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _AVAILABILITYSTATUSAGGREGATE_AVAILABILITYSTATUS, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=14704, serialized_end=14987, ) _GETAGGREGATIONSBYAVAILABILITYSTATUSRESPONSE = _descriptor.Descriptor( name='GetAggregationsByAvailabilityStatusResponse', full_name='wireless_android_skyjam.GetAggregationsByAvailabilityStatusResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='availability_status_aggregate', full_name='wireless_android_skyjam.GetAggregationsByAvailabilityStatusResponse.availability_status_aggregate', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=14990, serialized_end=15128, ) _ADDPROMOTRACKSREQUEST = _descriptor.Descriptor( name='AddPromoTracksRequest', full_name='wireless_android_skyjam.AddPromoTracksRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.AddPromoTracksRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='genre', full_name='wireless_android_skyjam.AddPromoTracksRequest.genre', index=1, number=2, type=9, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=15130, serialized_end=15185, ) _ADDPROMOTRACKSRESPONSE = _descriptor.Descriptor( name='AddPromoTracksResponse', full_name='wireless_android_skyjam.AddPromoTracksResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.AddPromoTracksResponse.track', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=15187, serialized_end=15258, ) _GETPLAYLISTAGGREGATIONSREQUEST = _descriptor.Descriptor( name='GetPlaylistAggregationsRequest', full_name='wireless_android_skyjam.GetPlaylistAggregationsRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.GetPlaylistAggregationsRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='max_results', full_name='wireless_android_skyjam.GetPlaylistAggregationsRequest.max_results', index=1, number=2, type=5, cpp_type=1, label=1, has_default_value=True, default_value=14, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=15260, serialized_end=15334, ) _PLAYLISTAGGREGATE = _descriptor.Descriptor( name='PlaylistAggregate', full_name='wireless_android_skyjam.PlaylistAggregate', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='playlist_id', full_name='wireless_android_skyjam.PlaylistAggregate.playlist_id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='name', full_name='wireless_android_skyjam.PlaylistAggregate.name', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_art', full_name='wireless_android_skyjam.PlaylistAggregate.album_art', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_count', full_name='wireless_android_skyjam.PlaylistAggregate.track_count', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='last_time_played', full_name='wireless_android_skyjam.PlaylistAggregate.last_time_played', index=4, number=5, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=15337, serialized_end=15492, ) _GETPLAYLISTAGGREGATIONSRESPONSE = _descriptor.Descriptor( name='GetPlaylistAggregationsResponse', full_name='wireless_android_skyjam.GetPlaylistAggregationsResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='playlist_aggregate', full_name='wireless_android_skyjam.GetPlaylistAggregationsResponse.playlist_aggregate', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=15494, serialized_end=15599, ) _REMOTECONTROLCOMMANDREQUEST = _descriptor.Descriptor( name='RemoteControlCommandRequest', full_name='wireless_android_skyjam.RemoteControlCommandRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaia_id', full_name='wireless_android_skyjam.RemoteControlCommandRequest.gaia_id', index=0, number=1, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='command', full_name='wireless_android_skyjam.RemoteControlCommandRequest.command', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=15601, serialized_end=15664, ) _REMOTECONTROLCOMMANDRESPONSE = _descriptor.Descriptor( name='RemoteControlCommandResponse', full_name='wireless_android_skyjam.RemoteControlCommandResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.RemoteControlCommandResponse.response_code', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _REMOTECONTROLCOMMANDRESPONSE_RESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=15667, serialized_end=15870, ) _AUDIOREF.fields_by_name['store'].enum_type = _AUDIOREF_STORE _AUDIOREF_STORE.containing_type = _AUDIOREF _IMAGEREF.fields_by_name['store'].enum_type = _IMAGEREF_STORE _IMAGEREF.fields_by_name['origin'].enum_type = _IMAGEREF_ORIGIN _IMAGEREF_STORE.containing_type = _IMAGEREF _IMAGEREF_ORIGIN.containing_type = _IMAGEREF _TRACKEXTRAS.fields_by_name['additional_metadata'].message_type = _ADDITIONALMETADATA _TRACK.fields_by_name['audio_ref'].message_type = _AUDIOREF _TRACK.fields_by_name['album_art_ref'].message_type = _IMAGEREF _TRACK.fields_by_name['availability_status'].enum_type = _TRACK_AVAILABILITYSTATUS _TRACK.fields_by_name['content_type'].enum_type = _TRACK_CONTENTTYPE _TRACK.fields_by_name['channels'].enum_type = _TRACK_CHANNELS _TRACK.fields_by_name['track_type'].enum_type = _TRACK_TRACKTYPE _TRACK.fields_by_name['rating'].enum_type = _TRACK_RATING _TRACK.fields_by_name['uits_metadata'].message_type = uits__pb2._UITSMETADATA _TRACK.fields_by_name['original_content_type'].enum_type = _TRACK_CONTENTTYPE _TRACK.fields_by_name['uploaded_uits'].message_type = _UPLOADEDUITSID3TAG _TRACK.fields_by_name['explicit_type'].enum_type = _TRACK_EXPLICITTYPE _TRACK.fields_by_name['track_extras'].message_type = _TRACKEXTRAS _TRACK_AVAILABILITYSTATUS.containing_type = _TRACK _TRACK_CONTENTTYPE.containing_type = _TRACK _TRACK_CHANNELS.containing_type = _TRACK _TRACK_TRACKTYPE.containing_type = _TRACK _TRACK_RATING.containing_type = _TRACK _TRACK_EXPLICITTYPE.containing_type = _TRACK _TRACKS.fields_by_name['track'].message_type = _TRACK _PLAYLIST.fields_by_name['playlist_type'].enum_type = _PLAYLIST_PLAYLISTTYPE _PLAYLIST.fields_by_name['playlist_art_ref'].message_type = _IMAGEREF _PLAYLIST_PLAYLISTTYPE.containing_type = _PLAYLIST _PLAYLISTENTRY.fields_by_name['relative_position_id_type'].enum_type = _PLAYLISTENTRY_RELATIVEPOSITIONIDTYPE _PLAYLISTENTRY.fields_by_name['track'].message_type = _TRACK _PLAYLISTENTRY_RELATIVEPOSITIONIDTYPE.containing_type = _PLAYLISTENTRY _TRACKSEARCHRESTRICTION.fields_by_name['attribute'].enum_type = _TRACKSEARCHRESTRICTION_TRACKATTRIBUTE _TRACKSEARCHRESTRICTION.fields_by_name['comparison_type'].enum_type = _TRACKSEARCHRESTRICTION_COMPARISONTYPE _TRACKSEARCHRESTRICTION_TRACKATTRIBUTE.containing_type = _TRACKSEARCHRESTRICTION _TRACKSEARCHRESTRICTION_COMPARISONTYPE.containing_type = _TRACKSEARCHRESTRICTION _TRACKSEARCHRESTRICTIONSET.fields_by_name['type'].enum_type = _TRACKSEARCHRESTRICTIONSET_RESTRICTIONSETTYPE _TRACKSEARCHRESTRICTIONSET.fields_by_name['restriction'].message_type = _TRACKSEARCHRESTRICTION _TRACKSEARCHRESTRICTIONSET.fields_by_name['sub_set'].message_type = _TRACKSEARCHRESTRICTIONSET _TRACKSEARCHRESTRICTIONSET_RESTRICTIONSETTYPE.containing_type = _TRACKSEARCHRESTRICTIONSET _TRACKSORTORDER.fields_by_name['attribute'].enum_type = _TRACKSORTORDER_TRACKATTRIBUTE _TRACKSORTORDER_TRACKATTRIBUTE.containing_type = _TRACKSORTORDER _GETTRACKSREQUEST.fields_by_name['search_restriction'].message_type = _TRACKSEARCHRESTRICTION _GETTRACKSREQUEST.fields_by_name['sort_order'].message_type = _TRACKSORTORDER _GETTRACKSREQUEST.fields_by_name['restriction_set'].message_type = _TRACKSEARCHRESTRICTIONSET _GETTRACKSREQUEST.fields_by_name['track_projection'].enum_type = _GETTRACKSREQUEST_TRACKPROJECTION _GETTRACKSREQUEST_TRACKPROJECTION.containing_type = _GETTRACKSREQUEST _GETTRACKSRESPONSE.fields_by_name['response_code'].enum_type = _GETTRACKSRESPONSE_RESPONSECODE _GETTRACKSRESPONSE.fields_by_name['track'].message_type = _TRACK _GETTRACKSRESPONSE_RESPONSECODE.containing_type = _GETTRACKSRESPONSE _GETPLAYLISTENTRIESRESPONSE.fields_by_name['response_code'].enum_type = _GETPLAYLISTENTRIESRESPONSE_RESPONSECODE _GETPLAYLISTENTRIESRESPONSE.fields_by_name['playlist_entry'].message_type = _PLAYLISTENTRY _GETPLAYLISTENTRIESRESPONSE_RESPONSECODE.containing_type = _GETPLAYLISTENTRIESRESPONSE _PLAYLISTSORTORDER.fields_by_name['attribute'].enum_type = _PLAYLISTSORTORDER_PLAYLISTATTRIBUTE _PLAYLISTSORTORDER_PLAYLISTATTRIBUTE.containing_type = _PLAYLISTSORTORDER _GETPLAYLISTSREQUEST.fields_by_name['sort_order'].message_type = _PLAYLISTSORTORDER _GETPLAYLISTSRESPONSE.fields_by_name['response_code'].enum_type = _GETPLAYLISTSRESPONSE_RESPONSECODE _GETPLAYLISTSRESPONSE.fields_by_name['playlist'].message_type = _PLAYLIST _GETPLAYLISTSRESPONSE_RESPONSECODE.containing_type = _GETPLAYLISTSRESPONSE _BATCHLOOKUPREQUEST.fields_by_name['track'].message_type = _LOOKUPTRACKREQUEST _BATCHLOOKUPREQUEST.fields_by_name['playlist'].message_type = _LOOKUPPLAYLISTREQUEST _BATCHLOOKUPREQUEST.fields_by_name['metadata_type'].enum_type = _BATCHLOOKUPREQUEST_METADATATYPE _BATCHLOOKUPREQUEST.fields_by_name['playlist_entry'].message_type = _LOOKUPPLAYLISTENTRYREQUEST _BATCHLOOKUPREQUEST_METADATATYPE.containing_type = _BATCHLOOKUPREQUEST _BATCHLOOKUPRESPONSE.fields_by_name['track'].message_type = _TRACK _BATCHLOOKUPRESPONSE.fields_by_name['playlist'].message_type = _PLAYLIST _BATCHLOOKUPRESPONSE.fields_by_name['playlist_entry'].message_type = _PLAYLISTENTRY _MUTATETRACKREQUEST.fields_by_name['create_track'].message_type = _TRACK _MUTATETRACKREQUEST.fields_by_name['update_track'].message_type = _TRACK _MUTATERESPONSE.fields_by_name['response_code'].enum_type = _MUTATERESPONSE_MUTATERESPONSECODE _MUTATERESPONSE.fields_by_name['availability_status'].enum_type = _MUTATERESPONSE_AVAILABILITYSTATUS _MUTATERESPONSE_MUTATERESPONSECODE.containing_type = _MUTATERESPONSE _MUTATERESPONSE_AVAILABILITYSTATUS.containing_type = _MUTATERESPONSE _BATCHMUTATETRACKSREQUEST.fields_by_name['track_mutation'].message_type = _MUTATETRACKREQUEST _BATCHMUTATETRACKSRESPONSE.fields_by_name['response_code'].enum_type = _BATCHMUTATETRACKSRESPONSE_BATCHMUTATETRACKSRESPONSECODE _BATCHMUTATETRACKSRESPONSE.fields_by_name['mutate_response'].message_type = _MUTATERESPONSE _BATCHMUTATETRACKSRESPONSE_BATCHMUTATETRACKSRESPONSECODE.containing_type = _BATCHMUTATETRACKSRESPONSE _MUTATEPLAYLISTREQUEST.fields_by_name['create_playlist'].message_type = _PLAYLIST _MUTATEPLAYLISTREQUEST.fields_by_name['update_playlist'].message_type = _PLAYLIST _MUTATEPLAYLISTREQUEST.fields_by_name['playlist_entry'].message_type = _PLAYLISTENTRY _BATCHMUTATEPLAYLISTSREQUEST.fields_by_name['playlist_mutation'].message_type = _MUTATEPLAYLISTREQUEST _BATCHMUTATEPLAYLISTSRESPONSE.fields_by_name['response_code'].enum_type = _BATCHMUTATEPLAYLISTSRESPONSE_BATCHMUTATEPLAYLISTSRESPONSECODE _BATCHMUTATEPLAYLISTSRESPONSE.fields_by_name['mutate_response'].message_type = _MUTATERESPONSE _BATCHMUTATEPLAYLISTSRESPONSE_BATCHMUTATEPLAYLISTSRESPONSECODE.containing_type = _BATCHMUTATEPLAYLISTSRESPONSE _MUTATEPLAYLISTENTRYREQUEST.fields_by_name['create_playlist_entry'].message_type = _PLAYLISTENTRY _MUTATEPLAYLISTENTRYREQUEST.fields_by_name['update_playlist_entry'].message_type = _PLAYLISTENTRY _MUTATEPLAYLISTENTRYREQUEST.fields_by_name['delete_playlist_entry'].message_type = _PLAYLISTENTRY _BATCHMUTATEPLAYLISTENTRIESREQUEST.fields_by_name['playlist_entry_mutation'].message_type = _MUTATEPLAYLISTENTRYREQUEST _BATCHMUTATEPLAYLISTENTRIESRESPONSE.fields_by_name['response_code'].enum_type = _BATCHMUTATEPLAYLISTENTRIESRESPONSE_BATCHMUTATEPLAYLISTENTRIESRESPONSECODE _BATCHMUTATEPLAYLISTENTRIESRESPONSE.fields_by_name['mutate_response'].message_type = _MUTATERESPONSE _BATCHMUTATEPLAYLISTENTRIESRESPONSE_BATCHMUTATEPLAYLISTENTRIESRESPONSECODE.containing_type = _BATCHMUTATEPLAYLISTENTRIESRESPONSE _MAGICPLAYLISTSEED.fields_by_name['seed_type'].enum_type = _MAGICPLAYLISTSEED_SEEDTYPE _MAGICPLAYLISTSEED_SEEDTYPE.containing_type = _MAGICPLAYLISTSEED _MAGICPLAYLISTREQUEST.fields_by_name['seed'].message_type = _MAGICPLAYLISTSEED _MAGICPLAYLISTRESPONSE.fields_by_name['playlist'].message_type = _PLAYLIST _MAGICPLAYLISTRESPONSE.fields_by_name['playlist_entry'].message_type = _PLAYLISTENTRY _ALBUM.fields_by_name['album_art'].message_type = _IMAGEREF _ALBUMSORTORDER.fields_by_name['attribute'].enum_type = _ALBUMSORTORDER_ALBUMATTRIBUTE _ALBUMSORTORDER_ALBUMATTRIBUTE.containing_type = _ALBUMSORTORDER _GETALBUMSREQUEST.fields_by_name['sort_order'].message_type = _ALBUMSORTORDER _GETALBUMSRESPONSE.fields_by_name['album'].message_type = _ALBUM _ARTIST.fields_by_name['album'].message_type = _ALBUM _GETARTISTSREQUEST.fields_by_name['sort_order'].message_type = _ARTISTSORTORDER _GETARTISTSRESPONSE.fields_by_name['artist'].message_type = _ARTIST _MUSICGENRE.fields_by_name['album'].message_type = _ALBUM _GETGENRESREQUEST.fields_by_name['sort_order'].message_type = _GENRESORTORDER _GETGENRESRESPONSE.fields_by_name['genre'].message_type = _MUSICGENRE _GETDYNAMICPLAYLISTENTRIESREQUEST.fields_by_name['playlist_entries_type'].enum_type = _GETDYNAMICPLAYLISTENTRIESREQUEST_DYNAMICPLAYLISTENTRIESTYPE _GETDYNAMICPLAYLISTENTRIESREQUEST_DYNAMICPLAYLISTENTRIESTYPE.containing_type = _GETDYNAMICPLAYLISTENTRIESREQUEST _GETDYNAMICPLAYLISTENTRIESRESPONSE.fields_by_name['response_code'].enum_type = _GETDYNAMICPLAYLISTENTRIESRESPONSE_RESPONSECODE _GETDYNAMICPLAYLISTENTRIESRESPONSE.fields_by_name['playlist_entry'].message_type = _PLAYLISTENTRY _GETDYNAMICPLAYLISTENTRIESRESPONSE.fields_by_name['playlist_entries_type'].enum_type = _GETDYNAMICPLAYLISTENTRIESRESPONSE_DYNAMICPLAYLISTENTRIESTYPE _GETDYNAMICPLAYLISTENTRIESRESPONSE_DYNAMICPLAYLISTENTRIESTYPE.containing_type = _GETDYNAMICPLAYLISTENTRIESRESPONSE _GETDYNAMICPLAYLISTENTRIESRESPONSE_RESPONSECODE.containing_type = _GETDYNAMICPLAYLISTENTRIESRESPONSE _TRACKTYPEAGGREGATE.fields_by_name['track_type_value'].enum_type = _TRACKTYPEAGGREGATE_TRACKTYPE _TRACKTYPEAGGREGATE_TRACKTYPE.containing_type = _TRACKTYPEAGGREGATE _GETAGGREGATIONSBYTRACKTYPERESPONSE.fields_by_name['track_type_aggregate'].message_type = _TRACKTYPEAGGREGATE _AVAILABILITYSTATUSAGGREGATE.fields_by_name['availability_status'].enum_type = _AVAILABILITYSTATUSAGGREGATE_AVAILABILITYSTATUS _AVAILABILITYSTATUSAGGREGATE_AVAILABILITYSTATUS.containing_type = _AVAILABILITYSTATUSAGGREGATE _GETAGGREGATIONSBYAVAILABILITYSTATUSRESPONSE.fields_by_name['availability_status_aggregate'].message_type = _AVAILABILITYSTATUSAGGREGATE _ADDPROMOTRACKSRESPONSE.fields_by_name['track'].message_type = _TRACK _PLAYLISTAGGREGATE.fields_by_name['album_art'].message_type = _IMAGEREF _GETPLAYLISTAGGREGATIONSRESPONSE.fields_by_name['playlist_aggregate'].message_type = _PLAYLISTAGGREGATE _REMOTECONTROLCOMMANDRESPONSE.fields_by_name['response_code'].enum_type = _REMOTECONTROLCOMMANDRESPONSE_RESPONSECODE _REMOTECONTROLCOMMANDRESPONSE_RESPONSECODE.containing_type = _REMOTECONTROLCOMMANDRESPONSE DESCRIPTOR.message_types_by_name['AudioRef'] = _AUDIOREF DESCRIPTOR.message_types_by_name['ImageRef'] = _IMAGEREF DESCRIPTOR.message_types_by_name['UploadedUitsId3Tag'] = _UPLOADEDUITSID3TAG DESCRIPTOR.message_types_by_name['AdditionalMetadata'] = _ADDITIONALMETADATA DESCRIPTOR.message_types_by_name['TrackExtras'] = _TRACKEXTRAS DESCRIPTOR.message_types_by_name['Track'] = _TRACK DESCRIPTOR.message_types_by_name['Tracks'] = _TRACKS DESCRIPTOR.message_types_by_name['Playlist'] = _PLAYLIST DESCRIPTOR.message_types_by_name['PlaylistEntry'] = _PLAYLISTENTRY DESCRIPTOR.message_types_by_name['TrackSearchRestriction'] = _TRACKSEARCHRESTRICTION DESCRIPTOR.message_types_by_name['TrackSearchRestrictionSet'] = _TRACKSEARCHRESTRICTIONSET DESCRIPTOR.message_types_by_name['TrackSortOrder'] = _TRACKSORTORDER DESCRIPTOR.message_types_by_name['GetTracksRequest'] = _GETTRACKSREQUEST DESCRIPTOR.message_types_by_name['GetTracksResponse'] = _GETTRACKSRESPONSE DESCRIPTOR.message_types_by_name['GetPlaylistEntriesRequest'] = _GETPLAYLISTENTRIESREQUEST DESCRIPTOR.message_types_by_name['GetPlaylistEntriesResponse'] = _GETPLAYLISTENTRIESRESPONSE DESCRIPTOR.message_types_by_name['PlaylistSortOrder'] = _PLAYLISTSORTORDER DESCRIPTOR.message_types_by_name['GetPlaylistsRequest'] = _GETPLAYLISTSREQUEST DESCRIPTOR.message_types_by_name['GetPlaylistsResponse'] = _GETPLAYLISTSRESPONSE DESCRIPTOR.message_types_by_name['LookupTrackRequest'] = _LOOKUPTRACKREQUEST DESCRIPTOR.message_types_by_name['LookupPlaylistEntryRequest'] = _LOOKUPPLAYLISTENTRYREQUEST DESCRIPTOR.message_types_by_name['LookupPlaylistRequest'] = _LOOKUPPLAYLISTREQUEST DESCRIPTOR.message_types_by_name['BatchLookupRequest'] = _BATCHLOOKUPREQUEST DESCRIPTOR.message_types_by_name['BatchLookupResponse'] = _BATCHLOOKUPRESPONSE DESCRIPTOR.message_types_by_name['MutateTrackRequest'] = _MUTATETRACKREQUEST DESCRIPTOR.message_types_by_name['MutateResponse'] = _MUTATERESPONSE DESCRIPTOR.message_types_by_name['BatchMutateTracksRequest'] = _BATCHMUTATETRACKSREQUEST DESCRIPTOR.message_types_by_name['BatchMutateTracksResponse'] = _BATCHMUTATETRACKSRESPONSE DESCRIPTOR.message_types_by_name['MutatePlaylistRequest'] = _MUTATEPLAYLISTREQUEST DESCRIPTOR.message_types_by_name['BatchMutatePlaylistsRequest'] = _BATCHMUTATEPLAYLISTSREQUEST DESCRIPTOR.message_types_by_name['BatchMutatePlaylistsResponse'] = _BATCHMUTATEPLAYLISTSRESPONSE DESCRIPTOR.message_types_by_name['MutatePlaylistEntryRequest'] = _MUTATEPLAYLISTENTRYREQUEST DESCRIPTOR.message_types_by_name['BatchMutatePlaylistEntriesRequest'] = _BATCHMUTATEPLAYLISTENTRIESREQUEST DESCRIPTOR.message_types_by_name['BatchMutatePlaylistEntriesResponse'] = _BATCHMUTATEPLAYLISTENTRIESRESPONSE DESCRIPTOR.message_types_by_name['MagicPlaylistSeed'] = _MAGICPLAYLISTSEED DESCRIPTOR.message_types_by_name['MagicPlaylistRequest'] = _MAGICPLAYLISTREQUEST DESCRIPTOR.message_types_by_name['MagicPlaylistResponse'] = _MAGICPLAYLISTRESPONSE DESCRIPTOR.message_types_by_name['FlushLockerRequest'] = _FLUSHLOCKERREQUEST DESCRIPTOR.message_types_by_name['FlushLockerResponse'] = _FLUSHLOCKERRESPONSE DESCRIPTOR.message_types_by_name['LockerNotification'] = _LOCKERNOTIFICATION DESCRIPTOR.message_types_by_name['Album'] = _ALBUM DESCRIPTOR.message_types_by_name['AlbumSortOrder'] = _ALBUMSORTORDER DESCRIPTOR.message_types_by_name['GetAlbumsRequest'] = _GETALBUMSREQUEST DESCRIPTOR.message_types_by_name['GetAlbumsResponse'] = _GETALBUMSRESPONSE DESCRIPTOR.message_types_by_name['Artist'] = _ARTIST DESCRIPTOR.message_types_by_name['ArtistSortOrder'] = _ARTISTSORTORDER DESCRIPTOR.message_types_by_name['GetArtistsRequest'] = _GETARTISTSREQUEST DESCRIPTOR.message_types_by_name['GetArtistsResponse'] = _GETARTISTSRESPONSE DESCRIPTOR.message_types_by_name['MusicGenre'] = _MUSICGENRE DESCRIPTOR.message_types_by_name['GenreSortOrder'] = _GENRESORTORDER DESCRIPTOR.message_types_by_name['GetGenresRequest'] = _GETGENRESREQUEST DESCRIPTOR.message_types_by_name['GetGenresResponse'] = _GETGENRESRESPONSE DESCRIPTOR.message_types_by_name['GetDynamicPlaylistEntriesRequest'] = _GETDYNAMICPLAYLISTENTRIESREQUEST DESCRIPTOR.message_types_by_name['GetDynamicPlaylistEntriesResponse'] = _GETDYNAMICPLAYLISTENTRIESRESPONSE DESCRIPTOR.message_types_by_name['GetAggregationsByTrackTypeRequest'] = _GETAGGREGATIONSBYTRACKTYPEREQUEST DESCRIPTOR.message_types_by_name['TrackTypeAggregate'] = _TRACKTYPEAGGREGATE DESCRIPTOR.message_types_by_name['GetAggregationsByTrackTypeResponse'] = _GETAGGREGATIONSBYTRACKTYPERESPONSE DESCRIPTOR.message_types_by_name['GetAggregationsByAvailabilityStatusRequest'] = _GETAGGREGATIONSBYAVAILABILITYSTATUSREQUEST DESCRIPTOR.message_types_by_name['AvailabilityStatusAggregate'] = _AVAILABILITYSTATUSAGGREGATE DESCRIPTOR.message_types_by_name['GetAggregationsByAvailabilityStatusResponse'] = _GETAGGREGATIONSBYAVAILABILITYSTATUSRESPONSE DESCRIPTOR.message_types_by_name['AddPromoTracksRequest'] = _ADDPROMOTRACKSREQUEST DESCRIPTOR.message_types_by_name['AddPromoTracksResponse'] = _ADDPROMOTRACKSRESPONSE DESCRIPTOR.message_types_by_name['GetPlaylistAggregationsRequest'] = _GETPLAYLISTAGGREGATIONSREQUEST DESCRIPTOR.message_types_by_name['PlaylistAggregate'] = _PLAYLISTAGGREGATE DESCRIPTOR.message_types_by_name['GetPlaylistAggregationsResponse'] = _GETPLAYLISTAGGREGATIONSRESPONSE DESCRIPTOR.message_types_by_name['RemoteControlCommandRequest'] = _REMOTECONTROLCOMMANDREQUEST DESCRIPTOR.message_types_by_name['RemoteControlCommandResponse'] = _REMOTECONTROLCOMMANDRESPONSE AudioRef = _reflection.GeneratedProtocolMessageType('AudioRef', (_message.Message,), dict( DESCRIPTOR = _AUDIOREF, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.AudioRef) )) _sym_db.RegisterMessage(AudioRef) ImageRef = _reflection.GeneratedProtocolMessageType('ImageRef', (_message.Message,), dict( DESCRIPTOR = _IMAGEREF, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ImageRef) )) _sym_db.RegisterMessage(ImageRef) UploadedUitsId3Tag = _reflection.GeneratedProtocolMessageType('UploadedUitsId3Tag', (_message.Message,), dict( DESCRIPTOR = _UPLOADEDUITSID3TAG, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadedUitsId3Tag) )) _sym_db.RegisterMessage(UploadedUitsId3Tag) AdditionalMetadata = _reflection.GeneratedProtocolMessageType('AdditionalMetadata', (_message.Message,), dict( DESCRIPTOR = _ADDITIONALMETADATA, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.AdditionalMetadata) )) _sym_db.RegisterMessage(AdditionalMetadata) TrackExtras = _reflection.GeneratedProtocolMessageType('TrackExtras', (_message.Message,), dict( DESCRIPTOR = _TRACKEXTRAS, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TrackExtras) )) _sym_db.RegisterMessage(TrackExtras) Track = _reflection.GeneratedProtocolMessageType('Track', (_message.Message,), dict( DESCRIPTOR = _TRACK, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.Track) )) _sym_db.RegisterMessage(Track) Tracks = _reflection.GeneratedProtocolMessageType('Tracks', (_message.Message,), dict( DESCRIPTOR = _TRACKS, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.Tracks) )) _sym_db.RegisterMessage(Tracks) Playlist = _reflection.GeneratedProtocolMessageType('Playlist', (_message.Message,), dict( DESCRIPTOR = _PLAYLIST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.Playlist) )) _sym_db.RegisterMessage(Playlist) PlaylistEntry = _reflection.GeneratedProtocolMessageType('PlaylistEntry', (_message.Message,), dict( DESCRIPTOR = _PLAYLISTENTRY, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.PlaylistEntry) )) _sym_db.RegisterMessage(PlaylistEntry) TrackSearchRestriction = _reflection.GeneratedProtocolMessageType('TrackSearchRestriction', (_message.Message,), dict( DESCRIPTOR = _TRACKSEARCHRESTRICTION, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TrackSearchRestriction) )) _sym_db.RegisterMessage(TrackSearchRestriction) TrackSearchRestrictionSet = _reflection.GeneratedProtocolMessageType('TrackSearchRestrictionSet', (_message.Message,), dict( DESCRIPTOR = _TRACKSEARCHRESTRICTIONSET, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TrackSearchRestrictionSet) )) _sym_db.RegisterMessage(TrackSearchRestrictionSet) TrackSortOrder = _reflection.GeneratedProtocolMessageType('TrackSortOrder', (_message.Message,), dict( DESCRIPTOR = _TRACKSORTORDER, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TrackSortOrder) )) _sym_db.RegisterMessage(TrackSortOrder) GetTracksRequest = _reflection.GeneratedProtocolMessageType('GetTracksRequest', (_message.Message,), dict( DESCRIPTOR = _GETTRACKSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetTracksRequest) )) _sym_db.RegisterMessage(GetTracksRequest) GetTracksResponse = _reflection.GeneratedProtocolMessageType('GetTracksResponse', (_message.Message,), dict( DESCRIPTOR = _GETTRACKSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetTracksResponse) )) _sym_db.RegisterMessage(GetTracksResponse) GetPlaylistEntriesRequest = _reflection.GeneratedProtocolMessageType('GetPlaylistEntriesRequest', (_message.Message,), dict( DESCRIPTOR = _GETPLAYLISTENTRIESREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetPlaylistEntriesRequest) )) _sym_db.RegisterMessage(GetPlaylistEntriesRequest) GetPlaylistEntriesResponse = _reflection.GeneratedProtocolMessageType('GetPlaylistEntriesResponse', (_message.Message,), dict( DESCRIPTOR = _GETPLAYLISTENTRIESRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetPlaylistEntriesResponse) )) _sym_db.RegisterMessage(GetPlaylistEntriesResponse) PlaylistSortOrder = _reflection.GeneratedProtocolMessageType('PlaylistSortOrder', (_message.Message,), dict( DESCRIPTOR = _PLAYLISTSORTORDER, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.PlaylistSortOrder) )) _sym_db.RegisterMessage(PlaylistSortOrder) GetPlaylistsRequest = _reflection.GeneratedProtocolMessageType('GetPlaylistsRequest', (_message.Message,), dict( DESCRIPTOR = _GETPLAYLISTSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetPlaylistsRequest) )) _sym_db.RegisterMessage(GetPlaylistsRequest) GetPlaylistsResponse = _reflection.GeneratedProtocolMessageType('GetPlaylistsResponse', (_message.Message,), dict( DESCRIPTOR = _GETPLAYLISTSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetPlaylistsResponse) )) _sym_db.RegisterMessage(GetPlaylistsResponse) LookupTrackRequest = _reflection.GeneratedProtocolMessageType('LookupTrackRequest', (_message.Message,), dict( DESCRIPTOR = _LOOKUPTRACKREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.LookupTrackRequest) )) _sym_db.RegisterMessage(LookupTrackRequest) LookupPlaylistEntryRequest = _reflection.GeneratedProtocolMessageType('LookupPlaylistEntryRequest', (_message.Message,), dict( DESCRIPTOR = _LOOKUPPLAYLISTENTRYREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.LookupPlaylistEntryRequest) )) _sym_db.RegisterMessage(LookupPlaylistEntryRequest) LookupPlaylistRequest = _reflection.GeneratedProtocolMessageType('LookupPlaylistRequest', (_message.Message,), dict( DESCRIPTOR = _LOOKUPPLAYLISTREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.LookupPlaylistRequest) )) _sym_db.RegisterMessage(LookupPlaylistRequest) BatchLookupRequest = _reflection.GeneratedProtocolMessageType('BatchLookupRequest', (_message.Message,), dict( DESCRIPTOR = _BATCHLOOKUPREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchLookupRequest) )) _sym_db.RegisterMessage(BatchLookupRequest) BatchLookupResponse = _reflection.GeneratedProtocolMessageType('BatchLookupResponse', (_message.Message,), dict( DESCRIPTOR = _BATCHLOOKUPRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchLookupResponse) )) _sym_db.RegisterMessage(BatchLookupResponse) MutateTrackRequest = _reflection.GeneratedProtocolMessageType('MutateTrackRequest', (_message.Message,), dict( DESCRIPTOR = _MUTATETRACKREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MutateTrackRequest) )) _sym_db.RegisterMessage(MutateTrackRequest) MutateResponse = _reflection.GeneratedProtocolMessageType('MutateResponse', (_message.Message,), dict( DESCRIPTOR = _MUTATERESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MutateResponse) )) _sym_db.RegisterMessage(MutateResponse) BatchMutateTracksRequest = _reflection.GeneratedProtocolMessageType('BatchMutateTracksRequest', (_message.Message,), dict( DESCRIPTOR = _BATCHMUTATETRACKSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchMutateTracksRequest) )) _sym_db.RegisterMessage(BatchMutateTracksRequest) BatchMutateTracksResponse = _reflection.GeneratedProtocolMessageType('BatchMutateTracksResponse', (_message.Message,), dict( DESCRIPTOR = _BATCHMUTATETRACKSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchMutateTracksResponse) )) _sym_db.RegisterMessage(BatchMutateTracksResponse) MutatePlaylistRequest = _reflection.GeneratedProtocolMessageType('MutatePlaylistRequest', (_message.Message,), dict( DESCRIPTOR = _MUTATEPLAYLISTREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MutatePlaylistRequest) )) _sym_db.RegisterMessage(MutatePlaylistRequest) BatchMutatePlaylistsRequest = _reflection.GeneratedProtocolMessageType('BatchMutatePlaylistsRequest', (_message.Message,), dict( DESCRIPTOR = _BATCHMUTATEPLAYLISTSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchMutatePlaylistsRequest) )) _sym_db.RegisterMessage(BatchMutatePlaylistsRequest) BatchMutatePlaylistsResponse = _reflection.GeneratedProtocolMessageType('BatchMutatePlaylistsResponse', (_message.Message,), dict( DESCRIPTOR = _BATCHMUTATEPLAYLISTSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchMutatePlaylistsResponse) )) _sym_db.RegisterMessage(BatchMutatePlaylistsResponse) MutatePlaylistEntryRequest = _reflection.GeneratedProtocolMessageType('MutatePlaylistEntryRequest', (_message.Message,), dict( DESCRIPTOR = _MUTATEPLAYLISTENTRYREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MutatePlaylistEntryRequest) )) _sym_db.RegisterMessage(MutatePlaylistEntryRequest) BatchMutatePlaylistEntriesRequest = _reflection.GeneratedProtocolMessageType('BatchMutatePlaylistEntriesRequest', (_message.Message,), dict( DESCRIPTOR = _BATCHMUTATEPLAYLISTENTRIESREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchMutatePlaylistEntriesRequest) )) _sym_db.RegisterMessage(BatchMutatePlaylistEntriesRequest) BatchMutatePlaylistEntriesResponse = _reflection.GeneratedProtocolMessageType('BatchMutatePlaylistEntriesResponse', (_message.Message,), dict( DESCRIPTOR = _BATCHMUTATEPLAYLISTENTRIESRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.BatchMutatePlaylistEntriesResponse) )) _sym_db.RegisterMessage(BatchMutatePlaylistEntriesResponse) MagicPlaylistSeed = _reflection.GeneratedProtocolMessageType('MagicPlaylistSeed', (_message.Message,), dict( DESCRIPTOR = _MAGICPLAYLISTSEED, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MagicPlaylistSeed) )) _sym_db.RegisterMessage(MagicPlaylistSeed) MagicPlaylistRequest = _reflection.GeneratedProtocolMessageType('MagicPlaylistRequest', (_message.Message,), dict( DESCRIPTOR = _MAGICPLAYLISTREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MagicPlaylistRequest) )) _sym_db.RegisterMessage(MagicPlaylistRequest) MagicPlaylistResponse = _reflection.GeneratedProtocolMessageType('MagicPlaylistResponse', (_message.Message,), dict( DESCRIPTOR = _MAGICPLAYLISTRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MagicPlaylistResponse) )) _sym_db.RegisterMessage(MagicPlaylistResponse) FlushLockerRequest = _reflection.GeneratedProtocolMessageType('FlushLockerRequest', (_message.Message,), dict( DESCRIPTOR = _FLUSHLOCKERREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.FlushLockerRequest) )) _sym_db.RegisterMessage(FlushLockerRequest) FlushLockerResponse = _reflection.GeneratedProtocolMessageType('FlushLockerResponse', (_message.Message,), dict( DESCRIPTOR = _FLUSHLOCKERRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.FlushLockerResponse) )) _sym_db.RegisterMessage(FlushLockerResponse) LockerNotification = _reflection.GeneratedProtocolMessageType('LockerNotification', (_message.Message,), dict( DESCRIPTOR = _LOCKERNOTIFICATION, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.LockerNotification) )) _sym_db.RegisterMessage(LockerNotification) Album = _reflection.GeneratedProtocolMessageType('Album', (_message.Message,), dict( DESCRIPTOR = _ALBUM, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.Album) )) _sym_db.RegisterMessage(Album) AlbumSortOrder = _reflection.GeneratedProtocolMessageType('AlbumSortOrder', (_message.Message,), dict( DESCRIPTOR = _ALBUMSORTORDER, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.AlbumSortOrder) )) _sym_db.RegisterMessage(AlbumSortOrder) GetAlbumsRequest = _reflection.GeneratedProtocolMessageType('GetAlbumsRequest', (_message.Message,), dict( DESCRIPTOR = _GETALBUMSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetAlbumsRequest) )) _sym_db.RegisterMessage(GetAlbumsRequest) GetAlbumsResponse = _reflection.GeneratedProtocolMessageType('GetAlbumsResponse', (_message.Message,), dict( DESCRIPTOR = _GETALBUMSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetAlbumsResponse) )) _sym_db.RegisterMessage(GetAlbumsResponse) Artist = _reflection.GeneratedProtocolMessageType('Artist', (_message.Message,), dict( DESCRIPTOR = _ARTIST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.Artist) )) _sym_db.RegisterMessage(Artist) ArtistSortOrder = _reflection.GeneratedProtocolMessageType('ArtistSortOrder', (_message.Message,), dict( DESCRIPTOR = _ARTISTSORTORDER, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ArtistSortOrder) )) _sym_db.RegisterMessage(ArtistSortOrder) GetArtistsRequest = _reflection.GeneratedProtocolMessageType('GetArtistsRequest', (_message.Message,), dict( DESCRIPTOR = _GETARTISTSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetArtistsRequest) )) _sym_db.RegisterMessage(GetArtistsRequest) GetArtistsResponse = _reflection.GeneratedProtocolMessageType('GetArtistsResponse', (_message.Message,), dict( DESCRIPTOR = _GETARTISTSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetArtistsResponse) )) _sym_db.RegisterMessage(GetArtistsResponse) MusicGenre = _reflection.GeneratedProtocolMessageType('MusicGenre', (_message.Message,), dict( DESCRIPTOR = _MUSICGENRE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MusicGenre) )) _sym_db.RegisterMessage(MusicGenre) GenreSortOrder = _reflection.GeneratedProtocolMessageType('GenreSortOrder', (_message.Message,), dict( DESCRIPTOR = _GENRESORTORDER, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GenreSortOrder) )) _sym_db.RegisterMessage(GenreSortOrder) GetGenresRequest = _reflection.GeneratedProtocolMessageType('GetGenresRequest', (_message.Message,), dict( DESCRIPTOR = _GETGENRESREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetGenresRequest) )) _sym_db.RegisterMessage(GetGenresRequest) GetGenresResponse = _reflection.GeneratedProtocolMessageType('GetGenresResponse', (_message.Message,), dict( DESCRIPTOR = _GETGENRESRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetGenresResponse) )) _sym_db.RegisterMessage(GetGenresResponse) GetDynamicPlaylistEntriesRequest = _reflection.GeneratedProtocolMessageType('GetDynamicPlaylistEntriesRequest', (_message.Message,), dict( DESCRIPTOR = _GETDYNAMICPLAYLISTENTRIESREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetDynamicPlaylistEntriesRequest) )) _sym_db.RegisterMessage(GetDynamicPlaylistEntriesRequest) GetDynamicPlaylistEntriesResponse = _reflection.GeneratedProtocolMessageType('GetDynamicPlaylistEntriesResponse', (_message.Message,), dict( DESCRIPTOR = _GETDYNAMICPLAYLISTENTRIESRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetDynamicPlaylistEntriesResponse) )) _sym_db.RegisterMessage(GetDynamicPlaylistEntriesResponse) GetAggregationsByTrackTypeRequest = _reflection.GeneratedProtocolMessageType('GetAggregationsByTrackTypeRequest', (_message.Message,), dict( DESCRIPTOR = _GETAGGREGATIONSBYTRACKTYPEREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetAggregationsByTrackTypeRequest) )) _sym_db.RegisterMessage(GetAggregationsByTrackTypeRequest) TrackTypeAggregate = _reflection.GeneratedProtocolMessageType('TrackTypeAggregate', (_message.Message,), dict( DESCRIPTOR = _TRACKTYPEAGGREGATE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TrackTypeAggregate) )) _sym_db.RegisterMessage(TrackTypeAggregate) GetAggregationsByTrackTypeResponse = _reflection.GeneratedProtocolMessageType('GetAggregationsByTrackTypeResponse', (_message.Message,), dict( DESCRIPTOR = _GETAGGREGATIONSBYTRACKTYPERESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetAggregationsByTrackTypeResponse) )) _sym_db.RegisterMessage(GetAggregationsByTrackTypeResponse) GetAggregationsByAvailabilityStatusRequest = _reflection.GeneratedProtocolMessageType('GetAggregationsByAvailabilityStatusRequest', (_message.Message,), dict( DESCRIPTOR = _GETAGGREGATIONSBYAVAILABILITYSTATUSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetAggregationsByAvailabilityStatusRequest) )) _sym_db.RegisterMessage(GetAggregationsByAvailabilityStatusRequest) AvailabilityStatusAggregate = _reflection.GeneratedProtocolMessageType('AvailabilityStatusAggregate', (_message.Message,), dict( DESCRIPTOR = _AVAILABILITYSTATUSAGGREGATE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.AvailabilityStatusAggregate) )) _sym_db.RegisterMessage(AvailabilityStatusAggregate) GetAggregationsByAvailabilityStatusResponse = _reflection.GeneratedProtocolMessageType('GetAggregationsByAvailabilityStatusResponse', (_message.Message,), dict( DESCRIPTOR = _GETAGGREGATIONSBYAVAILABILITYSTATUSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetAggregationsByAvailabilityStatusResponse) )) _sym_db.RegisterMessage(GetAggregationsByAvailabilityStatusResponse) AddPromoTracksRequest = _reflection.GeneratedProtocolMessageType('AddPromoTracksRequest', (_message.Message,), dict( DESCRIPTOR = _ADDPROMOTRACKSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.AddPromoTracksRequest) )) _sym_db.RegisterMessage(AddPromoTracksRequest) AddPromoTracksResponse = _reflection.GeneratedProtocolMessageType('AddPromoTracksResponse', (_message.Message,), dict( DESCRIPTOR = _ADDPROMOTRACKSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.AddPromoTracksResponse) )) _sym_db.RegisterMessage(AddPromoTracksResponse) GetPlaylistAggregationsRequest = _reflection.GeneratedProtocolMessageType('GetPlaylistAggregationsRequest', (_message.Message,), dict( DESCRIPTOR = _GETPLAYLISTAGGREGATIONSREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetPlaylistAggregationsRequest) )) _sym_db.RegisterMessage(GetPlaylistAggregationsRequest) PlaylistAggregate = _reflection.GeneratedProtocolMessageType('PlaylistAggregate', (_message.Message,), dict( DESCRIPTOR = _PLAYLISTAGGREGATE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.PlaylistAggregate) )) _sym_db.RegisterMessage(PlaylistAggregate) GetPlaylistAggregationsResponse = _reflection.GeneratedProtocolMessageType('GetPlaylistAggregationsResponse', (_message.Message,), dict( DESCRIPTOR = _GETPLAYLISTAGGREGATIONSRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetPlaylistAggregationsResponse) )) _sym_db.RegisterMessage(GetPlaylistAggregationsResponse) RemoteControlCommandRequest = _reflection.GeneratedProtocolMessageType('RemoteControlCommandRequest', (_message.Message,), dict( DESCRIPTOR = _REMOTECONTROLCOMMANDREQUEST, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.RemoteControlCommandRequest) )) _sym_db.RegisterMessage(RemoteControlCommandRequest) RemoteControlCommandResponse = _reflection.GeneratedProtocolMessageType('RemoteControlCommandResponse', (_message.Message,), dict( DESCRIPTOR = _REMOTECONTROLCOMMANDRESPONSE, __module__ = 'locker_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.RemoteControlCommandResponse) )) _sym_db.RegisterMessage(RemoteControlCommandResponse) # @@protoc_insertion_point(module_scope) PK!U7f$ksks.google_music_proto/musicmanager/pb/uits_pb2.py# Generated by the protocol buffer compiler. DO NOT EDIT! # source: uits.proto import sys _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor.FileDescriptor( name='uits.proto', package='wireless_android_skyjam', syntax='proto2', serialized_pb=_b('\n\nuits.proto\x12\x17wireless_android_skyjam\"\x83\x01\n\tProductId\x12\x35\n\x04type\x18\x01 \x02(\x0e\x32\'.wireless_android_skyjam.ProductId.Type\x12\x18\n\tcompleted\x18\x02 \x01(\x08:\x05\x66\x61lse\x12\n\n\x02id\x18\x03 \x02(\t\"\x19\n\x04Type\x12\x07\n\x03UPC\x10\x01\x12\x08\n\x04GRID\x10\x02\"\\\n\x07\x41ssetId\x12\x33\n\x04type\x18\x01 \x02(\x0e\x32%.wireless_android_skyjam.AssetId.Type\x12\n\n\x02id\x18\x02 \x02(\t\"\x10\n\x04Type\x12\x08\n\x04ISRC\x10\x01\"/\n\rTransactionId\x12\x12\n\x07version\x18\x01 \x02(\t:\x01\x31\x12\n\n\x02id\x18\x02 \x02(\t\"|\n\x07MediaId\x12\x46\n\x0e\x61lgorithm_type\x18\x01 \x02(\x0e\x32..wireless_android_skyjam.MediaId.AlgorithmType\x12\x0c\n\x04hash\x18\x02 \x02(\t\"\x1b\n\rAlgorithmType\x12\n\n\x06SHA256\x10\x01\"\xa3\x01\n\x07UrlInfo\x12\x33\n\x04type\x18\x01 \x02(\x0e\x32%.wireless_android_skyjam.UrlInfo.Type\x12\x0b\n\x03url\x18\x02 \x02(\t\"V\n\x04Type\x12\x08\n\x04WCOM\x10\x01\x12\x08\n\x04WCOP\x10\x02\x12\x08\n\x04WOAF\x10\x03\x12\x08\n\x04WOAR\x10\x04\x12\x08\n\x04WOAS\x10\x05\x12\x08\n\x04WORS\x10\x06\x12\x08\n\x04WPAY\x10\x07\x12\x08\n\x04WPUB\x10\x08\"\xac\x01\n\x0f\x43opyrightStatus\x12;\n\x04type\x18\x01 \x02(\x0e\x32-.wireless_android_skyjam.CopyrightStatus.Type\x12\x11\n\tcopyright\x18\x02 \x01(\t\"I\n\x04Type\x12\x0f\n\x0bUNSPECIFIED\x10\x01\x12\x15\n\x11\x41LLRIGHTSRESERVED\x10\x02\x12\x0e\n\nPRERELEASE\x10\x03\x12\t\n\x05OTHER\x10\x04\"$\n\x05\x45xtra\x12\x0c\n\x04type\x18\x01 \x02(\t\x12\r\n\x05value\x18\x02 \x02(\t\"\xf5\x04\n\x0cUitsMetadata\x12\r\n\x05nonce\x18\x01 \x02(\t\x12\x16\n\x0e\x64istributor_id\x18\x02 \x02(\t\x12\x18\n\x10transaction_date\x18\x03 \x02(\t\x12\x36\n\nproduct_id\x18\x04 \x02(\x0b\x32\".wireless_android_skyjam.ProductId\x12\x32\n\x08\x61sset_id\x18\x05 \x02(\x0b\x32 .wireless_android_skyjam.AssetId\x12>\n\x0etransaction_id\x18\x06 \x02(\x0b\x32&.wireless_android_skyjam.TransactionId\x12\x32\n\x08media_id\x18\x07 \x02(\x0b\x32 .wireless_android_skyjam.MediaId\x12\x32\n\x08url_info\x18\x08 \x01(\x0b\x32 .wireless_android_skyjam.UrlInfo\x12Z\n\x16parental_advisory_type\x18\t \x01(\x0e\x32:.wireless_android_skyjam.UitsMetadata.ParentalAdvisoryType\x12\x42\n\x10\x63opyright_status\x18\n \x01(\x0b\x32(.wireless_android_skyjam.CopyrightStatus\x12-\n\x05\x65xtra\x18\x0b \x03(\x0b\x32\x1e.wireless_android_skyjam.Extra\"A\n\x14ParentalAdvisoryType\x12\x0f\n\x0bUNSPECIFIED\x10\x01\x12\x0c\n\x08\x45XPLICIT\x10\x02\x12\n\n\x06\x45\x44ITED\x10\x03\"\xa5\x02\n\rUitsSignature\x12L\n\x0e\x61lgorithm_type\x18\x01 \x02(\x0e\x32\x34.wireless_android_skyjam.UitsSignature.AlgorithmType\x12Z\n\x15\x63\x61nonicalization_type\x18\x02 \x02(\x0e\x32;.wireless_android_skyjam.UitsSignature.CanonicalizationType\x12\x0e\n\x06key_id\x18\x03 \x02(\t\x12\r\n\x05value\x18\x04 \x02(\t\")\n\rAlgorithmType\x12\x0b\n\x07RSA2048\x10\x01\x12\x0b\n\x07\x44SA2048\x10\x02\" \n\x14\x43\x61nonicalizationType\x12\x08\n\x04NONE\x10\x01\"z\n\x04Uits\x12\x37\n\x08metadata\x18\x01 \x02(\x0b\x32%.wireless_android_skyjam.UitsMetadata\x12\x39\n\tsignature\x18\x02 \x02(\x0b\x32&.wireless_android_skyjam.UitsSignature') ) _sym_db.RegisterFileDescriptor(DESCRIPTOR) _PRODUCTID_TYPE = _descriptor.EnumDescriptor( name='Type', full_name='wireless_android_skyjam.ProductId.Type', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='UPC', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='GRID', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=146, serialized_end=171, ) _sym_db.RegisterEnumDescriptor(_PRODUCTID_TYPE) _ASSETID_TYPE = _descriptor.EnumDescriptor( name='Type', full_name='wireless_android_skyjam.AssetId.Type', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='ISRC', index=0, number=1, options=None, type=None), ], containing_type=None, options=None, serialized_start=249, serialized_end=265, ) _sym_db.RegisterEnumDescriptor(_ASSETID_TYPE) _MEDIAID_ALGORITHMTYPE = _descriptor.EnumDescriptor( name='AlgorithmType', full_name='wireless_android_skyjam.MediaId.AlgorithmType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='SHA256', index=0, number=1, options=None, type=None), ], containing_type=None, options=None, serialized_start=413, serialized_end=440, ) _sym_db.RegisterEnumDescriptor(_MEDIAID_ALGORITHMTYPE) _URLINFO_TYPE = _descriptor.EnumDescriptor( name='Type', full_name='wireless_android_skyjam.UrlInfo.Type', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='WCOM', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='WCOP', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='WOAF', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='WOAR', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='WOAS', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='WORS', index=5, number=6, options=None, type=None), _descriptor.EnumValueDescriptor( name='WPAY', index=6, number=7, options=None, type=None), _descriptor.EnumValueDescriptor( name='WPUB', index=7, number=8, options=None, type=None), ], containing_type=None, options=None, serialized_start=520, serialized_end=606, ) _sym_db.RegisterEnumDescriptor(_URLINFO_TYPE) _COPYRIGHTSTATUS_TYPE = _descriptor.EnumDescriptor( name='Type', full_name='wireless_android_skyjam.CopyrightStatus.Type', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='UNSPECIFIED', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALLRIGHTSRESERVED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='PRERELEASE', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='OTHER', index=3, number=4, options=None, type=None), ], containing_type=None, options=None, serialized_start=708, serialized_end=781, ) _sym_db.RegisterEnumDescriptor(_COPYRIGHTSTATUS_TYPE) _UITSMETADATA_PARENTALADVISORYTYPE = _descriptor.EnumDescriptor( name='ParentalAdvisoryType', full_name='wireless_android_skyjam.UitsMetadata.ParentalAdvisoryType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='UNSPECIFIED', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='EXPLICIT', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='EDITED', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=1386, serialized_end=1451, ) _sym_db.RegisterEnumDescriptor(_UITSMETADATA_PARENTALADVISORYTYPE) _UITSSIGNATURE_ALGORITHMTYPE = _descriptor.EnumDescriptor( name='AlgorithmType', full_name='wireless_android_skyjam.UitsSignature.AlgorithmType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='RSA2048', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='DSA2048', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=1672, serialized_end=1713, ) _sym_db.RegisterEnumDescriptor(_UITSSIGNATURE_ALGORITHMTYPE) _UITSSIGNATURE_CANONICALIZATIONTYPE = _descriptor.EnumDescriptor( name='CanonicalizationType', full_name='wireless_android_skyjam.UitsSignature.CanonicalizationType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='NONE', index=0, number=1, options=None, type=None), ], containing_type=None, options=None, serialized_start=1715, serialized_end=1747, ) _sym_db.RegisterEnumDescriptor(_UITSSIGNATURE_CANONICALIZATIONTYPE) _PRODUCTID = _descriptor.Descriptor( name='ProductId', full_name='wireless_android_skyjam.ProductId', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='type', full_name='wireless_android_skyjam.ProductId.type', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='completed', full_name='wireless_android_skyjam.ProductId.completed', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=True, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.ProductId.id', index=2, number=3, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _PRODUCTID_TYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=40, serialized_end=171, ) _ASSETID = _descriptor.Descriptor( name='AssetId', full_name='wireless_android_skyjam.AssetId', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='type', full_name='wireless_android_skyjam.AssetId.type', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.AssetId.id', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _ASSETID_TYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=173, serialized_end=265, ) _TRANSACTIONID = _descriptor.Descriptor( name='TransactionId', full_name='wireless_android_skyjam.TransactionId', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='version', full_name='wireless_android_skyjam.TransactionId.version', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=True, default_value=_b("1").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='id', full_name='wireless_android_skyjam.TransactionId.id', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=267, serialized_end=314, ) _MEDIAID = _descriptor.Descriptor( name='MediaId', full_name='wireless_android_skyjam.MediaId', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='algorithm_type', full_name='wireless_android_skyjam.MediaId.algorithm_type', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='hash', full_name='wireless_android_skyjam.MediaId.hash', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _MEDIAID_ALGORITHMTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=316, serialized_end=440, ) _URLINFO = _descriptor.Descriptor( name='UrlInfo', full_name='wireless_android_skyjam.UrlInfo', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='type', full_name='wireless_android_skyjam.UrlInfo.type', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='url', full_name='wireless_android_skyjam.UrlInfo.url', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _URLINFO_TYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=443, serialized_end=606, ) _COPYRIGHTSTATUS = _descriptor.Descriptor( name='CopyrightStatus', full_name='wireless_android_skyjam.CopyrightStatus', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='type', full_name='wireless_android_skyjam.CopyrightStatus.type', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='copyright', full_name='wireless_android_skyjam.CopyrightStatus.copyright', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _COPYRIGHTSTATUS_TYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=609, serialized_end=781, ) _EXTRA = _descriptor.Descriptor( name='Extra', full_name='wireless_android_skyjam.Extra', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='type', full_name='wireless_android_skyjam.Extra.type', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='value', full_name='wireless_android_skyjam.Extra.value', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=783, serialized_end=819, ) _UITSMETADATA = _descriptor.Descriptor( name='UitsMetadata', full_name='wireless_android_skyjam.UitsMetadata', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='nonce', full_name='wireless_android_skyjam.UitsMetadata.nonce', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='distributor_id', full_name='wireless_android_skyjam.UitsMetadata.distributor_id', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='transaction_date', full_name='wireless_android_skyjam.UitsMetadata.transaction_date', index=2, number=3, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='product_id', full_name='wireless_android_skyjam.UitsMetadata.product_id', index=3, number=4, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='asset_id', full_name='wireless_android_skyjam.UitsMetadata.asset_id', index=4, number=5, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='transaction_id', full_name='wireless_android_skyjam.UitsMetadata.transaction_id', index=5, number=6, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='media_id', full_name='wireless_android_skyjam.UitsMetadata.media_id', index=6, number=7, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='url_info', full_name='wireless_android_skyjam.UitsMetadata.url_info', index=7, number=8, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='parental_advisory_type', full_name='wireless_android_skyjam.UitsMetadata.parental_advisory_type', index=8, number=9, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='copyright_status', full_name='wireless_android_skyjam.UitsMetadata.copyright_status', index=9, number=10, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='extra', full_name='wireless_android_skyjam.UitsMetadata.extra', index=10, number=11, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _UITSMETADATA_PARENTALADVISORYTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=822, serialized_end=1451, ) _UITSSIGNATURE = _descriptor.Descriptor( name='UitsSignature', full_name='wireless_android_skyjam.UitsSignature', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='algorithm_type', full_name='wireless_android_skyjam.UitsSignature.algorithm_type', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='canonicalization_type', full_name='wireless_android_skyjam.UitsSignature.canonicalization_type', index=1, number=2, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='key_id', full_name='wireless_android_skyjam.UitsSignature.key_id', index=2, number=3, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='value', full_name='wireless_android_skyjam.UitsSignature.value', index=3, number=4, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _UITSSIGNATURE_ALGORITHMTYPE, _UITSSIGNATURE_CANONICALIZATIONTYPE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1454, serialized_end=1747, ) _UITS = _descriptor.Descriptor( name='Uits', full_name='wireless_android_skyjam.Uits', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='metadata', full_name='wireless_android_skyjam.Uits.metadata', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='signature', full_name='wireless_android_skyjam.Uits.signature', index=1, number=2, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1749, serialized_end=1871, ) _PRODUCTID.fields_by_name['type'].enum_type = _PRODUCTID_TYPE _PRODUCTID_TYPE.containing_type = _PRODUCTID _ASSETID.fields_by_name['type'].enum_type = _ASSETID_TYPE _ASSETID_TYPE.containing_type = _ASSETID _MEDIAID.fields_by_name['algorithm_type'].enum_type = _MEDIAID_ALGORITHMTYPE _MEDIAID_ALGORITHMTYPE.containing_type = _MEDIAID _URLINFO.fields_by_name['type'].enum_type = _URLINFO_TYPE _URLINFO_TYPE.containing_type = _URLINFO _COPYRIGHTSTATUS.fields_by_name['type'].enum_type = _COPYRIGHTSTATUS_TYPE _COPYRIGHTSTATUS_TYPE.containing_type = _COPYRIGHTSTATUS _UITSMETADATA.fields_by_name['product_id'].message_type = _PRODUCTID _UITSMETADATA.fields_by_name['asset_id'].message_type = _ASSETID _UITSMETADATA.fields_by_name['transaction_id'].message_type = _TRANSACTIONID _UITSMETADATA.fields_by_name['media_id'].message_type = _MEDIAID _UITSMETADATA.fields_by_name['url_info'].message_type = _URLINFO _UITSMETADATA.fields_by_name['parental_advisory_type'].enum_type = _UITSMETADATA_PARENTALADVISORYTYPE _UITSMETADATA.fields_by_name['copyright_status'].message_type = _COPYRIGHTSTATUS _UITSMETADATA.fields_by_name['extra'].message_type = _EXTRA _UITSMETADATA_PARENTALADVISORYTYPE.containing_type = _UITSMETADATA _UITSSIGNATURE.fields_by_name['algorithm_type'].enum_type = _UITSSIGNATURE_ALGORITHMTYPE _UITSSIGNATURE.fields_by_name['canonicalization_type'].enum_type = _UITSSIGNATURE_CANONICALIZATIONTYPE _UITSSIGNATURE_ALGORITHMTYPE.containing_type = _UITSSIGNATURE _UITSSIGNATURE_CANONICALIZATIONTYPE.containing_type = _UITSSIGNATURE _UITS.fields_by_name['metadata'].message_type = _UITSMETADATA _UITS.fields_by_name['signature'].message_type = _UITSSIGNATURE DESCRIPTOR.message_types_by_name['ProductId'] = _PRODUCTID DESCRIPTOR.message_types_by_name['AssetId'] = _ASSETID DESCRIPTOR.message_types_by_name['TransactionId'] = _TRANSACTIONID DESCRIPTOR.message_types_by_name['MediaId'] = _MEDIAID DESCRIPTOR.message_types_by_name['UrlInfo'] = _URLINFO DESCRIPTOR.message_types_by_name['CopyrightStatus'] = _COPYRIGHTSTATUS DESCRIPTOR.message_types_by_name['Extra'] = _EXTRA DESCRIPTOR.message_types_by_name['UitsMetadata'] = _UITSMETADATA DESCRIPTOR.message_types_by_name['UitsSignature'] = _UITSSIGNATURE DESCRIPTOR.message_types_by_name['Uits'] = _UITS ProductId = _reflection.GeneratedProtocolMessageType('ProductId', (_message.Message,), dict( DESCRIPTOR = _PRODUCTID, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ProductId) )) _sym_db.RegisterMessage(ProductId) AssetId = _reflection.GeneratedProtocolMessageType('AssetId', (_message.Message,), dict( DESCRIPTOR = _ASSETID, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.AssetId) )) _sym_db.RegisterMessage(AssetId) TransactionId = _reflection.GeneratedProtocolMessageType('TransactionId', (_message.Message,), dict( DESCRIPTOR = _TRANSACTIONID, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TransactionId) )) _sym_db.RegisterMessage(TransactionId) MediaId = _reflection.GeneratedProtocolMessageType('MediaId', (_message.Message,), dict( DESCRIPTOR = _MEDIAID, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.MediaId) )) _sym_db.RegisterMessage(MediaId) UrlInfo = _reflection.GeneratedProtocolMessageType('UrlInfo', (_message.Message,), dict( DESCRIPTOR = _URLINFO, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UrlInfo) )) _sym_db.RegisterMessage(UrlInfo) CopyrightStatus = _reflection.GeneratedProtocolMessageType('CopyrightStatus', (_message.Message,), dict( DESCRIPTOR = _COPYRIGHTSTATUS, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.CopyrightStatus) )) _sym_db.RegisterMessage(CopyrightStatus) Extra = _reflection.GeneratedProtocolMessageType('Extra', (_message.Message,), dict( DESCRIPTOR = _EXTRA, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.Extra) )) _sym_db.RegisterMessage(Extra) UitsMetadata = _reflection.GeneratedProtocolMessageType('UitsMetadata', (_message.Message,), dict( DESCRIPTOR = _UITSMETADATA, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UitsMetadata) )) _sym_db.RegisterMessage(UitsMetadata) UitsSignature = _reflection.GeneratedProtocolMessageType('UitsSignature', (_message.Message,), dict( DESCRIPTOR = _UITSSIGNATURE, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UitsSignature) )) _sym_db.RegisterMessage(UitsSignature) Uits = _reflection.GeneratedProtocolMessageType('Uits', (_message.Message,), dict( DESCRIPTOR = _UITS, __module__ = 'uits_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.Uits) )) _sym_db.RegisterMessage(Uits) # @@protoc_insertion_point(module_scope) PK!d(SbSb0google_music_proto/musicmanager/pb/upload_pb2.py# Generated by the protocol buffer compiler. DO NOT EDIT! # source: upload.proto import sys _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database from google.protobuf import descriptor_pb2 # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from . import locker_pb2 as locker__pb2 DESCRIPTOR = _descriptor.FileDescriptor( name='upload.proto', package='wireless_android_skyjam', syntax='proto2', serialized_pb=_b('\n\x0cupload.proto\x12\x17wireless_android_skyjam\x1a\x0clocker.proto\"\xb1\x01\n\x0eResponseStatus\x12K\n\rresponse_code\x18\x01 \x02(\x0e\x32\x34.wireless_android_skyjam.ResponseStatus.ResponseCode\"R\n\x0cResponseCode\x12\x06\n\x02OK\x10\x01\x12\x12\n\x0e\x41LREADY_EXISTS\x10\x02\x12\x0e\n\nSOFT_ERROR\x10\x03\x12\x16\n\x12METADATA_TOO_LARGE\x10\x04\"\xa7\x01\n\x0fUploadOperation\x12\x45\n\toperation\x18\x01 \x02(\x0e\x32\x32.wireless_android_skyjam.UploadOperation.Operation\"M\n\tOperation\x12\x14\n\x10OPERATION_CREATE\x10\x01\x12\x14\n\x10OPERATION_MODIFY\x10\x02\x12\x14\n\x10OPERATION_DELETE\x10\x03\"\xa1\x01\n\x11\x45nhancedChallenge\x12P\n\x0ehash_algorithm\x18\x01 \x01(\x0e\x32\x38.wireless_android_skyjam.EnhancedChallenge.HashAlgorithm\x12\x13\n\x0brandom_seed\x18\x02 \x01(\x0c\"%\n\rHashAlgorithm\x12\x0b\n\x07SHA_256\x10\x01\x12\x07\n\x03MD5\x10\x02\"\xac\x01\n\x11\x43lientFpChallenge\x12^\n\x15\x66ingerprint_algorithm\x18\x01 \x01(\x0e\x32?.wireless_android_skyjam.ClientFpChallenge.FingerprintAlgorithm\"7\n\x14\x46ingerprintAlgorithm\x12\x08\n\x04NONE\x10\x00\x12\x15\n\x11LIGHTMP3FP_CLIENT\x10\x01\"\xca\x02\n\rChallengeInfo\x12\x17\n\x0f\x63lient_track_id\x18\x01 \x02(\t\x12\x14\n\x0cstart_millis\x18\x02 \x02(\x05\x12\x17\n\x0f\x64uration_millis\x18\x03 \x02(\x05\x12\x19\n\x11\x63hallenge_user_id\x18\x04 \x01(\t\x12\x1b\n\x13\x63hallenge_timestamp\x18\x05 \x01(\x03\x12\x14\n\x0c\x65xpect_match\x18\x06 \x01(\x08\x12\x46\n\x12\x65nhanced_challenge\x18\x07 \x01(\x0b\x32*.wireless_android_skyjam.EnhancedChallenge\x12\x12\n\ncandidates\x18\x08 \x03(\t\x12G\n\x13\x63lient_fp_challenge\x18\t \x01(\x0b\x32*.wireless_android_skyjam.ClientFpChallenge\"5\n\x19\x45nhancedChallengeResponse\x12\x18\n\x10\x63hallenge_answer\x18\x01 \x01(\x0c\"h\n\x13SignedChallengeInfo\x12>\n\x0e\x63hallenge_info\x18\x01 \x02(\x0b\x32&.wireless_android_skyjam.ChallengeInfo\x12\x11\n\tsignature\x18\x02 \x02(\x0c\"\xbe\x02\n\x0bTrackSample\x12-\n\x05track\x18\x01 \x02(\x0b\x32\x1e.wireless_android_skyjam.Track\x12K\n\x15signed_challenge_info\x18\x02 \x02(\x0b\x32,.wireless_android_skyjam.SignedChallengeInfo\x12\x0e\n\x06sample\x18\x03 \x01(\x0c\x12\x41\n\rsample_format\x18\x04 \x01(\x0e\x32*.wireless_android_skyjam.Track.ContentType\x12;\n\x0euser_album_art\x18\x05 \x01(\x0b\x32#.wireless_android_skyjam.ImageUnion\x12#\n\x1b\x65nhanced_challenge_response\x18\x06 \x01(\x0c\"\xa5\x01\n\x15UploadPlaylistRequest\x12\x42\n\x10upload_operation\x18\x01 \x02(\x0b\x32(.wireless_android_skyjam.UploadOperation\x12\x33\n\x08playlist\x18\x02 \x03(\x0b\x32!.wireless_android_skyjam.Playlist\x12\x13\n\x0buploader_id\x18\x03 \x02(\t\"z\n\x10PlaylistResponse\x12@\n\x0fresponse_status\x18\x01 \x02(\x0b\x32\'.wireless_android_skyjam.ResponseStatus\x12\x11\n\tclient_id\x18\x02 \x01(\t\x12\x11\n\tserver_id\x18\x03 \x01(\t\"^\n\x16UploadPlaylistResponse\x12\x44\n\x11playlist_response\x18\x01 \x03(\x0b\x32).wireless_android_skyjam.PlaylistResponse\"\xb5\x01\n\x1aUploadPlaylistEntryRequest\x12\x42\n\x10upload_operation\x18\x01 \x02(\x0b\x32(.wireless_android_skyjam.UploadOperation\x12>\n\x0eplaylist_entry\x18\x02 \x03(\x0b\x32&.wireless_android_skyjam.PlaylistEntry\x12\x13\n\x0buploader_id\x18\x03 \x02(\t\"\x7f\n\x15PlaylistEntryResponse\x12@\n\x0fresponse_status\x18\x01 \x02(\x0b\x32\'.wireless_android_skyjam.ResponseStatus\x12\x11\n\tclient_id\x18\x02 \x01(\t\x12\x11\n\tserver_id\x18\x03 \x01(\t\"n\n\x1bUploadPlaylistEntryResponse\x12O\n\x17playlist_entry_response\x18\x01 \x03(\x0b\x32..wireless_android_skyjam.PlaylistEntryResponse\"[\n\x15UploadMetadataRequest\x12-\n\x05track\x18\x01 \x03(\x0b\x32\x1e.wireless_android_skyjam.Track\x12\x13\n\x0buploader_id\x18\x02 \x02(\t\"\xb0\x01\n\x18UpdateUploadStateRequest\x12L\n\x05state\x18\x01 \x02(\x0e\x32=.wireless_android_skyjam.UpdateUploadStateRequest.UploadState\x12\x13\n\x0buploader_id\x18\x02 \x02(\t\"1\n\x0bUploadState\x12\t\n\x05START\x10\x01\x12\n\n\x06PAUSED\x10\x02\x12\x0b\n\x07STOPPED\x10\x03\"M\n\x12\x43lientStateRequest\x12\x13\n\x0buploader_id\x18\x01 \x02(\t\x12\"\n\x1aget_purchased_tracks_since\x18\x02 \x01(\x03\"\x80\x02\n\x13\x43lientStateResponse\x12\x1a\n\x12locker_track_limit\x18\x01 \x01(\x03\x12\x1c\n\x14user_songs_in_locker\x18\x02 \x01(\x03\x12\x1e\n\x16track_size_limit_in_mb\x18\x03 \x01(\x05\x12#\n\x1buser_purchased_tracks_since\x18\x04 \x01(\x03\x12\x19\n\x11total_track_count\x18\x05 \x01(\x03\x12O\n\x0foverride_config\x18\x06 \x01(\x0b\x32\x36.wireless_android_skyjam.OverrideConfigValueCollection\"\xc5\x01\n\x16UploadMetadataResponse\x12K\n\x15signed_challenge_info\x18\x01 \x03(\x0b\x32,.wireless_android_skyjam.SignedChallengeInfo\x12\x11\n\tupload_id\x18\x02 \x03(\t\x12K\n\x15track_sample_response\x18\x03 \x03(\x0b\x32,.wireless_android_skyjam.TrackSampleResponse\"\xbd\x03\n\x13TrackSampleResponse\x12\x17\n\x0f\x63lient_track_id\x18\x01 \x02(\t\x12P\n\rresponse_code\x18\x02 \x02(\x0e\x32\x39.wireless_android_skyjam.TrackSampleResponse.ResponseCode\x12\x17\n\x0fserver_track_id\x18\x03 \x01(\t\x12\x15\n\ralbum_art_url\x18\x04 \x01(\t\x12\x14\n\x0c\x65xpect_match\x18\x05 \x01(\x08\"\xf4\x01\n\x0cResponseCode\x12\x0b\n\x07MATCHED\x10\x01\x12\x14\n\x10UPLOAD_REQUESTED\x10\x02\x12\x15\n\x11INVALID_SIGNATURE\x10\x03\x12\x12\n\x0e\x41LREADY_EXISTS\x10\x04\x12\x13\n\x0fTRANSIENT_ERROR\x10\x05\x12\x13\n\x0fPERMANENT_ERROR\x10\x06\x12\x1d\n\x19TRACK_COUNT_LIMIT_REACHED\x10\x07\x12\x16\n\x12REJECT_STORE_TRACK\x10\x08\x12\x1f\n\x1bREJECT_STORE_TRACK_BY_LABEL\x10\t\x12\x14\n\x10REJECT_DRM_TRACK\x10\n\"f\n\x13UploadSampleRequest\x12:\n\x0ctrack_sample\x18\x01 \x03(\x0b\x32$.wireless_android_skyjam.TrackSample\x12\x13\n\x0buploader_id\x18\x02 \x02(\t\"c\n\x14UploadSampleResponse\x12K\n\x15track_sample_response\x18\x01 \x03(\x0b\x32,.wireless_android_skyjam.TrackSampleResponse\";\n\nImageUnion\x12\x16\n\x0euser_album_art\x18\x01 \x01(\x0c\x12\x15\n\ralbum_art_url\x18\x02 \x01(\t\"\xe4\t\n\x0eUploadResponse\x12K\n\rresponse_type\x18\x01 \x01(\x0e\x32\x34.wireless_android_skyjam.UploadResponse.ResponseType\x12J\n\x11metadata_response\x18\x02 \x01(\x0b\x32/.wireless_android_skyjam.UploadMetadataResponse\x12J\n\x11playlist_response\x18\x03 \x01(\x0b\x32/.wireless_android_skyjam.UploadPlaylistResponse\x12U\n\x17playlist_entry_response\x18\x04 \x01(\x0b\x32\x34.wireless_android_skyjam.UploadPlaylistEntryResponse\x12\x46\n\x0fsample_response\x18\x05 \x01(\x0b\x32-.wireless_android_skyjam.UploadSampleResponse\x12\x42\n\x10getjobs_response\x18\x07 \x01(\x0b\x32(.wireless_android_skyjam.GetJobsResponse\x12J\n\x14\x63lientstate_response\x18\x08 \x01(\x0b\x32,.wireless_android_skyjam.ClientStateResponse\x12\x35\n\x06policy\x18\x06 \x01(\x0b\x32%.wireless_android_skyjam.ClientPolicy\x12G\n\x0b\x61uth_status\x18\x0b \x01(\x0e\x32\x32.wireless_android_skyjam.UploadResponse.AuthStatus\x12\x12\n\nauth_error\x18\x0c \x01(\x08\x12@\n\x0fupauth_response\x18\r \x01(\x0b\x32\'.wireless_android_skyjam.UpAuthResponse\"\xfa\x01\n\x0cResponseType\x12\x15\n\x11METADATA_RESPONSE\x10\x01\x12\x15\n\x11PLAYLIST_RESPONSE\x10\x02\x12\x1b\n\x17PLAYLIST_ENTRY_RESPONSE\x10\x03\x12\x13\n\x0fSAMPLE_RESPONSE\x10\x04\x12\x14\n\x10GETJOBS_RESPONSE\x10\x05\x12\x11\n\rAUTH_RESPONSE\x10\x06\x12\x19\n\x15\x43LIENT_STATE_RESPONSE\x10\x07\x12 \n\x1cUPDATE_UPLOAD_STATE_RESPONSE\x10\x08\x12$\n DELETE_UPLOAD_REQUESTED_RESPONSE\x10\t\"\xea\x01\n\nAuthStatus\x12\x06\n\x02OK\x10\x08\x12\x15\n\x11MAX_LIMIT_REACHED\x10\t\x12!\n\x1d\x43LIENT_BOUND_TO_OTHER_ACCOUNT\x10\n\x12\x19\n\x15\x43LIENT_NOT_AUTHORIZED\x10\x0b\x12\"\n\x1eMAX_PER_MACHINE_USERS_EXCEEDED\x10\x0c\x12\x17\n\x13\x43LIENT_PLEASE_RETRY\x10\r\x12\x12\n\x0eNOT_SUBSCRIBED\x10\x0e\x12\x13\n\x0fINVALID_REQUEST\x10\x0f\x12\x19\n\x15UPGRADE_MUSIC_MANAGER\x10\x10\"\xb4\x01\n\x0eTracksToUpload\x12\x11\n\tclient_id\x18\x01 \x02(\t\x12\x11\n\tserver_id\x18\x02 \x02(\t\x12\x43\n\x06status\x18\x05 \x02(\x0e\x32\x33.wireless_android_skyjam.TracksToUpload.TrackStatus\"7\n\x0bTrackStatus\x12\x12\n\x0e\x46ORCE_REUPLOAD\x10\x03\x12\x14\n\x10UPLOAD_REQUESTED\x10\x04\"%\n\x0eGetJobsRequest\x12\x13\n\x0buploader_id\x18\x01 \x02(\t\"p\n\x0fGetJobsResponse\x12\x41\n\x10tracks_to_upload\x18\x01 \x03(\x0b\x32\'.wireless_android_skyjam.TracksToUpload\x12\x1a\n\x12get_tracks_success\x18\x02 \x02(\x08\"l\n\rUpAuthRequest\x12\x13\n\x0buploader_id\x18\x01 \x02(\t\x12\x15\n\rfriendly_name\x18\x02 \x01(\t\x12\x16\n\x0emac_identifier\x18\x03 \x01(\t\x12\x17\n\x0fhash_identifier\x18\x04 \x01(\t\"%\n\x0eUpAuthResponse\x12\x13\n\x0buploader_id\x18\x01 \x01(\t\"3\n\x1c\x44\x65leteUploadRequestedRequest\x12\x13\n\x0buploader_id\x18\x01 \x02(\t\"\x83\x02\n\x0c\x43lientPolicy\x12\x15\n\rpause_uploads\x18\x01 \x01(\x08\x12\r\n\x05\x61\x62ort\x18\x02 \x01(\x08\x12\x18\n\x10retry_in_minutes\x18\x03 \x01(\x05\x12\x1a\n\x12\x62\x61ndwidth_cap_kbps\x18\x04 \x01(\x05\x12\x17\n\x0fpause_downloads\x18\x05 \x01(\x08\x12#\n\x1b\x64ownload_bandwidth_cap_kbps\x18\x06 \x01(\x05\x12\x16\n\x0esend_analytics\x18\x07 \x01(\x08\x12\x15\n\ranalytics_url\x18\x08 \x01(\t\x12\x16\n\x0e\x65nable_gapless\x18\t \x01(\x08\x12\x12\n\nenable_m4p\x18\n \x01(\x08\"p\n\x1dUploadMetadataInternalRequest\x12\x0e\n\x06gaiaid\x18\x01 \x02(\x04\x12?\n\x07request\x18\x02 \x02(\x0b\x32..wireless_android_skyjam.UploadMetadataRequest\"\x9f\x02\n\x13OverrideConfigValue\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\x12O\n\x08priority\x18\x03 \x01(\x0e\x32=.wireless_android_skyjam.OverrideConfigValue.OverridePriority\"\x9a\x01\n\x10OverridePriority\x12\x1d\n\x10\x44\x45\x46\x41ULT_PRIORITY\x10\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x13\n\x0fLOWEST_PRIORITY\x10\x64\x12\x11\n\x0cLOW_PRIORITY\x10\xc8\x01\x12\x14\n\x0fMEDIUM_PRIORITY\x10\xac\x02\x12\x12\n\rHIGH_PRIORITY\x10\x90\x03\x12\x15\n\x10HIGHEST_PRIORITY\x10\xf4\x03\"\\\n\x1dOverrideConfigValueCollection\x12;\n\x05value\x18\x01 \x03(\x0b\x32,.wireless_android_skyjam.OverrideConfigValue') , dependencies=[locker__pb2.DESCRIPTOR,]) _sym_db.RegisterFileDescriptor(DESCRIPTOR) _RESPONSESTATUS_RESPONSECODE = _descriptor.EnumDescriptor( name='ResponseCode', full_name='wireless_android_skyjam.ResponseStatus.ResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALREADY_EXISTS', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='SOFT_ERROR', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='METADATA_TOO_LARGE', index=3, number=4, options=None, type=None), ], containing_type=None, options=None, serialized_start=151, serialized_end=233, ) _sym_db.RegisterEnumDescriptor(_RESPONSESTATUS_RESPONSECODE) _UPLOADOPERATION_OPERATION = _descriptor.EnumDescriptor( name='Operation', full_name='wireless_android_skyjam.UploadOperation.Operation', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OPERATION_CREATE', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='OPERATION_MODIFY', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='OPERATION_DELETE', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=326, serialized_end=403, ) _sym_db.RegisterEnumDescriptor(_UPLOADOPERATION_OPERATION) _ENHANCEDCHALLENGE_HASHALGORITHM = _descriptor.EnumDescriptor( name='HashAlgorithm', full_name='wireless_android_skyjam.EnhancedChallenge.HashAlgorithm', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='SHA_256', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='MD5', index=1, number=2, options=None, type=None), ], containing_type=None, options=None, serialized_start=530, serialized_end=567, ) _sym_db.RegisterEnumDescriptor(_ENHANCEDCHALLENGE_HASHALGORITHM) _CLIENTFPCHALLENGE_FINGERPRINTALGORITHM = _descriptor.EnumDescriptor( name='FingerprintAlgorithm', full_name='wireless_android_skyjam.ClientFpChallenge.FingerprintAlgorithm', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='NONE', index=0, number=0, options=None, type=None), _descriptor.EnumValueDescriptor( name='LIGHTMP3FP_CLIENT', index=1, number=1, options=None, type=None), ], containing_type=None, options=None, serialized_start=687, serialized_end=742, ) _sym_db.RegisterEnumDescriptor(_CLIENTFPCHALLENGE_FINGERPRINTALGORITHM) _UPDATEUPLOADSTATEREQUEST_UPLOADSTATE = _descriptor.EnumDescriptor( name='UploadState', full_name='wireless_android_skyjam.UpdateUploadStateRequest.UploadState', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='START', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='PAUSED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='STOPPED', index=2, number=3, options=None, type=None), ], containing_type=None, options=None, serialized_start=2593, serialized_end=2642, ) _sym_db.RegisterEnumDescriptor(_UPDATEUPLOADSTATEREQUEST_UPLOADSTATE) _TRACKSAMPLERESPONSE_RESPONSECODE = _descriptor.EnumDescriptor( name='ResponseCode', full_name='wireless_android_skyjam.TrackSampleResponse.ResponseCode', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='MATCHED', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_REQUESTED', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='INVALID_SIGNATURE', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='ALREADY_EXISTS', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='TRANSIENT_ERROR', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='PERMANENT_ERROR', index=5, number=6, options=None, type=None), _descriptor.EnumValueDescriptor( name='TRACK_COUNT_LIMIT_REACHED', index=6, number=7, options=None, type=None), _descriptor.EnumValueDescriptor( name='REJECT_STORE_TRACK', index=7, number=8, options=None, type=None), _descriptor.EnumValueDescriptor( name='REJECT_STORE_TRACK_BY_LABEL', index=8, number=9, options=None, type=None), _descriptor.EnumValueDescriptor( name='REJECT_DRM_TRACK', index=9, number=10, options=None, type=None), ], containing_type=None, options=None, serialized_start=3384, serialized_end=3628, ) _sym_db.RegisterEnumDescriptor(_TRACKSAMPLERESPONSE_RESPONSECODE) _UPLOADRESPONSE_RESPONSETYPE = _descriptor.EnumDescriptor( name='ResponseType', full_name='wireless_android_skyjam.UploadResponse.ResponseType', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='METADATA_RESPONSE', index=0, number=1, options=None, type=None), _descriptor.EnumValueDescriptor( name='PLAYLIST_RESPONSE', index=1, number=2, options=None, type=None), _descriptor.EnumValueDescriptor( name='PLAYLIST_ENTRY_RESPONSE', index=2, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='SAMPLE_RESPONSE', index=3, number=4, options=None, type=None), _descriptor.EnumValueDescriptor( name='GETJOBS_RESPONSE', index=4, number=5, options=None, type=None), _descriptor.EnumValueDescriptor( name='AUTH_RESPONSE', index=5, number=6, options=None, type=None), _descriptor.EnumValueDescriptor( name='CLIENT_STATE_RESPONSE', index=6, number=7, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPDATE_UPLOAD_STATE_RESPONSE', index=7, number=8, options=None, type=None), _descriptor.EnumValueDescriptor( name='DELETE_UPLOAD_REQUESTED_RESPONSE', index=8, number=9, options=None, type=None), ], containing_type=None, options=None, serialized_start=4662, serialized_end=4912, ) _sym_db.RegisterEnumDescriptor(_UPLOADRESPONSE_RESPONSETYPE) _UPLOADRESPONSE_AUTHSTATUS = _descriptor.EnumDescriptor( name='AuthStatus', full_name='wireless_android_skyjam.UploadResponse.AuthStatus', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='OK', index=0, number=8, options=None, type=None), _descriptor.EnumValueDescriptor( name='MAX_LIMIT_REACHED', index=1, number=9, options=None, type=None), _descriptor.EnumValueDescriptor( name='CLIENT_BOUND_TO_OTHER_ACCOUNT', index=2, number=10, options=None, type=None), _descriptor.EnumValueDescriptor( name='CLIENT_NOT_AUTHORIZED', index=3, number=11, options=None, type=None), _descriptor.EnumValueDescriptor( name='MAX_PER_MACHINE_USERS_EXCEEDED', index=4, number=12, options=None, type=None), _descriptor.EnumValueDescriptor( name='CLIENT_PLEASE_RETRY', index=5, number=13, options=None, type=None), _descriptor.EnumValueDescriptor( name='NOT_SUBSCRIBED', index=6, number=14, options=None, type=None), _descriptor.EnumValueDescriptor( name='INVALID_REQUEST', index=7, number=15, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPGRADE_MUSIC_MANAGER', index=8, number=16, options=None, type=None), ], containing_type=None, options=None, serialized_start=4915, serialized_end=5149, ) _sym_db.RegisterEnumDescriptor(_UPLOADRESPONSE_AUTHSTATUS) _TRACKSTOUPLOAD_TRACKSTATUS = _descriptor.EnumDescriptor( name='TrackStatus', full_name='wireless_android_skyjam.TracksToUpload.TrackStatus', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='FORCE_REUPLOAD', index=0, number=3, options=None, type=None), _descriptor.EnumValueDescriptor( name='UPLOAD_REQUESTED', index=1, number=4, options=None, type=None), ], containing_type=None, options=None, serialized_start=5277, serialized_end=5332, ) _sym_db.RegisterEnumDescriptor(_TRACKSTOUPLOAD_TRACKSTATUS) _OVERRIDECONFIGVALUE_OVERRIDEPRIORITY = _descriptor.EnumDescriptor( name='OverridePriority', full_name='wireless_android_skyjam.OverrideConfigValue.OverridePriority', filename=None, file=DESCRIPTOR, values=[ _descriptor.EnumValueDescriptor( name='DEFAULT_PRIORITY', index=0, number=-1, options=None, type=None), _descriptor.EnumValueDescriptor( name='LOWEST_PRIORITY', index=1, number=100, options=None, type=None), _descriptor.EnumValueDescriptor( name='LOW_PRIORITY', index=2, number=200, options=None, type=None), _descriptor.EnumValueDescriptor( name='MEDIUM_PRIORITY', index=3, number=300, options=None, type=None), _descriptor.EnumValueDescriptor( name='HIGH_PRIORITY', index=4, number=400, options=None, type=None), _descriptor.EnumValueDescriptor( name='HIGHEST_PRIORITY', index=5, number=500, options=None, type=None), ], containing_type=None, options=None, serialized_start=6199, serialized_end=6353, ) _sym_db.RegisterEnumDescriptor(_OVERRIDECONFIGVALUE_OVERRIDEPRIORITY) _RESPONSESTATUS = _descriptor.Descriptor( name='ResponseStatus', full_name='wireless_android_skyjam.ResponseStatus', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.ResponseStatus.response_code', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _RESPONSESTATUS_RESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=56, serialized_end=233, ) _UPLOADOPERATION = _descriptor.Descriptor( name='UploadOperation', full_name='wireless_android_skyjam.UploadOperation', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='operation', full_name='wireless_android_skyjam.UploadOperation.operation', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _UPLOADOPERATION_OPERATION, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=236, serialized_end=403, ) _ENHANCEDCHALLENGE = _descriptor.Descriptor( name='EnhancedChallenge', full_name='wireless_android_skyjam.EnhancedChallenge', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='hash_algorithm', full_name='wireless_android_skyjam.EnhancedChallenge.hash_algorithm', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='random_seed', full_name='wireless_android_skyjam.EnhancedChallenge.random_seed', index=1, number=2, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _ENHANCEDCHALLENGE_HASHALGORITHM, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=406, serialized_end=567, ) _CLIENTFPCHALLENGE = _descriptor.Descriptor( name='ClientFpChallenge', full_name='wireless_android_skyjam.ClientFpChallenge', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='fingerprint_algorithm', full_name='wireless_android_skyjam.ClientFpChallenge.fingerprint_algorithm', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _CLIENTFPCHALLENGE_FINGERPRINTALGORITHM, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=570, serialized_end=742, ) _CHALLENGEINFO = _descriptor.Descriptor( name='ChallengeInfo', full_name='wireless_android_skyjam.ChallengeInfo', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='client_track_id', full_name='wireless_android_skyjam.ChallengeInfo.client_track_id', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='start_millis', full_name='wireless_android_skyjam.ChallengeInfo.start_millis', index=1, number=2, type=5, cpp_type=1, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='duration_millis', full_name='wireless_android_skyjam.ChallengeInfo.duration_millis', index=2, number=3, type=5, cpp_type=1, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='challenge_user_id', full_name='wireless_android_skyjam.ChallengeInfo.challenge_user_id', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='challenge_timestamp', full_name='wireless_android_skyjam.ChallengeInfo.challenge_timestamp', index=4, number=5, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='expect_match', full_name='wireless_android_skyjam.ChallengeInfo.expect_match', index=5, number=6, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='enhanced_challenge', full_name='wireless_android_skyjam.ChallengeInfo.enhanced_challenge', index=6, number=7, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='candidates', full_name='wireless_android_skyjam.ChallengeInfo.candidates', index=7, number=8, type=9, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_fp_challenge', full_name='wireless_android_skyjam.ChallengeInfo.client_fp_challenge', index=8, number=9, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=745, serialized_end=1075, ) _ENHANCEDCHALLENGERESPONSE = _descriptor.Descriptor( name='EnhancedChallengeResponse', full_name='wireless_android_skyjam.EnhancedChallengeResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='challenge_answer', full_name='wireless_android_skyjam.EnhancedChallengeResponse.challenge_answer', index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1077, serialized_end=1130, ) _SIGNEDCHALLENGEINFO = _descriptor.Descriptor( name='SignedChallengeInfo', full_name='wireless_android_skyjam.SignedChallengeInfo', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='challenge_info', full_name='wireless_android_skyjam.SignedChallengeInfo.challenge_info', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='signature', full_name='wireless_android_skyjam.SignedChallengeInfo.signature', index=1, number=2, type=12, cpp_type=9, label=2, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1132, serialized_end=1236, ) _TRACKSAMPLE = _descriptor.Descriptor( name='TrackSample', full_name='wireless_android_skyjam.TrackSample', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.TrackSample.track', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='signed_challenge_info', full_name='wireless_android_skyjam.TrackSample.signed_challenge_info', index=1, number=2, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sample', full_name='wireless_android_skyjam.TrackSample.sample', index=2, number=3, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sample_format', full_name='wireless_android_skyjam.TrackSample.sample_format', index=3, number=4, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='user_album_art', full_name='wireless_android_skyjam.TrackSample.user_album_art', index=4, number=5, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='enhanced_challenge_response', full_name='wireless_android_skyjam.TrackSample.enhanced_challenge_response', index=5, number=6, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1239, serialized_end=1557, ) _UPLOADPLAYLISTREQUEST = _descriptor.Descriptor( name='UploadPlaylistRequest', full_name='wireless_android_skyjam.UploadPlaylistRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='upload_operation', full_name='wireless_android_skyjam.UploadPlaylistRequest.upload_operation', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist', full_name='wireless_android_skyjam.UploadPlaylistRequest.playlist', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.UploadPlaylistRequest.uploader_id', index=2, number=3, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1560, serialized_end=1725, ) _PLAYLISTRESPONSE = _descriptor.Descriptor( name='PlaylistResponse', full_name='wireless_android_skyjam.PlaylistResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_status', full_name='wireless_android_skyjam.PlaylistResponse.response_status', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.PlaylistResponse.client_id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='server_id', full_name='wireless_android_skyjam.PlaylistResponse.server_id', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1727, serialized_end=1849, ) _UPLOADPLAYLISTRESPONSE = _descriptor.Descriptor( name='UploadPlaylistResponse', full_name='wireless_android_skyjam.UploadPlaylistResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='playlist_response', full_name='wireless_android_skyjam.UploadPlaylistResponse.playlist_response', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1851, serialized_end=1945, ) _UPLOADPLAYLISTENTRYREQUEST = _descriptor.Descriptor( name='UploadPlaylistEntryRequest', full_name='wireless_android_skyjam.UploadPlaylistEntryRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='upload_operation', full_name='wireless_android_skyjam.UploadPlaylistEntryRequest.upload_operation', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry', full_name='wireless_android_skyjam.UploadPlaylistEntryRequest.playlist_entry', index=1, number=2, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.UploadPlaylistEntryRequest.uploader_id', index=2, number=3, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=1948, serialized_end=2129, ) _PLAYLISTENTRYRESPONSE = _descriptor.Descriptor( name='PlaylistEntryResponse', full_name='wireless_android_skyjam.PlaylistEntryResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_status', full_name='wireless_android_skyjam.PlaylistEntryResponse.response_status', index=0, number=1, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.PlaylistEntryResponse.client_id', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='server_id', full_name='wireless_android_skyjam.PlaylistEntryResponse.server_id', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2131, serialized_end=2258, ) _UPLOADPLAYLISTENTRYRESPONSE = _descriptor.Descriptor( name='UploadPlaylistEntryResponse', full_name='wireless_android_skyjam.UploadPlaylistEntryResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='playlist_entry_response', full_name='wireless_android_skyjam.UploadPlaylistEntryResponse.playlist_entry_response', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2260, serialized_end=2370, ) _UPLOADMETADATAREQUEST = _descriptor.Descriptor( name='UploadMetadataRequest', full_name='wireless_android_skyjam.UploadMetadataRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track', full_name='wireless_android_skyjam.UploadMetadataRequest.track', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.UploadMetadataRequest.uploader_id', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2372, serialized_end=2463, ) _UPDATEUPLOADSTATEREQUEST = _descriptor.Descriptor( name='UpdateUploadStateRequest', full_name='wireless_android_skyjam.UpdateUploadStateRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='state', full_name='wireless_android_skyjam.UpdateUploadStateRequest.state', index=0, number=1, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.UpdateUploadStateRequest.uploader_id', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _UPDATEUPLOADSTATEREQUEST_UPLOADSTATE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2466, serialized_end=2642, ) _CLIENTSTATEREQUEST = _descriptor.Descriptor( name='ClientStateRequest', full_name='wireless_android_skyjam.ClientStateRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.ClientStateRequest.uploader_id', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='get_purchased_tracks_since', full_name='wireless_android_skyjam.ClientStateRequest.get_purchased_tracks_since', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2644, serialized_end=2721, ) _CLIENTSTATERESPONSE = _descriptor.Descriptor( name='ClientStateResponse', full_name='wireless_android_skyjam.ClientStateResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='locker_track_limit', full_name='wireless_android_skyjam.ClientStateResponse.locker_track_limit', index=0, number=1, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='user_songs_in_locker', full_name='wireless_android_skyjam.ClientStateResponse.user_songs_in_locker', index=1, number=2, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_size_limit_in_mb', full_name='wireless_android_skyjam.ClientStateResponse.track_size_limit_in_mb', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='user_purchased_tracks_since', full_name='wireless_android_skyjam.ClientStateResponse.user_purchased_tracks_since', index=3, number=4, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='total_track_count', full_name='wireless_android_skyjam.ClientStateResponse.total_track_count', index=4, number=5, type=3, cpp_type=2, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='override_config', full_name='wireless_android_skyjam.ClientStateResponse.override_config', index=5, number=6, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2724, serialized_end=2980, ) _UPLOADMETADATARESPONSE = _descriptor.Descriptor( name='UploadMetadataResponse', full_name='wireless_android_skyjam.UploadMetadataResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='signed_challenge_info', full_name='wireless_android_skyjam.UploadMetadataResponse.signed_challenge_info', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='upload_id', full_name='wireless_android_skyjam.UploadMetadataResponse.upload_id', index=1, number=2, type=9, cpp_type=9, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='track_sample_response', full_name='wireless_android_skyjam.UploadMetadataResponse.track_sample_response', index=2, number=3, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=2983, serialized_end=3180, ) _TRACKSAMPLERESPONSE = _descriptor.Descriptor( name='TrackSampleResponse', full_name='wireless_android_skyjam.TrackSampleResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='client_track_id', full_name='wireless_android_skyjam.TrackSampleResponse.client_track_id', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='response_code', full_name='wireless_android_skyjam.TrackSampleResponse.response_code', index=1, number=2, type=14, cpp_type=8, label=2, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='server_track_id', full_name='wireless_android_skyjam.TrackSampleResponse.server_track_id', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_art_url', full_name='wireless_android_skyjam.TrackSampleResponse.album_art_url', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='expect_match', full_name='wireless_android_skyjam.TrackSampleResponse.expect_match', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _TRACKSAMPLERESPONSE_RESPONSECODE, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3183, serialized_end=3628, ) _UPLOADSAMPLEREQUEST = _descriptor.Descriptor( name='UploadSampleRequest', full_name='wireless_android_skyjam.UploadSampleRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track_sample', full_name='wireless_android_skyjam.UploadSampleRequest.track_sample', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.UploadSampleRequest.uploader_id', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3630, serialized_end=3732, ) _UPLOADSAMPLERESPONSE = _descriptor.Descriptor( name='UploadSampleResponse', full_name='wireless_android_skyjam.UploadSampleResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='track_sample_response', full_name='wireless_android_skyjam.UploadSampleResponse.track_sample_response', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3734, serialized_end=3833, ) _IMAGEUNION = _descriptor.Descriptor( name='ImageUnion', full_name='wireless_android_skyjam.ImageUnion', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='user_album_art', full_name='wireless_android_skyjam.ImageUnion.user_album_art', index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, default_value=_b(""), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='album_art_url', full_name='wireless_android_skyjam.ImageUnion.album_art_url', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3835, serialized_end=3894, ) _UPLOADRESPONSE = _descriptor.Descriptor( name='UploadResponse', full_name='wireless_android_skyjam.UploadResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='response_type', full_name='wireless_android_skyjam.UploadResponse.response_type', index=0, number=1, type=14, cpp_type=8, label=1, has_default_value=False, default_value=1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='metadata_response', full_name='wireless_android_skyjam.UploadResponse.metadata_response', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_response', full_name='wireless_android_skyjam.UploadResponse.playlist_response', index=2, number=3, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='playlist_entry_response', full_name='wireless_android_skyjam.UploadResponse.playlist_entry_response', index=3, number=4, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='sample_response', full_name='wireless_android_skyjam.UploadResponse.sample_response', index=4, number=5, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='getjobs_response', full_name='wireless_android_skyjam.UploadResponse.getjobs_response', index=5, number=7, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='clientstate_response', full_name='wireless_android_skyjam.UploadResponse.clientstate_response', index=6, number=8, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='policy', full_name='wireless_android_skyjam.UploadResponse.policy', index=7, number=6, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='auth_status', full_name='wireless_android_skyjam.UploadResponse.auth_status', index=8, number=11, type=14, cpp_type=8, label=1, has_default_value=False, default_value=8, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='auth_error', full_name='wireless_android_skyjam.UploadResponse.auth_error', index=9, number=12, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='upauth_response', full_name='wireless_android_skyjam.UploadResponse.upauth_response', index=10, number=13, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _UPLOADRESPONSE_RESPONSETYPE, _UPLOADRESPONSE_AUTHSTATUS, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=3897, serialized_end=5149, ) _TRACKSTOUPLOAD = _descriptor.Descriptor( name='TracksToUpload', full_name='wireless_android_skyjam.TracksToUpload', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='client_id', full_name='wireless_android_skyjam.TracksToUpload.client_id', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='server_id', full_name='wireless_android_skyjam.TracksToUpload.server_id', index=1, number=2, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='status', full_name='wireless_android_skyjam.TracksToUpload.status', index=2, number=5, type=14, cpp_type=8, label=2, has_default_value=False, default_value=3, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _TRACKSTOUPLOAD_TRACKSTATUS, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5152, serialized_end=5332, ) _GETJOBSREQUEST = _descriptor.Descriptor( name='GetJobsRequest', full_name='wireless_android_skyjam.GetJobsRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.GetJobsRequest.uploader_id', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5334, serialized_end=5371, ) _GETJOBSRESPONSE = _descriptor.Descriptor( name='GetJobsResponse', full_name='wireless_android_skyjam.GetJobsResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='tracks_to_upload', full_name='wireless_android_skyjam.GetJobsResponse.tracks_to_upload', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='get_tracks_success', full_name='wireless_android_skyjam.GetJobsResponse.get_tracks_success', index=1, number=2, type=8, cpp_type=7, label=2, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5373, serialized_end=5485, ) _UPAUTHREQUEST = _descriptor.Descriptor( name='UpAuthRequest', full_name='wireless_android_skyjam.UpAuthRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.UpAuthRequest.uploader_id', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='friendly_name', full_name='wireless_android_skyjam.UpAuthRequest.friendly_name', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='mac_identifier', full_name='wireless_android_skyjam.UpAuthRequest.mac_identifier', index=2, number=3, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='hash_identifier', full_name='wireless_android_skyjam.UpAuthRequest.hash_identifier', index=3, number=4, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5487, serialized_end=5595, ) _UPAUTHRESPONSE = _descriptor.Descriptor( name='UpAuthResponse', full_name='wireless_android_skyjam.UpAuthResponse', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.UpAuthResponse.uploader_id', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5597, serialized_end=5634, ) _DELETEUPLOADREQUESTEDREQUEST = _descriptor.Descriptor( name='DeleteUploadRequestedRequest', full_name='wireless_android_skyjam.DeleteUploadRequestedRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='uploader_id', full_name='wireless_android_skyjam.DeleteUploadRequestedRequest.uploader_id', index=0, number=1, type=9, cpp_type=9, label=2, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5636, serialized_end=5687, ) _CLIENTPOLICY = _descriptor.Descriptor( name='ClientPolicy', full_name='wireless_android_skyjam.ClientPolicy', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='pause_uploads', full_name='wireless_android_skyjam.ClientPolicy.pause_uploads', index=0, number=1, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='abort', full_name='wireless_android_skyjam.ClientPolicy.abort', index=1, number=2, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='retry_in_minutes', full_name='wireless_android_skyjam.ClientPolicy.retry_in_minutes', index=2, number=3, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='bandwidth_cap_kbps', full_name='wireless_android_skyjam.ClientPolicy.bandwidth_cap_kbps', index=3, number=4, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='pause_downloads', full_name='wireless_android_skyjam.ClientPolicy.pause_downloads', index=4, number=5, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='download_bandwidth_cap_kbps', full_name='wireless_android_skyjam.ClientPolicy.download_bandwidth_cap_kbps', index=5, number=6, type=5, cpp_type=1, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='send_analytics', full_name='wireless_android_skyjam.ClientPolicy.send_analytics', index=6, number=7, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='analytics_url', full_name='wireless_android_skyjam.ClientPolicy.analytics_url', index=7, number=8, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='enable_gapless', full_name='wireless_android_skyjam.ClientPolicy.enable_gapless', index=8, number=9, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='enable_m4p', full_name='wireless_android_skyjam.ClientPolicy.enable_m4p', index=9, number=10, type=8, cpp_type=7, label=1, has_default_value=False, default_value=False, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5690, serialized_end=5949, ) _UPLOADMETADATAINTERNALREQUEST = _descriptor.Descriptor( name='UploadMetadataInternalRequest', full_name='wireless_android_skyjam.UploadMetadataInternalRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='gaiaid', full_name='wireless_android_skyjam.UploadMetadataInternalRequest.gaiaid', index=0, number=1, type=4, cpp_type=4, label=2, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='request', full_name='wireless_android_skyjam.UploadMetadataInternalRequest.request', index=1, number=2, type=11, cpp_type=10, label=2, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=5951, serialized_end=6063, ) _OVERRIDECONFIGVALUE = _descriptor.Descriptor( name='OverrideConfigValue', full_name='wireless_android_skyjam.OverrideConfigValue', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='key', full_name='wireless_android_skyjam.OverrideConfigValue.key', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='value', full_name='wireless_android_skyjam.OverrideConfigValue.value', index=1, number=2, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), _descriptor.FieldDescriptor( name='priority', full_name='wireless_android_skyjam.OverrideConfigValue.priority', index=2, number=3, type=14, cpp_type=8, label=1, has_default_value=False, default_value=-1, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ _OVERRIDECONFIGVALUE_OVERRIDEPRIORITY, ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6066, serialized_end=6353, ) _OVERRIDECONFIGVALUECOLLECTION = _descriptor.Descriptor( name='OverrideConfigValueCollection', full_name='wireless_android_skyjam.OverrideConfigValueCollection', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='value', full_name='wireless_android_skyjam.OverrideConfigValueCollection.value', index=0, number=1, type=11, cpp_type=10, label=3, has_default_value=False, default_value=[], message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, options=None), ], extensions=[ ], nested_types=[], enum_types=[ ], options=None, is_extendable=False, syntax='proto2', extension_ranges=[], oneofs=[ ], serialized_start=6355, serialized_end=6447, ) _RESPONSESTATUS.fields_by_name['response_code'].enum_type = _RESPONSESTATUS_RESPONSECODE _RESPONSESTATUS_RESPONSECODE.containing_type = _RESPONSESTATUS _UPLOADOPERATION.fields_by_name['operation'].enum_type = _UPLOADOPERATION_OPERATION _UPLOADOPERATION_OPERATION.containing_type = _UPLOADOPERATION _ENHANCEDCHALLENGE.fields_by_name['hash_algorithm'].enum_type = _ENHANCEDCHALLENGE_HASHALGORITHM _ENHANCEDCHALLENGE_HASHALGORITHM.containing_type = _ENHANCEDCHALLENGE _CLIENTFPCHALLENGE.fields_by_name['fingerprint_algorithm'].enum_type = _CLIENTFPCHALLENGE_FINGERPRINTALGORITHM _CLIENTFPCHALLENGE_FINGERPRINTALGORITHM.containing_type = _CLIENTFPCHALLENGE _CHALLENGEINFO.fields_by_name['enhanced_challenge'].message_type = _ENHANCEDCHALLENGE _CHALLENGEINFO.fields_by_name['client_fp_challenge'].message_type = _CLIENTFPCHALLENGE _SIGNEDCHALLENGEINFO.fields_by_name['challenge_info'].message_type = _CHALLENGEINFO _TRACKSAMPLE.fields_by_name['track'].message_type = locker__pb2._TRACK _TRACKSAMPLE.fields_by_name['signed_challenge_info'].message_type = _SIGNEDCHALLENGEINFO _TRACKSAMPLE.fields_by_name['sample_format'].enum_type = locker__pb2._TRACK_CONTENTTYPE _TRACKSAMPLE.fields_by_name['user_album_art'].message_type = _IMAGEUNION _UPLOADPLAYLISTREQUEST.fields_by_name['upload_operation'].message_type = _UPLOADOPERATION _UPLOADPLAYLISTREQUEST.fields_by_name['playlist'].message_type = locker__pb2._PLAYLIST _PLAYLISTRESPONSE.fields_by_name['response_status'].message_type = _RESPONSESTATUS _UPLOADPLAYLISTRESPONSE.fields_by_name['playlist_response'].message_type = _PLAYLISTRESPONSE _UPLOADPLAYLISTENTRYREQUEST.fields_by_name['upload_operation'].message_type = _UPLOADOPERATION _UPLOADPLAYLISTENTRYREQUEST.fields_by_name['playlist_entry'].message_type = locker__pb2._PLAYLISTENTRY _PLAYLISTENTRYRESPONSE.fields_by_name['response_status'].message_type = _RESPONSESTATUS _UPLOADPLAYLISTENTRYRESPONSE.fields_by_name['playlist_entry_response'].message_type = _PLAYLISTENTRYRESPONSE _UPLOADMETADATAREQUEST.fields_by_name['track'].message_type = locker__pb2._TRACK _UPDATEUPLOADSTATEREQUEST.fields_by_name['state'].enum_type = _UPDATEUPLOADSTATEREQUEST_UPLOADSTATE _UPDATEUPLOADSTATEREQUEST_UPLOADSTATE.containing_type = _UPDATEUPLOADSTATEREQUEST _CLIENTSTATERESPONSE.fields_by_name['override_config'].message_type = _OVERRIDECONFIGVALUECOLLECTION _UPLOADMETADATARESPONSE.fields_by_name['signed_challenge_info'].message_type = _SIGNEDCHALLENGEINFO _UPLOADMETADATARESPONSE.fields_by_name['track_sample_response'].message_type = _TRACKSAMPLERESPONSE _TRACKSAMPLERESPONSE.fields_by_name['response_code'].enum_type = _TRACKSAMPLERESPONSE_RESPONSECODE _TRACKSAMPLERESPONSE_RESPONSECODE.containing_type = _TRACKSAMPLERESPONSE _UPLOADSAMPLEREQUEST.fields_by_name['track_sample'].message_type = _TRACKSAMPLE _UPLOADSAMPLERESPONSE.fields_by_name['track_sample_response'].message_type = _TRACKSAMPLERESPONSE _UPLOADRESPONSE.fields_by_name['response_type'].enum_type = _UPLOADRESPONSE_RESPONSETYPE _UPLOADRESPONSE.fields_by_name['metadata_response'].message_type = _UPLOADMETADATARESPONSE _UPLOADRESPONSE.fields_by_name['playlist_response'].message_type = _UPLOADPLAYLISTRESPONSE _UPLOADRESPONSE.fields_by_name['playlist_entry_response'].message_type = _UPLOADPLAYLISTENTRYRESPONSE _UPLOADRESPONSE.fields_by_name['sample_response'].message_type = _UPLOADSAMPLERESPONSE _UPLOADRESPONSE.fields_by_name['getjobs_response'].message_type = _GETJOBSRESPONSE _UPLOADRESPONSE.fields_by_name['clientstate_response'].message_type = _CLIENTSTATERESPONSE _UPLOADRESPONSE.fields_by_name['policy'].message_type = _CLIENTPOLICY _UPLOADRESPONSE.fields_by_name['auth_status'].enum_type = _UPLOADRESPONSE_AUTHSTATUS _UPLOADRESPONSE.fields_by_name['upauth_response'].message_type = _UPAUTHRESPONSE _UPLOADRESPONSE_RESPONSETYPE.containing_type = _UPLOADRESPONSE _UPLOADRESPONSE_AUTHSTATUS.containing_type = _UPLOADRESPONSE _TRACKSTOUPLOAD.fields_by_name['status'].enum_type = _TRACKSTOUPLOAD_TRACKSTATUS _TRACKSTOUPLOAD_TRACKSTATUS.containing_type = _TRACKSTOUPLOAD _GETJOBSRESPONSE.fields_by_name['tracks_to_upload'].message_type = _TRACKSTOUPLOAD _UPLOADMETADATAINTERNALREQUEST.fields_by_name['request'].message_type = _UPLOADMETADATAREQUEST _OVERRIDECONFIGVALUE.fields_by_name['priority'].enum_type = _OVERRIDECONFIGVALUE_OVERRIDEPRIORITY _OVERRIDECONFIGVALUE_OVERRIDEPRIORITY.containing_type = _OVERRIDECONFIGVALUE _OVERRIDECONFIGVALUECOLLECTION.fields_by_name['value'].message_type = _OVERRIDECONFIGVALUE DESCRIPTOR.message_types_by_name['ResponseStatus'] = _RESPONSESTATUS DESCRIPTOR.message_types_by_name['UploadOperation'] = _UPLOADOPERATION DESCRIPTOR.message_types_by_name['EnhancedChallenge'] = _ENHANCEDCHALLENGE DESCRIPTOR.message_types_by_name['ClientFpChallenge'] = _CLIENTFPCHALLENGE DESCRIPTOR.message_types_by_name['ChallengeInfo'] = _CHALLENGEINFO DESCRIPTOR.message_types_by_name['EnhancedChallengeResponse'] = _ENHANCEDCHALLENGERESPONSE DESCRIPTOR.message_types_by_name['SignedChallengeInfo'] = _SIGNEDCHALLENGEINFO DESCRIPTOR.message_types_by_name['TrackSample'] = _TRACKSAMPLE DESCRIPTOR.message_types_by_name['UploadPlaylistRequest'] = _UPLOADPLAYLISTREQUEST DESCRIPTOR.message_types_by_name['PlaylistResponse'] = _PLAYLISTRESPONSE DESCRIPTOR.message_types_by_name['UploadPlaylistResponse'] = _UPLOADPLAYLISTRESPONSE DESCRIPTOR.message_types_by_name['UploadPlaylistEntryRequest'] = _UPLOADPLAYLISTENTRYREQUEST DESCRIPTOR.message_types_by_name['PlaylistEntryResponse'] = _PLAYLISTENTRYRESPONSE DESCRIPTOR.message_types_by_name['UploadPlaylistEntryResponse'] = _UPLOADPLAYLISTENTRYRESPONSE DESCRIPTOR.message_types_by_name['UploadMetadataRequest'] = _UPLOADMETADATAREQUEST DESCRIPTOR.message_types_by_name['UpdateUploadStateRequest'] = _UPDATEUPLOADSTATEREQUEST DESCRIPTOR.message_types_by_name['ClientStateRequest'] = _CLIENTSTATEREQUEST DESCRIPTOR.message_types_by_name['ClientStateResponse'] = _CLIENTSTATERESPONSE DESCRIPTOR.message_types_by_name['UploadMetadataResponse'] = _UPLOADMETADATARESPONSE DESCRIPTOR.message_types_by_name['TrackSampleResponse'] = _TRACKSAMPLERESPONSE DESCRIPTOR.message_types_by_name['UploadSampleRequest'] = _UPLOADSAMPLEREQUEST DESCRIPTOR.message_types_by_name['UploadSampleResponse'] = _UPLOADSAMPLERESPONSE DESCRIPTOR.message_types_by_name['ImageUnion'] = _IMAGEUNION DESCRIPTOR.message_types_by_name['UploadResponse'] = _UPLOADRESPONSE DESCRIPTOR.message_types_by_name['TracksToUpload'] = _TRACKSTOUPLOAD DESCRIPTOR.message_types_by_name['GetJobsRequest'] = _GETJOBSREQUEST DESCRIPTOR.message_types_by_name['GetJobsResponse'] = _GETJOBSRESPONSE DESCRIPTOR.message_types_by_name['UpAuthRequest'] = _UPAUTHREQUEST DESCRIPTOR.message_types_by_name['UpAuthResponse'] = _UPAUTHRESPONSE DESCRIPTOR.message_types_by_name['DeleteUploadRequestedRequest'] = _DELETEUPLOADREQUESTEDREQUEST DESCRIPTOR.message_types_by_name['ClientPolicy'] = _CLIENTPOLICY DESCRIPTOR.message_types_by_name['UploadMetadataInternalRequest'] = _UPLOADMETADATAINTERNALREQUEST DESCRIPTOR.message_types_by_name['OverrideConfigValue'] = _OVERRIDECONFIGVALUE DESCRIPTOR.message_types_by_name['OverrideConfigValueCollection'] = _OVERRIDECONFIGVALUECOLLECTION ResponseStatus = _reflection.GeneratedProtocolMessageType('ResponseStatus', (_message.Message,), dict( DESCRIPTOR = _RESPONSESTATUS, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ResponseStatus) )) _sym_db.RegisterMessage(ResponseStatus) UploadOperation = _reflection.GeneratedProtocolMessageType('UploadOperation', (_message.Message,), dict( DESCRIPTOR = _UPLOADOPERATION, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadOperation) )) _sym_db.RegisterMessage(UploadOperation) EnhancedChallenge = _reflection.GeneratedProtocolMessageType('EnhancedChallenge', (_message.Message,), dict( DESCRIPTOR = _ENHANCEDCHALLENGE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.EnhancedChallenge) )) _sym_db.RegisterMessage(EnhancedChallenge) ClientFpChallenge = _reflection.GeneratedProtocolMessageType('ClientFpChallenge', (_message.Message,), dict( DESCRIPTOR = _CLIENTFPCHALLENGE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ClientFpChallenge) )) _sym_db.RegisterMessage(ClientFpChallenge) ChallengeInfo = _reflection.GeneratedProtocolMessageType('ChallengeInfo', (_message.Message,), dict( DESCRIPTOR = _CHALLENGEINFO, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ChallengeInfo) )) _sym_db.RegisterMessage(ChallengeInfo) EnhancedChallengeResponse = _reflection.GeneratedProtocolMessageType('EnhancedChallengeResponse', (_message.Message,), dict( DESCRIPTOR = _ENHANCEDCHALLENGERESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.EnhancedChallengeResponse) )) _sym_db.RegisterMessage(EnhancedChallengeResponse) SignedChallengeInfo = _reflection.GeneratedProtocolMessageType('SignedChallengeInfo', (_message.Message,), dict( DESCRIPTOR = _SIGNEDCHALLENGEINFO, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.SignedChallengeInfo) )) _sym_db.RegisterMessage(SignedChallengeInfo) TrackSample = _reflection.GeneratedProtocolMessageType('TrackSample', (_message.Message,), dict( DESCRIPTOR = _TRACKSAMPLE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TrackSample) )) _sym_db.RegisterMessage(TrackSample) UploadPlaylistRequest = _reflection.GeneratedProtocolMessageType('UploadPlaylistRequest', (_message.Message,), dict( DESCRIPTOR = _UPLOADPLAYLISTREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadPlaylistRequest) )) _sym_db.RegisterMessage(UploadPlaylistRequest) PlaylistResponse = _reflection.GeneratedProtocolMessageType('PlaylistResponse', (_message.Message,), dict( DESCRIPTOR = _PLAYLISTRESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.PlaylistResponse) )) _sym_db.RegisterMessage(PlaylistResponse) UploadPlaylistResponse = _reflection.GeneratedProtocolMessageType('UploadPlaylistResponse', (_message.Message,), dict( DESCRIPTOR = _UPLOADPLAYLISTRESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadPlaylistResponse) )) _sym_db.RegisterMessage(UploadPlaylistResponse) UploadPlaylistEntryRequest = _reflection.GeneratedProtocolMessageType('UploadPlaylistEntryRequest', (_message.Message,), dict( DESCRIPTOR = _UPLOADPLAYLISTENTRYREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadPlaylistEntryRequest) )) _sym_db.RegisterMessage(UploadPlaylistEntryRequest) PlaylistEntryResponse = _reflection.GeneratedProtocolMessageType('PlaylistEntryResponse', (_message.Message,), dict( DESCRIPTOR = _PLAYLISTENTRYRESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.PlaylistEntryResponse) )) _sym_db.RegisterMessage(PlaylistEntryResponse) UploadPlaylistEntryResponse = _reflection.GeneratedProtocolMessageType('UploadPlaylistEntryResponse', (_message.Message,), dict( DESCRIPTOR = _UPLOADPLAYLISTENTRYRESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadPlaylistEntryResponse) )) _sym_db.RegisterMessage(UploadPlaylistEntryResponse) UploadMetadataRequest = _reflection.GeneratedProtocolMessageType('UploadMetadataRequest', (_message.Message,), dict( DESCRIPTOR = _UPLOADMETADATAREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadMetadataRequest) )) _sym_db.RegisterMessage(UploadMetadataRequest) UpdateUploadStateRequest = _reflection.GeneratedProtocolMessageType('UpdateUploadStateRequest', (_message.Message,), dict( DESCRIPTOR = _UPDATEUPLOADSTATEREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UpdateUploadStateRequest) )) _sym_db.RegisterMessage(UpdateUploadStateRequest) ClientStateRequest = _reflection.GeneratedProtocolMessageType('ClientStateRequest', (_message.Message,), dict( DESCRIPTOR = _CLIENTSTATEREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ClientStateRequest) )) _sym_db.RegisterMessage(ClientStateRequest) ClientStateResponse = _reflection.GeneratedProtocolMessageType('ClientStateResponse', (_message.Message,), dict( DESCRIPTOR = _CLIENTSTATERESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ClientStateResponse) )) _sym_db.RegisterMessage(ClientStateResponse) UploadMetadataResponse = _reflection.GeneratedProtocolMessageType('UploadMetadataResponse', (_message.Message,), dict( DESCRIPTOR = _UPLOADMETADATARESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadMetadataResponse) )) _sym_db.RegisterMessage(UploadMetadataResponse) TrackSampleResponse = _reflection.GeneratedProtocolMessageType('TrackSampleResponse', (_message.Message,), dict( DESCRIPTOR = _TRACKSAMPLERESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TrackSampleResponse) )) _sym_db.RegisterMessage(TrackSampleResponse) UploadSampleRequest = _reflection.GeneratedProtocolMessageType('UploadSampleRequest', (_message.Message,), dict( DESCRIPTOR = _UPLOADSAMPLEREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadSampleRequest) )) _sym_db.RegisterMessage(UploadSampleRequest) UploadSampleResponse = _reflection.GeneratedProtocolMessageType('UploadSampleResponse', (_message.Message,), dict( DESCRIPTOR = _UPLOADSAMPLERESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadSampleResponse) )) _sym_db.RegisterMessage(UploadSampleResponse) ImageUnion = _reflection.GeneratedProtocolMessageType('ImageUnion', (_message.Message,), dict( DESCRIPTOR = _IMAGEUNION, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ImageUnion) )) _sym_db.RegisterMessage(ImageUnion) UploadResponse = _reflection.GeneratedProtocolMessageType('UploadResponse', (_message.Message,), dict( DESCRIPTOR = _UPLOADRESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadResponse) )) _sym_db.RegisterMessage(UploadResponse) TracksToUpload = _reflection.GeneratedProtocolMessageType('TracksToUpload', (_message.Message,), dict( DESCRIPTOR = _TRACKSTOUPLOAD, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.TracksToUpload) )) _sym_db.RegisterMessage(TracksToUpload) GetJobsRequest = _reflection.GeneratedProtocolMessageType('GetJobsRequest', (_message.Message,), dict( DESCRIPTOR = _GETJOBSREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetJobsRequest) )) _sym_db.RegisterMessage(GetJobsRequest) GetJobsResponse = _reflection.GeneratedProtocolMessageType('GetJobsResponse', (_message.Message,), dict( DESCRIPTOR = _GETJOBSRESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.GetJobsResponse) )) _sym_db.RegisterMessage(GetJobsResponse) UpAuthRequest = _reflection.GeneratedProtocolMessageType('UpAuthRequest', (_message.Message,), dict( DESCRIPTOR = _UPAUTHREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UpAuthRequest) )) _sym_db.RegisterMessage(UpAuthRequest) UpAuthResponse = _reflection.GeneratedProtocolMessageType('UpAuthResponse', (_message.Message,), dict( DESCRIPTOR = _UPAUTHRESPONSE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UpAuthResponse) )) _sym_db.RegisterMessage(UpAuthResponse) DeleteUploadRequestedRequest = _reflection.GeneratedProtocolMessageType('DeleteUploadRequestedRequest', (_message.Message,), dict( DESCRIPTOR = _DELETEUPLOADREQUESTEDREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.DeleteUploadRequestedRequest) )) _sym_db.RegisterMessage(DeleteUploadRequestedRequest) ClientPolicy = _reflection.GeneratedProtocolMessageType('ClientPolicy', (_message.Message,), dict( DESCRIPTOR = _CLIENTPOLICY, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.ClientPolicy) )) _sym_db.RegisterMessage(ClientPolicy) UploadMetadataInternalRequest = _reflection.GeneratedProtocolMessageType('UploadMetadataInternalRequest', (_message.Message,), dict( DESCRIPTOR = _UPLOADMETADATAINTERNALREQUEST, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.UploadMetadataInternalRequest) )) _sym_db.RegisterMessage(UploadMetadataInternalRequest) OverrideConfigValue = _reflection.GeneratedProtocolMessageType('OverrideConfigValue', (_message.Message,), dict( DESCRIPTOR = _OVERRIDECONFIGVALUE, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.OverrideConfigValue) )) _sym_db.RegisterMessage(OverrideConfigValue) OverrideConfigValueCollection = _reflection.GeneratedProtocolMessageType('OverrideConfigValueCollection', (_message.Message,), dict( DESCRIPTOR = _OVERRIDECONFIGVALUECOLLECTION, __module__ = 'upload_pb2' # @@protoc_insertion_point(class_scope:wireless_android_skyjam.OverrideConfigValueCollection) )) _sym_db.RegisterMessage(OverrideConfigValueCollection) # @@protoc_insertion_point(module_scope) PK!&{{{(google_music_proto/musicmanager/utils.py__all__ = [ 'generate_client_id', 'get_album_art', 'get_transcoder', 'transcode_to_mp3' ] import os import shutil import subprocess from base64 import b64encode from binascii import unhexlify from hashlib import md5 import audio_metadata # The id is found by: getting md5sum of audio, base64 encode md5sum, removing trailing '='. def generate_client_id(song): if not isinstance(song, audio_metadata.Format): song = audio_metadata.load(song) md5sum = None if isinstance(song, audio_metadata.FLAC): md5sum = unhexlify(song.streaminfo.md5) else: m = md5() with open(song.filepath, 'rb') as f: f.seek(song.streaminfo._start) m.update(f.read(song.streaminfo._size)) # TODO: Speed up by reading in chunks md5sum = m.digest() client_id = b64encode(md5sum).rstrip(b'=') return client_id def get_album_art(song): if not isinstance(song, audio_metadata.Format): song = audio_metadata.load(song) album_art = next( ( picture.data for picture in song.pictures if picture.type == 3 ), None ) return album_art def get_transcoder(): """Return the path to a transcoder (ffmpeg or avconv) with MP3 support.""" transcoders = ['ffmpeg', 'avconv'] transcoder_details = {} for transcoder in transcoders: command_path = shutil.which(transcoder) if command_path is None: transcoder_details[transcoder] = 'Not installed.' continue stdout = subprocess.run([command_path, '-codecs'], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, universal_newlines=True).stdout mp3_encoding_support = ('libmp3lame' in stdout and 'disable-libmp3lame' not in stdout) if mp3_encoding_support: transcoder_details[transcoder] = "MP3 encoding support." break else: transcoder_details[transcoder] = "No MP3 encoding support." else: raise ValueError( f"ffmpeg or avconv must be in the path and support mp3 encoding." "\nDetails: {transcoder_details}" ) return command_path def _transcode(command, input_=None): try: transcode = subprocess.run(command, input=input_, stdout=subprocess.PIPE, stderr=subprocess.PIPE) transcode.check_returncode() except (OSError, subprocess.CalledProcessError) as e: error_msg = f"Transcode command '{' '.join(command)}' failed: {e}. " if 'No such file or directory' in str(e): error_msg += '\nffmpeg or avconv must be installed PATH.' if transcode.stderr is not None: error_msg += f"\nstderr: '{transcode.stderr}'" e.message = error_msg raise else: return transcode.stdout def transcode_to_mp3(song, *, slice_start=None, slice_duration=None, quality='320k'): command_path = get_transcoder() input_ = None if isinstance(song, audio_metadata.Format): if hasattr(song.filepath, 'read'): raise ValueError("Audio metadata must be from a file.") # command = [command_path, '-i', '-'] # input_ = song.filepath.read() else: command = [command_path, '-i', song.filepath] elif isinstance(song, bytes): command = [command_path, '-i', '-'] input_ = song elif isinstance(song, str): command = [command_path, '-i', song] elif isinstance(song, os.PathLike): command = [command_path, '-i', song.__fspath__()] else: raise ValueError("'song' must be os.PathLike, filepath string, a file/bytes-like object, or binary data.") if slice_duration is not None: command.extend(['-t', str(slice_duration)]) if slice_start is not None: command.extend(['-ss', str(slice_start)]) if isinstance(quality, int): command.extend(['-q:a', str(quality)]) elif isinstance(quality, str): command.extend(['-b:a', str(quality)]) # Use 's16le' to not output id3 headers. command.extend(['-f', 's16le', '-c', 'libmp3lame', '-']) return _transcode(command, input_=input_) PK!BXygoogle_music_proto/oauth.pyAUTHORIZATION_BASE_URL = 'https://accounts.google.com/o/oauth2/v2/auth' REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob' TOKEN_URL = 'https://www.googleapis.com/oauth2/v4/token' MOBILE_SCOPE = 'https://www.googleapis.com/auth/skyjam' MUSICMANAGER_SCOPE = 'https://www.googleapis.com/auth/musicmanager' IOS_CLIENT_ID = '228293309116.apps.googleusercontent.com' IOS_CLIENT_SECRET = 'GL1YV0XMp0RlL7ylCV3ilFz-' MUSICMANAGER_CLIENT_ID = '652850857958.apps.googleusercontent.com' MUSICMANAGER_CLIENT_SECRET = 'ji1rklciNp2bfsFJnEH_i6al' PK!݅LL*google_music_proto-2.1.2.dist-info/LICENSEThe MIT License (MIT) Copyright (c) 2018 thebigmunch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. PK!HnHTU(google_music_proto-2.1.2.dist-info/WHEEL A н#Z;/"d&F[xzw@Zpy3Fv]\fi4WZ^EgM_-]#0(q7PK!HQJ +google_music_proto-2.1.2.dist-info/METADATAVkS8_3Lď ɒvYhf-j[$NJ( {=(SEkKV8 tIyyf&:ʪE?5Vp2J*Г R?9?K~|YRFkmio̫݃Q\B%S\,o`cTA")0yj6,Kd=ľ|+O 5>`无?{ aPr+C)DþOlW3 /h"Szd1lXwdJĆ1e,C^Yɺ8}  |(*Ň[ bFY_- ]2EȷkE_9]H2 f"wK ]Υ~kN08mR-b\M'VW 2w ߺy҃TVITBk 4o?8#BH{/B>JǑaAЦ'Oޤ2% =i{Ytc5v32>x|-Eiqa-85po ǩ KJcrM_ѵ_X>GQg7FiS+D^4{E7ܛ*Ei> B˜.4~% 2}T0]H ]d4.{!3]l\|>z߻WVv)HGOys;zWm G魙o˅[ic#lV9vwvlV;8ӣ)Uy>8(8̝ipG>wkAtzivZ㣖|grBU4iS%ݤ]ej|PK!H^-^)google_music_proto-2.1.2.dist-info/RECORDɒZ}? Tw 2y ׻j;/N柙BVW}zm} g>Am!el>^3 mF-š/ކ -=zPWl߫\#= }D۝YӢ :3 rJ$Sī5 *+ {֣M>46BJA|Dy?yߪ̋YEhCsO[:zP&b]`L;e/'`,:<;9=@{Հd:* {`*Gמ8Z܋Mqv֧ZU},pըې^)?I䍓 PK!:55google_music_proto/__about__.pyPK!vƹrgoogle_music_proto/__init__.pyPK!ܒ+Fgoogle_music_proto/mobileclient/__init__.pyPK!Iqq(agoogle_music_proto/mobileclient/calls.pyPK!#H*,google_music_proto/mobileclient/constants.pyPK!JJ )Ogoogle_music_proto/mobileclient/models.pyPK!R/g*Qgoogle_music_proto/mobileclient/schemas.pyPK!/y(Ggoogle_music_proto/mobileclient/types.pyPK!vu׽Kgoogle_music_proto/models.pyPK!z+Qgoogle_music_proto/musicmanager/__init__.pyPK!<;|%=%=(Rgoogle_music_proto/musicmanager/calls.pyPK!4 RKK,google_music_proto/musicmanager/constants.pyPK!_Nss)google_music_proto/musicmanager/models.pyPK!.:google_music_proto/musicmanager/pb/__init__.pyPK!(v]/4/42google_music_proto/musicmanager/pb/download_pb2.pyPK!7AKK0google_music_proto/musicmanager/pb/locker_pb2.pyPK!U7f$ksks.Xgoogle_music_proto/musicmanager/pb/uits_pb2.pyPK!d(SbSb0Ugoogle_music_proto/musicmanager/pb/upload_pb2.pyPK!&{{{(.google_music_proto/musicmanager/utils.pyPK!BXy=google_music_proto/oauth.pyPK!݅LL*?google_music_proto-2.1.2.dist-info/LICENSEPK!HnHTU(Dgoogle_music_proto-2.1.2.dist-info/WHEELPK!HQJ +-Egoogle_music_proto-2.1.2.dist-info/METADATAPK!H^-^)sJgoogle_music_proto-2.1.2.dist-info/RECORDPK"O